// Generated by Haxe 3.4.4
if (typeof process !== "undefined") if (process.version < "v4.0.0") console.warn("Module " + (typeof(module) == "undefined" ? "" : module.filename) + " requires node.js version 4.0.0 or higher");

(function ($global) { "use strict";
var $hxClasses = {},$estr = function() { return js_Boot.__string_rec(this,''); };
function $extend(from, fields) {
	function Inherit() {} Inherit.prototype = from; var proto = new Inherit();
	for (var name in fields) proto[name] = fields[name];
	if( fields.toString !== Object.prototype.toString ) proto.toString = fields.toString;
	return proto;
}
var EReg = function(r,opt) {
	this.r = new RegExp(r,opt.split("u").join(""));
};
$hxClasses["EReg"] = EReg;
EReg.__name__ = ["EReg"];
EReg.prototype = {
	r: null
	,match: function(s) {
		if(this.r.global) {
			this.r.lastIndex = 0;
		}
		this.r.m = this.r.exec(s);
		this.r.s = s;
		return this.r.m != null;
	}
	,matched: function(n) {
		if(this.r.m != null && n >= 0 && n < this.r.m.length) {
			return this.r.m[n];
		} else {
			throw new js__$Boot_HaxeError("EReg::matched");
		}
	}
	,matchedLeft: function() {
		if(this.r.m == null) {
			throw new js__$Boot_HaxeError("No string matched");
		}
		return HxOverrides.substr(this.r.s,0,this.r.m.index);
	}
	,matchedRight: function() {
		if(this.r.m == null) {
			throw new js__$Boot_HaxeError("No string matched");
		}
		var sz = this.r.m.index + this.r.m[0].length;
		return HxOverrides.substr(this.r.s,sz,this.r.s.length - sz);
	}
	,matchedPos: function() {
		if(this.r.m == null) {
			throw new js__$Boot_HaxeError("No string matched");
		}
		return { pos : this.r.m.index, len : this.r.m[0].length};
	}
	,matchSub: function(s,pos,len) {
		if(len == null) {
			len = -1;
		}
		if(this.r.global) {
			this.r.lastIndex = pos;
			var tmp = this.r;
			var tmp1 = len < 0 ? s : HxOverrides.substr(s,0,pos + len);
			this.r.m = tmp.exec(tmp1);
			var b = this.r.m != null;
			if(b) {
				this.r.s = s;
			}
			return b;
		} else {
			var b1 = this.match(len < 0 ? HxOverrides.substr(s,pos,null) : HxOverrides.substr(s,pos,len));
			if(b1) {
				this.r.s = s;
				this.r.m.index += pos;
			}
			return b1;
		}
	}
	,split: function(s) {
		var d = "#__delim__#";
		return s.replace(this.r,d).split(d);
	}
	,map: function(s,f) {
		var offset = 0;
		var buf_b = "";
		while(true) {
			if(offset >= s.length) {
				break;
			} else if(!this.matchSub(s,offset)) {
				buf_b += Std.string(HxOverrides.substr(s,offset,null));
				break;
			}
			var p = this.matchedPos();
			buf_b += Std.string(HxOverrides.substr(s,offset,p.pos - offset));
			buf_b += Std.string(f(this));
			if(p.len == 0) {
				buf_b += Std.string(HxOverrides.substr(s,p.pos,1));
				offset = p.pos + 1;
			} else {
				offset = p.pos + p.len;
			}
			if(!this.r.global) {
				break;
			}
		}
		if(!this.r.global && offset > 0 && offset < s.length) {
			buf_b += Std.string(HxOverrides.substr(s,offset,null));
		}
		return buf_b;
	}
	,__class__: EReg
};
var HxOverrides = function() { };
$hxClasses["HxOverrides"] = HxOverrides;
HxOverrides.__name__ = ["HxOverrides"];
HxOverrides.dateStr = function(date) {
	var m = date.getMonth() + 1;
	var d = date.getDate();
	var h = date.getHours();
	var mi = date.getMinutes();
	var s = date.getSeconds();
	return date.getFullYear() + "-" + (m < 10 ? "0" + m : "" + m) + "-" + (d < 10 ? "0" + d : "" + d) + " " + (h < 10 ? "0" + h : "" + h) + ":" + (mi < 10 ? "0" + mi : "" + mi) + ":" + (s < 10 ? "0" + s : "" + s);
};
HxOverrides.strDate = function(s) {
	var _g = s.length;
	switch(_g) {
	case 8:
		var k = s.split(":");
		var d = new Date();
		d["setTime"](0);
		d["setUTCHours"](k[0]);
		d["setUTCMinutes"](k[1]);
		d["setUTCSeconds"](k[2]);
		return d;
	case 10:
		var k1 = s.split("-");
		return new Date(k1[0],k1[1] - 1,k1[2],0,0,0);
	case 19:
		var k2 = s.split(" ");
		var y = k2[0].split("-");
		var t = k2[1].split(":");
		return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]);
	default:
		throw new js__$Boot_HaxeError("Invalid date format : " + s);
	}
};
HxOverrides.cca = function(s,index) {
	var x = s.charCodeAt(index);
	if(x != x) {
		return undefined;
	}
	return x;
};
HxOverrides.substr = function(s,pos,len) {
	if(len == null) {
		len = s.length;
	} else if(len < 0) {
		if(pos == 0) {
			len = s.length + len;
		} else {
			return "";
		}
	}
	return s.substr(pos,len);
};
HxOverrides.remove = function(a,obj) {
	var i = a.indexOf(obj);
	if(i == -1) {
		return false;
	}
	a.splice(i,1);
	return true;
};
HxOverrides.iter = function(a) {
	return { cur : 0, arr : a, hasNext : function() {
		return this.cur < this.arr.length;
	}, next : function() {
		return this.arr[this.cur++];
	}};
};
var Lambda = function() { };
$hxClasses["Lambda"] = Lambda;
Lambda.__name__ = ["Lambda"];
Lambda.array = function(it) {
	var a = [];
	var i = $iterator(it)();
	while(i.hasNext()) {
		var i1 = i.next();
		a.push(i1);
	}
	return a;
};
var List = function() {
	this.length = 0;
};
$hxClasses["List"] = List;
List.__name__ = ["List"];
List.prototype = {
	h: null
	,q: null
	,length: null
	,add: function(item) {
		var x = new _$List_ListNode(item,null);
		if(this.h == null) {
			this.h = x;
		} else {
			this.q.next = x;
		}
		this.q = x;
		this.length++;
	}
	,push: function(item) {
		var x = new _$List_ListNode(item,this.h);
		this.h = x;
		if(this.q == null) {
			this.q = x;
		}
		this.length++;
	}
	,first: function() {
		if(this.h == null) {
			return null;
		} else {
			return this.h.item;
		}
	}
	,pop: function() {
		if(this.h == null) {
			return null;
		}
		var x = this.h.item;
		this.h = this.h.next;
		if(this.h == null) {
			this.q = null;
		}
		this.length--;
		return x;
	}
	,isEmpty: function() {
		return this.h == null;
	}
	,clear: function() {
		this.h = null;
		this.q = null;
		this.length = 0;
	}
	,remove: function(v) {
		var prev = null;
		var l = this.h;
		while(l != null) {
			if(l.item == v) {
				if(prev == null) {
					this.h = l.next;
				} else {
					prev.next = l.next;
				}
				if(this.q == l) {
					this.q = prev;
				}
				this.length--;
				return true;
			}
			prev = l;
			l = l.next;
		}
		return false;
	}
	,iterator: function() {
		return new _$List_ListIterator(this.h);
	}
	,__class__: List
};
var _$List_ListNode = function(item,next) {
	this.item = item;
	this.next = next;
};
$hxClasses["_List.ListNode"] = _$List_ListNode;
_$List_ListNode.__name__ = ["_List","ListNode"];
_$List_ListNode.prototype = {
	item: null
	,next: null
	,__class__: _$List_ListNode
};
var _$List_ListIterator = function(head) {
	this.head = head;
};
$hxClasses["_List.ListIterator"] = _$List_ListIterator;
_$List_ListIterator.__name__ = ["_List","ListIterator"];
_$List_ListIterator.prototype = {
	head: null
	,hasNext: function() {
		return this.head != null;
	}
	,next: function() {
		var val = this.head.item;
		this.head = this.head.next;
		return val;
	}
	,__class__: _$List_ListIterator
};
Math.__name__ = ["Math"];
var Reflect = function() { };
$hxClasses["Reflect"] = Reflect;
Reflect.__name__ = ["Reflect"];
Reflect.field = function(o,field) {
	try {
		return o[field];
	} catch( e ) {
		haxe_CallStack.lastException = e;
		return null;
	}
};
Reflect.getProperty = function(o,field) {
	var tmp;
	if(o == null) {
		return null;
	} else {
		var tmp1;
		if(o.__properties__) {
			tmp = o.__properties__["get_" + field];
			tmp1 = tmp;
		} else {
			tmp1 = false;
		}
		if(tmp1) {
			return o[tmp]();
		} else {
			return o[field];
		}
	}
};
Reflect.fields = function(o) {
	var a = [];
	if(o != null) {
		var hasOwnProperty = Object.prototype.hasOwnProperty;
		for( var f in o ) {
		if(f != "__id__" && f != "hx__closures__" && hasOwnProperty.call(o,f)) {
			a.push(f);
		}
		}
	}
	return a;
};
Reflect.isFunction = function(f) {
	if(typeof(f) == "function") {
		return !(f.__name__ || f.__ename__);
	} else {
		return false;
	}
};
Reflect.compare = function(a,b) {
	if(a == b) {
		return 0;
	} else if(a > b) {
		return 1;
	} else {
		return -1;
	}
};
Reflect.compareMethods = function(f1,f2) {
	if(f1 == f2) {
		return true;
	}
	if(!Reflect.isFunction(f1) || !Reflect.isFunction(f2)) {
		return false;
	}
	if(f1.scope == f2.scope && f1.method == f2.method) {
		return f1.method != null;
	} else {
		return false;
	}
};
Reflect.isObject = function(v) {
	if(v == null) {
		return false;
	}
	var t = typeof(v);
	if(!(t == "string" || t == "object" && v.__enum__ == null)) {
		if(t == "function") {
			return (v.__name__ || v.__ename__) != null;
		} else {
			return false;
		}
	} else {
		return true;
	}
};
Reflect.deleteField = function(o,field) {
	if(!Object.prototype.hasOwnProperty.call(o,field)) {
		return false;
	}
	delete(o[field]);
	return true;
};
Reflect.makeVarArgs = function(f) {
	return function() {
		var a = Array.prototype.slice.call(arguments);
		return f(a);
	};
};
var Std = function() { };
$hxClasses["Std"] = Std;
Std.__name__ = ["Std"];
Std.string = function(s) {
	return js_Boot.__string_rec(s,"");
};
Std.parseInt = function(x) {
	var v = parseInt(x,10);
	if(v == 0 && (HxOverrides.cca(x,1) == 120 || HxOverrides.cca(x,1) == 88)) {
		v = parseInt(x);
	}
	if(isNaN(v)) {
		return null;
	}
	return v;
};
var StringBuf = function() {
	this.b = "";
};
$hxClasses["StringBuf"] = StringBuf;
StringBuf.__name__ = ["StringBuf"];
StringBuf.prototype = {
	b: null
	,__class__: StringBuf
};
var StringTools = function() { };
$hxClasses["StringTools"] = StringTools;
StringTools.__name__ = ["StringTools"];
StringTools.htmlEscape = function(s,quotes) {
	s = s.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;");
	if(quotes) {
		return s.split("\"").join("&quot;").split("'").join("&#039;");
	} else {
		return s;
	}
};
StringTools.startsWith = function(s,start) {
	if(s.length >= start.length) {
		return HxOverrides.substr(s,0,start.length) == start;
	} else {
		return false;
	}
};
StringTools.endsWith = function(s,end) {
	var elen = end.length;
	var slen = s.length;
	if(slen >= elen) {
		return HxOverrides.substr(s,slen - elen,elen) == end;
	} else {
		return false;
	}
};
StringTools.isSpace = function(s,pos) {
	var c = HxOverrides.cca(s,pos);
	if(!(c > 8 && c < 14)) {
		return c == 32;
	} else {
		return true;
	}
};
StringTools.ltrim = function(s) {
	var l = s.length;
	var r = 0;
	while(r < l && StringTools.isSpace(s,r)) ++r;
	if(r > 0) {
		return HxOverrides.substr(s,r,l - r);
	} else {
		return s;
	}
};
StringTools.rtrim = function(s) {
	var l = s.length;
	var r = 0;
	while(r < l && StringTools.isSpace(s,l - r - 1)) ++r;
	if(r > 0) {
		return HxOverrides.substr(s,0,l - r);
	} else {
		return s;
	}
};
StringTools.trim = function(s) {
	return StringTools.ltrim(StringTools.rtrim(s));
};
StringTools.lpad = function(s,c,l) {
	if(c.length <= 0) {
		return s;
	}
	while(s.length < l) s = c + s;
	return s;
};
StringTools.replace = function(s,sub,by) {
	return s.split(sub).join(by);
};
StringTools.hex = function(n,digits) {
	var s = "";
	var hexChars = "0123456789ABCDEF";
	while(true) {
		s = hexChars.charAt(n & 15) + s;
		n >>>= 4;
		if(!(n > 0)) {
			break;
		}
	}
	if(digits != null) {
		while(s.length < digits) s = "0" + s;
	}
	return s;
};
var Sys = function() { };
$hxClasses["Sys"] = Sys;
Sys.__name__ = ["Sys"];
Sys.environment = function() {
	var m = new haxe_ds_StringMap();
	var _g = 0;
	var _g1 = Reflect.fields(process.env);
	while(_g < _g1.length) {
		var key = _g1[_g];
		++_g;
		var v = process.env[key];
		if(__map_reserved[key] != null) {
			m.setReserved(key,v);
		} else {
			m.h[key] = v;
		}
	}
	return m;
};
Sys.systemName = function() {
	var _g = process.platform;
	switch(_g) {
	case "darwin":
		return "Mac";
	case "freebsd":
		return "BSD";
	case "linux":
		return "Linux";
	case "win32":
		return "Windows";
	default:
		var other = _g;
		return other;
	}
};
var haxe_io_Output = function() { };
$hxClasses["haxe.io.Output"] = haxe_io_Output;
haxe_io_Output.__name__ = ["haxe","io","Output"];
haxe_io_Output.prototype = {
	bigEndian: null
	,writeByte: function(c) {
		throw new js__$Boot_HaxeError("Not implemented");
	}
	,writeBytes: function(s,pos,len) {
		if(pos < 0 || len < 0 || pos + len > s.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		var b = s.b;
		var k = len;
		while(k > 0) {
			this.writeByte(b[pos]);
			++pos;
			--k;
		}
		return len;
	}
	,set_bigEndian: function(b) {
		this.bigEndian = b;
		return b;
	}
	,write: function(s) {
		var l = s.length;
		var p = 0;
		while(l > 0) {
			var k = this.writeBytes(s,p,l);
			if(k == 0) {
				throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
			}
			p += k;
			l -= k;
		}
	}
	,writeFullBytes: function(s,pos,len) {
		while(len > 0) {
			var k = this.writeBytes(s,pos,len);
			pos += k;
			len -= k;
		}
	}
	,writeInt32: function(x) {
		if(this.bigEndian) {
			this.writeByte(x >>> 24);
			this.writeByte(x >> 16 & 255);
			this.writeByte(x >> 8 & 255);
			this.writeByte(x & 255);
		} else {
			this.writeByte(x & 255);
			this.writeByte(x >> 8 & 255);
			this.writeByte(x >> 16 & 255);
			this.writeByte(x >>> 24);
		}
	}
	,writeInput: function(i,bufsize) {
		if(bufsize == null) {
			bufsize = 4096;
		}
		var buf = new haxe_io_Bytes(new ArrayBuffer(bufsize));
		try {
			while(true) {
				var len = i.readBytes(buf,0,bufsize);
				if(len == 0) {
					throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
				}
				var p = 0;
				while(len > 0) {
					var k = this.writeBytes(buf,p,len);
					if(k == 0) {
						throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
					}
					p += k;
					len -= k;
				}
			}
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if( js_Boot.__instanceof(e,haxe_io_Eof) ) {
			} else throw(e);
		}
	}
	,writeString: function(s) {
		var b = haxe_io_Bytes.ofString(s);
		this.writeFullBytes(b,0,b.length);
	}
	,__class__: haxe_io_Output
	,__properties__: {set_bigEndian:"set_bigEndian"}
};
var _$Sys_FileOutput = function(fd) {
	this.fd = fd;
};
$hxClasses["_Sys.FileOutput"] = _$Sys_FileOutput;
_$Sys_FileOutput.__name__ = ["_Sys","FileOutput"];
_$Sys_FileOutput.__super__ = haxe_io_Output;
_$Sys_FileOutput.prototype = $extend(haxe_io_Output.prototype,{
	fd: null
	,writeByte: function(c) {
		js_node_Fs.writeSync(this.fd,String.fromCharCode(c));
	}
	,writeBytes: function(s,pos,len) {
		var data = s.b;
		return js_node_Fs.writeSync(this.fd,new js_node_buffer_Buffer(data.buffer,data.byteOffset,s.length),pos,len);
	}
	,writeString: function(s) {
		js_node_Fs.writeSync(this.fd,s);
	}
	,flush: function() {
		js_node_Fs.fsyncSync(this.fd);
	}
	,close: function() {
		js_node_Fs.closeSync(this.fd);
	}
	,__class__: _$Sys_FileOutput
});
var haxe_io_Input = function() { };
$hxClasses["haxe.io.Input"] = haxe_io_Input;
haxe_io_Input.__name__ = ["haxe","io","Input"];
haxe_io_Input.prototype = {
	bigEndian: null
	,readByte: function() {
		throw new js__$Boot_HaxeError("Not implemented");
	}
	,readBytes: function(s,pos,len) {
		var k = len;
		var b = s.b;
		if(pos < 0 || len < 0 || pos + len > s.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		try {
			while(k > 0) {
				b[pos] = this.readByte();
				++pos;
				--k;
			}
		} catch( eof ) {
			haxe_CallStack.lastException = eof;
			if (eof instanceof js__$Boot_HaxeError) eof = eof.val;
			if( js_Boot.__instanceof(eof,haxe_io_Eof) ) {
			} else throw(eof);
		}
		return len - k;
	}
	,set_bigEndian: function(b) {
		this.bigEndian = b;
		return b;
	}
	,readAll: function(bufsize) {
		if(bufsize == null) {
			bufsize = 16384;
		}
		var buf = new haxe_io_Bytes(new ArrayBuffer(bufsize));
		var total = new haxe_io_BytesBuffer();
		try {
			while(true) {
				var len = this.readBytes(buf,0,bufsize);
				if(len == 0) {
					throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
				}
				if(len < 0 || len > buf.length) {
					throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
				}
				var b1 = total.b;
				var b2 = buf.b;
				var _g1 = 0;
				var _g = len;
				while(_g1 < _g) {
					var i = _g1++;
					total.b.push(b2[i]);
				}
			}
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if( js_Boot.__instanceof(e,haxe_io_Eof) ) {
			} else throw(e);
		}
		return total.getBytes();
	}
	,readFullBytes: function(s,pos,len) {
		while(len > 0) {
			var k = this.readBytes(s,pos,len);
			if(k == 0) {
				throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
			}
			pos += k;
			len -= k;
		}
	}
	,read: function(nbytes) {
		var s = new haxe_io_Bytes(new ArrayBuffer(nbytes));
		var p = 0;
		while(nbytes > 0) {
			var k = this.readBytes(s,p,nbytes);
			if(k == 0) {
				throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);
			}
			p += k;
			nbytes -= k;
		}
		return s;
	}
	,readLine: function() {
		var buf = new haxe_io_BytesBuffer();
		var last;
		var s;
		try {
			while(true) {
				last = this.readByte();
				if(!(last != 10)) {
					break;
				}
				buf.b.push(last);
			}
			s = buf.getBytes().toString();
			if(HxOverrides.cca(s,s.length - 1) == 13) {
				s = HxOverrides.substr(s,0,-1);
			}
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if( js_Boot.__instanceof(e,haxe_io_Eof) ) {
				s = buf.getBytes().toString();
				if(s.length == 0) {
					throw new js__$Boot_HaxeError(e);
				}
			} else throw(e);
		}
		return s;
	}
	,readDouble: function() {
		var i1 = this.readInt32();
		var i2 = this.readInt32();
		if(this.bigEndian) {
			return haxe_io_FPHelper.i64ToDouble(i2,i1);
		} else {
			return haxe_io_FPHelper.i64ToDouble(i1,i2);
		}
	}
	,readInt8: function() {
		var n = this.readByte();
		if(n >= 128) {
			return n - 256;
		}
		return n;
	}
	,readUInt16: function() {
		var ch1 = this.readByte();
		var ch2 = this.readByte();
		if(this.bigEndian) {
			return ch2 | ch1 << 8;
		} else {
			return ch1 | ch2 << 8;
		}
	}
	,readInt24: function() {
		var ch1 = this.readByte();
		var ch2 = this.readByte();
		var ch3 = this.readByte();
		var n = this.bigEndian ? ch3 | ch2 << 8 | ch1 << 16 : ch1 | ch2 << 8 | ch3 << 16;
		if((n & 8388608) != 0) {
			return n - 16777216;
		}
		return n;
	}
	,readInt32: function() {
		var ch1 = this.readByte();
		var ch2 = this.readByte();
		var ch3 = this.readByte();
		var ch4 = this.readByte();
		if(this.bigEndian) {
			return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24;
		} else {
			return ch1 | ch2 << 8 | ch3 << 16 | ch4 << 24;
		}
	}
	,readString: function(len) {
		var b = new haxe_io_Bytes(new ArrayBuffer(len));
		this.readFullBytes(b,0,len);
		return b.toString();
	}
	,__class__: haxe_io_Input
	,__properties__: {set_bigEndian:"set_bigEndian"}
};
var _$Sys_FileInput = function(fd) {
	this.fd = fd;
};
$hxClasses["_Sys.FileInput"] = _$Sys_FileInput;
_$Sys_FileInput.__name__ = ["_Sys","FileInput"];
_$Sys_FileInput.__super__ = haxe_io_Input;
_$Sys_FileInput.prototype = $extend(haxe_io_Input.prototype,{
	fd: null
	,readByte: function() {
		var buf = new js_node_buffer_Buffer(1);
		try {
			js_node_Fs.readSync(this.fd,buf,0,1,null);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if(e.code == "EOF") {
				throw new js__$Boot_HaxeError(new haxe_io_Eof());
			} else {
				throw new js__$Boot_HaxeError(haxe_io_Error.Custom(e));
			}
		}
		return buf[0];
	}
	,readBytes: function(s,pos,len) {
		var data = s.b;
		var buf = new js_node_buffer_Buffer(data.buffer,data.byteOffset,s.length);
		try {
			return js_node_Fs.readSync(this.fd,buf,pos,len,null);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if(e.code == "EOF") {
				throw new js__$Boot_HaxeError(new haxe_io_Eof());
			} else {
				throw new js__$Boot_HaxeError(haxe_io_Error.Custom(e));
			}
		}
	}
	,close: function() {
		js_node_Fs.closeSync(this.fd);
	}
	,__class__: _$Sys_FileInput
});
var Tools = function() { };
$hxClasses["Tools"] = Tools;
Tools.__name__ = ["Tools"];
Tools.formatClassName = function(className,prefix) {
	if(className == null) {
		return null;
	}
	var lastIndexOfPeriod = className.lastIndexOf(".");
	var packageName = "";
	var name = "";
	if(lastIndexOfPeriod == -1) {
		name = prefix + className;
	} else {
		packageName = HxOverrides.substr(className,0,lastIndexOfPeriod);
		name = prefix + HxOverrides.substr(className,lastIndexOfPeriod + 1,null);
	}
	packageName = packageName.toLowerCase();
	name = HxOverrides.substr(name,0,1).toUpperCase() + HxOverrides.substr(name,1,null);
	if(packageName != "") {
		return packageName + "." + name;
	} else {
		return name;
	}
};
Tools.generateSWFClasses = function(project,output,swfAsset,prefix) {
	if(prefix == null) {
		prefix = "";
	}
	var movieClipTemplate = js_node_Fs.readFileSync(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("openfl"),true) + "/assets/templates/swf/MovieClip.mtt",{ encoding : "utf8"});
	var simpleButtonTemplate = js_node_Fs.readFileSync(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("openfl"),true) + "/assets/templates/swf/SimpleButton.mtt",{ encoding : "utf8"});
	var swf = new format_SWF(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(js_node_buffer__$Buffer_Helper.bytesOfBuffer(js_node_Fs.readFileSync(swfAsset.sourcePath))));
	if(prefix != "" && prefix != null) {
		prefix = HxOverrides.substr(prefix,0,1).toUpperCase() + HxOverrides.substr(prefix,1,null);
	}
	var generatedClasses = [];
	var className = swf.symbols.keys();
	while(className.hasNext()) {
		var className1 = className.next();
		if(className1 == null) {
			continue;
		}
		var lastIndexOfPeriod = className1.lastIndexOf(".");
		var packageName = "";
		var name = "";
		if(lastIndexOfPeriod == -1) {
			name = className1;
		} else {
			packageName = HxOverrides.substr(className1,0,lastIndexOfPeriod);
			name = HxOverrides.substr(className1,lastIndexOfPeriod + 1,null);
		}
		packageName = packageName.toLowerCase();
		name = HxOverrides.substr(name,0,1).toUpperCase() + HxOverrides.substr(name,1,null);
		var packageNameDot = packageName;
		if(packageNameDot.length > 0) {
			packageNameDot += ".";
		}
		var _this = swf.symbols;
		var symbolID = __map_reserved[className1] != null ? _this.getReserved(className1) : _this.h[className1];
		var templateData = null;
		var symbol = swf.data.getCharacter(symbolID);
		if(js_Boot.__instanceof(symbol,format_swf_tags_TagDefineButton2)) {
			templateData = simpleButtonTemplate;
		} else if(js_Boot.__instanceof(symbol,format_swf_SWFTimelineContainer)) {
			templateData = movieClipTemplate;
		}
		if(templateData != null) {
			var classProperties = [];
			var objectReferences = new haxe_ds_StringMap();
			if(js_Boot.__instanceof(symbol,format_swf_SWFTimelineContainer)) {
				var timelineContainer = symbol;
				if(timelineContainer.frames.length > 0) {
					var frameObject = timelineContainer.frames[0].objects.iterator();
					while(frameObject.hasNext()) {
						var frameObject1 = frameObject.next();
						var placeObject = timelineContainer.tags[frameObject1.placedAtIndex];
						if(placeObject != null && placeObject.instanceName != null) {
							var childSymbol = timelineContainer.getCharacter(frameObject1.characterId);
							var className2 = null;
							if(childSymbol != null) {
								if(js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineSprite)) {
									className2 = "openfl.display.MovieClip";
								} else if(js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineBitsLossless) || js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineBits)) {
									className2 = "openfl.display.Bitmap";
								} else if(js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineShape) || js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineMorphShape)) {
									className2 = "openfl.display.Shape";
								} else if(js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineText) || js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineEditText)) {
									className2 = "openfl.text.TextField";
								} else if(js_Boot.__instanceof(childSymbol,format_swf_tags_TagDefineButton2)) {
									className2 = "openfl.display.SimpleButton";
								}
								var tmp;
								if(className2 != null) {
									var key = placeObject.instanceName;
									tmp = !(__map_reserved[key] != null ? objectReferences.existsReserved(key) : objectReferences.h.hasOwnProperty(key));
								} else {
									tmp = false;
								}
								if(tmp) {
									var k = placeObject.instanceName;
									if(__map_reserved[k] != null) {
										objectReferences.setReserved(k,true);
									} else {
										objectReferences.h[k] = true;
									}
									classProperties.push({ name : placeObject.instanceName, type : className2});
								}
							}
						}
					}
				}
			}
			var context = { PACKAGE_NAME : packageName, PACKAGE_NAME_DOT : packageNameDot, CLASS_NAME : name, SWF_ID : swfAsset.id, SYMBOL_ID : symbolID, PREFIX : prefix, CLASS_PROPERTIES : classProperties};
			var template = new haxe_Template(templateData);
			var targetPath = "../haxe/_generated";
			var templateFile = new lime_project_Asset("",lime_tools_helpers_PathHelper.combine(targetPath,haxe_io_Path.directory(className1.split(".").join("/"))) + "/" + prefix + name + ".hx",lime_project_AssetType.TEMPLATE);
			templateFile.data = template.execute(context);
			output.assets.push(templateFile);
			generatedClasses.push(packageNameDot + prefix + name);
		}
	}
	return generatedClasses;
};
Tools.generateSWFLiteClasses = function(project,output,swfLite,swfLiteAsset,prefix) {
	if(prefix == null) {
		prefix = "";
	}
	var movieClipTemplate = js_node_Fs.readFileSync(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("openfl"),true) + "/assets/templates/swf/MovieClip.mtt",{ encoding : "utf8"});
	var simpleButtonTemplate = js_node_Fs.readFileSync(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("openfl"),true) + "/assets/templates/swf/SimpleButton.mtt",{ encoding : "utf8"});
	var generatedClasses = [];
	var symbolID = swfLite.symbols.keys();
	while(symbolID.hasNext()) {
		var symbolID1 = symbolID.next();
		var symbol = swfLite.symbols.h[symbolID1];
		var templateData = null;
		if(js_Boot.__instanceof(symbol,openfl__$internal_symbols_SpriteSymbol)) {
			templateData = movieClipTemplate;
		} else if(js_Boot.__instanceof(symbol,openfl__$internal_symbols_ButtonSymbol)) {
			templateData = simpleButtonTemplate;
		}
		if(templateData != null && symbol.className != null) {
			var className = symbol.className;
			var name = className;
			var packageName = "";
			var lastIndexOfPeriod = className.lastIndexOf(".");
			if(lastIndexOfPeriod > -1) {
				packageName = HxOverrides.substr(className,0,lastIndexOfPeriod);
				name = HxOverrides.substr(className,lastIndexOfPeriod + 1,null);
			}
			var packageNameDot = packageName;
			if(packageNameDot.length > 0) {
				packageNameDot += ".";
			}
			var classProperties = [];
			if(js_Boot.__instanceof(symbol,openfl__$internal_symbols_SpriteSymbol)) {
				var spriteSymbol = symbol;
				if(spriteSymbol.frames.length > 0 && Object.prototype.hasOwnProperty.call(spriteSymbol.frames[0],"objects")) {
					var _g = 0;
					var _g1 = spriteSymbol.frames[0].objects;
					while(_g < _g1.length) {
						var object = _g1[_g];
						++_g;
						if(object.name != null) {
							if(swfLite.symbols.h.hasOwnProperty(object.symbol)) {
								var childSymbol = swfLite.symbols.h[object.symbol];
								var className1 = childSymbol.className;
								if(className1 == null) {
									if(js_Boot.__instanceof(childSymbol,openfl__$internal_symbols_SpriteSymbol)) {
										className1 = "openfl.display.MovieClip";
									} else if(js_Boot.__instanceof(childSymbol,openfl__$internal_symbols_ShapeSymbol)) {
										className1 = "openfl.display.Shape";
									} else if(js_Boot.__instanceof(childSymbol,openfl__$internal_symbols_BitmapSymbol)) {
										className1 = "openfl.display.Bitmap";
									} else if(js_Boot.__instanceof(childSymbol,openfl__$internal_symbols_DynamicTextSymbol) || js_Boot.__instanceof(childSymbol,openfl__$internal_symbols_StaticTextSymbol)) {
										className1 = "openfl.text.TextField";
									} else if(js_Boot.__instanceof(childSymbol,openfl__$internal_symbols_ButtonSymbol)) {
										className1 = "openfl.display.SimpleButton";
									}
								}
								if(className1 != null) {
									classProperties.push({ name : object.name, type : className1});
								}
							}
						}
					}
				}
			}
			var context = { PACKAGE_NAME : packageName, PACKAGE_NAME_DOT : packageNameDot, CLASS_NAME : name, SWF_ID : swfLiteAsset.id, SYMBOL_ID : symbolID1, PREFIX : "", CLASS_PROPERTIES : classProperties};
			var template = new haxe_Template(templateData);
			var targetPath;
			if(project.target == "ios") {
				targetPath = lime_tools_helpers_PathHelper.tryFullPath(Tools.targetDirectory) + "/" + project.app.file + "/" + "/haxe/_generated";
			} else {
				targetPath = lime_tools_helpers_PathHelper.tryFullPath(Tools.targetDirectory) + "/haxe/_generated";
			}
			var templateFile = new lime_project_Asset("",lime_tools_helpers_PathHelper.combine(targetPath,haxe_io_Path.directory(symbol.className.split(".").join("/"))) + "/" + name + ".hx",lime_project_AssetType.TEMPLATE);
			templateFile.data = template.execute(context);
			output.assets.push(templateFile);
			generatedClasses.push(className);
		}
	}
	return generatedClasses;
};
Tools.main = function() {
	var $arguments = process.argv.slice(2);
	$arguments.shift();
	$arguments.shift();
	var words = [];
	Tools.targetFlags = new haxe_ds_StringMap();
	var _g = 0;
	while(_g < $arguments.length) {
		var argument = $arguments[_g];
		++_g;
		if(HxOverrides.substr(argument,0,1) == "-") {
			if(HxOverrides.substr(argument,1,1) == "-") {
				var equals = argument.indexOf("=");
				if(equals > -1) {
					var field = HxOverrides.substr(argument,2,equals - 2);
					var argValue = HxOverrides.substr(argument,equals + 1,null);
					switch(field) {
					case "prefix":
						Tools.filePrefix = argValue;
						break;
					case "targetDirectory":
						Tools.targetDirectory = argValue;
						break;
					default:
					}
				}
			} else {
				if(argument == "-v" || argument == "-verbose") {
					argument = "-verbose";
					lime_tools_helpers_LogHelper.verbose = true;
				}
				var this1 = Tools.targetFlags;
				var key = HxOverrides.substr(argument,1,null);
				var _this = this1;
				if(__map_reserved[key] != null) {
					_this.setReserved(key,"");
				} else {
					_this.h[key] = "";
				}
			}
		} else {
			words.push(argument);
		}
	}
	if(words[0] == "process") {
		if(words.length == 1) {
			lime_tools_helpers_LogHelper.error("Incorrect number of arguments for command 'process'");
			return;
		}
		var inputPath = words[1];
		var outputPath = words.length > 2 ? words[2] : null;
		if(words.length == 1 || haxe_io_Path.extension(inputPath) == "swf") {
			if(words.length > 3) {
				lime_tools_helpers_LogHelper.error("Incorrect number of arguments for command 'process'");
				return;
			}
			lime_tools_helpers_LogHelper.info("",lime_tools_helpers_LogHelper.accentColor + "Running command: PROCESS" + lime_tools_helpers_LogHelper.resetColor);
			Tools.processFile(inputPath,outputPath,Tools.filePrefix);
		} else if(words.length > 2) {
			try {
				var projectData = js_node_Fs.readFileSync(inputPath,{ encoding : "utf8"});
				var unserializer = new haxe_Unserializer(projectData);
				unserializer.setResolver({ resolveEnum : Type.resolveEnum, resolveClass : Tools.resolveClass});
				var project = unserializer.unserialize();
				var output = Tools.processLibraries(project);
				if(output != null) {
					js_node_Fs.writeFileSync(outputPath,haxe_Serializer.run(output));
				}
			} catch( e ) {
				haxe_CallStack.lastException = e;
				if (e instanceof js__$Boot_HaxeError) e = e.val;
				lime_tools_helpers_LogHelper.error(e);
			}
		}
	}
};
Tools.processFile = function(sourcePath,targetPath,prefix) {
	var bytes = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(js_node_buffer__$Buffer_Helper.bytesOfBuffer(js_node_Fs.readFileSync(sourcePath)));
	var swf = new format_SWF(bytes);
	var exporter = new format_swf_exporters_SWFLiteExporter(swf.data);
	var swfLite = exporter.swfLite;
	if(prefix != null && prefix != "") {
		var symbol = swfLite.symbols.iterator();
		while(symbol.hasNext()) {
			var symbol1 = symbol.next();
			if(symbol1.className != null) {
				symbol1.className = Tools.formatClassName(symbol1.className,prefix);
			}
		}
	}
	if(targetPath == null) {
		targetPath = haxe_io_Path.withoutExtension(sourcePath) + ".bundle";
	}
	try {
		lime_tools_helpers_PathHelper.removeDirectory(targetPath);
	} catch( e ) {
		haxe_CallStack.lastException = e;
	}
	lime_tools_helpers_PathHelper.mkdir(targetPath);
	var project = new lime_project_HXProject();
	var createdDirectory = false;
	var id = exporter.bitmaps.keys();
	while(id.hasNext()) {
		var id1 = id.next();
		if(!createdDirectory) {
			lime_tools_helpers_PathHelper.mkdir(lime_tools_helpers_PathHelper.combine(targetPath,"symbols"));
			createdDirectory = true;
		}
		var type = exporter.bitmapTypes.h[id1] == format_swf_exporters_BitmapType.PNG ? "png" : "jpg";
		var symbol2 = swfLite.symbols.h[id1];
		symbol2.path = "symbols/" + id1 + "." + type;
		swfLite.symbols.h[id1] = symbol2;
		var asset = new lime_project_Asset("",symbol2.path,lime_project_AssetType.IMAGE);
		var assetData = exporter.bitmaps.h[id1];
		project.assets.push(asset);
		var path = lime_tools_helpers_PathHelper.combine(targetPath,symbol2.path);
		var bytes1 = openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(assetData);
		var data = bytes1.b;
		js_node_Fs.writeFileSync(path,new js_node_buffer_Buffer(data.buffer,data.byteOffset,bytes1.length));
		if(exporter.bitmapTypes.h[id1] == format_swf_exporters_BitmapType.JPEG_ALPHA) {
			symbol2.alpha = "symbols/" + id1 + "a.png";
			var asset1 = new lime_project_Asset("",symbol2.alpha,lime_project_AssetType.IMAGE);
			var assetData1 = exporter.bitmapAlpha.h[id1];
			project.assets.push(asset1);
			var path1 = lime_tools_helpers_PathHelper.combine(targetPath,symbol2.alpha);
			var bytes2 = openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(assetData1);
			var data1 = bytes2.b;
			js_node_Fs.writeFileSync(path1,new js_node_buffer_Buffer(data1.buffer,data1.byteOffset,bytes2.length));
		}
	}
	createdDirectory = false;
	var id2 = exporter.sounds.keys();
	while(id2.hasNext()) {
		var id3 = id2.next();
		if(!createdDirectory) {
			lime_tools_helpers_PathHelper.mkdir(lime_tools_helpers_PathHelper.combine(targetPath,"sounds"));
			createdDirectory = true;
		}
		var symbolClassName = exporter.soundSymbolClassNames.h[id3];
		var typeId = exporter.soundTypes.h[id3];
		lime_tools_helpers_LogHelper.info(""," - \x1B[1mExporting sound:\x1B[0m [id=" + id3 + ", type=" + Std.string(typeId) + ", symbolClassName=" + symbolClassName + "]");
		var type1;
		switch(typeId[1]) {
		case 1:
			type1 = "adpcm";
			break;
		case 2:
			type1 = "mp3";
			break;
		default:
			throw new js__$Boot_HaxeError("unsupported sound type " + id3 + ", type " + Std.string(typeId) + ", symbol class name " + symbolClassName);
		}
		var path2 = "sounds/" + symbolClassName + "." + type1;
		var assetData2 = exporter.sounds.h[id3];
		var path3 = lime_tools_helpers_PathHelper.combine(targetPath,path2);
		var bytes3 = openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(assetData2);
		var data2 = bytes3.b;
		js_node_Fs.writeFileSync(path3,new js_node_buffer_Buffer(data2.buffer,data2.byteOffset,bytes3.length));
		var soundAsset = new lime_project_Asset("","sounds/" + symbolClassName + ".mp3",lime_project_AssetType.SOUND);
		project.assets.push(soundAsset);
	}
	var swfLiteAsset = new lime_project_Asset("","swflite" + ".bin",lime_project_AssetType.TEXT);
	var swfLiteAssetData = swfLite.serialize();
	project.assets.push(swfLiteAsset);
	js_node_Fs.writeFileSync(lime_tools_helpers_PathHelper.combine(targetPath,swfLiteAsset.targetPath),swfLiteAssetData);
	var data3 = lime_tools_helpers_AssetHelper.createManifest(project);
	data3.libraryType = "openfl._internal.swf.SWFLiteLibrary";
	data3.libraryArgs = ["swflite" + ".bin"];
	data3.name = haxe_io_Path.withoutDirectory(haxe_io_Path.withoutExtension(sourcePath));
	js_node_Fs.writeFileSync(lime_tools_helpers_PathHelper.combine(targetPath,"library.json"),data3.serialize());
	return true;
};
Tools.processLibraries = function(project) {
	lime_project_HXProject._debug = project.debug;
	lime_project_HXProject._environment = project.environment;
	lime_project_HXProject._target = project.target;
	lime_project_HXProject._targetFlags = project.targetFlags;
	lime_project_HXProject._templatePaths = project.templatePaths;
	lime_project_HXProject._userDefines = project.defines;
	var output = new lime_project_HXProject();
	var embeddedSWF = false;
	var embeddedSWFLite = false;
	var _g = 0;
	var _g1 = project.libraries;
	while(_g < _g1.length) {
		var library = _g1[_g];
		++_g;
		if(library.sourcePath == null) {
			continue;
		}
		var type = library.type;
		if(type == null) {
			type = haxe_io_Path.extension(library.sourcePath).toLowerCase();
		}
		if(type == "swf" || type == "swf_lite" || type == "swflite") {
			if(project.target == "flash" || project.target == "air") {
				if(!sys_FileSystem.exists(library.sourcePath)) {
					lime_tools_helpers_LogHelper.warn("Could not find library file: " + library.sourcePath);
					continue;
				}
				lime_tools_helpers_LogHelper.info(""," - \x1B[1mProcessing library:\x1B[0m " + library.sourcePath + " [SWF]");
				var swf = new lime_project_Asset(library.sourcePath,"lib/" + library.name + "/" + library.name + ".swf",lime_project_AssetType.BINARY);
				swf.id = "lib/" + library.name + "/" + library.name + ".swf";
				swf.library = library.name;
				var embed = library.embed != false;
				if(embed) {
					output.haxeflags.push("-resource " + swf.sourcePath + "@swf:" + swf.id);
				} else {
					swf.embed = false;
					output.assets.push(swf);
				}
				var data = lime_tools_helpers_AssetHelper.createManifest(output,library.name);
				data.libraryType = "openfl._internal.swf.SWFLibrary";
				data.libraryArgs = ["lib/" + library.name + "/" + library.name + ".swf"];
				data.name = library.name;
				var asset = new lime_project_Asset("","lib/" + library.name + ".json",lime_project_AssetType.MANIFEST);
				asset.id = "libraries/" + library.name + ".json";
				asset.library = library.name;
				asset.data = data.serialize();
				asset.embed = true;
				output.assets.push(asset);
				var generatedClasses = Tools.generateSWFClasses(project,output,swf,library.prefix);
				var _g2 = 0;
				while(_g2 < generatedClasses.length) {
					var className = generatedClasses[_g2];
					++_g2;
					output.haxeflags.push(className);
				}
				embeddedSWF = true;
			} else {
				if(!sys_FileSystem.exists(library.sourcePath)) {
					lime_tools_helpers_LogHelper.warn("Could not find library file: " + library.sourcePath);
					continue;
				}
				lime_tools_helpers_LogHelper.info(""," - \x1B[1mProcessing library:\x1B[0m " + library.sourcePath + " [SWF]");
				var cacheAvailable = false;
				var cacheDirectory = null;
				var merge = new lime_project_HXProject();
				if(Tools.targetDirectory != null) {
					cacheDirectory = Tools.targetDirectory + "/obj/libraries/" + library.name;
					var cacheFile = cacheDirectory + "/" + library.name + ".bin";
					if(sys_FileSystem.exists(cacheFile)) {
						var cacheDate = js_node_Fs.statSync(cacheFile).mtime;
						var swfToolDate = js_node_Fs.statSync(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("openfl"),true) + "/scripts/tools.n").mtime;
						var sourceDate = js_node_Fs.statSync(library.sourcePath).mtime;
						if(sourceDate.getTime() < cacheDate.getTime() && swfToolDate.getTime() < cacheDate.getTime()) {
							cacheAvailable = true;
						}
					}
				}
				if(cacheAvailable) {
					var _g21 = 0;
					var _g3 = js_node_Fs.readdirSync(cacheDirectory);
					while(_g21 < _g3.length) {
						var file = _g3[_g21];
						++_g21;
						if(haxe_io_Path.extension(file) == "png" || haxe_io_Path.extension(file) == "jpg") {
							var asset1 = new lime_project_Asset(cacheDirectory + "/" + file,"lib/" + library.name + "/" + file,lime_project_AssetType.IMAGE);
							if(library.embed != null) {
								asset1.embed = library.embed;
							}
							merge.assets.push(asset1);
						}
					}
					var swfLiteAsset = new lime_project_Asset(cacheDirectory + "/" + library.name + ".bin","lib/" + library.name + "/" + library.name + ".bin",lime_project_AssetType.TEXT);
					if(library.embed != null) {
						swfLiteAsset.embed = library.embed;
					}
					merge.assets.push(swfLiteAsset);
					if(sys_FileSystem.exists(cacheDirectory + "/classNames.txt")) {
						var generatedClasses1 = js_node_Fs.readFileSync(cacheDirectory + "/classNames.txt",{ encoding : "utf8"}).split("\n");
						var _g22 = 0;
						while(_g22 < generatedClasses1.length) {
							var className1 = generatedClasses1[_g22];
							++_g22;
							output.haxeflags.push(className1);
						}
					}
					embeddedSWFLite = true;
				} else {
					if(cacheDirectory != null) {
						lime_tools_helpers_PathHelper.mkdir(cacheDirectory);
					}
					var bytes = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(js_node_buffer__$Buffer_Helper.bytesOfBuffer(js_node_Fs.readFileSync(library.sourcePath)));
					var swf1 = new format_SWF(bytes);
					var exporter = new format_swf_exporters_SWFLiteExporter(swf1.data);
					var swfLite = exporter.swfLite;
					if(library.prefix != null && library.prefix != "") {
						var prefix = library.prefix;
						var symbol = swfLite.symbols.iterator();
						while(symbol.hasNext()) {
							var symbol1 = symbol.next();
							if(symbol1.className != null) {
								symbol1.className = Tools.formatClassName(symbol1.className,prefix);
							}
						}
					}
					var id = exporter.bitmaps.keys();
					while(id.hasNext()) {
						var id1 = id.next();
						var type1 = exporter.bitmapTypes.h[id1] == format_swf_exporters_BitmapType.PNG ? "png" : "jpg";
						var symbol2 = swfLite.symbols.h[id1];
						symbol2.path = "lib/" + library.name + "/" + id1 + "." + type1;
						swfLite.symbols.h[id1] = symbol2;
						var asset2 = new lime_project_Asset("",symbol2.path,lime_project_AssetType.IMAGE);
						var assetData = exporter.bitmaps.h[id1];
						if(cacheDirectory != null) {
							asset2.sourcePath = cacheDirectory + "/" + id1 + "." + type1;
							asset2.format = type1;
							var path = asset2.sourcePath;
							var bytes1 = openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(assetData);
							var data1 = bytes1.b;
							js_node_Fs.writeFileSync(path,new js_node_buffer_Buffer(data1.buffer,data1.byteOffset,bytes1.length));
						} else {
							asset2.data = lime_tools_helpers_StringHelper.base64Encode(assetData);
							asset2.encoding = lime_project_AssetEncoding.BASE64;
						}
						if(library.embed != null) {
							asset2.embed = library.embed;
						}
						merge.assets.push(asset2);
						if(exporter.bitmapTypes.h[id1] == format_swf_exporters_BitmapType.JPEG_ALPHA) {
							symbol2.alpha = "lib/" + library.name + "/" + id1 + "a.png";
							var asset3 = new lime_project_Asset("",symbol2.alpha,lime_project_AssetType.IMAGE);
							var assetData1 = exporter.bitmapAlpha.h[id1];
							if(cacheDirectory != null) {
								asset3.sourcePath = cacheDirectory + "/" + id1 + "a.png";
								asset3.format = "png";
								var path1 = asset3.sourcePath;
								var bytes2 = openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(assetData1);
								var data2 = bytes2.b;
								js_node_Fs.writeFileSync(path1,new js_node_buffer_Buffer(data2.buffer,data2.byteOffset,bytes2.length));
							} else {
								asset3.data = lime_tools_helpers_StringHelper.base64Encode(assetData1);
								asset3.encoding = lime_project_AssetEncoding.BASE64;
							}
							asset3.embed = false;
							if(library.embed != null) {
								asset3.embed = library.embed;
							}
							merge.assets.push(asset3);
						}
					}
					var swfLiteAsset1 = new lime_project_Asset("","lib/" + library.name + "/" + library.name + ".bin",lime_project_AssetType.TEXT);
					var swfLiteAssetData = swfLite.serialize();
					if(cacheDirectory != null) {
						swfLiteAsset1.sourcePath = cacheDirectory + "/" + library.name + ".bin";
						js_node_Fs.writeFileSync(swfLiteAsset1.sourcePath,swfLiteAssetData);
					} else {
						swfLiteAsset1.data = swfLiteAssetData;
					}
					if(library.embed != null) {
						swfLiteAsset1.embed = library.embed;
					}
					merge.assets.push(swfLiteAsset1);
					if(library.generate) {
						var generatedClasses2 = Tools.generateSWFLiteClasses(project,output,swfLite,swfLiteAsset1,library.prefix);
						var _g23 = 0;
						while(_g23 < generatedClasses2.length) {
							var className2 = generatedClasses2[_g23];
							++_g23;
							output.haxeflags.push(className2);
						}
						if(cacheDirectory != null) {
							js_node_Fs.writeFileSync(cacheDirectory + "/classNames.txt",generatedClasses2.join("\n"));
						}
					}
					embeddedSWFLite = true;
				}
				var data3 = lime_tools_helpers_AssetHelper.createManifest(merge);
				data3.libraryType = "openfl._internal.swf.SWFLiteLibrary";
				data3.libraryArgs = ["lib/" + library.name + "/" + library.name + ".bin"];
				data3.name = library.name;
				var _g24 = 0;
				var _g31 = merge.assets;
				while(_g24 < _g31.length) {
					var asset4 = _g31[_g24];
					++_g24;
					asset4.library = library.name;
				}
				output.merge(merge);
				var asset5 = new lime_project_Asset("","lib/" + library.name + ".json",lime_project_AssetType.MANIFEST);
				asset5.id = "libraries/" + library.name + ".json";
				asset5.library = library.name;
				asset5.data = data3.serialize();
				if(library.embed != null) {
					asset5.embed = library.embed;
				}
				output.assets.push(asset5);
			}
		}
	}
	if(embeddedSWF) {
		var _this = output.haxedefs;
		if(__map_reserved["swf"] != null) {
			_this.setReserved("swf","1");
		} else {
			_this.h["swf"] = "1";
		}
	}
	if(embeddedSWFLite) {
		var _this1 = output.haxedefs;
		if(__map_reserved["swf"] != null) {
			_this1.setReserved("swf","1");
		} else {
			_this1.h["swf"] = "1";
		}
	}
	if(embeddedSWF || embeddedSWFLite) {
		var generatedPath;
		if(project.target == "ios") {
			generatedPath = lime_tools_helpers_PathHelper.combine(Tools.targetDirectory,project.app.file + "/" + "/haxe/_generated");
		} else {
			generatedPath = lime_tools_helpers_PathHelper.combine(Tools.targetDirectory,"haxe/_generated");
		}
		output.sources.push(generatedPath);
		output.sources = output.sources.concat(project.sources);
		output.haxelibs = output.haxelibs.concat(project.haxelibs);
		var _this2 = output.haxedefs;
		if(__map_reserved["swf"] != null) {
			_this2.setReserved("swf","1");
		} else {
			_this2.h["swf"] = "1";
		}
		return output;
	}
	return null;
};
Tools.resolveClass = function(name) {
	var result = Type.resolveClass(name);
	if(result == null) {
		result = lime_project_HXProject;
	}
	return result;
};
var ValueType = $hxClasses["ValueType"] = { __ename__ : ["ValueType"], __constructs__ : ["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"] };
ValueType.TNull = ["TNull",0];
ValueType.TNull.toString = $estr;
ValueType.TNull.__enum__ = ValueType;
ValueType.TInt = ["TInt",1];
ValueType.TInt.toString = $estr;
ValueType.TInt.__enum__ = ValueType;
ValueType.TFloat = ["TFloat",2];
ValueType.TFloat.toString = $estr;
ValueType.TFloat.__enum__ = ValueType;
ValueType.TBool = ["TBool",3];
ValueType.TBool.toString = $estr;
ValueType.TBool.__enum__ = ValueType;
ValueType.TObject = ["TObject",4];
ValueType.TObject.toString = $estr;
ValueType.TObject.__enum__ = ValueType;
ValueType.TFunction = ["TFunction",5];
ValueType.TFunction.toString = $estr;
ValueType.TFunction.__enum__ = ValueType;
ValueType.TClass = function(c) { var $x = ["TClass",6,c]; $x.__enum__ = ValueType; $x.toString = $estr; return $x; };
ValueType.TEnum = function(e) { var $x = ["TEnum",7,e]; $x.__enum__ = ValueType; $x.toString = $estr; return $x; };
ValueType.TUnknown = ["TUnknown",8];
ValueType.TUnknown.toString = $estr;
ValueType.TUnknown.__enum__ = ValueType;
var Type = function() { };
$hxClasses["Type"] = Type;
Type.__name__ = ["Type"];
Type.getEnum = function(o) {
	if(o == null) {
		return null;
	}
	return o.__enum__;
};
Type.getSuperClass = function(c) {
	return c.__super__;
};
Type.getClassName = function(c) {
	var a = c.__name__;
	if(a == null) {
		return null;
	}
	return a.join(".");
};
Type.getEnumName = function(e) {
	var a = e.__ename__;
	return a.join(".");
};
Type.resolveClass = function(name) {
	var cl = $hxClasses[name];
	if(cl == null || !cl.__name__) {
		return null;
	}
	return cl;
};
Type.resolveEnum = function(name) {
	var e = $hxClasses[name];
	if(e == null || !e.__ename__) {
		return null;
	}
	return e;
};
Type.createInstance = function(cl,args) {
	var _g = args.length;
	switch(_g) {
	case 0:
		return new cl();
	case 1:
		return new cl(args[0]);
	case 2:
		return new cl(args[0],args[1]);
	case 3:
		return new cl(args[0],args[1],args[2]);
	case 4:
		return new cl(args[0],args[1],args[2],args[3]);
	case 5:
		return new cl(args[0],args[1],args[2],args[3],args[4]);
	case 6:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5]);
	case 7:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
	case 8:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
	case 9:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8]);
	case 10:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9]);
	case 11:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10]);
	case 12:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11]);
	case 13:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12]);
	case 14:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12],args[13]);
	default:
		throw new js__$Boot_HaxeError("Too many arguments");
	}
};
Type.createEmptyInstance = function(cl) {
	function empty() {}; empty.prototype = cl.prototype;
	return new empty();
};
Type.createEnum = function(e,constr,params) {
	var f = Reflect.field(e,constr);
	if(f == null) {
		throw new js__$Boot_HaxeError("No such constructor " + constr);
	}
	if(Reflect.isFunction(f)) {
		if(params == null) {
			throw new js__$Boot_HaxeError("Constructor " + constr + " need parameters");
		}
		return f.apply(e,params);
	}
	if(params != null && params.length != 0) {
		throw new js__$Boot_HaxeError("Constructor " + constr + " does not need parameters");
	}
	return f;
};
Type.getInstanceFields = function(c) {
	var a = [];
	for(var i in c.prototype) a.push(i);
	HxOverrides.remove(a,"__class__");
	HxOverrides.remove(a,"__properties__");
	return a;
};
Type["typeof"] = function(v) {
	var _g = typeof(v);
	switch(_g) {
	case "boolean":
		return ValueType.TBool;
	case "function":
		if(v.__name__ || v.__ename__) {
			return ValueType.TObject;
		}
		return ValueType.TFunction;
	case "number":
		if(Math.ceil(v) == v % 2147483648.0) {
			return ValueType.TInt;
		}
		return ValueType.TFloat;
	case "object":
		if(v == null) {
			return ValueType.TNull;
		}
		var e = v.__enum__;
		if(e != null) {
			return ValueType.TEnum(e);
		}
		var c = js_Boot.getClass(v);
		if(c != null) {
			return ValueType.TClass(c);
		}
		return ValueType.TObject;
	case "string":
		return ValueType.TClass(String);
	case "undefined":
		return ValueType.TNull;
	default:
		return ValueType.TUnknown;
	}
};
var _$UInt_UInt_$Impl_$ = {};
$hxClasses["_UInt.UInt_Impl_"] = _$UInt_UInt_$Impl_$;
_$UInt_UInt_$Impl_$.__name__ = ["_UInt","UInt_Impl_"];
_$UInt_UInt_$Impl_$.gt = function(a,b) {
	var aNeg = a < 0;
	var bNeg = b < 0;
	if(aNeg != bNeg) {
		return aNeg;
	} else {
		return a > b;
	}
};
_$UInt_UInt_$Impl_$.toFloat = function(this1) {
	var $int = this1;
	if($int < 0) {
		return 4294967296.0 + $int;
	} else {
		return $int + 0.0;
	}
};
var Xml = function(nodeType) {
	this.nodeType = nodeType;
	this.children = [];
	this.attributeMap = new haxe_ds_StringMap();
};
$hxClasses["Xml"] = Xml;
Xml.__name__ = ["Xml"];
Xml.parse = function(str) {
	return haxe_xml_Parser.parse(str);
};
Xml.createElement = function(name) {
	var xml = new Xml(Xml.Element);
	if(xml.nodeType != Xml.Element) {
		throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + xml.nodeType);
	}
	xml.nodeName = name;
	return xml;
};
Xml.createPCData = function(data) {
	var xml = new Xml(Xml.PCData);
	if(xml.nodeType == Xml.Document || xml.nodeType == Xml.Element) {
		throw new js__$Boot_HaxeError("Bad node type, unexpected " + xml.nodeType);
	}
	xml.nodeValue = data;
	return xml;
};
Xml.createCData = function(data) {
	var xml = new Xml(Xml.CData);
	if(xml.nodeType == Xml.Document || xml.nodeType == Xml.Element) {
		throw new js__$Boot_HaxeError("Bad node type, unexpected " + xml.nodeType);
	}
	xml.nodeValue = data;
	return xml;
};
Xml.createComment = function(data) {
	var xml = new Xml(Xml.Comment);
	if(xml.nodeType == Xml.Document || xml.nodeType == Xml.Element) {
		throw new js__$Boot_HaxeError("Bad node type, unexpected " + xml.nodeType);
	}
	xml.nodeValue = data;
	return xml;
};
Xml.createDocType = function(data) {
	var xml = new Xml(Xml.DocType);
	if(xml.nodeType == Xml.Document || xml.nodeType == Xml.Element) {
		throw new js__$Boot_HaxeError("Bad node type, unexpected " + xml.nodeType);
	}
	xml.nodeValue = data;
	return xml;
};
Xml.createProcessingInstruction = function(data) {
	var xml = new Xml(Xml.ProcessingInstruction);
	if(xml.nodeType == Xml.Document || xml.nodeType == Xml.Element) {
		throw new js__$Boot_HaxeError("Bad node type, unexpected " + xml.nodeType);
	}
	xml.nodeValue = data;
	return xml;
};
Xml.createDocument = function() {
	return new Xml(Xml.Document);
};
Xml.prototype = {
	nodeType: null
	,nodeName: null
	,nodeValue: null
	,parent: null
	,children: null
	,attributeMap: null
	,get: function(att) {
		if(this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + this.nodeType);
		}
		var _this = this.attributeMap;
		if(__map_reserved[att] != null) {
			return _this.getReserved(att);
		} else {
			return _this.h[att];
		}
	}
	,set: function(att,value) {
		if(this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + this.nodeType);
		}
		var _this = this.attributeMap;
		if(__map_reserved[att] != null) {
			_this.setReserved(att,value);
		} else {
			_this.h[att] = value;
		}
	}
	,exists: function(att) {
		if(this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + this.nodeType);
		}
		var _this = this.attributeMap;
		if(__map_reserved[att] != null) {
			return _this.existsReserved(att);
		} else {
			return _this.h.hasOwnProperty(att);
		}
	}
	,attributes: function() {
		if(this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + this.nodeType);
		}
		return this.attributeMap.keys();
	}
	,elements: function() {
		if(this.nodeType != Xml.Document && this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType);
		}
		var _g = [];
		var _g1 = 0;
		var _g2 = this.children;
		while(_g1 < _g2.length) {
			var child = _g2[_g1];
			++_g1;
			if(child.nodeType == Xml.Element) {
				_g.push(child);
			}
		}
		var ret = _g;
		return HxOverrides.iter(ret);
	}
	,firstElement: function() {
		if(this.nodeType != Xml.Document && this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType);
		}
		var _g = 0;
		var _g1 = this.children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			if(child.nodeType == Xml.Element) {
				return child;
			}
		}
		return null;
	}
	,addChild: function(x) {
		if(this.nodeType != Xml.Document && this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType);
		}
		if(x.parent != null) {
			x.parent.removeChild(x);
		}
		this.children.push(x);
		x.parent = this;
	}
	,removeChild: function(x) {
		if(this.nodeType != Xml.Document && this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + this.nodeType);
		}
		if(HxOverrides.remove(this.children,x)) {
			x.parent = null;
			return true;
		}
		return false;
	}
	,__class__: Xml
};
var openfl_events_IEventDispatcher = function() { };
$hxClasses["openfl.events.IEventDispatcher"] = openfl_events_IEventDispatcher;
openfl_events_IEventDispatcher.__name__ = ["openfl","events","IEventDispatcher"];
openfl_events_IEventDispatcher.prototype = {
	addEventListener: null
	,dispatchEvent: null
	,hasEventListener: null
	,removeEventListener: null
	,willTrigger: null
	,__class__: openfl_events_IEventDispatcher
};
var openfl_events_EventDispatcher = function(target) {
	if(target != null) {
		this.__targetDispatcher = target;
	}
};
$hxClasses["openfl.events.EventDispatcher"] = openfl_events_EventDispatcher;
openfl_events_EventDispatcher.__name__ = ["openfl","events","EventDispatcher"];
openfl_events_EventDispatcher.__interfaces__ = [openfl_events_IEventDispatcher];
openfl_events_EventDispatcher.prototype = {
	__eventMap: null
	,__iterators: null
	,__targetDispatcher: null
	,addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
		if(useWeakReference == null) {
			useWeakReference = false;
		}
		if(priority == null) {
			priority = 0;
		}
		if(useCapture == null) {
			useCapture = false;
		}
		if(listener == null) {
			return;
		}
		if(this.__eventMap == null) {
			this.__eventMap = new haxe_ds_StringMap();
			this.__iterators = new haxe_ds_StringMap();
		}
		var _this = this.__eventMap;
		if(!(__map_reserved[type] != null ? _this.existsReserved(type) : _this.h.hasOwnProperty(type))) {
			var list = [];
			list.push(new openfl_events__$EventDispatcher_Listener(listener,useCapture,priority));
			var iterator = new openfl_events__$EventDispatcher_DispatchIterator(list);
			var _this1 = this.__eventMap;
			if(__map_reserved[type] != null) {
				_this1.setReserved(type,list);
			} else {
				_this1.h[type] = list;
			}
			var _this2 = this.__iterators;
			var value = [iterator];
			if(__map_reserved[type] != null) {
				_this2.setReserved(type,value);
			} else {
				_this2.h[type] = value;
			}
		} else {
			var _this3 = this.__eventMap;
			var list1 = __map_reserved[type] != null ? _this3.getReserved(type) : _this3.h[type];
			var _g1 = 0;
			var _g = list1.length;
			while(_g1 < _g) {
				var i = _g1++;
				if(list1[i].match(listener,useCapture)) {
					return;
				}
			}
			var _this4 = this.__iterators;
			var iterators = __map_reserved[type] != null ? _this4.getReserved(type) : _this4.h[type];
			var _g2 = 0;
			while(_g2 < iterators.length) {
				var iterator1 = iterators[_g2];
				++_g2;
				if(iterator1.active) {
					iterator1.copy();
				}
			}
			this.__addListenerByPriority(list1,new openfl_events__$EventDispatcher_Listener(listener,useCapture,priority));
		}
	}
	,dispatchEvent: function(event) {
		if(this.__targetDispatcher != null) {
			event.target = this.__targetDispatcher;
		} else {
			event.target = this;
		}
		return this.__dispatchEvent(event);
	}
	,hasEventListener: function(type) {
		if(this.__eventMap == null) {
			return false;
		}
		var _this = this.__eventMap;
		if(__map_reserved[type] != null) {
			return _this.existsReserved(type);
		} else {
			return _this.h.hasOwnProperty(type);
		}
	}
	,removeEventListener: function(type,listener,useCapture) {
		if(useCapture == null) {
			useCapture = false;
		}
		if(this.__eventMap == null || listener == null) {
			return;
		}
		var _this = this.__eventMap;
		var list = __map_reserved[type] != null ? _this.getReserved(type) : _this.h[type];
		if(list == null) {
			return;
		}
		var _this1 = this.__iterators;
		var iterators = __map_reserved[type] != null ? _this1.getReserved(type) : _this1.h[type];
		var _g1 = 0;
		var _g = list.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(list[i].match(listener,useCapture)) {
				var _g2 = 0;
				while(_g2 < iterators.length) {
					var iterator = iterators[_g2];
					++_g2;
					iterator.remove(list[i],i);
				}
				list.splice(i,1);
				break;
			}
		}
		if(list.length == 0) {
			this.__eventMap.remove(type);
			this.__iterators.remove(type);
		}
		var _this2 = this.__eventMap;
		if(!new haxe_ds__$StringMap_StringMapIterator(_this2,_this2.arrayKeys()).hasNext()) {
			this.__eventMap = null;
			this.__iterators = null;
		}
	}
	,toString: function() {
		var full = Type.getClassName(js_Boot.getClass(this));
		var $short = full.split(".").pop();
		return "[object " + $short + "]";
	}
	,willTrigger: function(type) {
		return this.hasEventListener(type);
	}
	,__dispatchEvent: function(event) {
		if(this.__eventMap == null || event == null) {
			return true;
		}
		var type = event.type;
		var _this = this.__eventMap;
		var list = __map_reserved[type] != null ? _this.getReserved(type) : _this.h[type];
		if(list == null) {
			return true;
		}
		if(event.target == null) {
			if(this.__targetDispatcher != null) {
				event.target = this.__targetDispatcher;
			} else {
				event.target = this;
			}
		}
		event.currentTarget = this;
		var capture = event.eventPhase == 1;
		var index = 0;
		var _this1 = this.__iterators;
		var iterators = __map_reserved[type] != null ? _this1.getReserved(type) : _this1.h[type];
		var iterator = iterators[0];
		if(iterator.active) {
			iterator = new openfl_events__$EventDispatcher_DispatchIterator(list);
			iterators.push(iterator);
		}
		iterator.reset(list);
		var listener = iterator;
		while(listener.hasNext()) {
			var listener1 = listener.next();
			if(listener1 == null) {
				continue;
			}
			if(listener1.useCapture == capture) {
				listener1.callback(event);
				if(event.__isCanceledNow) {
					break;
				}
			}
		}
		if(iterator != iterators[0]) {
			HxOverrides.remove(iterators,iterator);
		}
		return true;
	}
	,__removeAllListeners: function() {
		this.__eventMap = null;
		this.__iterators = null;
	}
	,__addListenerByPriority: function(list,listener) {
		var numElements = list.length;
		var addAtPosition = numElements;
		var _g1 = 0;
		var _g = numElements;
		while(_g1 < _g) {
			var i = _g1++;
			if(list[i].priority < listener.priority) {
				addAtPosition = i;
				break;
			}
		}
		list.splice(addAtPosition,0,listener);
	}
	,__class__: openfl_events_EventDispatcher
};
var format_SWF = function(bytes) {
	openfl_events_EventDispatcher.call(this);
	this.data = new format_swf_SWFRoot(bytes);
	this.backgroundColor = this.data.backgroundColor;
	this.frameRate = this.data.frameRate;
	this.width = this.data.frameSize.get_rect().width | 0;
	this.height = this.data.frameSize.get_rect().height | 0;
	this.symbols = this.data.symbols;
	var tmr = new openfl_utils_Timer(1,1);
	tmr.addEventListener("timerComplete",$bind(this,this.dispatchComplete));
	tmr.start();
};
$hxClasses["format.SWF"] = format_SWF;
format_SWF.__name__ = ["format","SWF"];
format_SWF.__super__ = openfl_events_EventDispatcher;
format_SWF.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	data: null
	,backgroundColor: null
	,frameRate: null
	,height: null
	,symbols: null
	,width: null
	,complete: null
	,dispatchCompleteTimer: function() {
		var tmr = new openfl_utils_Timer(1,1);
		tmr.addEventListener("timerComplete",$bind(this,this.dispatchComplete));
		tmr.start();
	}
	,dispatchComplete: function(e) {
		this.complete = true;
		this.dispatchEvent(new openfl_events_Event("complete"));
	}
	,addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
		if(useWeakReference == null) {
			useWeakReference = false;
		}
		if(priority == null) {
			priority = 0;
		}
		if(useCapture == null) {
			useCapture = false;
		}
		openfl_events_EventDispatcher.prototype.addEventListener.call(this,type,listener,useCapture,priority,useWeakReference);
		if(this.complete) {
			this.dispatchEvent(new openfl_events_Event("complete"));
		}
	}
	,createButton: function(className) {
		var symbol = null;
		var charId;
		var _this = this.symbols;
		if(__map_reserved[className] != null ? _this.existsReserved(className) : _this.h.hasOwnProperty(className)) {
			var _this1 = this.symbols;
			if(__map_reserved[className] != null) {
				charId = _this1.getReserved(className);
			} else {
				charId = _this1.h[className];
			}
			symbol = this.data.getCharacter(charId);
		}
		return null;
	}
	,createMovieClip: function(className) {
		if(className == null) {
			className = "";
		}
		var symbol = null;
		var charId;
		if(className == "") {
			symbol = this.data;
		} else {
			var _this = this.symbols;
			if(__map_reserved[className] != null ? _this.existsReserved(className) : _this.h.hasOwnProperty(className)) {
				var _this1 = this.symbols;
				if(__map_reserved[className] != null) {
					charId = _this1.getReserved(className);
				} else {
					charId = _this1.h[className];
				}
				if(charId > 0) {
					symbol = this.data.getCharacter(charId);
				} else {
					symbol = this.data;
				}
			}
		}
		return null;
	}
	,getBitmapData: function(className) {
		var symbol = null;
		if(className == "") {
			symbol = this.data;
		} else {
			var _this = this.symbols;
			if(__map_reserved[className] != null ? _this.existsReserved(className) : _this.h.hasOwnProperty(className)) {
				var _this1 = this.symbols;
				symbol = this.data.getCharacter(__map_reserved[className] != null ? _this1.getReserved(className) : _this1.h[className]);
			}
		}
		if(js_Boot.__instanceof(symbol,format_swf_tags_TagDefineBits) || js_Boot.__instanceof(symbol,format_swf_tags_TagDefineBitsLossless)) {
			return new openfl_display_Bitmap(symbol).get_bitmapData();
		}
		return null;
	}
	,hasSymbol: function(className) {
		var _this = this.symbols;
		if(__map_reserved[className] != null) {
			return _this.existsReserved(className);
		} else {
			return _this.h.hasOwnProperty(className);
		}
	}
	,__class__: format_SWF
});
var format_abc_Index = $hxClasses["format.abc.Index"] = { __ename__ : ["format","abc","Index"], __constructs__ : ["Idx"] };
format_abc_Index.Idx = function(v) { var $x = ["Idx",0,v]; $x.__enum__ = format_abc_Index; $x.toString = $estr; return $x; };
var format_abc_Namespace = $hxClasses["format.abc.Namespace"] = { __ename__ : ["format","abc","Namespace"], __constructs__ : ["NPrivate","NNamespace","NPublic","NInternal","NProtected","NExplicit","NStaticProtected"] };
format_abc_Namespace.NPrivate = function(ns) { var $x = ["NPrivate",0,ns]; $x.__enum__ = format_abc_Namespace; $x.toString = $estr; return $x; };
format_abc_Namespace.NNamespace = function(ns) { var $x = ["NNamespace",1,ns]; $x.__enum__ = format_abc_Namespace; $x.toString = $estr; return $x; };
format_abc_Namespace.NPublic = function(ns) { var $x = ["NPublic",2,ns]; $x.__enum__ = format_abc_Namespace; $x.toString = $estr; return $x; };
format_abc_Namespace.NInternal = function(ns) { var $x = ["NInternal",3,ns]; $x.__enum__ = format_abc_Namespace; $x.toString = $estr; return $x; };
format_abc_Namespace.NProtected = function(ns) { var $x = ["NProtected",4,ns]; $x.__enum__ = format_abc_Namespace; $x.toString = $estr; return $x; };
format_abc_Namespace.NExplicit = function(ns) { var $x = ["NExplicit",5,ns]; $x.__enum__ = format_abc_Namespace; $x.toString = $estr; return $x; };
format_abc_Namespace.NStaticProtected = function(ns) { var $x = ["NStaticProtected",6,ns]; $x.__enum__ = format_abc_Namespace; $x.toString = $estr; return $x; };
var format_abc_Name = $hxClasses["format.abc.Name"] = { __ename__ : ["format","abc","Name"], __constructs__ : ["NName","NMulti","NRuntime","NRuntimeLate","NMultiLate","NAttrib","NParams"] };
format_abc_Name.NName = function(name,ns) { var $x = ["NName",0,name,ns]; $x.__enum__ = format_abc_Name; $x.toString = $estr; return $x; };
format_abc_Name.NMulti = function(name,ns) { var $x = ["NMulti",1,name,ns]; $x.__enum__ = format_abc_Name; $x.toString = $estr; return $x; };
format_abc_Name.NRuntime = function(name) { var $x = ["NRuntime",2,name]; $x.__enum__ = format_abc_Name; $x.toString = $estr; return $x; };
format_abc_Name.NRuntimeLate = ["NRuntimeLate",3];
format_abc_Name.NRuntimeLate.toString = $estr;
format_abc_Name.NRuntimeLate.__enum__ = format_abc_Name;
format_abc_Name.NMultiLate = function(nset) { var $x = ["NMultiLate",4,nset]; $x.__enum__ = format_abc_Name; $x.toString = $estr; return $x; };
format_abc_Name.NAttrib = function(n) { var $x = ["NAttrib",5,n]; $x.__enum__ = format_abc_Name; $x.toString = $estr; return $x; };
format_abc_Name.NParams = function(n,params) { var $x = ["NParams",6,n,params]; $x.__enum__ = format_abc_Name; $x.toString = $estr; return $x; };
var format_abc_Value = $hxClasses["format.abc.Value"] = { __ename__ : ["format","abc","Value"], __constructs__ : ["VNull","VBool","VString","VInt","VUInt","VFloat","VNamespace"] };
format_abc_Value.VNull = ["VNull",0];
format_abc_Value.VNull.toString = $estr;
format_abc_Value.VNull.__enum__ = format_abc_Value;
format_abc_Value.VBool = function(b) { var $x = ["VBool",1,b]; $x.__enum__ = format_abc_Value; $x.toString = $estr; return $x; };
format_abc_Value.VString = function(i) { var $x = ["VString",2,i]; $x.__enum__ = format_abc_Value; $x.toString = $estr; return $x; };
format_abc_Value.VInt = function(i) { var $x = ["VInt",3,i]; $x.__enum__ = format_abc_Value; $x.toString = $estr; return $x; };
format_abc_Value.VUInt = function(i) { var $x = ["VUInt",4,i]; $x.__enum__ = format_abc_Value; $x.toString = $estr; return $x; };
format_abc_Value.VFloat = function(f) { var $x = ["VFloat",5,f]; $x.__enum__ = format_abc_Value; $x.toString = $estr; return $x; };
format_abc_Value.VNamespace = function(kind,ns) { var $x = ["VNamespace",6,kind,ns]; $x.__enum__ = format_abc_Value; $x.toString = $estr; return $x; };
var format_abc_MethodKind = $hxClasses["format.abc.MethodKind"] = { __ename__ : ["format","abc","MethodKind"], __constructs__ : ["KNormal","KGetter","KSetter"] };
format_abc_MethodKind.KNormal = ["KNormal",0];
format_abc_MethodKind.KNormal.toString = $estr;
format_abc_MethodKind.KNormal.__enum__ = format_abc_MethodKind;
format_abc_MethodKind.KGetter = ["KGetter",1];
format_abc_MethodKind.KGetter.toString = $estr;
format_abc_MethodKind.KGetter.__enum__ = format_abc_MethodKind;
format_abc_MethodKind.KSetter = ["KSetter",2];
format_abc_MethodKind.KSetter.toString = $estr;
format_abc_MethodKind.KSetter.__enum__ = format_abc_MethodKind;
var format_abc_FieldKind = $hxClasses["format.abc.FieldKind"] = { __ename__ : ["format","abc","FieldKind"], __constructs__ : ["FVar","FMethod","FClass","FFunction"] };
format_abc_FieldKind.FVar = function(type,value,$const) { var $x = ["FVar",0,type,value,$const]; $x.__enum__ = format_abc_FieldKind; $x.toString = $estr; return $x; };
format_abc_FieldKind.FMethod = function(type,k,isFinal,isOverride) { var $x = ["FMethod",1,type,k,isFinal,isOverride]; $x.__enum__ = format_abc_FieldKind; $x.toString = $estr; return $x; };
format_abc_FieldKind.FClass = function(c) { var $x = ["FClass",2,c]; $x.__enum__ = format_abc_FieldKind; $x.toString = $estr; return $x; };
format_abc_FieldKind.FFunction = function(f) { var $x = ["FFunction",3,f]; $x.__enum__ = format_abc_FieldKind; $x.toString = $estr; return $x; };
var format_abc_ABCData = function() {
};
$hxClasses["format.abc.ABCData"] = format_abc_ABCData;
format_abc_ABCData.__name__ = ["format","abc","ABCData"];
format_abc_ABCData.prototype = {
	ints: null
	,uints: null
	,floats: null
	,strings: null
	,namespaces: null
	,nssets: null
	,names: null
	,methodTypes: null
	,metadatas: null
	,classes: null
	,inits: null
	,functions: null
	,get: function(t,i) {
		var n = i[2];
		return t[n - 1];
	}
	,__class__: format_abc_ABCData
};
var format_abc_OpCode = $hxClasses["format.abc.OpCode"] = { __ename__ : ["format","abc","OpCode"], __constructs__ : ["OBreakPoint","ONop","OThrow","OGetSuper","OSetSuper","ODxNs","ODxNsLate","ORegKill","OLabel","OJump","OSwitch","OPushWith","OPopScope","OForIn","OHasNext","ONull","OUndefined","OForEach","OSmallInt","OInt","OTrue","OFalse","ONaN","OPop","ODup","OSwap","OString","OIntRef","OUIntRef","OFloat","OScope","ONamespace","ONext","OFunction","OCallStack","OConstruct","OCallMethod","OCallStatic","OCallSuper","OCallProperty","ORetVoid","ORet","OConstructSuper","OConstructProperty","OCallPropLex","OCallSuperVoid","OCallPropVoid","OApplyType","OObject","OArray","ONewBlock","OClassDef","OGetDescendants","OCatch","OFindPropStrict","OFindProp","OFindDefinition","OGetLex","OSetProp","OReg","OSetReg","OGetGlobalScope","OGetScope","OGetProp","OInitProp","ODeleteProp","OGetSlot","OSetSlot","OToString","OToXml","OToXmlAttr","OToInt","OToUInt","OToNumber","OToBool","OToObject","OCheckIsXml","OCast","OAsAny","OAsString","OAsType","OAsObject","OIncrReg","ODecrReg","OTypeof","OInstanceOf","OIsType","OIncrIReg","ODecrIReg","OThis","OSetThis","ODebugReg","ODebugLine","ODebugFile","OBreakPointLine","OTimestamp","OOp","OUnknown"] };
format_abc_OpCode.OBreakPoint = ["OBreakPoint",0];
format_abc_OpCode.OBreakPoint.toString = $estr;
format_abc_OpCode.OBreakPoint.__enum__ = format_abc_OpCode;
format_abc_OpCode.ONop = ["ONop",1];
format_abc_OpCode.ONop.toString = $estr;
format_abc_OpCode.ONop.__enum__ = format_abc_OpCode;
format_abc_OpCode.OThrow = ["OThrow",2];
format_abc_OpCode.OThrow.toString = $estr;
format_abc_OpCode.OThrow.__enum__ = format_abc_OpCode;
format_abc_OpCode.OGetSuper = function(v) { var $x = ["OGetSuper",3,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OSetSuper = function(v) { var $x = ["OSetSuper",4,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ODxNs = function(v) { var $x = ["ODxNs",5,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ODxNsLate = ["ODxNsLate",6];
format_abc_OpCode.ODxNsLate.toString = $estr;
format_abc_OpCode.ODxNsLate.__enum__ = format_abc_OpCode;
format_abc_OpCode.ORegKill = function(r) { var $x = ["ORegKill",7,r]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OLabel = ["OLabel",8];
format_abc_OpCode.OLabel.toString = $estr;
format_abc_OpCode.OLabel.__enum__ = format_abc_OpCode;
format_abc_OpCode.OJump = function(j,delta) { var $x = ["OJump",9,j,delta]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OSwitch = function(def,deltas) { var $x = ["OSwitch",10,def,deltas]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OPushWith = ["OPushWith",11];
format_abc_OpCode.OPushWith.toString = $estr;
format_abc_OpCode.OPushWith.__enum__ = format_abc_OpCode;
format_abc_OpCode.OPopScope = ["OPopScope",12];
format_abc_OpCode.OPopScope.toString = $estr;
format_abc_OpCode.OPopScope.__enum__ = format_abc_OpCode;
format_abc_OpCode.OForIn = ["OForIn",13];
format_abc_OpCode.OForIn.toString = $estr;
format_abc_OpCode.OForIn.__enum__ = format_abc_OpCode;
format_abc_OpCode.OHasNext = ["OHasNext",14];
format_abc_OpCode.OHasNext.toString = $estr;
format_abc_OpCode.OHasNext.__enum__ = format_abc_OpCode;
format_abc_OpCode.ONull = ["ONull",15];
format_abc_OpCode.ONull.toString = $estr;
format_abc_OpCode.ONull.__enum__ = format_abc_OpCode;
format_abc_OpCode.OUndefined = ["OUndefined",16];
format_abc_OpCode.OUndefined.toString = $estr;
format_abc_OpCode.OUndefined.__enum__ = format_abc_OpCode;
format_abc_OpCode.OForEach = ["OForEach",17];
format_abc_OpCode.OForEach.toString = $estr;
format_abc_OpCode.OForEach.__enum__ = format_abc_OpCode;
format_abc_OpCode.OSmallInt = function(v) { var $x = ["OSmallInt",18,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OInt = function(v) { var $x = ["OInt",19,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OTrue = ["OTrue",20];
format_abc_OpCode.OTrue.toString = $estr;
format_abc_OpCode.OTrue.__enum__ = format_abc_OpCode;
format_abc_OpCode.OFalse = ["OFalse",21];
format_abc_OpCode.OFalse.toString = $estr;
format_abc_OpCode.OFalse.__enum__ = format_abc_OpCode;
format_abc_OpCode.ONaN = ["ONaN",22];
format_abc_OpCode.ONaN.toString = $estr;
format_abc_OpCode.ONaN.__enum__ = format_abc_OpCode;
format_abc_OpCode.OPop = ["OPop",23];
format_abc_OpCode.OPop.toString = $estr;
format_abc_OpCode.OPop.__enum__ = format_abc_OpCode;
format_abc_OpCode.ODup = ["ODup",24];
format_abc_OpCode.ODup.toString = $estr;
format_abc_OpCode.ODup.__enum__ = format_abc_OpCode;
format_abc_OpCode.OSwap = ["OSwap",25];
format_abc_OpCode.OSwap.toString = $estr;
format_abc_OpCode.OSwap.__enum__ = format_abc_OpCode;
format_abc_OpCode.OString = function(v) { var $x = ["OString",26,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OIntRef = function(v) { var $x = ["OIntRef",27,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OUIntRef = function(v) { var $x = ["OUIntRef",28,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OFloat = function(v) { var $x = ["OFloat",29,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OScope = ["OScope",30];
format_abc_OpCode.OScope.toString = $estr;
format_abc_OpCode.OScope.__enum__ = format_abc_OpCode;
format_abc_OpCode.ONamespace = function(v) { var $x = ["ONamespace",31,v]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ONext = function(r1,r2) { var $x = ["ONext",32,r1,r2]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OFunction = function(f) { var $x = ["OFunction",33,f]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallStack = function(nargs) { var $x = ["OCallStack",34,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OConstruct = function(nargs) { var $x = ["OConstruct",35,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallMethod = function(slot,nargs) { var $x = ["OCallMethod",36,slot,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallStatic = function(meth,nargs) { var $x = ["OCallStatic",37,meth,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallSuper = function(name,nargs) { var $x = ["OCallSuper",38,name,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallProperty = function(name,nargs) { var $x = ["OCallProperty",39,name,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ORetVoid = ["ORetVoid",40];
format_abc_OpCode.ORetVoid.toString = $estr;
format_abc_OpCode.ORetVoid.__enum__ = format_abc_OpCode;
format_abc_OpCode.ORet = ["ORet",41];
format_abc_OpCode.ORet.toString = $estr;
format_abc_OpCode.ORet.__enum__ = format_abc_OpCode;
format_abc_OpCode.OConstructSuper = function(nargs) { var $x = ["OConstructSuper",42,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OConstructProperty = function(name,nargs) { var $x = ["OConstructProperty",43,name,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallPropLex = function(name,nargs) { var $x = ["OCallPropLex",44,name,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallSuperVoid = function(name,nargs) { var $x = ["OCallSuperVoid",45,name,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCallPropVoid = function(name,nargs) { var $x = ["OCallPropVoid",46,name,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OApplyType = function(nargs) { var $x = ["OApplyType",47,nargs]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OObject = function(nfields) { var $x = ["OObject",48,nfields]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OArray = function(nvalues) { var $x = ["OArray",49,nvalues]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ONewBlock = ["ONewBlock",50];
format_abc_OpCode.ONewBlock.toString = $estr;
format_abc_OpCode.ONewBlock.__enum__ = format_abc_OpCode;
format_abc_OpCode.OClassDef = function(c) { var $x = ["OClassDef",51,c]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OGetDescendants = function(c) { var $x = ["OGetDescendants",52,c]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OCatch = function(c) { var $x = ["OCatch",53,c]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OFindPropStrict = function(p) { var $x = ["OFindPropStrict",54,p]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OFindProp = function(p) { var $x = ["OFindProp",55,p]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OFindDefinition = function(d) { var $x = ["OFindDefinition",56,d]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OGetLex = function(p) { var $x = ["OGetLex",57,p]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OSetProp = function(p) { var $x = ["OSetProp",58,p]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OReg = function(r) { var $x = ["OReg",59,r]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OSetReg = function(r) { var $x = ["OSetReg",60,r]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OGetGlobalScope = ["OGetGlobalScope",61];
format_abc_OpCode.OGetGlobalScope.toString = $estr;
format_abc_OpCode.OGetGlobalScope.__enum__ = format_abc_OpCode;
format_abc_OpCode.OGetScope = function(n) { var $x = ["OGetScope",62,n]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OGetProp = function(p) { var $x = ["OGetProp",63,p]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OInitProp = function(p) { var $x = ["OInitProp",64,p]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ODeleteProp = function(p) { var $x = ["ODeleteProp",65,p]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OGetSlot = function(s) { var $x = ["OGetSlot",66,s]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OSetSlot = function(s) { var $x = ["OSetSlot",67,s]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OToString = ["OToString",68];
format_abc_OpCode.OToString.toString = $estr;
format_abc_OpCode.OToString.__enum__ = format_abc_OpCode;
format_abc_OpCode.OToXml = ["OToXml",69];
format_abc_OpCode.OToXml.toString = $estr;
format_abc_OpCode.OToXml.__enum__ = format_abc_OpCode;
format_abc_OpCode.OToXmlAttr = ["OToXmlAttr",70];
format_abc_OpCode.OToXmlAttr.toString = $estr;
format_abc_OpCode.OToXmlAttr.__enum__ = format_abc_OpCode;
format_abc_OpCode.OToInt = ["OToInt",71];
format_abc_OpCode.OToInt.toString = $estr;
format_abc_OpCode.OToInt.__enum__ = format_abc_OpCode;
format_abc_OpCode.OToUInt = ["OToUInt",72];
format_abc_OpCode.OToUInt.toString = $estr;
format_abc_OpCode.OToUInt.__enum__ = format_abc_OpCode;
format_abc_OpCode.OToNumber = ["OToNumber",73];
format_abc_OpCode.OToNumber.toString = $estr;
format_abc_OpCode.OToNumber.__enum__ = format_abc_OpCode;
format_abc_OpCode.OToBool = ["OToBool",74];
format_abc_OpCode.OToBool.toString = $estr;
format_abc_OpCode.OToBool.__enum__ = format_abc_OpCode;
format_abc_OpCode.OToObject = ["OToObject",75];
format_abc_OpCode.OToObject.toString = $estr;
format_abc_OpCode.OToObject.__enum__ = format_abc_OpCode;
format_abc_OpCode.OCheckIsXml = ["OCheckIsXml",76];
format_abc_OpCode.OCheckIsXml.toString = $estr;
format_abc_OpCode.OCheckIsXml.__enum__ = format_abc_OpCode;
format_abc_OpCode.OCast = function(t) { var $x = ["OCast",77,t]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OAsAny = ["OAsAny",78];
format_abc_OpCode.OAsAny.toString = $estr;
format_abc_OpCode.OAsAny.__enum__ = format_abc_OpCode;
format_abc_OpCode.OAsString = ["OAsString",79];
format_abc_OpCode.OAsString.toString = $estr;
format_abc_OpCode.OAsString.__enum__ = format_abc_OpCode;
format_abc_OpCode.OAsType = function(t) { var $x = ["OAsType",80,t]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OAsObject = ["OAsObject",81];
format_abc_OpCode.OAsObject.toString = $estr;
format_abc_OpCode.OAsObject.__enum__ = format_abc_OpCode;
format_abc_OpCode.OIncrReg = function(r) { var $x = ["OIncrReg",82,r]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ODecrReg = function(r) { var $x = ["ODecrReg",83,r]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OTypeof = ["OTypeof",84];
format_abc_OpCode.OTypeof.toString = $estr;
format_abc_OpCode.OTypeof.__enum__ = format_abc_OpCode;
format_abc_OpCode.OInstanceOf = ["OInstanceOf",85];
format_abc_OpCode.OInstanceOf.toString = $estr;
format_abc_OpCode.OInstanceOf.__enum__ = format_abc_OpCode;
format_abc_OpCode.OIsType = function(t) { var $x = ["OIsType",86,t]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OIncrIReg = function(r) { var $x = ["OIncrIReg",87,r]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ODecrIReg = function(r) { var $x = ["ODecrIReg",88,r]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OThis = ["OThis",89];
format_abc_OpCode.OThis.toString = $estr;
format_abc_OpCode.OThis.__enum__ = format_abc_OpCode;
format_abc_OpCode.OSetThis = ["OSetThis",90];
format_abc_OpCode.OSetThis.toString = $estr;
format_abc_OpCode.OSetThis.__enum__ = format_abc_OpCode;
format_abc_OpCode.ODebugReg = function(name,r,line) { var $x = ["ODebugReg",91,name,r,line]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ODebugLine = function(line) { var $x = ["ODebugLine",92,line]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.ODebugFile = function(file) { var $x = ["ODebugFile",93,file]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OBreakPointLine = function(n) { var $x = ["OBreakPointLine",94,n]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OTimestamp = ["OTimestamp",95];
format_abc_OpCode.OTimestamp.toString = $estr;
format_abc_OpCode.OTimestamp.__enum__ = format_abc_OpCode;
format_abc_OpCode.OOp = function(op) { var $x = ["OOp",96,op]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
format_abc_OpCode.OUnknown = function($byte) { var $x = ["OUnknown",97,$byte]; $x.__enum__ = format_abc_OpCode; $x.toString = $estr; return $x; };
var format_abc_JumpStyle = $hxClasses["format.abc.JumpStyle"] = { __ename__ : ["format","abc","JumpStyle"], __constructs__ : ["JNotLt","JNotLte","JNotGt","JNotGte","JAlways","JTrue","JFalse","JEq","JNeq","JLt","JLte","JGt","JGte","JPhysEq","JPhysNeq"] };
format_abc_JumpStyle.JNotLt = ["JNotLt",0];
format_abc_JumpStyle.JNotLt.toString = $estr;
format_abc_JumpStyle.JNotLt.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JNotLte = ["JNotLte",1];
format_abc_JumpStyle.JNotLte.toString = $estr;
format_abc_JumpStyle.JNotLte.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JNotGt = ["JNotGt",2];
format_abc_JumpStyle.JNotGt.toString = $estr;
format_abc_JumpStyle.JNotGt.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JNotGte = ["JNotGte",3];
format_abc_JumpStyle.JNotGte.toString = $estr;
format_abc_JumpStyle.JNotGte.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JAlways = ["JAlways",4];
format_abc_JumpStyle.JAlways.toString = $estr;
format_abc_JumpStyle.JAlways.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JTrue = ["JTrue",5];
format_abc_JumpStyle.JTrue.toString = $estr;
format_abc_JumpStyle.JTrue.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JFalse = ["JFalse",6];
format_abc_JumpStyle.JFalse.toString = $estr;
format_abc_JumpStyle.JFalse.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JEq = ["JEq",7];
format_abc_JumpStyle.JEq.toString = $estr;
format_abc_JumpStyle.JEq.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JNeq = ["JNeq",8];
format_abc_JumpStyle.JNeq.toString = $estr;
format_abc_JumpStyle.JNeq.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JLt = ["JLt",9];
format_abc_JumpStyle.JLt.toString = $estr;
format_abc_JumpStyle.JLt.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JLte = ["JLte",10];
format_abc_JumpStyle.JLte.toString = $estr;
format_abc_JumpStyle.JLte.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JGt = ["JGt",11];
format_abc_JumpStyle.JGt.toString = $estr;
format_abc_JumpStyle.JGt.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JGte = ["JGte",12];
format_abc_JumpStyle.JGte.toString = $estr;
format_abc_JumpStyle.JGte.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JPhysEq = ["JPhysEq",13];
format_abc_JumpStyle.JPhysEq.toString = $estr;
format_abc_JumpStyle.JPhysEq.__enum__ = format_abc_JumpStyle;
format_abc_JumpStyle.JPhysNeq = ["JPhysNeq",14];
format_abc_JumpStyle.JPhysNeq.toString = $estr;
format_abc_JumpStyle.JPhysNeq.__enum__ = format_abc_JumpStyle;
var format_abc_Operation = $hxClasses["format.abc.Operation"] = { __ename__ : ["format","abc","Operation"], __constructs__ : ["OpAs","OpNeg","OpIncr","OpDecr","OpNot","OpBitNot","OpAdd","OpSub","OpMul","OpDiv","OpMod","OpShl","OpShr","OpUShr","OpAnd","OpOr","OpXor","OpEq","OpPhysEq","OpLt","OpLte","OpGt","OpGte","OpIs","OpIn","OpIIncr","OpIDecr","OpINeg","OpIAdd","OpISub","OpIMul","OpMemGet8","OpMemGet16","OpMemGet32","OpMemGetFloat","OpMemGetDouble","OpMemSet8","OpMemSet16","OpMemSet32","OpMemSetFloat","OpMemSetDouble","OpSign1","OpSign8","OpSign16"] };
format_abc_Operation.OpAs = ["OpAs",0];
format_abc_Operation.OpAs.toString = $estr;
format_abc_Operation.OpAs.__enum__ = format_abc_Operation;
format_abc_Operation.OpNeg = ["OpNeg",1];
format_abc_Operation.OpNeg.toString = $estr;
format_abc_Operation.OpNeg.__enum__ = format_abc_Operation;
format_abc_Operation.OpIncr = ["OpIncr",2];
format_abc_Operation.OpIncr.toString = $estr;
format_abc_Operation.OpIncr.__enum__ = format_abc_Operation;
format_abc_Operation.OpDecr = ["OpDecr",3];
format_abc_Operation.OpDecr.toString = $estr;
format_abc_Operation.OpDecr.__enum__ = format_abc_Operation;
format_abc_Operation.OpNot = ["OpNot",4];
format_abc_Operation.OpNot.toString = $estr;
format_abc_Operation.OpNot.__enum__ = format_abc_Operation;
format_abc_Operation.OpBitNot = ["OpBitNot",5];
format_abc_Operation.OpBitNot.toString = $estr;
format_abc_Operation.OpBitNot.__enum__ = format_abc_Operation;
format_abc_Operation.OpAdd = ["OpAdd",6];
format_abc_Operation.OpAdd.toString = $estr;
format_abc_Operation.OpAdd.__enum__ = format_abc_Operation;
format_abc_Operation.OpSub = ["OpSub",7];
format_abc_Operation.OpSub.toString = $estr;
format_abc_Operation.OpSub.__enum__ = format_abc_Operation;
format_abc_Operation.OpMul = ["OpMul",8];
format_abc_Operation.OpMul.toString = $estr;
format_abc_Operation.OpMul.__enum__ = format_abc_Operation;
format_abc_Operation.OpDiv = ["OpDiv",9];
format_abc_Operation.OpDiv.toString = $estr;
format_abc_Operation.OpDiv.__enum__ = format_abc_Operation;
format_abc_Operation.OpMod = ["OpMod",10];
format_abc_Operation.OpMod.toString = $estr;
format_abc_Operation.OpMod.__enum__ = format_abc_Operation;
format_abc_Operation.OpShl = ["OpShl",11];
format_abc_Operation.OpShl.toString = $estr;
format_abc_Operation.OpShl.__enum__ = format_abc_Operation;
format_abc_Operation.OpShr = ["OpShr",12];
format_abc_Operation.OpShr.toString = $estr;
format_abc_Operation.OpShr.__enum__ = format_abc_Operation;
format_abc_Operation.OpUShr = ["OpUShr",13];
format_abc_Operation.OpUShr.toString = $estr;
format_abc_Operation.OpUShr.__enum__ = format_abc_Operation;
format_abc_Operation.OpAnd = ["OpAnd",14];
format_abc_Operation.OpAnd.toString = $estr;
format_abc_Operation.OpAnd.__enum__ = format_abc_Operation;
format_abc_Operation.OpOr = ["OpOr",15];
format_abc_Operation.OpOr.toString = $estr;
format_abc_Operation.OpOr.__enum__ = format_abc_Operation;
format_abc_Operation.OpXor = ["OpXor",16];
format_abc_Operation.OpXor.toString = $estr;
format_abc_Operation.OpXor.__enum__ = format_abc_Operation;
format_abc_Operation.OpEq = ["OpEq",17];
format_abc_Operation.OpEq.toString = $estr;
format_abc_Operation.OpEq.__enum__ = format_abc_Operation;
format_abc_Operation.OpPhysEq = ["OpPhysEq",18];
format_abc_Operation.OpPhysEq.toString = $estr;
format_abc_Operation.OpPhysEq.__enum__ = format_abc_Operation;
format_abc_Operation.OpLt = ["OpLt",19];
format_abc_Operation.OpLt.toString = $estr;
format_abc_Operation.OpLt.__enum__ = format_abc_Operation;
format_abc_Operation.OpLte = ["OpLte",20];
format_abc_Operation.OpLte.toString = $estr;
format_abc_Operation.OpLte.__enum__ = format_abc_Operation;
format_abc_Operation.OpGt = ["OpGt",21];
format_abc_Operation.OpGt.toString = $estr;
format_abc_Operation.OpGt.__enum__ = format_abc_Operation;
format_abc_Operation.OpGte = ["OpGte",22];
format_abc_Operation.OpGte.toString = $estr;
format_abc_Operation.OpGte.__enum__ = format_abc_Operation;
format_abc_Operation.OpIs = ["OpIs",23];
format_abc_Operation.OpIs.toString = $estr;
format_abc_Operation.OpIs.__enum__ = format_abc_Operation;
format_abc_Operation.OpIn = ["OpIn",24];
format_abc_Operation.OpIn.toString = $estr;
format_abc_Operation.OpIn.__enum__ = format_abc_Operation;
format_abc_Operation.OpIIncr = ["OpIIncr",25];
format_abc_Operation.OpIIncr.toString = $estr;
format_abc_Operation.OpIIncr.__enum__ = format_abc_Operation;
format_abc_Operation.OpIDecr = ["OpIDecr",26];
format_abc_Operation.OpIDecr.toString = $estr;
format_abc_Operation.OpIDecr.__enum__ = format_abc_Operation;
format_abc_Operation.OpINeg = ["OpINeg",27];
format_abc_Operation.OpINeg.toString = $estr;
format_abc_Operation.OpINeg.__enum__ = format_abc_Operation;
format_abc_Operation.OpIAdd = ["OpIAdd",28];
format_abc_Operation.OpIAdd.toString = $estr;
format_abc_Operation.OpIAdd.__enum__ = format_abc_Operation;
format_abc_Operation.OpISub = ["OpISub",29];
format_abc_Operation.OpISub.toString = $estr;
format_abc_Operation.OpISub.__enum__ = format_abc_Operation;
format_abc_Operation.OpIMul = ["OpIMul",30];
format_abc_Operation.OpIMul.toString = $estr;
format_abc_Operation.OpIMul.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemGet8 = ["OpMemGet8",31];
format_abc_Operation.OpMemGet8.toString = $estr;
format_abc_Operation.OpMemGet8.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemGet16 = ["OpMemGet16",32];
format_abc_Operation.OpMemGet16.toString = $estr;
format_abc_Operation.OpMemGet16.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemGet32 = ["OpMemGet32",33];
format_abc_Operation.OpMemGet32.toString = $estr;
format_abc_Operation.OpMemGet32.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemGetFloat = ["OpMemGetFloat",34];
format_abc_Operation.OpMemGetFloat.toString = $estr;
format_abc_Operation.OpMemGetFloat.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemGetDouble = ["OpMemGetDouble",35];
format_abc_Operation.OpMemGetDouble.toString = $estr;
format_abc_Operation.OpMemGetDouble.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemSet8 = ["OpMemSet8",36];
format_abc_Operation.OpMemSet8.toString = $estr;
format_abc_Operation.OpMemSet8.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemSet16 = ["OpMemSet16",37];
format_abc_Operation.OpMemSet16.toString = $estr;
format_abc_Operation.OpMemSet16.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemSet32 = ["OpMemSet32",38];
format_abc_Operation.OpMemSet32.toString = $estr;
format_abc_Operation.OpMemSet32.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemSetFloat = ["OpMemSetFloat",39];
format_abc_Operation.OpMemSetFloat.toString = $estr;
format_abc_Operation.OpMemSetFloat.__enum__ = format_abc_Operation;
format_abc_Operation.OpMemSetDouble = ["OpMemSetDouble",40];
format_abc_Operation.OpMemSetDouble.toString = $estr;
format_abc_Operation.OpMemSetDouble.__enum__ = format_abc_Operation;
format_abc_Operation.OpSign1 = ["OpSign1",41];
format_abc_Operation.OpSign1.toString = $estr;
format_abc_Operation.OpSign1.__enum__ = format_abc_Operation;
format_abc_Operation.OpSign8 = ["OpSign8",42];
format_abc_Operation.OpSign8.toString = $estr;
format_abc_Operation.OpSign8.__enum__ = format_abc_Operation;
format_abc_Operation.OpSign16 = ["OpSign16",43];
format_abc_Operation.OpSign16.toString = $estr;
format_abc_Operation.OpSign16.__enum__ = format_abc_Operation;
var format_abc_OpReader = function(i) {
	this.i = i;
};
$hxClasses["format.abc.OpReader"] = format_abc_OpReader;
format_abc_OpReader.__name__ = ["format","abc","OpReader"];
format_abc_OpReader.decode = function(i) {
	var opr = new format_abc_OpReader(i);
	var ops = [];
	while(true) {
		var op;
		try {
			op = i.readByte();
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if( js_Boot.__instanceof(e,haxe_io_Eof) ) {
				break;
			} else throw(e);
		}
		ops.push(opr.readOp(op));
	}
	return ops;
};
format_abc_OpReader.prototype = {
	i: null
	,readInt: function() {
		var a = this.i.readByte();
		if(a < 128) {
			return a;
		}
		a &= 127;
		var b = this.i.readByte();
		if(b < 128) {
			return b << 7 | a;
		}
		b &= 127;
		var c = this.i.readByte();
		if(c < 128) {
			return c << 14 | b << 7 | a;
		}
		c &= 127;
		var d = this.i.readByte();
		if(d < 128) {
			return d << 21 | c << 14 | b << 7 | a;
		}
		d &= 127;
		var e = this.i.readByte();
		if(e > 15) {
			throw new js__$Boot_HaxeError("assert");
		}
		if((e & 8) == 0 != ((e & 4) == 0)) {
			throw new js__$Boot_HaxeError(haxe_io_Error.Overflow);
		}
		return e << 28 | d << 21 | c << 14 | b << 7 | a;
	}
	,readIndex: function() {
		return format_abc_Index.Idx(this.readInt());
	}
	,readInt32: function() {
		var a = this.i.readByte();
		if(a < 128) {
			return a;
		}
		a &= 127;
		var b = this.i.readByte();
		if(b < 128) {
			return b << 7 | a;
		}
		b &= 127;
		var c = this.i.readByte();
		if(c < 128) {
			return c << 14 | b << 7 | a;
		}
		c &= 127;
		var d = this.i.readByte();
		if(d < 128) {
			return d << 21 | c << 14 | b << 7 | a;
		}
		d &= 127;
		var e = this.i.readByte();
		if(e > 15) {
			throw new js__$Boot_HaxeError("assert");
		}
		return e << 28 | d << 21 | c << 14 | b << 7 | a;
	}
	,reg: function() {
		return this.i.readByte();
	}
	,jmp: function(j) {
		return format_abc_OpCode.OJump(j,this.i.readInt24());
	}
	,readOp: function(op) {
		switch(op) {
		case 1:
			return format_abc_OpCode.OBreakPoint;
		case 2:
			return format_abc_OpCode.ONop;
		case 3:
			return format_abc_OpCode.OThrow;
		case 4:
			return format_abc_OpCode.OGetSuper(format_abc_Index.Idx(this.readInt()));
		case 5:
			return format_abc_OpCode.OSetSuper(format_abc_Index.Idx(this.readInt()));
		case 6:
			return format_abc_OpCode.ODxNs(format_abc_Index.Idx(this.readInt()));
		case 7:
			return format_abc_OpCode.ODxNsLate;
		case 8:
			return format_abc_OpCode.ORegKill(this.i.readByte());
		case 9:
			return format_abc_OpCode.OLabel;
		case 12:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JNotLt,this.i.readInt24());
		case 13:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JNotLte,this.i.readInt24());
		case 14:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JNotGt,this.i.readInt24());
		case 15:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JNotGte,this.i.readInt24());
		case 16:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JAlways,this.i.readInt24());
		case 17:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JTrue,this.i.readInt24());
		case 18:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JFalse,this.i.readInt24());
		case 19:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JEq,this.i.readInt24());
		case 20:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JNeq,this.i.readInt24());
		case 21:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JLt,this.i.readInt24());
		case 22:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JLte,this.i.readInt24());
		case 23:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JGt,this.i.readInt24());
		case 24:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JGte,this.i.readInt24());
		case 25:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JPhysEq,this.i.readInt24());
		case 26:
			return format_abc_OpCode.OJump(format_abc_JumpStyle.JPhysNeq,this.i.readInt24());
		case 27:
			var def = this.i.readInt24();
			var cases = [];
			var _g1 = 0;
			var _g = this.readInt() + 1;
			while(_g1 < _g) {
				var _ = _g1++;
				cases.push(this.i.readInt24());
			}
			return format_abc_OpCode.OSwitch(def,cases);
		case 28:
			return format_abc_OpCode.OPushWith;
		case 29:
			return format_abc_OpCode.OPopScope;
		case 30:
			return format_abc_OpCode.OForIn;
		case 31:
			return format_abc_OpCode.OHasNext;
		case 32:
			return format_abc_OpCode.ONull;
		case 33:
			return format_abc_OpCode.OUndefined;
		case 35:
			return format_abc_OpCode.OForEach;
		case 36:
			return format_abc_OpCode.OSmallInt(this.i.readInt8());
		case 37:
			return format_abc_OpCode.OInt(this.readInt());
		case 38:
			return format_abc_OpCode.OTrue;
		case 39:
			return format_abc_OpCode.OFalse;
		case 40:
			return format_abc_OpCode.ONaN;
		case 41:
			return format_abc_OpCode.OPop;
		case 42:
			return format_abc_OpCode.ODup;
		case 43:
			return format_abc_OpCode.OSwap;
		case 44:
			return format_abc_OpCode.OString(format_abc_Index.Idx(this.readInt()));
		case 45:
			return format_abc_OpCode.OIntRef(format_abc_Index.Idx(this.readInt()));
		case 46:
			return format_abc_OpCode.OUIntRef(format_abc_Index.Idx(this.readInt()));
		case 47:
			return format_abc_OpCode.OFloat(format_abc_Index.Idx(this.readInt()));
		case 48:
			return format_abc_OpCode.OScope;
		case 49:
			return format_abc_OpCode.ONamespace(format_abc_Index.Idx(this.readInt()));
		case 50:
			var r1 = this.readInt();
			var r2 = this.readInt();
			return format_abc_OpCode.ONext(r1,r2);
		case 53:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemGet8);
		case 54:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemGet16);
		case 55:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemGet32);
		case 56:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemGetFloat);
		case 57:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemGetDouble);
		case 58:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemSet8);
		case 59:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemSet16);
		case 60:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemSet32);
		case 61:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemSetFloat);
		case 62:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMemSetDouble);
		case 64:
			return format_abc_OpCode.OFunction(format_abc_Index.Idx(this.readInt()));
		case 65:
			return format_abc_OpCode.OCallStack(this.readInt());
		case 66:
			return format_abc_OpCode.OConstruct(this.readInt());
		case 67:
			var s = this.readInt();
			var n = this.readInt();
			return format_abc_OpCode.OCallMethod(s,n);
		case 68:
			var m = format_abc_Index.Idx(this.readInt());
			var n1 = this.readInt();
			return format_abc_OpCode.OCallStatic(m,n1);
		case 69:
			var p = format_abc_Index.Idx(this.readInt());
			var n2 = this.readInt();
			return format_abc_OpCode.OCallSuper(p,n2);
		case 70:
			var p1 = format_abc_Index.Idx(this.readInt());
			var n3 = this.readInt();
			return format_abc_OpCode.OCallProperty(p1,n3);
		case 71:
			return format_abc_OpCode.ORetVoid;
		case 72:
			return format_abc_OpCode.ORet;
		case 73:
			return format_abc_OpCode.OConstructSuper(this.readInt());
		case 74:
			var p2 = format_abc_Index.Idx(this.readInt());
			var n4 = this.readInt();
			return format_abc_OpCode.OConstructProperty(p2,n4);
		case 76:
			var p3 = format_abc_Index.Idx(this.readInt());
			var n5 = this.readInt();
			return format_abc_OpCode.OCallPropLex(p3,n5);
		case 78:
			var p4 = format_abc_Index.Idx(this.readInt());
			var n6 = this.readInt();
			return format_abc_OpCode.OCallSuperVoid(p4,n6);
		case 79:
			var p5 = format_abc_Index.Idx(this.readInt());
			var n7 = this.readInt();
			return format_abc_OpCode.OCallPropVoid(p5,n7);
		case 80:
			return format_abc_OpCode.OOp(format_abc_Operation.OpSign1);
		case 81:
			return format_abc_OpCode.OOp(format_abc_Operation.OpSign8);
		case 82:
			return format_abc_OpCode.OOp(format_abc_Operation.OpSign16);
		case 83:
			return format_abc_OpCode.OApplyType(this.readInt());
		case 85:
			return format_abc_OpCode.OObject(this.readInt());
		case 86:
			return format_abc_OpCode.OArray(this.readInt());
		case 87:
			return format_abc_OpCode.ONewBlock;
		case 88:
			return format_abc_OpCode.OClassDef(format_abc_Index.Idx(this.readInt()));
		case 89:
			return format_abc_OpCode.OGetDescendants(format_abc_Index.Idx(this.readInt()));
		case 90:
			return format_abc_OpCode.OCatch(this.readInt());
		case 93:
			return format_abc_OpCode.OFindPropStrict(format_abc_Index.Idx(this.readInt()));
		case 94:
			return format_abc_OpCode.OFindProp(format_abc_Index.Idx(this.readInt()));
		case 95:
			return format_abc_OpCode.OFindDefinition(format_abc_Index.Idx(this.readInt()));
		case 96:
			return format_abc_OpCode.OGetLex(format_abc_Index.Idx(this.readInt()));
		case 97:
			return format_abc_OpCode.OSetProp(format_abc_Index.Idx(this.readInt()));
		case 98:
			return format_abc_OpCode.OReg(this.i.readByte());
		case 99:
			return format_abc_OpCode.OSetReg(this.i.readByte());
		case 100:
			return format_abc_OpCode.OGetGlobalScope;
		case 101:
			return format_abc_OpCode.OGetScope(this.i.readByte());
		case 102:
			return format_abc_OpCode.OGetProp(format_abc_Index.Idx(this.readInt()));
		case 104:
			return format_abc_OpCode.OInitProp(format_abc_Index.Idx(this.readInt()));
		case 106:
			return format_abc_OpCode.ODeleteProp(format_abc_Index.Idx(this.readInt()));
		case 108:
			return format_abc_OpCode.OGetSlot(this.readInt());
		case 109:
			return format_abc_OpCode.OSetSlot(this.readInt());
		case 112:
			return format_abc_OpCode.OToString;
		case 113:
			return format_abc_OpCode.OToXml;
		case 114:
			return format_abc_OpCode.OToXmlAttr;
		case 115:
			return format_abc_OpCode.OToInt;
		case 116:
			return format_abc_OpCode.OToUInt;
		case 117:
			return format_abc_OpCode.OToNumber;
		case 118:
			return format_abc_OpCode.OToBool;
		case 119:
			return format_abc_OpCode.OToObject;
		case 120:
			return format_abc_OpCode.OCheckIsXml;
		case 128:
			return format_abc_OpCode.OCast(format_abc_Index.Idx(this.readInt()));
		case 130:
			return format_abc_OpCode.OAsAny;
		case 133:
			return format_abc_OpCode.OAsString;
		case 134:
			return format_abc_OpCode.OAsType(format_abc_Index.Idx(this.readInt()));
		case 135:
			return format_abc_OpCode.OOp(format_abc_Operation.OpAs);
		case 137:
			return format_abc_OpCode.OAsObject;
		case 144:
			return format_abc_OpCode.OOp(format_abc_Operation.OpNeg);
		case 145:
			return format_abc_OpCode.OOp(format_abc_Operation.OpIncr);
		case 146:
			return format_abc_OpCode.OIncrReg(this.i.readByte());
		case 147:
			return format_abc_OpCode.OOp(format_abc_Operation.OpDecr);
		case 148:
			return format_abc_OpCode.ODecrReg(this.i.readByte());
		case 149:
			return format_abc_OpCode.OTypeof;
		case 150:
			return format_abc_OpCode.OOp(format_abc_Operation.OpNot);
		case 151:
			return format_abc_OpCode.OOp(format_abc_Operation.OpBitNot);
		case 160:
			return format_abc_OpCode.OOp(format_abc_Operation.OpAdd);
		case 161:
			return format_abc_OpCode.OOp(format_abc_Operation.OpSub);
		case 162:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMul);
		case 163:
			return format_abc_OpCode.OOp(format_abc_Operation.OpDiv);
		case 164:
			return format_abc_OpCode.OOp(format_abc_Operation.OpMod);
		case 165:
			return format_abc_OpCode.OOp(format_abc_Operation.OpShl);
		case 166:
			return format_abc_OpCode.OOp(format_abc_Operation.OpShr);
		case 167:
			return format_abc_OpCode.OOp(format_abc_Operation.OpUShr);
		case 168:
			return format_abc_OpCode.OOp(format_abc_Operation.OpAnd);
		case 169:
			return format_abc_OpCode.OOp(format_abc_Operation.OpOr);
		case 170:
			return format_abc_OpCode.OOp(format_abc_Operation.OpXor);
		case 171:
			return format_abc_OpCode.OOp(format_abc_Operation.OpEq);
		case 172:
			return format_abc_OpCode.OOp(format_abc_Operation.OpPhysEq);
		case 173:
			return format_abc_OpCode.OOp(format_abc_Operation.OpLt);
		case 174:
			return format_abc_OpCode.OOp(format_abc_Operation.OpLte);
		case 175:
			return format_abc_OpCode.OOp(format_abc_Operation.OpGt);
		case 176:
			return format_abc_OpCode.OOp(format_abc_Operation.OpGte);
		case 177:
			return format_abc_OpCode.OInstanceOf;
		case 178:
			return format_abc_OpCode.OIsType(format_abc_Index.Idx(this.readInt()));
		case 179:
			return format_abc_OpCode.OOp(format_abc_Operation.OpIs);
		case 180:
			return format_abc_OpCode.OOp(format_abc_Operation.OpIn);
		case 192:
			return format_abc_OpCode.OOp(format_abc_Operation.OpIIncr);
		case 193:
			return format_abc_OpCode.OOp(format_abc_Operation.OpIDecr);
		case 194:
			return format_abc_OpCode.OIncrIReg(this.i.readByte());
		case 195:
			return format_abc_OpCode.ODecrIReg(this.i.readByte());
		case 196:
			return format_abc_OpCode.OOp(format_abc_Operation.OpINeg);
		case 197:
			return format_abc_OpCode.OOp(format_abc_Operation.OpIAdd);
		case 198:
			return format_abc_OpCode.OOp(format_abc_Operation.OpISub);
		case 199:
			return format_abc_OpCode.OOp(format_abc_Operation.OpIMul);
		case 208:
			return format_abc_OpCode.OThis;
		case 209:
			return format_abc_OpCode.OReg(1);
		case 210:
			return format_abc_OpCode.OReg(2);
		case 211:
			return format_abc_OpCode.OReg(3);
		case 212:
			return format_abc_OpCode.OSetThis;
		case 213:
			return format_abc_OpCode.OSetReg(1);
		case 214:
			return format_abc_OpCode.OSetReg(2);
		case 215:
			return format_abc_OpCode.OSetReg(3);
		case 239:
			if(this.i.readByte() != 1) {
				throw new js__$Boot_HaxeError("assert");
			}
			var name = format_abc_Index.Idx(this.readInt());
			var r = this.i.readByte();
			var line = this.readInt();
			return format_abc_OpCode.ODebugReg(name,r,line);
		case 240:
			return format_abc_OpCode.ODebugLine(this.readInt());
		case 241:
			return format_abc_OpCode.ODebugFile(format_abc_Index.Idx(this.readInt()));
		case 242:
			return format_abc_OpCode.OBreakPointLine(this.readInt());
		case 243:
			return format_abc_OpCode.OTimestamp;
		default:
			return format_abc_OpCode.OUnknown(op);
		}
	}
	,__class__: format_abc_OpReader
};
var format_abc_Reader = function(i) {
	this.i = i;
	this.opr = new format_abc_OpReader(i);
};
$hxClasses["format.abc.Reader"] = format_abc_Reader;
format_abc_Reader.__name__ = ["format","abc","Reader"];
format_abc_Reader.prototype = {
	i: null
	,opr: null
	,readInt: function() {
		return this.opr.readInt();
	}
	,readIndex: function() {
		return format_abc_Index.Idx(this.opr.readInt());
	}
	,readIndexOpt: function() {
		var i = this.opr.readInt();
		if(i == 0) {
			return null;
		} else {
			return format_abc_Index.Idx(i);
		}
	}
	,readList: function(f) {
		var a = [];
		var n = this.opr.readInt();
		if(n == 0) {
			return a;
		}
		var _g1 = 0;
		var _g = n - 1;
		while(_g1 < _g) {
			var i = _g1++;
			a.push(f());
		}
		return a;
	}
	,readList2: function(f) {
		var a = [];
		var n = this.opr.readInt();
		var _g1 = 0;
		var _g = n;
		while(_g1 < _g) {
			var i = _g1++;
			a.push(f());
		}
		return a;
	}
	,readString: function() {
		return this.i.readString(this.opr.readInt());
	}
	,readNamespace: function() {
		var k = this.i.readByte();
		var p = format_abc_Index.Idx(this.opr.readInt());
		switch(k) {
		case 5:
			return format_abc_Namespace.NPrivate(p);
		case 8:
			return format_abc_Namespace.NNamespace(p);
		case 22:
			return format_abc_Namespace.NPublic(p);
		case 23:
			return format_abc_Namespace.NInternal(p);
		case 24:
			return format_abc_Namespace.NProtected(p);
		case 25:
			return format_abc_Namespace.NExplicit(p);
		case 26:
			return format_abc_Namespace.NStaticProtected(p);
		default:
			throw new js__$Boot_HaxeError("assert");
		}
	}
	,readNsSet: function() {
		var a = [];
		var _g1 = 0;
		var _g = this.i.readByte();
		while(_g1 < _g) {
			var n = _g1++;
			a.push(format_abc_Index.Idx(this.opr.readInt()));
		}
		return a;
	}
	,readName: function(k) {
		if(k == null) {
			k = -1;
		}
		if(k == -1) {
			k = this.i.readByte();
		}
		switch(k) {
		case 7:
			var ns = format_abc_Index.Idx(this.opr.readInt());
			var id = format_abc_Index.Idx(this.opr.readInt());
			return format_abc_Name.NName(id,ns);
		case 9:
			var id1 = format_abc_Index.Idx(this.opr.readInt());
			var ns1 = format_abc_Index.Idx(this.opr.readInt());
			return format_abc_Name.NMulti(id1,ns1);
		case 13:
			return format_abc_Name.NAttrib(this.readName(7));
		case 14:
			return format_abc_Name.NAttrib(this.readName(9));
		case 15:
			return format_abc_Name.NRuntime(format_abc_Index.Idx(this.opr.readInt()));
		case 16:
			return format_abc_Name.NAttrib(this.readName(15));
		case 17:
			return format_abc_Name.NRuntimeLate;
		case 18:
			return format_abc_Name.NAttrib(this.readName(17));
		case 27:
			return format_abc_Name.NMultiLate(format_abc_Index.Idx(this.opr.readInt()));
		case 28:
			return format_abc_Name.NAttrib(this.readName(27));
		case 29:
			var id2 = format_abc_Index.Idx(this.opr.readInt());
			var params = this.readList2($bind(this,this.readIndex));
			return format_abc_Name.NParams(id2,params);
		default:
			throw new js__$Boot_HaxeError("assert");
		}
	}
	,readValue: function(extra) {
		var idx = this.opr.readInt();
		if(idx == 0) {
			if(extra && this.i.readByte() != 0) {
				throw new js__$Boot_HaxeError("assert");
			}
			return null;
		}
		var n = this.i.readByte();
		switch(n) {
		case 1:
			return format_abc_Value.VString(format_abc_Index.Idx(idx));
		case 3:
			return format_abc_Value.VInt(format_abc_Index.Idx(idx));
		case 4:
			return format_abc_Value.VUInt(format_abc_Index.Idx(idx));
		case 6:
			return format_abc_Value.VFloat(format_abc_Index.Idx(idx));
		case 10:
			if(idx != 10) {
				throw new js__$Boot_HaxeError("assert");
			}
			return format_abc_Value.VBool(false);
		case 11:
			if(idx != 11) {
				throw new js__$Boot_HaxeError("assert");
			}
			return format_abc_Value.VBool(true);
		case 12:
			if(idx != 12) {
				throw new js__$Boot_HaxeError("assert");
			}
			return format_abc_Value.VNull;
		case 5:case 8:case 22:case 23:case 24:case 25:case 26:
			return format_abc_Value.VNamespace(n,format_abc_Index.Idx(idx));
		default:
			throw new js__$Boot_HaxeError("assert");
		}
	}
	,readMethodType: function() {
		var _gthis = this;
		var nargs = this.i.readByte();
		var tret = this.readIndexOpt();
		var targs = [];
		var _g1 = 0;
		var _g = nargs;
		while(_g1 < _g) {
			var i = _g1++;
			targs.push(this.readIndexOpt());
		}
		var dname = this.readIndexOpt();
		var flags = this.i.readByte();
		if(flags == 0 && dname == null) {
			return { args : targs, ret : tret, extra : null};
		}
		var dparams = null;
		var pnames = null;
		if((flags & 8) != 0) {
			dparams = this.readList2(function() {
				return _gthis.readValue(true);
			});
		}
		if((flags & 128) != 0) {
			pnames = [];
			var _g11 = 0;
			var _g2 = nargs;
			while(_g11 < _g2) {
				var i1 = _g11++;
				pnames.push(this.readIndexOpt());
			}
		}
		return { args : targs, ret : tret, extra : { 'native' : (flags & 32) != 0, variableArgs : (flags & 4) != 0, argumentsDefined : (flags & 1) != 0, usesDXNS : (flags & 64) != 0, newBlock : (flags & 2) != 0, unused : (flags & 16) != 0, debugName : dname, defaultParameters : dparams, paramNames : pnames}};
	}
	,readMetadata: function() {
		var name = format_abc_Index.Idx(this.opr.readInt());
		var data = this.readList2($bind(this,this.readIndexOpt));
		var a = [];
		var _g = 0;
		while(_g < data.length) {
			var i = data[_g];
			++_g;
			a.push({ n : i, v : format_abc_Index.Idx(this.opr.readInt())});
		}
		return { name : name, data : a};
	}
	,readField: function() {
		var name = format_abc_Index.Idx(this.opr.readInt());
		var kind = this.i.readByte();
		var slot = this.opr.readInt();
		var f;
		var _g = kind & 15;
		switch(_g) {
		case 1:case 2:case 3:
			var mt = format_abc_Index.Idx(this.opr.readInt());
			var $final = (kind & 16) != 0;
			var over = (kind & 32) != 0;
			var kind1;
			var _g1 = kind & 15;
			switch(_g1) {
			case 1:
				kind1 = format_abc_MethodKind.KNormal;
				break;
			case 2:
				kind1 = format_abc_MethodKind.KGetter;
				break;
			case 3:
				kind1 = format_abc_MethodKind.KSetter;
				break;
			default:
				throw new js__$Boot_HaxeError("assert");
			}
			f = format_abc_FieldKind.FMethod(mt,kind1,$final,over);
			break;
		case 4:
			f = format_abc_FieldKind.FClass(format_abc_Index.Idx(this.opr.readInt()));
			break;
		case 5:
			f = format_abc_FieldKind.FFunction(format_abc_Index.Idx(this.opr.readInt()));
			break;
		case 0:case 6:
			var t = this.readIndexOpt();
			var v = this.readValue(false);
			f = format_abc_FieldKind.FVar(t,v,kind == 6);
			break;
		default:
			throw new js__$Boot_HaxeError("assert");
		}
		var metas = null;
		if((kind & 64) != 0) {
			metas = this.readList2($bind(this,this.readIndex));
		}
		return { name : name, slot : slot, kind : f, metadatas : metas};
	}
	,readClass: function() {
		var name = format_abc_Index.Idx(this.opr.readInt());
		var csuper = this.readIndexOpt();
		var flags = this.i.readByte();
		var ns = null;
		if((flags & 8) != 0) {
			ns = format_abc_Index.Idx(this.opr.readInt());
		}
		var interfs = this.readList2($bind(this,this.readIndex));
		var construct = format_abc_Index.Idx(this.opr.readInt());
		var fields = this.readList2($bind(this,this.readField));
		return { name : name, superclass : csuper, interfaces : interfs, constructor : construct, fields : fields, 'namespace' : ns, isSealed : (flags & 1) != 0, isFinal : (flags & 2) != 0, isInterface : (flags & 4) != 0, statics : null, staticFields : null};
	}
	,readInit: function() {
		return { method : format_abc_Index.Idx(this.opr.readInt()), fields : this.readList2($bind(this,this.readField))};
	}
	,readTryCatch: function() {
		return { start : this.opr.readInt(), end : this.opr.readInt(), handle : this.opr.readInt(), type : this.readIndexOpt(), variable : this.readIndexOpt()};
	}
	,readFunction: function() {
		var t = format_abc_Index.Idx(this.opr.readInt());
		var ss = this.opr.readInt();
		var nregs = this.opr.readInt();
		var init_scope = this.opr.readInt();
		var max_scope = this.opr.readInt();
		var code = this.i.read(this.opr.readInt());
		var trys = this.readList2($bind(this,this.readTryCatch));
		var locals = this.readList2($bind(this,this.readField));
		return { type : t, maxStack : ss, nRegs : nregs, initScope : init_scope, maxScope : max_scope, code : code, trys : trys, locals : locals};
	}
	,read: function() {
		var _gthis = this;
		var sign = this.i.readInt32();
		if(sign != 3014672) {
			throw new js__$Boot_HaxeError("invalid header");
		}
		var data = new format_abc_ABCData();
		data.ints = this.readList(($_=this.opr,$bind($_,$_.readInt32)));
		data.uints = this.readList(($_=this.opr,$bind($_,$_.readInt32)));
		data.floats = this.readList(($_=this.i,$bind($_,$_.readDouble)));
		data.strings = this.readList($bind(this,this.readString));
		data.namespaces = this.readList($bind(this,this.readNamespace));
		data.nssets = this.readList($bind(this,this.readNsSet));
		data.names = this.readList(function() {
			return _gthis.readName();
		});
		data.methodTypes = this.readList2($bind(this,this.readMethodType));
		data.metadatas = this.readList2($bind(this,this.readMetadata));
		data.classes = this.readList2($bind(this,this.readClass));
		var _g = 0;
		var _g1 = data.classes;
		while(_g < _g1.length) {
			var c = _g1[_g];
			++_g;
			c.statics = format_abc_Index.Idx(this.opr.readInt());
			c.staticFields = this.readList2($bind(this,this.readField));
		}
		data.inits = this.readList2($bind(this,this.readInit));
		data.functions = this.readList2($bind(this,this.readFunction));
		return data;
	}
	,__class__: format_abc_Reader
};
var format_jpg_Writer = function(out) {
	this.YTable = [];
	this.UVTable = [];
	this.fdtbl_Y = [];
	this.fdtbl_UV = [];
	var _g = 0;
	while(_g < 64) {
		var i = _g++;
		this.YTable.push(0);
		this.UVTable.push(0);
		this.fdtbl_Y.push(0.0);
		this.fdtbl_UV.push(0.0);
	}
	this.bitcode = new haxe_ds_IntMap();
	this.category = new haxe_ds_IntMap();
	this.byteout = out;
	this.bytenew = 0;
	this.bytepos = 7;
	this.YDC_HT = new haxe_ds_IntMap();
	this.UVDC_HT = new haxe_ds_IntMap();
	this.YAC_HT = new haxe_ds_IntMap();
	this.UVAC_HT = new haxe_ds_IntMap();
	this.YDU = [];
	this.UDU = [];
	this.VDU = [];
	this.DU = [];
	var _g1 = 0;
	while(_g1 < 64) {
		var i1 = _g1++;
		this.YDU.push(0.0);
		this.UDU.push(0.0);
		this.VDU.push(0.0);
		this.DU.push(0.0);
	}
	this.initZigZag();
	this.initLuminance();
	this.initChrominance();
	this.initHuffmanTbl();
	this.initCategoryNumber();
};
$hxClasses["format.jpg.Writer"] = format_jpg_Writer;
format_jpg_Writer.__name__ = ["format","jpg","Writer"];
format_jpg_Writer.prototype = {
	ZigZag: null
	,initZigZag: function() {
		this.ZigZag = [0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63];
	}
	,YTable: null
	,UVTable: null
	,fdtbl_Y: null
	,fdtbl_UV: null
	,initQuantTables: function(sf) {
		var YQT = [16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99];
		var _g = 0;
		while(_g < 64) {
			var i = _g++;
			var t = Math.floor((YQT[i] * sf + 50) / 100);
			if(t < 1) {
				t = 1;
			} else if(t > 255) {
				t = 255;
			}
			this.YTable[this.ZigZag[i]] = t;
		}
		var UVQT = [17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,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,99,99,99,99,99,99,99,99,99,99,99,99];
		var _g1 = 0;
		while(_g1 < 64) {
			var j = _g1++;
			var u = Math.floor((UVQT[j] * sf + 50) / 100);
			if(u < 1) {
				u = 1;
			} else if(u > 255) {
				u = 255;
			}
			this.UVTable[this.ZigZag[j]] = u;
		}
		var aasf = [1.0,1.387039845,1.306562965,1.175875602,1.0,0.785694958,0.541196100,0.275899379];
		var k = 0;
		var _g2 = 0;
		while(_g2 < 8) {
			var row = _g2++;
			var _g11 = 0;
			while(_g11 < 8) {
				var col = _g11++;
				this.fdtbl_Y[k] = 1.0 / (this.YTable[this.ZigZag[k]] * aasf[row] * aasf[col] * 8.0);
				this.fdtbl_UV[k] = 1.0 / (this.UVTable[this.ZigZag[k]] * aasf[row] * aasf[col] * 8.0);
				++k;
			}
		}
	}
	,std_dc_luminance_nrcodes: null
	,std_dc_luminance_values: null
	,std_ac_luminance_nrcodes: null
	,std_ac_luminance_values: null
	,initLuminance: function() {
		this.std_dc_luminance_nrcodes = [0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0];
		this.std_dc_luminance_values = this.strIntsToBytes("0,1,2,3,4,5,6,7,8,9,10,11");
		this.std_ac_luminance_nrcodes = [0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125];
		this.std_ac_luminance_values = this.strIntsToBytes("0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12," + "0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07," + "0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08," + "0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0," + "0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16," + "0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28," + "0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39," + "0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49," + "0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59," + "0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69," + "0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79," + "0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89," + "0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98," + "0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7," + "0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6," + "0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5," + "0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4," + "0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2," + "0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea," + "0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8," + "0xf9,0xfa");
	}
	,strIntsToBytes: function(s) {
		var len = s.length;
		var b = new haxe_io_BytesBuffer();
		var val = 0;
		var i = 0;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var j = _g1++;
			if(s.charAt(j) == ",") {
				val = Std.parseInt(HxOverrides.substr(s,i,j - i));
				b.b.push(val);
				i = j + 1;
			}
		}
		if(i < len) {
			val = Std.parseInt(HxOverrides.substr(s,i,null));
			b.b.push(val);
		}
		return b.getBytes();
	}
	,std_dc_chrominance_nrcodes: null
	,std_dc_chrominance_values: null
	,std_ac_chrominance_nrcodes: null
	,std_ac_chrominance_values: null
	,initChrominance: function() {
		this.std_dc_chrominance_nrcodes = [0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0];
		this.std_dc_chrominance_values = this.strIntsToBytes("0,1,2,3,4,5,6,7,8,9,10,11");
		this.std_ac_chrominance_nrcodes = [0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119];
		this.std_ac_chrominance_values = this.strIntsToBytes("0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21," + "0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71," + "0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91," + "0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0," + "0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34," + "0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26," + "0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38," + "0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48," + "0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58," + "0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68," + "0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78," + "0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87," + "0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96," + "0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5," + "0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4," + "0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3," + "0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2," + "0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda," + "0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9," + "0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8," + "0xf9,0xfa");
	}
	,YDC_HT: null
	,UVDC_HT: null
	,YAC_HT: null
	,UVAC_HT: null
	,initHuffmanTbl: function() {
		this.YDC_HT = this.computeHuffmanTbl(this.std_dc_luminance_nrcodes,this.std_dc_luminance_values);
		this.UVDC_HT = this.computeHuffmanTbl(this.std_dc_chrominance_nrcodes,this.std_dc_chrominance_values);
		this.YAC_HT = this.computeHuffmanTbl(this.std_ac_luminance_nrcodes,this.std_ac_luminance_values);
		this.UVAC_HT = this.computeHuffmanTbl(this.std_ac_chrominance_nrcodes,this.std_ac_chrominance_values);
	}
	,computeHuffmanTbl: function(nrcodes,std_table) {
		var codevalue = 0;
		var pos_in_table = 0;
		var HT = new haxe_ds_IntMap();
		var _g = 1;
		while(_g < 17) {
			var k = _g++;
			var end = nrcodes[k];
			var _g2 = 0;
			var _g1 = end;
			while(_g2 < _g1) {
				var j = _g2++;
				var idx = std_table.b[pos_in_table];
				var value = new format_jpg__$Writer_BitString(k,codevalue);
				HT.h[idx] = value;
				++pos_in_table;
				++codevalue;
			}
			codevalue *= 2;
		}
		return HT;
	}
	,bitcode: null
	,category: null
	,initCategoryNumber: function() {
		var nrlower = 1;
		var nrupper = 2;
		var idx;
		var _g = 1;
		while(_g < 16) {
			var cat = _g++;
			var _g2 = nrlower;
			var _g1 = nrupper;
			while(_g2 < _g1) {
				var nr = _g2++;
				idx = 32767 + nr;
				this.category.h[idx] = cat;
				var this1 = this.bitcode;
				var value = new format_jpg__$Writer_BitString(cat,nr);
				this1.h[idx] = value;
			}
			var nrneg = -(nrupper - 1);
			while(nrneg <= -nrlower) {
				idx = 32767 + nrneg;
				this.category.h[idx] = cat;
				var this2 = this.bitcode;
				var value1 = new format_jpg__$Writer_BitString(cat,nrupper - 1 + nrneg);
				this2.h[idx] = value1;
				++nrneg;
			}
			nrlower <<= 1;
			nrupper <<= 1;
		}
	}
	,byteout: null
	,bytenew: null
	,bytepos: null
	,writeBits: function(bs) {
		var value = bs.val;
		var posval = bs.len - 1;
		while(posval >= 0) {
			if((value & 1 << posval) != 0) {
				this.bytenew |= 1 << this.bytepos;
			}
			--posval;
			this.bytepos--;
			if(this.bytepos < 0) {
				if(this.bytenew == 255) {
					this.byteout.writeByte(255);
					this.byteout.writeByte(0);
				} else {
					this.byteout.writeByte(this.bytenew);
				}
				this.bytepos = 7;
				this.bytenew = 0;
			}
		}
	}
	,writeWord: function(val) {
		this.byteout.writeByte(val >> 8 & 255);
		this.byteout.writeByte(val & 255);
	}
	,fDCTQuant: function(data,fdtbl) {
		var dataOff = 0;
		var _g = 0;
		while(_g < 8) {
			var i = _g++;
			var tmp0 = data[dataOff] + data[dataOff + 7];
			var tmp7 = data[dataOff] - data[dataOff + 7];
			var tmp1 = data[dataOff + 1] + data[dataOff + 6];
			var tmp6 = data[dataOff + 1] - data[dataOff + 6];
			var tmp2 = data[dataOff + 2] + data[dataOff + 5];
			var tmp5 = data[dataOff + 2] - data[dataOff + 5];
			var tmp3 = data[dataOff + 3] + data[dataOff + 4];
			var tmp4 = data[dataOff + 3] - data[dataOff + 4];
			var tmp10 = tmp0 + tmp3;
			var tmp13 = tmp0 - tmp3;
			var tmp11 = tmp1 + tmp2;
			var tmp12 = tmp1 - tmp2;
			data[dataOff] = tmp10 + tmp11;
			data[dataOff + 4] = tmp10 - tmp11;
			var z1 = (tmp12 + tmp13) * 0.707106781;
			data[dataOff + 2] = tmp13 + z1;
			data[dataOff + 6] = tmp13 - z1;
			tmp10 = tmp4 + tmp5;
			tmp11 = tmp5 + tmp6;
			tmp12 = tmp6 + tmp7;
			var z5 = (tmp10 - tmp12) * 0.382683433;
			var z2 = 0.541196100 * tmp10 + z5;
			var z4 = 1.306562965 * tmp12 + z5;
			var z3 = tmp11 * 0.707106781;
			var z11 = tmp7 + z3;
			var z13 = tmp7 - z3;
			data[dataOff + 5] = z13 + z2;
			data[dataOff + 3] = z13 - z2;
			data[dataOff + 1] = z11 + z4;
			data[dataOff + 7] = z11 - z4;
			dataOff += 8;
		}
		dataOff = 0;
		var _g1 = 0;
		while(_g1 < 8) {
			var j = _g1++;
			var tmp0p2 = data[dataOff] + data[dataOff + 56];
			var tmp7p2 = data[dataOff] - data[dataOff + 56];
			var tmp1p2 = data[dataOff + 8] + data[dataOff + 48];
			var tmp6p2 = data[dataOff + 8] - data[dataOff + 48];
			var tmp2p2 = data[dataOff + 16] + data[dataOff + 40];
			var tmp5p2 = data[dataOff + 16] - data[dataOff + 40];
			var tmp3p2 = data[dataOff + 24] + data[dataOff + 32];
			var tmp4p2 = data[dataOff + 24] - data[dataOff + 32];
			var tmp10p2 = tmp0p2 + tmp3p2;
			var tmp13p2 = tmp0p2 - tmp3p2;
			var tmp11p2 = tmp1p2 + tmp2p2;
			var tmp12p2 = tmp1p2 - tmp2p2;
			data[dataOff] = tmp10p2 + tmp11p2;
			data[dataOff + 32] = tmp10p2 - tmp11p2;
			var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781;
			data[dataOff + 16] = tmp13p2 + z1p2;
			data[dataOff + 48] = tmp13p2 - z1p2;
			tmp10p2 = tmp4p2 + tmp5p2;
			tmp11p2 = tmp5p2 + tmp6p2;
			tmp12p2 = tmp6p2 + tmp7p2;
			var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433;
			var z2p2 = 0.541196100 * tmp10p2 + z5p2;
			var z4p2 = 1.306562965 * tmp12p2 + z5p2;
			var z3p2 = tmp11p2 * 0.707106781;
			var z11p2 = tmp7p2 + z3p2;
			var z13p2 = tmp7p2 - z3p2;
			data[dataOff + 40] = z13p2 + z2p2;
			data[dataOff + 24] = z13p2 - z2p2;
			data[dataOff + 8] = z11p2 + z4p2;
			data[dataOff + 56] = z11p2 - z4p2;
			++dataOff;
		}
		var _g2 = 0;
		while(_g2 < 64) {
			var k = _g2++;
			data[k] = Math.round(data[k] * fdtbl[k]);
		}
		return data;
	}
	,b: function(v) {
		this.byteout.writeByte(v);
	}
	,writeAPP0: function() {
		this.byteout.writeByte(255);
		this.byteout.writeByte(224);
		this.byteout.writeByte(0);
		this.byteout.writeByte(16);
		this.byteout.writeByte(74);
		this.byteout.writeByte(70);
		this.byteout.writeByte(73);
		this.byteout.writeByte(70);
		this.byteout.writeByte(0);
		this.byteout.writeByte(1);
		this.byteout.writeByte(1);
		this.byteout.writeByte(0);
		this.byteout.writeByte(0);
		this.byteout.writeByte(1);
		this.byteout.writeByte(0);
		this.byteout.writeByte(1);
		this.byteout.writeByte(0);
		this.byteout.writeByte(0);
	}
	,writeDQT: function() {
		this.byteout.writeByte(255);
		this.byteout.writeByte(219);
		this.byteout.writeByte(0);
		this.byteout.writeByte(132);
		this.byteout.writeByte(0);
		var _g = 0;
		while(_g < 64) {
			var j = _g++;
			this.byteout.writeByte(this.YTable[j]);
		}
		this.byteout.writeByte(1);
		var _g1 = 0;
		while(_g1 < 64) {
			var j1 = _g1++;
			this.byteout.writeByte(this.UVTable[j1]);
		}
	}
	,writeSOF0: function(width,height) {
		this.byteout.writeByte(255);
		this.byteout.writeByte(192);
		this.byteout.writeByte(0);
		this.byteout.writeByte(17);
		this.byteout.writeByte(8);
		this.byteout.writeByte(height >> 8 & 255);
		this.byteout.writeByte(height & 255);
		this.byteout.writeByte(width >> 8 & 255);
		this.byteout.writeByte(width & 255);
		this.byteout.writeByte(3);
		this.byteout.writeByte(1);
		this.byteout.writeByte(17);
		this.byteout.writeByte(0);
		this.byteout.writeByte(2);
		this.byteout.writeByte(17);
		this.byteout.writeByte(1);
		this.byteout.writeByte(3);
		this.byteout.writeByte(17);
		this.byteout.writeByte(1);
	}
	,writeDHT: function() {
		this.byteout.writeByte(255);
		this.byteout.writeByte(196);
		this.byteout.writeByte(1);
		this.byteout.writeByte(162);
		this.byteout.writeByte(0);
		var _g = 1;
		while(_g < 17) {
			var j = _g++;
			this.byteout.writeByte(this.std_dc_luminance_nrcodes[j]);
		}
		this.byteout.write(this.std_dc_luminance_values);
		this.byteout.writeByte(16);
		var _g1 = 1;
		while(_g1 < 17) {
			var j1 = _g1++;
			this.byteout.writeByte(this.std_ac_luminance_nrcodes[j1]);
		}
		this.byteout.write(this.std_ac_luminance_values);
		this.byteout.writeByte(1);
		var _g2 = 1;
		while(_g2 < 17) {
			var j2 = _g2++;
			this.byteout.writeByte(this.std_dc_chrominance_nrcodes[j2]);
		}
		this.byteout.write(this.std_dc_chrominance_values);
		this.byteout.writeByte(17);
		var _g3 = 1;
		while(_g3 < 17) {
			var j3 = _g3++;
			this.byteout.writeByte(this.std_ac_chrominance_nrcodes[j3]);
		}
		this.byteout.write(this.std_ac_chrominance_values);
	}
	,writeSOS: function() {
		this.byteout.writeByte(255);
		this.byteout.writeByte(218);
		this.byteout.writeByte(0);
		this.byteout.writeByte(12);
		this.byteout.writeByte(3);
		this.byteout.writeByte(1);
		this.byteout.writeByte(0);
		this.byteout.writeByte(2);
		this.byteout.writeByte(17);
		this.byteout.writeByte(3);
		this.byteout.writeByte(17);
		this.byteout.writeByte(0);
		this.byteout.writeByte(63);
		this.byteout.writeByte(0);
	}
	,DU: null
	,processDU: function(CDU,fdtbl,DC,HTDC,HTAC) {
		var EOB = HTAC.h[0];
		var M16zeroes = HTAC.h[240];
		var DU_DCT = this.fDCTQuant(CDU,fdtbl);
		var _g = 0;
		while(_g < 64) {
			var i = _g++;
			this.DU[this.ZigZag[i]] = DU_DCT[i];
		}
		var idx;
		var Diff = this.DU[0] - DC | 0;
		DC = this.DU[0];
		if(Diff == 0) {
			this.writeBits(HTDC.h[0]);
		} else {
			idx = 32767 + Diff;
			this.writeBits(HTDC.h[this.category.h[idx]]);
			this.writeBits(this.bitcode.h[idx]);
		}
		var end0pos = 63;
		while(end0pos > 0 && this.DU[end0pos] == 0.0) --end0pos;
		if(end0pos == 0) {
			this.writeBits(EOB);
			return DC;
		}
		var i1 = 1;
		while(i1 <= end0pos) {
			var startpos = i1;
			while(this.DU[i1] == 0.0 && i1 <= end0pos) ++i1;
			var nrzeroes = i1 - startpos;
			if(nrzeroes >= 16) {
				var _g1 = 0;
				var _g2 = nrzeroes >> 4;
				while(_g1 < _g2) {
					var nrmarker = _g1++;
					this.writeBits(M16zeroes);
				}
				nrzeroes &= 15;
			}
			idx = 32767 + (this.DU[i1] | 0);
			this.writeBits(HTAC.h[nrzeroes * 16 + this.category.h[idx]]);
			this.writeBits(this.bitcode.h[idx]);
			++i1;
		}
		if(end0pos != 63) {
			this.writeBits(EOB);
		}
		return DC;
	}
	,YDU: null
	,UDU: null
	,VDU: null
	,RGB2YUV: function(img,width,xpos,ypos) {
		var pos = 0;
		var _g = 0;
		while(_g < 8) {
			var y = _g++;
			var offset = (y + ypos) * width + xpos << 2;
			var _g1 = 0;
			while(_g1 < 8) {
				var x = _g1++;
				++offset;
				var R = img.b[offset++];
				var G = img.b[offset++];
				var B = img.b[offset++];
				this.YDU[pos] = 0.29900 * R + 0.58700 * G + 0.11400 * B - 128;
				this.UDU[pos] = -0.16874 * R + -0.33126 * G + 0.50000 * B;
				this.VDU[pos] = 0.50000 * R + -0.41869 * G + -0.08131 * B;
				++pos;
			}
		}
	}
	,write: function(image) {
		var quality = image.quality;
		if(quality <= 0) {
			quality = 1;
		}
		if(quality > 100) {
			quality = 100;
		}
		var sf = quality < 50 ? 5000 / quality | 0 : 200 - quality * 2 | 0;
		this.initQuantTables(sf);
		this.bytenew = 0;
		this.bytepos = 7;
		var width = image.width;
		var height = image.height;
		this.writeWord(65496);
		this.writeAPP0();
		this.writeDQT();
		this.writeSOF0(width,height);
		this.writeDHT();
		this.writeSOS();
		var DCY = 0.0;
		var DCU = 0.0;
		var DCV = 0.0;
		this.bytenew = 0;
		this.bytepos = 7;
		var ypos = 0;
		while(ypos < height) {
			var xpos = 0;
			while(xpos < width) {
				this.RGB2YUV(image.pixels,width,xpos,ypos);
				DCY = this.processDU(this.YDU,this.fdtbl_Y,DCY,this.YDC_HT,this.YAC_HT);
				DCU = this.processDU(this.UDU,this.fdtbl_UV,DCU,this.UVDC_HT,this.UVAC_HT);
				DCV = this.processDU(this.VDU,this.fdtbl_UV,DCV,this.UVDC_HT,this.UVAC_HT);
				xpos += 8;
			}
			ypos += 8;
		}
		if(this.bytepos >= 0) {
			var fillbits = new format_jpg__$Writer_BitString(this.bytepos + 1,(1 << this.bytepos + 1) - 1);
			this.writeBits(fillbits);
		}
		this.writeWord(65497);
	}
	,__class__: format_jpg_Writer
};
var format_jpg__$Writer_BitString = function(l,v) {
	this.len = l;
	this.val = v;
};
$hxClasses["format.jpg._Writer.BitString"] = format_jpg__$Writer_BitString;
format_jpg__$Writer_BitString.__name__ = ["format","jpg","_Writer","BitString"];
format_jpg__$Writer_BitString.prototype = {
	len: null
	,val: null
	,__class__: format_jpg__$Writer_BitString
};
var format_png_Color = $hxClasses["format.png.Color"] = { __ename__ : ["format","png","Color"], __constructs__ : ["ColGrey","ColTrue","ColIndexed"] };
format_png_Color.ColGrey = function(alpha) { var $x = ["ColGrey",0,alpha]; $x.__enum__ = format_png_Color; $x.toString = $estr; return $x; };
format_png_Color.ColTrue = function(alpha) { var $x = ["ColTrue",1,alpha]; $x.__enum__ = format_png_Color; $x.toString = $estr; return $x; };
format_png_Color.ColIndexed = ["ColIndexed",2];
format_png_Color.ColIndexed.toString = $estr;
format_png_Color.ColIndexed.__enum__ = format_png_Color;
var format_png_Chunk = $hxClasses["format.png.Chunk"] = { __ename__ : ["format","png","Chunk"], __constructs__ : ["CEnd","CHeader","CData","CPalette","CUnknown"] };
format_png_Chunk.CEnd = ["CEnd",0];
format_png_Chunk.CEnd.toString = $estr;
format_png_Chunk.CEnd.__enum__ = format_png_Chunk;
format_png_Chunk.CHeader = function(h) { var $x = ["CHeader",1,h]; $x.__enum__ = format_png_Chunk; $x.toString = $estr; return $x; };
format_png_Chunk.CData = function(b) { var $x = ["CData",2,b]; $x.__enum__ = format_png_Chunk; $x.toString = $estr; return $x; };
format_png_Chunk.CPalette = function(b) { var $x = ["CPalette",3,b]; $x.__enum__ = format_png_Chunk; $x.toString = $estr; return $x; };
format_png_Chunk.CUnknown = function(id,data) { var $x = ["CUnknown",4,id,data]; $x.__enum__ = format_png_Chunk; $x.toString = $estr; return $x; };
var format_png_Reader = function(i) {
	this.i = i;
	i.set_bigEndian(true);
	this.checkCRC = true;
};
$hxClasses["format.png.Reader"] = format_png_Reader;
format_png_Reader.__name__ = ["format","png","Reader"];
format_png_Reader.prototype = {
	i: null
	,checkCRC: null
	,read: function() {
		var _g = 0;
		var _g1 = [137,80,78,71,13,10,26,10];
		while(_g < _g1.length) {
			var b = _g1[_g];
			++_g;
			if(this.i.readByte() != b) {
				throw new js__$Boot_HaxeError("Invalid header");
			}
		}
		var l = new List();
		while(true) {
			var c = this.readChunk();
			l.add(c);
			if(c == format_png_Chunk.CEnd) {
				break;
			}
		}
		return l;
	}
	,readHeader: function(i) {
		i.set_bigEndian(true);
		var width = i.readInt32();
		var height = i.readInt32();
		var colbits = i.readByte();
		var color = i.readByte();
		var color1;
		switch(color) {
		case 0:
			color1 = format_png_Color.ColGrey(false);
			break;
		case 2:
			color1 = format_png_Color.ColTrue(false);
			break;
		case 3:
			color1 = format_png_Color.ColIndexed;
			break;
		case 4:
			color1 = format_png_Color.ColGrey(true);
			break;
		case 6:
			color1 = format_png_Color.ColTrue(true);
			break;
		default:
			throw new js__$Boot_HaxeError("Unknown color model " + color + ":" + colbits);
		}
		var compress = i.readByte();
		var filter = i.readByte();
		if(compress != 0 || filter != 0) {
			throw new js__$Boot_HaxeError("Invalid header");
		}
		var interlace = i.readByte();
		if(interlace != 0 && interlace != 1) {
			throw new js__$Boot_HaxeError("Invalid header");
		}
		return { width : width, height : height, colbits : colbits, color : color1, interlaced : interlace == 1};
	}
	,readChunk: function() {
		var dataLen = this.i.readInt32();
		var id = this.i.readString(4);
		var data = this.i.read(dataLen);
		var crc = this.i.readInt32();
		if(this.checkCRC) {
			var c = new haxe_crypto_Crc32();
			var _g = 0;
			while(_g < 4) {
				var i = _g++;
				c["byte"](HxOverrides.cca(id,i));
			}
			c.update(data,0,data.length);
			if(c.get() != crc) {
				throw new js__$Boot_HaxeError("CRC check failure");
			}
		}
		switch(id) {
		case "IDAT":
			return format_png_Chunk.CData(data);
		case "IEND":
			return format_png_Chunk.CEnd;
		case "IHDR":
			return format_png_Chunk.CHeader(this.readHeader(new haxe_io_BytesInput(data)));
		case "PLTE":
			return format_png_Chunk.CPalette(data);
		default:
			return format_png_Chunk.CUnknown(id,data);
		}
	}
	,__class__: format_png_Reader
};
var format_png_Tools = function() { };
$hxClasses["format.png.Tools"] = format_png_Tools;
format_png_Tools.__name__ = ["format","png","Tools"];
format_png_Tools.getHeader = function(d) {
	var _g_head = d.h;
	while(_g_head != null) {
		var val = _g_head.item;
		_g_head = _g_head.next;
		var c = val;
		if(c[1] == 1) {
			var h = c[2];
			return h;
		}
	}
	throw new js__$Boot_HaxeError("Header not found");
};
format_png_Tools.getPalette = function(d) {
	var _g_head = d.h;
	while(_g_head != null) {
		var val = _g_head.item;
		_g_head = _g_head.next;
		var c = val;
		if(c[1] == 3) {
			var b = c[2];
			return b;
		}
	}
	return null;
};
format_png_Tools.filter = function(data,x,y,stride,prev,p,numChannels) {
	if(numChannels == null) {
		numChannels = 4;
	}
	var b = y == 0 ? 0 : data.b[p - stride];
	var c = x == 0 || y == 0 ? 0 : data.b[p - stride - numChannels];
	var k = prev + b - c;
	var pa = k - prev;
	if(pa < 0) {
		pa = -pa;
	}
	var pb = k - b;
	if(pb < 0) {
		pb = -pb;
	}
	var pc = k - c;
	if(pc < 0) {
		pc = -pc;
	}
	if(pa <= pb && pa <= pc) {
		return prev;
	} else if(pb <= pc) {
		return b;
	} else {
		return c;
	}
};
format_png_Tools.reverseBytes = function(b) {
	var p = 0;
	var _g1 = 0;
	var _g = b.length >> 2;
	while(_g1 < _g) {
		var i = _g1++;
		var b1 = b.b[p];
		var g = b.b[p + 1];
		var r = b.b[p + 2];
		var a = b.b[p + 3];
		b.b[p++] = a & 255;
		b.b[p++] = r & 255;
		b.b[p++] = g & 255;
		b.b[p++] = b1 & 255;
	}
};
format_png_Tools.extractGrey = function(d) {
	var h = format_png_Tools.getHeader(d);
	var grey = new haxe_io_Bytes(new ArrayBuffer(h.width * h.height));
	var data = null;
	var fullData = null;
	var _g_head = d.h;
	while(_g_head != null) {
		var val = _g_head.item;
		_g_head = _g_head.next;
		var c = val;
		if(c[1] == 2) {
			var b = c[2];
			if(fullData != null) {
				var b1 = fullData.b;
				var b2 = b.b;
				var _g1 = 0;
				var _g = b.length;
				while(_g1 < _g) {
					var i = _g1++;
					fullData.b.push(b2[i]);
				}
			} else if(data == null) {
				data = b;
			} else {
				fullData = new haxe_io_BytesBuffer();
				var b11 = fullData.b;
				var b21 = data.b;
				var _g11 = 0;
				var _g2 = data.length;
				while(_g11 < _g2) {
					var i1 = _g11++;
					fullData.b.push(b21[i1]);
				}
				var b12 = fullData.b;
				var b22 = b.b;
				var _g12 = 0;
				var _g3 = b.length;
				while(_g12 < _g3) {
					var i2 = _g12++;
					fullData.b.push(b22[i2]);
				}
				data = null;
			}
		}
	}
	if(fullData != null) {
		data = fullData.getBytes();
	}
	if(data == null) {
		throw new js__$Boot_HaxeError("Data not found");
	}
	data = format_tools_Inflate.run(data);
	var r = 0;
	var w = 0;
	var _g4 = h.color;
	if(_g4[1] == 0) {
		var alpha = _g4[2];
		if(h.colbits != 8) {
			throw new js__$Boot_HaxeError("Unsupported color mode");
		}
		var width = h.width;
		var stride = (alpha ? 2 : 1) * width + 1;
		if(data.length < h.height * stride) {
			throw new js__$Boot_HaxeError("Not enough data");
		}
		var rinc = alpha ? 2 : 1;
		var _g13 = 0;
		var _g5 = h.height;
		while(_g13 < _g5) {
			var y = _g13++;
			var f = data.b[r++];
			switch(f) {
			case 0:
				var _g31 = 0;
				var _g21 = width;
				while(_g31 < _g21) {
					var x = _g31++;
					var v = data.b[r];
					r += rinc;
					grey.b[w++] = v & 255;
				}
				break;
			case 1:
				var cv = 0;
				var _g32 = 0;
				var _g22 = width;
				while(_g32 < _g22) {
					var x1 = _g32++;
					cv += data.b[r];
					r += rinc;
					grey.b[w++] = cv & 255;
				}
				break;
			case 2:
				var stride1 = y == 0 ? 0 : width;
				var _g33 = 0;
				var _g23 = width;
				while(_g33 < _g23) {
					var x2 = _g33++;
					var v1 = data.b[r] + grey.b[w - stride1];
					r += rinc;
					grey.b[w++] = v1 & 255;
				}
				break;
			case 3:
				var cv1 = 0;
				var stride2 = y == 0 ? 0 : width;
				var _g34 = 0;
				var _g24 = width;
				while(_g34 < _g24) {
					var x3 = _g34++;
					cv1 = data.b[r] + (cv1 + grey.b[w - stride2] >> 1) & 255;
					r += rinc;
					grey.b[w++] = cv1 & 255;
				}
				break;
			case 4:
				var stride3 = width;
				var cv2 = 0;
				var _g35 = 0;
				var _g25 = width;
				while(_g35 < _g25) {
					var x4 = _g35++;
					var b3 = y == 0 ? 0 : grey.b[w - stride3];
					var c1 = x4 == 0 || y == 0 ? 0 : grey.b[w - stride3 - 1];
					var k = cv2 + b3 - c1;
					var pa = k - cv2;
					if(pa < 0) {
						pa = -pa;
					}
					var pb = k - b3;
					if(pb < 0) {
						pb = -pb;
					}
					var pc = k - c1;
					if(pc < 0) {
						pc = -pc;
					}
					cv2 = (pa <= pb && pa <= pc ? cv2 : pb <= pc ? b3 : c1) + data.b[r] & 255;
					r += rinc;
					grey.b[w++] = cv2 & 255;
				}
				break;
			default:
				throw new js__$Boot_HaxeError("Invalid filter " + f);
			}
		}
	} else {
		throw new js__$Boot_HaxeError("Unsupported color mode");
	}
	return grey;
};
format_png_Tools.extract32 = function(d,bytes,flipY) {
	var h = format_png_Tools.getHeader(d);
	var bgra = bytes == null ? new haxe_io_Bytes(new ArrayBuffer(h.width * h.height * 4)) : bytes;
	var data = null;
	var fullData = null;
	var _g_head = d.h;
	while(_g_head != null) {
		var val = _g_head.item;
		_g_head = _g_head.next;
		var c = val;
		if(c[1] == 2) {
			var b = c[2];
			if(fullData != null) {
				var b1 = fullData.b;
				var b2 = b.b;
				var _g1 = 0;
				var _g = b.length;
				while(_g1 < _g) {
					var i = _g1++;
					fullData.b.push(b2[i]);
				}
			} else if(data == null) {
				data = b;
			} else {
				fullData = new haxe_io_BytesBuffer();
				var b11 = fullData.b;
				var b21 = data.b;
				var _g11 = 0;
				var _g2 = data.length;
				while(_g11 < _g2) {
					var i1 = _g11++;
					fullData.b.push(b21[i1]);
				}
				var b12 = fullData.b;
				var b22 = b.b;
				var _g12 = 0;
				var _g3 = b.length;
				while(_g12 < _g3) {
					var i2 = _g12++;
					fullData.b.push(b22[i2]);
				}
				data = null;
			}
		}
	}
	if(fullData != null) {
		data = fullData.getBytes();
	}
	if(data == null) {
		throw new js__$Boot_HaxeError("Data not found");
	}
	data = format_tools_Inflate.run(data);
	var r = 0;
	var w = 0;
	var lineDelta = 0;
	if(flipY) {
		lineDelta = -h.width * 8;
		w = (h.height - 1) * (h.width * 4);
	}
	var flipY1 = flipY ? -1 : 1;
	var _g4 = h.color;
	switch(_g4[1]) {
	case 0:
		var alpha = _g4[2];
		if(h.colbits != 8) {
			throw new js__$Boot_HaxeError("Unsupported color mode");
		}
		var width = h.width;
		var stride = (alpha ? 2 : 1) * width + 1;
		if(data.length < h.height * stride) {
			throw new js__$Boot_HaxeError("Not enough data");
		}
		var alphvaIdx = -1;
		if(!alpha) {
			var _g_head1 = d.h;
			while(_g_head1 != null) {
				var val1 = _g_head1.item;
				_g_head1 = _g_head1.next;
				var t = val1;
				if(t[1] == 4) {
					if(t[2] == "tRNS") {
						var data1 = t[3];
						if(data1.length >= 2) {
							alphvaIdx = data1.b[1];
						}
						break;
					}
				}
			}
		}
		var _g13 = 0;
		var _g5 = h.height;
		while(_g13 < _g5) {
			var y = _g13++;
			var f = data.b[r++];
			switch(f) {
			case 0:
				if(alpha) {
					var _g31 = 0;
					var _g21 = width;
					while(_g31 < _g21) {
						var x = _g31++;
						var v = data.b[r++];
						bgra.b[w++] = v & 255;
						bgra.b[w++] = v & 255;
						bgra.b[w++] = v & 255;
						bgra.b[w++] = data.b[r++] & 255;
					}
				} else {
					var _g32 = 0;
					var _g22 = width;
					while(_g32 < _g22) {
						var x1 = _g32++;
						var v1 = data.b[r++];
						bgra.b[w++] = v1 & 255;
						bgra.b[w++] = v1 & 255;
						bgra.b[w++] = v1 & 255;
						bgra.b[w++] = (v1 == alphvaIdx ? 0 : 255) & 255;
					}
				}
				break;
			case 1:
				var cv = 0;
				var ca = 0;
				if(alpha) {
					var _g33 = 0;
					var _g23 = width;
					while(_g33 < _g23) {
						var x2 = _g33++;
						cv += data.b[r++];
						bgra.b[w++] = cv & 255;
						bgra.b[w++] = cv & 255;
						bgra.b[w++] = cv & 255;
						ca += data.b[r++];
						bgra.b[w++] = ca & 255;
					}
				} else {
					var _g34 = 0;
					var _g24 = width;
					while(_g34 < _g24) {
						var x3 = _g34++;
						cv += data.b[r++];
						bgra.b[w++] = cv & 255;
						bgra.b[w++] = cv & 255;
						bgra.b[w++] = cv & 255;
						bgra.b[w++] = (cv == alphvaIdx ? 0 : 255) & 255;
					}
				}
				break;
			case 2:
				var stride1 = y == 0 ? 0 : width * 4 * flipY1;
				if(alpha) {
					var _g35 = 0;
					var _g25 = width;
					while(_g35 < _g25) {
						var x4 = _g35++;
						var v2 = data.b[r++] + bgra.b[w - stride1];
						bgra.b[w++] = v2 & 255;
						bgra.b[w++] = v2 & 255;
						bgra.b[w++] = v2 & 255;
						bgra.b[w++] = data.b[r++] + bgra.b[w - stride1] & 255;
					}
				} else {
					var _g36 = 0;
					var _g26 = width;
					while(_g36 < _g26) {
						var x5 = _g36++;
						var v3 = data.b[r++] + bgra.b[w - stride1];
						bgra.b[w++] = v3 & 255;
						bgra.b[w++] = v3 & 255;
						bgra.b[w++] = v3 & 255;
						bgra.b[w++] = (v3 == alphvaIdx ? 0 : 255) & 255;
					}
				}
				break;
			case 3:
				var cv1 = 0;
				var ca1 = 0;
				var stride2 = y == 0 ? 0 : width * 4 * flipY1;
				if(alpha) {
					var _g37 = 0;
					var _g27 = width;
					while(_g37 < _g27) {
						var x6 = _g37++;
						cv1 = data.b[r++] + (cv1 + bgra.b[w - stride2] >> 1) & 255;
						bgra.b[w++] = cv1 & 255;
						bgra.b[w++] = cv1 & 255;
						bgra.b[w++] = cv1 & 255;
						ca1 = data.b[r++] + (ca1 + bgra.b[w - stride2] >> 1) & 255;
						bgra.b[w++] = ca1 & 255;
					}
				} else {
					var _g38 = 0;
					var _g28 = width;
					while(_g38 < _g28) {
						var x7 = _g38++;
						cv1 = data.b[r++] + (cv1 + bgra.b[w - stride2] >> 1) & 255;
						bgra.b[w++] = cv1 & 255;
						bgra.b[w++] = cv1 & 255;
						bgra.b[w++] = cv1 & 255;
						bgra.b[w++] = (cv1 == alphvaIdx ? 0 : 255) & 255;
					}
				}
				break;
			case 4:
				var stride3 = width * 4 * flipY1;
				var cv2 = 0;
				var ca2 = 0;
				if(alpha) {
					var _g39 = 0;
					var _g29 = width;
					while(_g39 < _g29) {
						var x8 = _g39++;
						var b3 = y == 0 ? 0 : bgra.b[w - stride3];
						var c1 = x8 == 0 || y == 0 ? 0 : bgra.b[w - stride3 - 4];
						var k = cv2 + b3 - c1;
						var pa = k - cv2;
						if(pa < 0) {
							pa = -pa;
						}
						var pb = k - b3;
						if(pb < 0) {
							pb = -pb;
						}
						var pc = k - c1;
						if(pc < 0) {
							pc = -pc;
						}
						cv2 = (pa <= pb && pa <= pc ? cv2 : pb <= pc ? b3 : c1) + data.b[r++] & 255;
						bgra.b[w++] = cv2 & 255;
						bgra.b[w++] = cv2 & 255;
						bgra.b[w++] = cv2 & 255;
						var b4 = y == 0 ? 0 : bgra.b[w - stride3];
						var c2 = x8 == 0 || y == 0 ? 0 : bgra.b[w - stride3 - 4];
						var k1 = ca2 + b4 - c2;
						var pa1 = k1 - ca2;
						if(pa1 < 0) {
							pa1 = -pa1;
						}
						var pb1 = k1 - b4;
						if(pb1 < 0) {
							pb1 = -pb1;
						}
						var pc1 = k1 - c2;
						if(pc1 < 0) {
							pc1 = -pc1;
						}
						ca2 = (pa1 <= pb1 && pa1 <= pc1 ? ca2 : pb1 <= pc1 ? b4 : c2) + data.b[r++] & 255;
						bgra.b[w++] = ca2 & 255;
					}
				} else {
					var _g310 = 0;
					var _g210 = width;
					while(_g310 < _g210) {
						var x9 = _g310++;
						var b5 = y == 0 ? 0 : bgra.b[w - stride3];
						var c3 = x9 == 0 || y == 0 ? 0 : bgra.b[w - stride3 - 4];
						var k2 = cv2 + b5 - c3;
						var pa2 = k2 - cv2;
						if(pa2 < 0) {
							pa2 = -pa2;
						}
						var pb2 = k2 - b5;
						if(pb2 < 0) {
							pb2 = -pb2;
						}
						var pc2 = k2 - c3;
						if(pc2 < 0) {
							pc2 = -pc2;
						}
						cv2 = (pa2 <= pb2 && pa2 <= pc2 ? cv2 : pb2 <= pc2 ? b5 : c3) + data.b[r++] & 255;
						bgra.b[w++] = cv2 & 255;
						bgra.b[w++] = cv2 & 255;
						bgra.b[w++] = cv2 & 255;
						bgra.b[w++] = (cv2 == alphvaIdx ? 0 : 255) & 255;
					}
				}
				break;
			default:
				throw new js__$Boot_HaxeError("Invalid filter " + f);
			}
			w += lineDelta;
		}
		break;
	case 1:
		var alpha1 = _g4[2];
		if(h.colbits != 8) {
			throw new js__$Boot_HaxeError("Unsupported color mode");
		}
		var width1 = h.width;
		var stride4 = (alpha1 ? 4 : 3) * width1 + 1;
		if(data.length < h.height * stride4) {
			throw new js__$Boot_HaxeError("Not enough data");
		}
		var alphaRed = -1;
		var alphaGreen = -1;
		var alphaBlue = -1;
		if(!alpha1) {
			var _g_head2 = d.h;
			while(_g_head2 != null) {
				var val2 = _g_head2.item;
				_g_head2 = _g_head2.next;
				var t1 = val2;
				if(t1[1] == 4) {
					if(t1[2] == "tRNS") {
						var data2 = t1[3];
						if(data2.length >= 6) {
							alphaRed = data2.b[1];
							alphaGreen = data2.b[3];
							alphaBlue = data2.b[5];
						}
						break;
					}
				}
			}
		}
		var cr = 0;
		var cg = 0;
		var cb = 0;
		var ca3 = 0;
		var _g14 = 0;
		var _g6 = h.height;
		while(_g14 < _g6) {
			var y1 = _g14++;
			var f1 = data.b[r++];
			switch(f1) {
			case 0:
				if(alpha1) {
					var _g311 = 0;
					var _g211 = width1;
					while(_g311 < _g211) {
						var x10 = _g311++;
						bgra.b[w++] = data.b[r + 2] & 255;
						bgra.b[w++] = data.b[r + 1] & 255;
						bgra.b[w++] = data.b[r] & 255;
						bgra.b[w++] = data.b[r + 3] & 255;
						r += 4;
					}
				} else {
					var _g312 = 0;
					var _g212 = width1;
					while(_g312 < _g212) {
						var x11 = _g312++;
						cb = data.b[r + 2];
						bgra.b[w++] = cb & 255;
						cg = data.b[r + 1];
						bgra.b[w++] = cg & 255;
						cr = data.b[r];
						bgra.b[w++] = cr & 255;
						bgra.b[w++] = (cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255) & 255;
						r += 3;
					}
				}
				break;
			case 1:
				ca3 = 0;
				cb = ca3;
				cg = cb;
				cr = cg;
				if(alpha1) {
					var _g313 = 0;
					var _g213 = width1;
					while(_g313 < _g213) {
						var x12 = _g313++;
						cb += data.b[r + 2];
						bgra.b[w++] = cb & 255;
						cg += data.b[r + 1];
						bgra.b[w++] = cg & 255;
						cr += data.b[r];
						bgra.b[w++] = cr & 255;
						ca3 += data.b[r + 3];
						bgra.b[w++] = ca3 & 255;
						r += 4;
					}
				} else {
					var _g314 = 0;
					var _g214 = width1;
					while(_g314 < _g214) {
						var x13 = _g314++;
						cb += data.b[r + 2];
						bgra.b[w++] = cb & 255;
						cg += data.b[r + 1];
						bgra.b[w++] = cg & 255;
						cr += data.b[r];
						bgra.b[w++] = cr & 255;
						bgra.b[w++] = (cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255) & 255;
						r += 3;
					}
				}
				break;
			case 2:
				var stride5 = y1 == 0 ? 0 : width1 * 4 * flipY1;
				if(alpha1) {
					var _g315 = 0;
					var _g215 = width1;
					while(_g315 < _g215) {
						var x14 = _g315++;
						bgra.b[w] = data.b[r + 2] + bgra.b[w - stride5] & 255;
						++w;
						bgra.b[w] = data.b[r + 1] + bgra.b[w - stride5] & 255;
						++w;
						bgra.b[w] = data.b[r] + bgra.b[w - stride5] & 255;
						++w;
						bgra.b[w] = data.b[r + 3] + bgra.b[w - stride5] & 255;
						++w;
						r += 4;
					}
				} else {
					var _g316 = 0;
					var _g216 = width1;
					while(_g316 < _g216) {
						var x15 = _g316++;
						cb = data.b[r + 2] + bgra.b[w - stride5];
						bgra.b[w] = cb & 255;
						++w;
						cg = data.b[r + 1] + bgra.b[w - stride5];
						bgra.b[w] = cg & 255;
						++w;
						cr = data.b[r] + bgra.b[w - stride5];
						bgra.b[w] = cr & 255;
						++w;
						bgra.b[w++] = (cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255) & 255;
						r += 3;
					}
				}
				break;
			case 3:
				ca3 = 0;
				cb = ca3;
				cg = cb;
				cr = cg;
				var stride6 = y1 == 0 ? 0 : width1 * 4 * flipY1;
				if(alpha1) {
					var _g317 = 0;
					var _g217 = width1;
					while(_g317 < _g217) {
						var x16 = _g317++;
						cb = data.b[r + 2] + (cb + bgra.b[w - stride6] >> 1) & 255;
						bgra.b[w++] = cb & 255;
						cg = data.b[r + 1] + (cg + bgra.b[w - stride6] >> 1) & 255;
						bgra.b[w++] = cg & 255;
						cr = data.b[r] + (cr + bgra.b[w - stride6] >> 1) & 255;
						bgra.b[w++] = cr & 255;
						ca3 = data.b[r + 3] + (ca3 + bgra.b[w - stride6] >> 1) & 255;
						bgra.b[w++] = ca3 & 255;
						r += 4;
					}
				} else {
					var _g318 = 0;
					var _g218 = width1;
					while(_g318 < _g218) {
						var x17 = _g318++;
						cb = data.b[r + 2] + (cb + bgra.b[w - stride6] >> 1) & 255;
						bgra.b[w++] = cb & 255;
						cg = data.b[r + 1] + (cg + bgra.b[w - stride6] >> 1) & 255;
						bgra.b[w++] = cg & 255;
						cr = data.b[r] + (cr + bgra.b[w - stride6] >> 1) & 255;
						bgra.b[w++] = cr & 255;
						bgra.b[w++] = (cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255) & 255;
						r += 3;
					}
				}
				break;
			case 4:
				var stride7 = width1 * 4 * flipY1;
				ca3 = 0;
				cb = ca3;
				cg = cb;
				cr = cg;
				if(alpha1) {
					var _g319 = 0;
					var _g219 = width1;
					while(_g319 < _g219) {
						var x18 = _g319++;
						var b6 = y1 == 0 ? 0 : bgra.b[w - stride7];
						var c4 = x18 == 0 || y1 == 0 ? 0 : bgra.b[w - stride7 - 4];
						var k3 = cb + b6 - c4;
						var pa3 = k3 - cb;
						if(pa3 < 0) {
							pa3 = -pa3;
						}
						var pb3 = k3 - b6;
						if(pb3 < 0) {
							pb3 = -pb3;
						}
						var pc3 = k3 - c4;
						if(pc3 < 0) {
							pc3 = -pc3;
						}
						cb = (pa3 <= pb3 && pa3 <= pc3 ? cb : pb3 <= pc3 ? b6 : c4) + data.b[r + 2] & 255;
						bgra.b[w++] = cb & 255;
						var b7 = y1 == 0 ? 0 : bgra.b[w - stride7];
						var c5 = x18 == 0 || y1 == 0 ? 0 : bgra.b[w - stride7 - 4];
						var k4 = cg + b7 - c5;
						var pa4 = k4 - cg;
						if(pa4 < 0) {
							pa4 = -pa4;
						}
						var pb4 = k4 - b7;
						if(pb4 < 0) {
							pb4 = -pb4;
						}
						var pc4 = k4 - c5;
						if(pc4 < 0) {
							pc4 = -pc4;
						}
						cg = (pa4 <= pb4 && pa4 <= pc4 ? cg : pb4 <= pc4 ? b7 : c5) + data.b[r + 1] & 255;
						bgra.b[w++] = cg & 255;
						var b8 = y1 == 0 ? 0 : bgra.b[w - stride7];
						var c6 = x18 == 0 || y1 == 0 ? 0 : bgra.b[w - stride7 - 4];
						var k5 = cr + b8 - c6;
						var pa5 = k5 - cr;
						if(pa5 < 0) {
							pa5 = -pa5;
						}
						var pb5 = k5 - b8;
						if(pb5 < 0) {
							pb5 = -pb5;
						}
						var pc5 = k5 - c6;
						if(pc5 < 0) {
							pc5 = -pc5;
						}
						cr = (pa5 <= pb5 && pa5 <= pc5 ? cr : pb5 <= pc5 ? b8 : c6) + data.b[r] & 255;
						bgra.b[w++] = cr & 255;
						var b9 = y1 == 0 ? 0 : bgra.b[w - stride7];
						var c7 = x18 == 0 || y1 == 0 ? 0 : bgra.b[w - stride7 - 4];
						var k6 = ca3 + b9 - c7;
						var pa6 = k6 - ca3;
						if(pa6 < 0) {
							pa6 = -pa6;
						}
						var pb6 = k6 - b9;
						if(pb6 < 0) {
							pb6 = -pb6;
						}
						var pc6 = k6 - c7;
						if(pc6 < 0) {
							pc6 = -pc6;
						}
						ca3 = (pa6 <= pb6 && pa6 <= pc6 ? ca3 : pb6 <= pc6 ? b9 : c7) + data.b[r + 3] & 255;
						bgra.b[w++] = ca3 & 255;
						r += 4;
					}
				} else {
					var _g320 = 0;
					var _g220 = width1;
					while(_g320 < _g220) {
						var x19 = _g320++;
						var b10 = y1 == 0 ? 0 : bgra.b[w - stride7];
						var c8 = x19 == 0 || y1 == 0 ? 0 : bgra.b[w - stride7 - 4];
						var k7 = cb + b10 - c8;
						var pa7 = k7 - cb;
						if(pa7 < 0) {
							pa7 = -pa7;
						}
						var pb7 = k7 - b10;
						if(pb7 < 0) {
							pb7 = -pb7;
						}
						var pc7 = k7 - c8;
						if(pc7 < 0) {
							pc7 = -pc7;
						}
						cb = (pa7 <= pb7 && pa7 <= pc7 ? cb : pb7 <= pc7 ? b10 : c8) + data.b[r + 2] & 255;
						bgra.b[w++] = cb & 255;
						var b13 = y1 == 0 ? 0 : bgra.b[w - stride7];
						var c9 = x19 == 0 || y1 == 0 ? 0 : bgra.b[w - stride7 - 4];
						var k8 = cg + b13 - c9;
						var pa8 = k8 - cg;
						if(pa8 < 0) {
							pa8 = -pa8;
						}
						var pb8 = k8 - b13;
						if(pb8 < 0) {
							pb8 = -pb8;
						}
						var pc8 = k8 - c9;
						if(pc8 < 0) {
							pc8 = -pc8;
						}
						cg = (pa8 <= pb8 && pa8 <= pc8 ? cg : pb8 <= pc8 ? b13 : c9) + data.b[r + 1] & 255;
						bgra.b[w++] = cg & 255;
						var b14 = y1 == 0 ? 0 : bgra.b[w - stride7];
						var c10 = x19 == 0 || y1 == 0 ? 0 : bgra.b[w - stride7 - 4];
						var k9 = cr + b14 - c10;
						var pa9 = k9 - cr;
						if(pa9 < 0) {
							pa9 = -pa9;
						}
						var pb9 = k9 - b14;
						if(pb9 < 0) {
							pb9 = -pb9;
						}
						var pc9 = k9 - c10;
						if(pc9 < 0) {
							pc9 = -pc9;
						}
						cr = (pa9 <= pb9 && pa9 <= pc9 ? cr : pb9 <= pc9 ? b14 : c10) + data.b[r] & 255;
						bgra.b[w++] = cr & 255;
						bgra.b[w++] = (cr == alphaRed && cg == alphaGreen && cb == alphaBlue ? 0 : 255) & 255;
						r += 3;
					}
				}
				break;
			default:
				throw new js__$Boot_HaxeError("Invalid filter " + f1);
			}
			w += lineDelta;
		}
		break;
	case 2:
		var pal = format_png_Tools.getPalette(d);
		if(pal == null) {
			throw new js__$Boot_HaxeError("PNG Palette is missing");
		}
		var alpha2 = null;
		var _g_head3 = d.h;
		while(_g_head3 != null) {
			var val3 = _g_head3.item;
			_g_head3 = _g_head3.next;
			var t2 = val3;
			if(t2[1] == 4) {
				if(t2[2] == "tRNS") {
					var data3 = t2[3];
					alpha2 = data3;
					break;
				}
			}
		}
		if(alpha2 != null && alpha2.length < 1 << h.colbits) {
			var alpha21 = new haxe_io_Bytes(new ArrayBuffer(1 << h.colbits));
			alpha21.blit(0,alpha2,0,alpha2.length);
			alpha21.fill(alpha2.length,alpha21.length - alpha2.length,255);
			alpha2 = alpha21;
		}
		var width2 = h.width;
		var stride8 = Math.ceil(width2 * h.colbits / 8) + 1;
		if(data.length < h.height * stride8) {
			throw new js__$Boot_HaxeError("Not enough data");
		}
		var rline = h.width * h.colbits >> 3;
		var _g15 = 0;
		var _g7 = h.height;
		while(_g15 < _g7) {
			var y2 = _g15++;
			var f2 = data.b[r++];
			if(f2 == 0) {
				r += rline;
				continue;
			}
			switch(f2) {
			case 1:
				var c11 = 0;
				var _g321 = 0;
				var _g221 = width2;
				while(_g321 < _g221) {
					var x20 = _g321++;
					var v4 = data.b[r];
					c11 += v4;
					data.b[r++] = c11 & 255 & 255;
				}
				break;
			case 2:
				var stride9 = y2 == 0 ? 0 : rline + 1;
				var _g322 = 0;
				var _g222 = width2;
				while(_g322 < _g222) {
					var x21 = _g322++;
					var v5 = data.b[r];
					data.b[r] = v5 + data.b[r - stride9] & 255;
					++r;
				}
				break;
			case 3:
				var c12 = 0;
				var stride10 = y2 == 0 ? 0 : rline + 1;
				var _g323 = 0;
				var _g223 = width2;
				while(_g323 < _g223) {
					var x22 = _g323++;
					var v6 = data.b[r];
					c12 = v6 + (c12 + data.b[r - stride10] >> 1) & 255;
					data.b[r++] = c12 & 255;
				}
				break;
			case 4:
				var stride11 = rline + 1;
				var c13 = 0;
				var _g324 = 0;
				var _g224 = width2;
				while(_g324 < _g224) {
					var x23 = _g324++;
					var v7 = data.b[r];
					var b15 = y2 == 0 ? 0 : data.b[r - stride11];
					var c14 = x23 == 0 || y2 == 0 ? 0 : data.b[r - stride11 - 1];
					var k10 = c13 + b15 - c14;
					var pa10 = k10 - c13;
					if(pa10 < 0) {
						pa10 = -pa10;
					}
					var pb10 = k10 - b15;
					if(pb10 < 0) {
						pb10 = -pb10;
					}
					var pc10 = k10 - c14;
					if(pc10 < 0) {
						pc10 = -pc10;
					}
					c13 = (pa10 <= pb10 && pa10 <= pc10 ? c13 : pb10 <= pc10 ? b15 : c14) + v7 & 255;
					data.b[r++] = c13 & 255;
				}
				break;
			default:
				throw new js__$Boot_HaxeError("Invalid filter " + f2);
			}
		}
		var r1 = 0;
		if(h.colbits == 8) {
			var _g16 = 0;
			var _g8 = h.height;
			while(_g16 < _g8) {
				var y3 = _g16++;
				++r1;
				var _g325 = 0;
				var _g225 = h.width;
				while(_g325 < _g225) {
					var x24 = _g325++;
					var c15 = data.b[r1++];
					bgra.b[w++] = pal.b[c15 * 3 + 2] & 255;
					bgra.b[w++] = pal.b[c15 * 3 + 1] & 255;
					bgra.b[w++] = pal.b[c15 * 3] & 255;
					bgra.b[w++] = (alpha2 != null ? alpha2.b[c15] : 255) & 255;
				}
				w += lineDelta;
			}
		} else if(h.colbits < 8) {
			var req = h.colbits;
			var mask = (1 << req) - 1;
			var _g17 = 0;
			var _g9 = h.height;
			while(_g17 < _g9) {
				var y4 = _g17++;
				++r1;
				var bits = 0;
				var nbits = 0;
				var v8;
				var _g326 = 0;
				var _g226 = h.width;
				while(_g326 < _g226) {
					var x25 = _g326++;
					if(nbits < req) {
						bits = bits << 8 | data.b[r1++];
						nbits += 8;
					}
					var c16 = bits >>> nbits - req & mask;
					nbits -= req;
					bgra.b[w++] = pal.b[c16 * 3 + 2] & 255;
					bgra.b[w++] = pal.b[c16 * 3 + 1] & 255;
					bgra.b[w++] = pal.b[c16 * 3] & 255;
					bgra.b[w++] = (alpha2 != null ? alpha2.b[c16] : 255) & 255;
				}
				w += lineDelta;
			}
		} else {
			throw new js__$Boot_HaxeError(h.colbits + " indexed bits per pixel not supported");
		}
		break;
	}
	return bgra;
};
format_png_Tools.buildGrey = function(width,height,data,level) {
	if(level == null) {
		level = 9;
	}
	var rgb = new haxe_io_Bytes(new ArrayBuffer(width * height + height));
	var w = 0;
	var r = 0;
	var _g1 = 0;
	var _g = height;
	while(_g1 < _g) {
		var y = _g1++;
		rgb.b[w++] = 0;
		var _g3 = 0;
		var _g2 = width;
		while(_g3 < _g2) {
			var x = _g3++;
			rgb.b[w++] = data.b[r++] & 255;
		}
	}
	var l = new List();
	l.add(format_png_Chunk.CHeader({ width : width, height : height, colbits : 8, color : format_png_Color.ColGrey(false), interlaced : false}));
	l.add(format_png_Chunk.CData(format_tools_Deflate.run(rgb,level)));
	l.add(format_png_Chunk.CEnd);
	return l;
};
format_png_Tools.buildRGB = function(width,height,data,level) {
	if(level == null) {
		level = 9;
	}
	var rgb = new haxe_io_Bytes(new ArrayBuffer(width * height * 3 + height));
	var w = 0;
	var r = 0;
	var _g1 = 0;
	var _g = height;
	while(_g1 < _g) {
		var y = _g1++;
		rgb.b[w++] = 0;
		var _g3 = 0;
		var _g2 = width;
		while(_g3 < _g2) {
			var x = _g3++;
			rgb.b[w++] = data.b[r + 2] & 255;
			rgb.b[w++] = data.b[r + 1] & 255;
			rgb.b[w++] = data.b[r] & 255;
			r += 3;
		}
	}
	var l = new List();
	l.add(format_png_Chunk.CHeader({ width : width, height : height, colbits : 8, color : format_png_Color.ColTrue(false), interlaced : false}));
	l.add(format_png_Chunk.CData(format_tools_Deflate.run(rgb,level)));
	l.add(format_png_Chunk.CEnd);
	return l;
};
format_png_Tools.build32ARGB = function(width,height,data,level) {
	if(level == null) {
		level = 9;
	}
	var rgba = new haxe_io_Bytes(new ArrayBuffer(width * height * 4 + height));
	var w = 0;
	var r = 0;
	var _g1 = 0;
	var _g = height;
	while(_g1 < _g) {
		var y = _g1++;
		rgba.b[w++] = 0;
		var _g3 = 0;
		var _g2 = width;
		while(_g3 < _g2) {
			var x = _g3++;
			rgba.b[w++] = data.b[r + 1] & 255;
			rgba.b[w++] = data.b[r + 2] & 255;
			rgba.b[w++] = data.b[r + 3] & 255;
			rgba.b[w++] = data.b[r] & 255;
			r += 4;
		}
	}
	var l = new List();
	l.add(format_png_Chunk.CHeader({ width : width, height : height, colbits : 8, color : format_png_Color.ColTrue(true), interlaced : false}));
	l.add(format_png_Chunk.CData(format_tools_Deflate.run(rgba,level)));
	l.add(format_png_Chunk.CEnd);
	return l;
};
format_png_Tools.build32BGRA = function(width,height,data,level) {
	if(level == null) {
		level = 9;
	}
	var rgba = new haxe_io_Bytes(new ArrayBuffer(width * height * 4 + height));
	var w = 0;
	var r = 0;
	var _g1 = 0;
	var _g = height;
	while(_g1 < _g) {
		var y = _g1++;
		rgba.b[w++] = 0;
		var _g3 = 0;
		var _g2 = width;
		while(_g3 < _g2) {
			var x = _g3++;
			rgba.b[w++] = data.b[r + 2] & 255;
			rgba.b[w++] = data.b[r + 1] & 255;
			rgba.b[w++] = data.b[r] & 255;
			rgba.b[w++] = data.b[r + 3] & 255;
			r += 4;
		}
	}
	var l = new List();
	l.add(format_png_Chunk.CHeader({ width : width, height : height, colbits : 8, color : format_png_Color.ColTrue(true), interlaced : false}));
	l.add(format_png_Chunk.CData(format_tools_Deflate.run(rgba,level)));
	l.add(format_png_Chunk.CEnd);
	return l;
};
var format_png_Writer = function(o) {
	this.o = o;
	o.set_bigEndian(true);
};
$hxClasses["format.png.Writer"] = format_png_Writer;
format_png_Writer.__name__ = ["format","png","Writer"];
format_png_Writer.prototype = {
	o: null
	,write: function(png) {
		var _g = 0;
		var _g1 = [137,80,78,71,13,10,26,10];
		while(_g < _g1.length) {
			var b = _g1[_g];
			++_g;
			this.o.writeByte(b);
		}
		var _g_head = png.h;
		while(_g_head != null) {
			var val = _g_head.item;
			_g_head = _g_head.next;
			var c = val;
			switch(c[1]) {
			case 0:
				this.writeChunk("IEND",new haxe_io_Bytes(new ArrayBuffer(0)));
				break;
			case 1:
				var h = c[2];
				var b1 = new haxe_io_BytesOutput();
				b1.set_bigEndian(true);
				b1.writeInt32(h.width);
				b1.writeInt32(h.height);
				b1.writeByte(h.colbits);
				var _g2 = h.color;
				var tmp;
				switch(_g2[1]) {
				case 0:
					var alpha = _g2[2];
					if(alpha) {
						tmp = 4;
					} else {
						tmp = 0;
					}
					break;
				case 1:
					var alpha1 = _g2[2];
					if(alpha1) {
						tmp = 6;
					} else {
						tmp = 2;
					}
					break;
				case 2:
					tmp = 3;
					break;
				}
				b1.writeByte(tmp);
				b1.writeByte(0);
				b1.writeByte(0);
				b1.writeByte(h.interlaced ? 1 : 0);
				this.writeChunk("IHDR",b1.getBytes());
				break;
			case 2:
				var d = c[2];
				this.writeChunk("IDAT",d);
				break;
			case 3:
				var b2 = c[2];
				this.writeChunk("PLTE",b2);
				break;
			case 4:
				var data = c[3];
				var id = c[2];
				this.writeChunk(id,data);
				break;
			}
		}
	}
	,writeChunk: function(id,data) {
		this.o.writeInt32(data.length);
		this.o.writeString(id);
		this.o.write(data);
		var crc = new haxe_crypto_Crc32();
		var _g = 0;
		while(_g < 4) {
			var i = _g++;
			crc["byte"](HxOverrides.cca(id,i));
		}
		crc.update(data,0,data.length);
		this.o.writeInt32(crc.get());
	}
	,__class__: format_png_Writer
};
var format_swf__$SWFData_SWFData_$Impl_$ = {};
$hxClasses["format.swf._SWFData.SWFData_Impl_"] = format_swf__$SWFData_SWFData_$Impl_$;
format_swf__$SWFData_SWFData_$Impl_$.__name__ = ["format","swf","_SWFData","SWFData_Impl_"];
format_swf__$SWFData_SWFData_$Impl_$.__properties__ = {set_length:"set_length",get_length:"get_length"};
format_swf__$SWFData_SWFData_$Impl_$._new = function() {
	var this1 = new format_swf_utils_BitArray();
	this1.__endian = 1;
	return this1;
};
format_swf__$SWFData_SWFData_$Impl_$.readSI8 = function(this1) {
	this1.resetBitsPending();
	return this1.readByte();
};
format_swf__$SWFData_SWFData_$Impl_$.writeSI8 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeByte(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readSI16 = function(this1) {
	this1.resetBitsPending();
	return this1.readShort();
};
format_swf__$SWFData_SWFData_$Impl_$.writeSI16 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeShort(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readSI32 = function(this1) {
	this1.resetBitsPending();
	return this1.readInt();
};
format_swf__$SWFData_SWFData_$Impl_$.writeSI32 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeInt(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readUI8 = function(this1) {
	this1.resetBitsPending();
	return this1.readUnsignedByte();
};
format_swf__$SWFData_SWFData_$Impl_$.writeUI8 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeByte(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readUI16 = function(this1) {
	this1.resetBitsPending();
	return this1.readUnsignedShort();
};
format_swf__$SWFData_SWFData_$Impl_$.writeUI16 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeShort(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readUI24 = function(this1) {
	this1.resetBitsPending();
	var loWord = this1.readUnsignedShort();
	var hiByte = this1.readUnsignedByte();
	return hiByte << 16 | loWord;
};
format_swf__$SWFData_SWFData_$Impl_$.writeUI24 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeShort(value & 65535);
	this1.writeByte(value >> 16);
};
format_swf__$SWFData_SWFData_$Impl_$.readUI32 = function(this1) {
	this1.resetBitsPending();
	return this1.readUnsignedInt();
};
format_swf__$SWFData_SWFData_$Impl_$.writeUI32 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeUnsignedInt(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readFIXED = function(this1) {
	this1.resetBitsPending();
	return this1.readInt() / 65536;
};
format_swf__$SWFData_SWFData_$Impl_$.writeFIXED = function(this1,value) {
	this1.resetBitsPending();
	this1.writeInt(value * 65536 | 0);
};
format_swf__$SWFData_SWFData_$Impl_$.readFIXED8 = function(this1) {
	this1.resetBitsPending();
	return this1.readShort() / 256;
};
format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8 = function(this1,value) {
	this1.resetBitsPending();
	this1.writeShort(value * 256 | 0);
};
format_swf__$SWFData_SWFData_$Impl_$.readFLOAT = function(this1) {
	this1.resetBitsPending();
	return this1.readFloat();
};
format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT = function(this1,value) {
	this1.resetBitsPending();
	this1.writeFloat(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readDOUBLE = function(this1) {
	this1.resetBitsPending();
	return this1.readDouble();
};
format_swf__$SWFData_SWFData_$Impl_$.writeDOUBLE = function(this1,value) {
	this1.resetBitsPending();
	this1.writeDouble(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readFLOAT16 = function(this1) {
	this1.resetBitsPending();
	var word = this1.readUnsignedShort();
	var sign = (word & 32768) != 0 ? -1 : 1;
	var exponent = word >> 10 & 31;
	var significand = word & 1023;
	if(exponent == 0) {
		if(significand == 0) {
			return 0;
		} else {
			return sign * Math.pow(2,-14.) * (significand / 1024);
		}
	}
	if(exponent == 31) {
		if(significand == 0) {
			if(sign < 0) {
				return -Infinity;
			} else {
				return Infinity;
			}
		} else {
			return NaN;
		}
	}
	return sign * Math.pow(2,exponent - 15) * (1 + significand / 1024);
};
format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT16 = function(this1,value) {
	format_swf_utils_HalfPrecisionWriter.write(value,this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readEncodedU32 = function(this1) {
	this1.resetBitsPending();
	var result = this1.readUnsignedByte();
	if((result & 128) > 0) {
		result = result & 127 | this1.readUnsignedByte() << 7;
		if((result & 16384) > 0) {
			result = result & 16383 | this1.readUnsignedByte() << 14;
			if((result & 2097152) > 0) {
				result = result & 2097151 | this1.readUnsignedByte() << 21;
				if((result & 268435456) > 0) {
					result = result & 268435455 | this1.readUnsignedByte() << 28;
				}
			}
		}
	}
	return result;
};
format_swf__$SWFData_SWFData_$Impl_$.writeEncodedU32 = function(this1,value) {
	var v = value & 127;
	if((value >>= 7) == 0) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(this1,v);
		return;
	}
	format_swf__$SWFData_SWFData_$Impl_$.writeUI8(this1,v | 128);
};
format_swf__$SWFData_SWFData_$Impl_$.readUB = function(this1,bits) {
	return this1.readBits(bits);
};
format_swf__$SWFData_SWFData_$Impl_$.writeUB = function(this1,bits,value) {
	this1.writeBits(bits,value);
};
format_swf__$SWFData_SWFData_$Impl_$.readSB = function(this1,bits) {
	var shift = 32 - bits;
	return (this1.readBits(bits) << shift | 0) >> shift;
};
format_swf__$SWFData_SWFData_$Impl_$.writeSB = function(this1,bits,value) {
	this1.writeBits(bits,value);
};
format_swf__$SWFData_SWFData_$Impl_$.readFB = function(this1,bits) {
	return format_swf__$SWFData_SWFData_$Impl_$.readSB(this1,bits) / 65536;
};
format_swf__$SWFData_SWFData_$Impl_$.writeFB = function(this1,bits,value) {
	format_swf__$SWFData_SWFData_$Impl_$.writeSB(this1,bits,value * 65536 | 0);
};
format_swf__$SWFData_SWFData_$Impl_$.readSTRING = function(this1) {
	var index = this1.position;
	while(this1.b[index++] > 0) {
	}
	this1.resetBitsPending();
	return this1.readUTFBytes(index - this1.position);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSTRING = function(this1,value) {
	if(value != null && value.length > 0) {
		this1.writeUTFBytes(value);
	}
	this1.writeByte(0);
};
format_swf__$SWFData_SWFData_$Impl_$.readLANGCODE = function(this1) {
	this1.resetBitsPending();
	return this1.readUnsignedByte();
};
format_swf__$SWFData_SWFData_$Impl_$.writeLANGCODE = function(this1,value) {
	this1.resetBitsPending();
	this1.writeByte(value);
};
format_swf__$SWFData_SWFData_$Impl_$.readRGB = function(this1) {
	this1.resetBitsPending();
	var r = this1.readUnsignedByte();
	var g = this1.readUnsignedByte();
	var b = this1.readUnsignedByte();
	return -16777216 | r << 16 | g << 8 | b;
};
format_swf__$SWFData_SWFData_$Impl_$.writeRGB = function(this1,value) {
	this1.resetBitsPending();
	this1.writeByte(value >> 16 & 255);
	this1.writeByte(value >> 8 & 255);
	this1.writeByte(value & 255);
};
format_swf__$SWFData_SWFData_$Impl_$.readRGBA = function(this1) {
	this1.resetBitsPending();
	var rgb = format_swf__$SWFData_SWFData_$Impl_$.readRGB(this1) & 16777215;
	var a = this1.readUnsignedByte();
	return a << 24 | rgb;
};
format_swf__$SWFData_SWFData_$Impl_$.writeRGBA = function(this1,value) {
	this1.resetBitsPending();
	format_swf__$SWFData_SWFData_$Impl_$.writeRGB(this1,value);
	this1.writeByte(value >> 24 & 255);
};
format_swf__$SWFData_SWFData_$Impl_$.readARGB = function(this1) {
	this1.resetBitsPending();
	var a = this1.readUnsignedByte();
	var rgb = format_swf__$SWFData_SWFData_$Impl_$.readRGB(this1) & 16777215;
	return a << 24 | rgb;
};
format_swf__$SWFData_SWFData_$Impl_$.writeARGB = function(this1,value) {
	this1.resetBitsPending();
	this1.writeByte(value >> 24 & 255);
	format_swf__$SWFData_SWFData_$Impl_$.writeRGB(this1,value);
};
format_swf__$SWFData_SWFData_$Impl_$.readRECT = function(this1) {
	return new format_swf_data_SWFRectangle(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeRECT = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readMATRIX = function(this1) {
	return new format_swf_data_SWFMatrix(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX = function(this1,value) {
	this1.resetBitsPending();
	var hasScale = value.scaleX != 1 || value.scaleY != 1;
	var hasRotate = value.rotateSkew0 != 0 || value.rotateSkew1 != 0;
	this1.writeBits(1,hasScale ? 1 : 0);
	if(hasScale) {
		var scaleBits;
		if(value.scaleX == 0 && value.scaleY == 0) {
			scaleBits = 1;
		} else {
			scaleBits = this1.calculateMaxBits(true,[value.scaleX * 65536 | 0,value.scaleY * 65536 | 0]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(this1,5,scaleBits);
		format_swf__$SWFData_SWFData_$Impl_$.writeFB(this1,scaleBits,value.scaleX);
		format_swf__$SWFData_SWFData_$Impl_$.writeFB(this1,scaleBits,value.scaleY);
	}
	this1.writeBits(1,hasRotate ? 1 : 0);
	if(hasRotate) {
		var rotateBits = this1.calculateMaxBits(true,[value.rotateSkew0 * 65536 | 0,value.rotateSkew1 * 65536 | 0]);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(this1,5,rotateBits);
		format_swf__$SWFData_SWFData_$Impl_$.writeFB(this1,rotateBits,value.rotateSkew0);
		format_swf__$SWFData_SWFData_$Impl_$.writeFB(this1,rotateBits,value.rotateSkew1);
	}
	var translateBits = this1.calculateMaxBits(true,[value.translateX,value.translateY]);
	format_swf__$SWFData_SWFData_$Impl_$.writeUB(this1,5,translateBits);
	format_swf__$SWFData_SWFData_$Impl_$.writeSB(this1,translateBits,value.translateX);
	format_swf__$SWFData_SWFData_$Impl_$.writeSB(this1,translateBits,value.translateY);
};
format_swf__$SWFData_SWFData_$Impl_$.readCXFORM = function(this1) {
	return new format_swf_data_SWFColorTransform(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeCXFORM = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readCXFORMWITHALPHA = function(this1) {
	return new format_swf_data_SWFColorTransformWithAlpha(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeCXFORMWITHALPHA = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readSHAPE = function(this1,unitDivisor) {
	if(unitDivisor == null) {
		unitDivisor = 20;
	}
	return new format_swf_data_SWFShape(this1,1,unitDivisor);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSHAPE = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readSHAPEWITHSTYLE = function(this1,level,unitDivisor) {
	if(unitDivisor == null) {
		unitDivisor = 20;
	}
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFShapeWithStyle(this1,level,unitDivisor);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSHAPEWITHSTYLE = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readSTRAIGHTEDGERECORD = function(this1,numBits) {
	return new format_swf_data_SWFShapeRecordStraightEdge(this1,numBits);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSTRAIGHTEDGERECORD = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readCURVEDEDGERECORD = function(this1,numBits) {
	return new format_swf_data_SWFShapeRecordCurvedEdge(this1,numBits);
};
format_swf__$SWFData_SWFData_$Impl_$.writeCURVEDEDGERECORD = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readSTYLECHANGERECORD = function(this1,states,fillBits,lineBits,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFShapeRecordStyleChange(this1,states,fillBits,lineBits,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSTYLECHANGERECORD = function(this1,value,fillBits,lineBits,level) {
	if(level == null) {
		level = 1;
	}
	value.numFillBits = fillBits;
	value.numLineBits = lineBits;
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readFILLSTYLE = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFFillStyle(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeFILLSTYLE = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readLINESTYLE = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFLineStyle(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeLINESTYLE = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readLINESTYLE2 = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFLineStyle2(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeLINESTYLE2 = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readBUTTONRECORD = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	if(format_swf__$SWFData_SWFData_$Impl_$.readUI8(this1) == 0) {
		return null;
	} else {
		this1.position--;
		return new format_swf_data_SWFButtonRecord(this1,level);
	}
};
format_swf__$SWFData_SWFData_$Impl_$.writeBUTTONRECORD = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readBUTTONCONDACTION = function(this1) {
	return new format_swf_data_SWFButtonCondAction(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeBUTTONCONDACTION = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readFILTER = function(this1) {
	var filterId = format_swf__$SWFData_SWFData_$Impl_$.readUI8(this1);
	var filter = format_swf_factories_SWFFilterFactory.create(filterId);
	filter.parse(this1);
	return filter;
};
format_swf__$SWFData_SWFData_$Impl_$.writeFILTER = function(this1,value) {
	format_swf__$SWFData_SWFData_$Impl_$.writeUI8(this1,value.id);
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readTEXTRECORD = function(this1,glyphBits,advanceBits,previousRecord,level) {
	if(level == null) {
		level = 1;
	}
	if(format_swf__$SWFData_SWFData_$Impl_$.readUI8(this1) == 0) {
		return null;
	} else {
		this1.position--;
		return new format_swf_data_SWFTextRecord(this1,glyphBits,advanceBits,previousRecord,level);
	}
};
format_swf__$SWFData_SWFData_$Impl_$.writeTEXTRECORD = function(this1,value,glyphBits,advanceBits,previousRecord,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,glyphBits,advanceBits,previousRecord,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readGLYPHENTRY = function(this1,glyphBits,advanceBits) {
	return new format_swf_data_SWFGlyphEntry(this1,glyphBits,advanceBits);
};
format_swf__$SWFData_SWFData_$Impl_$.writeGLYPHENTRY = function(this1,value,glyphBits,advanceBits) {
	value.publish(this1,glyphBits,advanceBits);
};
format_swf__$SWFData_SWFData_$Impl_$.readZONERECORD = function(this1) {
	return new format_swf_data_SWFZoneRecord(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeZONERECORD = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readZONEDATA = function(this1) {
	return new format_swf_data_SWFZoneData(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeZONEDATA = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readKERNINGRECORD = function(this1,wideCodes) {
	return new format_swf_data_SWFKerningRecord(this1,wideCodes);
};
format_swf__$SWFData_SWFData_$Impl_$.writeKERNINGRECORD = function(this1,value,wideCodes) {
	value.publish(this1,wideCodes);
};
format_swf__$SWFData_SWFData_$Impl_$.readGRADIENT = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFGradient(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeGRADIENT = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readFOCALGRADIENT = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFFocalGradient(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeFOCALGRADIENT = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readGRADIENTRECORD = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFGradientRecord(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeGRADIENTRECORD = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readMORPHFILLSTYLE = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFMorphFillStyle(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeMORPHFILLSTYLE = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readMORPHLINESTYLE = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFMorphLineStyle(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeMORPHLINESTYLE = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readMORPHLINESTYLE2 = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFMorphLineStyle2(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeMORPHLINESTYLE2 = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readMORPHGRADIENT = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFMorphGradient(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeMORPHGRADIENT = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readMORPHFOCALGRADIENT = function(this1,level) {
	if(level == null) {
		level = 1;
	}
	return new format_swf_data_SWFMorphFocalGradient(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.writeMORPHFOCALGRADIENT = function(this1,value,level) {
	if(level == null) {
		level = 1;
	}
	value.publish(this1,level);
};
format_swf__$SWFData_SWFData_$Impl_$.readMORPHGRADIENTRECORD = function(this1) {
	return new format_swf_data_SWFMorphGradientRecord(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeMORPHGRADIENTRECORD = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readACTIONRECORD = function(this1) {
	var pos = this1.position;
	var action = null;
	var actionCode = format_swf__$SWFData_SWFData_$Impl_$.readUI8(this1);
	if(actionCode != 0) {
		var actionLength = actionCode >= 128 ? format_swf__$SWFData_SWFData_$Impl_$.readUI16(this1) : 0;
		action = format_swf_factories_SWFActionFactory.create(actionCode,actionLength,pos);
		action.parse(this1);
	}
	return action;
};
format_swf__$SWFData_SWFData_$Impl_$.writeACTIONRECORD = function(this1,action) {
	action.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readREGISTERPARAM = function(this1) {
	return new format_swf_data_SWFRegisterParam(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeREGISTERPARAM = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readSYMBOL = function(this1) {
	return new format_swf_data_SWFSymbol(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSYMBOL = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readSOUNDINFO = function(this1) {
	return new format_swf_data_SWFSoundInfo(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDINFO = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readSOUNDENVELOPE = function(this1) {
	return new format_swf_data_SWFSoundEnvelope(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDENVELOPE = function(this1,value) {
	value.publish(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.readCLIPACTIONS = function(this1,version) {
	return new format_swf_data_SWFClipActions(this1,version);
};
format_swf__$SWFData_SWFData_$Impl_$.writeCLIPACTIONS = function(this1,value,version) {
	value.publish(this1,version);
};
format_swf__$SWFData_SWFData_$Impl_$.readCLIPACTIONRECORD = function(this1,version) {
	var pos = this1.position;
	var flags = version >= 6 ? format_swf__$SWFData_SWFData_$Impl_$.readUI32(this1) : format_swf__$SWFData_SWFData_$Impl_$.readUI16(this1);
	if(flags == 0) {
		return null;
	} else {
		this1.position = pos;
		return new format_swf_data_SWFClipActionRecord(this1,version);
	}
};
format_swf__$SWFData_SWFData_$Impl_$.writeCLIPACTIONRECORD = function(this1,value,version) {
	value.publish(this1,version);
};
format_swf__$SWFData_SWFData_$Impl_$.readCLIPEVENTFLAGS = function(this1,version) {
	return new format_swf_data_SWFClipEventFlags(this1,version);
};
format_swf__$SWFData_SWFData_$Impl_$.writeCLIPEVENTFLAGS = function(this1,value,version) {
	value.publish(this1,version);
};
format_swf__$SWFData_SWFData_$Impl_$.readTagHeader = function(this1) {
	var pos = this1.position;
	var tagTypeAndLength = format_swf__$SWFData_SWFData_$Impl_$.readUI16(this1);
	var tagLength = tagTypeAndLength & 63;
	if(tagLength == 63) {
		tagLength = format_swf__$SWFData_SWFData_$Impl_$.readSI32(this1);
	}
	return new format_swf_data_SWFRecordHeader(tagTypeAndLength >> 6,tagLength,this1.position - pos);
};
format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader = function(this1,type,length,forceLongHeader) {
	if(forceLongHeader == null) {
		forceLongHeader = false;
	}
	if(length < 63 && !forceLongHeader) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(this1,type << 6 | length);
	} else {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(this1,type << 6 | 63);
		format_swf__$SWFData_SWFData_$Impl_$.writeSI32(this1,length);
	}
};
format_swf__$SWFData_SWFData_$Impl_$.swfUncompress = function(this1,compressionMethod,uncompressedLength) {
	if(uncompressedLength == null) {
		uncompressedLength = 0;
	}
	var pos = this1.position;
	var this2 = new openfl_utils_ByteArrayData(0);
	var ba = this2;
	if(compressionMethod == 2) {
		this1.readBytes(ba);
		ba.position = 0;
		ba.uncompress();
	} else if(compressionMethod == 1) {
		var _g = 0;
		while(_g < 5) {
			var i = _g++;
			ba.writeByte(this1.b[i + 12]);
		}
		ba.__endian = 1;
		ba.writeUnsignedInt(uncompressedLength - 8);
		ba.writeUnsignedInt(0);
		this1.position = 17;
		this1.readBytes(ba,13);
		ba.position = 0;
		ba.uncompress(compressionMethod);
	} else {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Unknown compression method: " + openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.toString(compressionMethod)));
	}
	format_swf__$SWFData_SWFData_$Impl_$.set_length(this1,this1.position = pos);
	this1.writeBytes(ba);
	this1.position = pos;
};
format_swf__$SWFData_SWFData_$Impl_$.swfCompress = function(this1,compressionMethod) {
	var pos = this1.position;
	var this2 = new openfl_utils_ByteArrayData(0);
	var ba = this2;
	if(compressionMethod == 2) {
		this1.readBytes(ba);
		ba.position = 0;
		ba.compress();
	} else if(compressionMethod == 1) {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Can't publish LZMA compressed SWFs"));
	} else {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Unknown compression method: " + openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.toString(compressionMethod)));
	}
	format_swf__$SWFData_SWFData_$Impl_$.set_length(this1,this1.position = pos);
	this1.writeBytes(ba);
};
format_swf__$SWFData_SWFData_$Impl_$.readRawTag = function(this1) {
	return new format_swf_data_SWFRawTag(this1);
};
format_swf__$SWFData_SWFData_$Impl_$.skipBytes = function(this1,length) {
	this1.position += length;
};
format_swf__$SWFData_SWFData_$Impl_$.dump = function(ba,length,offset) {
	if(offset == null) {
		offset = 0;
	}
	var posOrig = ba.position;
	var pos = ba.position = Math.min(Math.max(posOrig + offset,0),openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(ba) - length) | 0;
	var str = "[Dump] total length: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(ba) + ", original position: " + posOrig;
	var _g1 = 0;
	var _g = length;
	while(_g1 < _g) {
		var i = _g1++;
		var b = StringTools.hex(ba.readUnsignedByte());
		if(b.length == 1) {
			b = "0" + b;
		}
		if(i % 16 == 0) {
			var addr = StringTools.hex(pos + i);
			addr = HxOverrides.substr("00000000",0,8 - addr.length) + addr;
			str += "\r" + addr + ": ";
		}
		b += " ";
		str += b;
	}
	ba.position = posOrig;
	haxe_Log.trace(str,{ fileName : "SWFData.hx", lineNumber : 959, className : "format.swf._SWFData.SWFData_Impl_", methodName : "dump"});
};
format_swf__$SWFData_SWFData_$Impl_$.get_length = function(this1) {
	return this1.__length;
};
format_swf__$SWFData_SWFData_$Impl_$.set_length = function(this1,value) {
	if(value > 0) {
		this1.__resize(value);
	}
	this1.__length = value;
	return value;
};
var format_swf_events_SWFEventDispatcher = function() {
	this.dispatcher = new openfl_events_EventDispatcher(this);
};
$hxClasses["format.swf.events.SWFEventDispatcher"] = format_swf_events_SWFEventDispatcher;
format_swf_events_SWFEventDispatcher.__name__ = ["format","swf","events","SWFEventDispatcher"];
format_swf_events_SWFEventDispatcher.__interfaces__ = [openfl_events_IEventDispatcher];
format_swf_events_SWFEventDispatcher.prototype = {
	dispatcher: null
	,addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
		if(useWeakReference == null) {
			useWeakReference = false;
		}
		if(priority == null) {
			priority = 0;
		}
		if(useCapture == null) {
			useCapture = false;
		}
		this.dispatcher.addEventListener(type,listener,useCapture,priority,useWeakReference);
	}
	,removeEventListener: function(type,listener,useCapture) {
		if(useCapture == null) {
			useCapture = false;
		}
		this.dispatcher.removeEventListener(type,listener,useCapture);
	}
	,dispatchEvent: function(event) {
		return this.dispatcher.dispatchEvent(event);
	}
	,hasEventListener: function(type) {
		return this.dispatcher.hasEventListener(type);
	}
	,willTrigger: function(type) {
		return this.dispatcher.willTrigger(type);
	}
	,__class__: format_swf_events_SWFEventDispatcher
};
var format_swf_SWFTimelineContainer = function() {
	this._tmpTagIterator = 0;
	format_swf_events_SWFEventDispatcher.call(this);
	if(format_swf_SWFTimelineContainer.scalingGrids == null) {
		format_swf_SWFTimelineContainer.scalingGrids = new haxe_ds_IntMap();
	}
	this.backgroundColor = 16777215;
	this.tags = [];
	this.tagsRaw = [];
	this.dictionary = new haxe_ds_IntMap();
	this.scenes = [];
	this.frames = [];
	this.layers = [];
	this.tagFactory = new format_swf_factories_SWFTagFactory();
	this.rootTimelineContainer = this;
	this.enterFrameProvider = new openfl_display_Sprite();
};
$hxClasses["format.swf.SWFTimelineContainer"] = format_swf_SWFTimelineContainer;
format_swf_SWFTimelineContainer.__name__ = ["format","swf","SWFTimelineContainer"];
format_swf_SWFTimelineContainer.__super__ = format_swf_events_SWFEventDispatcher;
format_swf_SWFTimelineContainer.prototype = $extend(format_swf_events_SWFEventDispatcher.prototype,{
	tags: null
	,tagsRaw: null
	,dictionary: null
	,scenes: null
	,frames: null
	,layers: null
	,soundStream: null
	,frameLabels: null
	,frameIndexes: null
	,currentFrame: null
	,hasSoundStream: null
	,enterFrameProvider: null
	,eof: null
	,_tmpData: null
	,_tmpVersion: null
	,_tmpTagIterator: null
	,tagFactory: null
	,rootTimelineContainer: null
	,backgroundColor: null
	,jpegTablesTag: null
	,abcTag: null
	,abcData: null
	,pcode: null
	,abcClasses: null
	,getCharacter: function(characterId) {
		var tagIndex = this.rootTimelineContainer.dictionary.h[characterId];
		if(tagIndex >= 0 && tagIndex < this.rootTimelineContainer.tags.length) {
			return this.rootTimelineContainer.tags[tagIndex];
		}
		return null;
	}
	,getScalingGrid: function(characterId) {
		if(format_swf_SWFTimelineContainer.scalingGrids.h.hasOwnProperty(characterId)) {
			return this.rootTimelineContainer.tags[format_swf_SWFTimelineContainer.scalingGrids.h[characterId]];
		}
		return null;
	}
	,parseTags: function(data,version) {
		var tag;
		this.parseTagsInit(data,version);
		while(true) {
			var tmp;
			tag = this.parseTag(data);
			if(tag != null) {
				tmp = tag.type != 0;
			} else {
				tmp = false;
			}
			if(!tmp) {
				break;
			}
		}
		this.parseTagsFinalize();
	}
	,parseTagsAsync: function(data,version) {
		this.parseTagsInit(data,version);
		this.enterFrameProvider.addEventListener("enterFrame",$bind(this,this.parseTagsAsyncHandler));
	}
	,parseTagsAsyncHandler: function(event) {
		this.enterFrameProvider.removeEventListener("enterFrame",$bind(this,this.parseTagsAsyncHandler));
		if(this.dispatchEvent(new format_swf_events_SWFProgressEvent("progress",this._tmpData.position,format_swf__$SWFData_SWFData_$Impl_$.get_length(this._tmpData),false,true))) {
			this.parseTagsAsyncInternal();
		}
	}
	,parseTagsAsyncInternal: function() {
		var tag;
		var time = openfl_Lib.getTimer();
		while(true) {
			var tmp;
			tag = this.parseTag(this._tmpData,true);
			if(tag != null) {
				tmp = tag.type != 0;
			} else {
				tmp = false;
			}
			if(!tmp) {
				break;
			}
			if(openfl_Lib.getTimer() - time > format_swf_SWFTimelineContainer.TIMEOUT) {
				this.enterFrameProvider.addEventListener("enterFrame",$bind(this,this.parseTagsAsyncHandler));
				return;
			}
		}
		this.parseTagsFinalize();
		if(this.eof) {
			this.dispatchEvent(new format_swf_events_SWFErrorEvent("error","eof"));
		} else {
			this.dispatchEvent(new format_swf_events_SWFProgressEvent("progress",this._tmpData.position,format_swf__$SWFData_SWFData_$Impl_$.get_length(this._tmpData)));
			this.dispatchEvent(new format_swf_events_SWFProgressEvent("complete",this._tmpData.position,format_swf__$SWFData_SWFData_$Impl_$.get_length(this._tmpData)));
		}
	}
	,parseTagsInit: function(data,version) {
		this.tags = [];
		this.frames = [];
		this.layers = [];
		this.dictionary = new haxe_ds_IntMap();
		this.currentFrame = new format_swf_timeline_Frame();
		this.frameLabels = new haxe_ds_IntMap();
		this.frameIndexes = new haxe_ds_StringMap();
		this.hasSoundStream = false;
		this._tmpData = data;
		this._tmpVersion = version;
	}
	,parseTag: function(data,async) {
		if(async == null) {
			async = false;
		}
		var pos = data.position;
		this.eof = pos >= format_swf__$SWFData_SWFData_$Impl_$.get_length(data);
		if(this.eof) {
			haxe_Log.trace("WARNING: end of file encountered, no end tag.",{ fileName : "SWFTimelineContainer.hx", lineNumber : 198, className : "format.swf.SWFTimelineContainer", methodName : "parseTag"});
			return null;
		}
		var tagRaw = format_swf__$SWFData_SWFData_$Impl_$.readRawTag(data);
		var tagHeader = tagRaw.header;
		var tag = this.tagFactory.create(tagHeader.type);
		try {
			if(js_Boot.__instanceof(tag,format_swf_SWFTimelineContainer)) {
				var timelineContainer = tag;
				timelineContainer.tagFactory = this.tagFactory;
				timelineContainer.rootTimelineContainer = this;
			}
			tag.parse(data,tagHeader.contentLength,this._tmpVersion,async);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if( js_Boot.__instanceof(e,openfl_errors_Error) ) {
				haxe_Log.trace("WARNING: parse error: " + e.message + ", Tag: " + tag.name + ", Index: " + this.tags.length,{ fileName : "SWFTimelineContainer.hx", lineNumber : 220, className : "format.swf.SWFTimelineContainer", methodName : "parseTag"});
				throw new js__$Boot_HaxeError(e);
			} else throw(e);
		}
		this.tags.push(tag);
		this.tagsRaw.push(tagRaw);
		this.processTag(tag);
		var position = pos + tagHeader.get_tagLength();
		if(data.position != position) {
			var index = this.tags.length - 1;
			var excessBytes = data.position - (pos + tagHeader.get_tagLength());
			var eventType = excessBytes < 0 ? "underflow" : "overflow";
			var eventData = { pos : pos, bytes : excessBytes < 0 ? -excessBytes : excessBytes};
			if(this.rootTimelineContainer == this) {
				haxe_Log.trace("WARNING: excess bytes: " + excessBytes + ", " + "Tag: " + tag.name + ", " + "Index: " + index,{ fileName : "SWFTimelineContainer.hx", lineNumber : 240, className : "format.swf.SWFTimelineContainer", methodName : "parseTag"});
			} else {
				eventData.indexRoot = this.rootTimelineContainer.tags.length;
				haxe_Log.trace("WARNING: excess bytes: " + excessBytes + ", " + "Tag: " + tag.name + ", " + "Index: " + index + ", " + "IndexRoot: " + Std.string(eventData.indexRoot),{ fileName : "SWFTimelineContainer.hx", lineNumber : 246, className : "format.swf.SWFTimelineContainer", methodName : "parseTag"});
			}
			var event = new format_swf_events_SWFWarningEvent(eventType,index,eventData,false,true);
			var cancelled = !this.dispatchEvent(event);
			if(cancelled) {
				tag = null;
			}
			data.position = pos + tagHeader.get_tagLength();
		}
		return tag;
	}
	,parseTagsFinalize: function() {
		if(this.soundStream != null && openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.soundStream.data) == 0) {
			this.soundStream = null;
		}
		if(format_swf_SWFTimelineContainer.AUTOBUILD_LAYERS) {
			this.buildLayers();
		}
	}
	,publishTags: function(data,version) {
		var tag;
		var tagRaw;
		var _g1 = 0;
		var _g = this.tags.length;
		while(_g1 < _g) {
			var i = _g1++;
			tag = this.tags[i];
			if(i < this.tagsRaw.length) {
				tagRaw = this.tagsRaw[i];
			} else {
				tagRaw = null;
			}
			this.publishTag(data,tag,tagRaw,version);
		}
	}
	,publishTagsAsync: function(data,version) {
		this._tmpData = data;
		this._tmpVersion = version;
		this._tmpTagIterator = 0;
		this.enterFrameProvider.addEventListener("enterFrame",$bind(this,this.publishTagsAsyncHandler));
	}
	,publishTagsAsyncHandler: function(event) {
		this.enterFrameProvider.removeEventListener("enterFrame",$bind(this,this.publishTagsAsyncHandler));
		if(this.dispatchEvent(new format_swf_events_SWFProgressEvent("progress",this._tmpTagIterator,this.tags.length))) {
			this.publishTagsAsyncInternal();
		}
	}
	,publishTagsAsyncInternal: function() {
		var tag;
		var tagRaw;
		var time = openfl_Lib.getTimer();
		while(true) {
			if(this._tmpTagIterator < this.tags.length) {
				tag = this.tags[this._tmpTagIterator];
			} else {
				tag = null;
			}
			if(this._tmpTagIterator < this.tagsRaw.length) {
				tagRaw = this.tagsRaw[this._tmpTagIterator];
			} else {
				tagRaw = null;
			}
			this.publishTag(this._tmpData,tag,tagRaw,this._tmpVersion);
			this._tmpTagIterator++;
			if(openfl_Lib.getTimer() - time > format_swf_SWFTimelineContainer.TIMEOUT) {
				this.enterFrameProvider.addEventListener("enterFrame",$bind(this,this.publishTagsAsyncHandler));
				return;
			}
			if(!(tag.type != 0)) {
				break;
			}
		}
		this.dispatchEvent(new format_swf_events_SWFProgressEvent("progress",this._tmpTagIterator,this.tags.length));
		this.dispatchEvent(new format_swf_events_SWFProgressEvent("complete",this._tmpTagIterator,this.tags.length));
	}
	,publishTag: function(data,tag,rawTag,version) {
		try {
			tag.publish(data,version);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if( js_Boot.__instanceof(e,openfl_errors_Error) ) {
				haxe_Log.trace("WARNING: publish error: " + e.message + " (tag: " + tag.name + ")",{ fileName : "SWFTimelineContainer.hx", lineNumber : 321, className : "format.swf.SWFTimelineContainer", methodName : "publishTag"});
				if(rawTag != null) {
					rawTag.publish(data);
				} else {
					haxe_Log.trace("FATAL: publish error: No raw tag fallback",{ fileName : "SWFTimelineContainer.hx", lineNumber : 325, className : "format.swf.SWFTimelineContainer", methodName : "publishTag"});
				}
			} else throw(e);
		}
	}
	,processTag: function(tag) {
		var currentTagIndex = this.tags.length - 1;
		if(js_Boot.__instanceof(tag,format_swf_tags_IDefinitionTag)) {
			this.processDefinitionTag(tag,currentTagIndex);
			return;
		} else if(js_Boot.__instanceof(tag,format_swf_tags_IDisplayListTag)) {
			this.processDisplayListTag(tag,currentTagIndex);
			return;
		}
		var _g = js_Boot.__cast(tag.type , Int);
		switch(_g) {
		case 8:
			this.processJPEGTablesTag(tag,currentTagIndex);
			break;
		case 9:
			this.processBackgroundColorTag(tag,currentTagIndex);
			break;
		case 18:case 19:case 45:
			if(format_swf_SWFTimelineContainer.EXTRACT_SOUND_STREAM) {
				this.processSoundStreamTag(tag,currentTagIndex);
			}
			break;
		case 78:
			this.processScalingGridTag(tag,currentTagIndex);
			break;
		case 82:
			this.processAS3Tag(tag,currentTagIndex);
			break;
		case 43:case 86:
			this.processFrameLabelTag(tag,currentTagIndex);
			break;
		}
	}
	,processDefinitionTag: function(tag,currentTagIndex) {
		if(tag.characterId > 0) {
			this.dictionary.h[tag.characterId] = currentTagIndex;
			this.currentFrame.characters.push(tag.characterId);
		}
	}
	,processDisplayListTag: function(tag,currentTagIndex) {
		var _g = js_Boot.__cast(tag.type , Int);
		switch(_g) {
		case 1:
			this.currentFrame.tagIndexEnd = currentTagIndex;
			if(this.currentFrame.label == null && this.frameLabels.exists(this.currentFrame.frameNumber)) {
				var tmp = this.frameLabels.get(this.currentFrame.frameNumber);
				this.currentFrame.label = tmp;
			}
			this.frames.push(this.currentFrame);
			this.currentFrame = this.currentFrame.clone();
			this.currentFrame.frameNumber = this.frames.length;
			this.currentFrame.tagIndexStart = currentTagIndex + 1;
			break;
		case 4:case 26:case 70:
			this.currentFrame.placeObject(currentTagIndex,tag);
			break;
		case 5:case 28:
			this.currentFrame.removeObject(tag);
			break;
		}
	}
	,processFrameLabelTag: function(tag,currentTagIndex) {
		var _g = js_Boot.__cast(tag.type , Int);
		switch(_g) {
		case 43:
			var tagFrameLabel = tag;
			this.currentFrame.label = tagFrameLabel.frameName;
			this.frameLabels.set(this.currentFrame.frameNumber,tagFrameLabel.frameName);
			this.frameIndexes.set(tagFrameLabel.frameName,this.currentFrame.frameNumber + 1);
			break;
		case 86:
			var tagSceneAndFrameLabelData = tag;
			var i;
			var _g1 = 0;
			var _g2 = tagSceneAndFrameLabelData.frameLabels.length;
			while(_g1 < _g2) {
				var i1 = _g1++;
				var frameLabel = tagSceneAndFrameLabelData.frameLabels[i1];
				this.frameLabels.set(frameLabel.frameNumber,frameLabel.name);
				this.frameIndexes.set(frameLabel.name,frameLabel.frameNumber + 1);
			}
			var _g11 = 0;
			var _g3 = tagSceneAndFrameLabelData.scenes.length;
			while(_g11 < _g3) {
				var i2 = _g11++;
				var scene = tagSceneAndFrameLabelData.scenes[i2];
				this.scenes.push(new format_swf_timeline_Scene(scene.offset,scene.name));
			}
			break;
		}
	}
	,processSoundStreamTag: function(tag,currentTagIndex) {
		var _g = js_Boot.__cast(tag.type , Int);
		switch(_g) {
		case 18:case 45:
			var tagSoundStreamHead = tag;
			this.soundStream = new format_swf_timeline_SoundStream();
			this.soundStream.compression = tagSoundStreamHead.streamSoundCompression;
			this.soundStream.rate = tagSoundStreamHead.streamSoundRate;
			this.soundStream.size = tagSoundStreamHead.streamSoundSize;
			this.soundStream.type = tagSoundStreamHead.streamSoundType;
			this.soundStream.numFrames = 0;
			this.soundStream.numSamples = 0;
			break;
		case 19:
			if(this.soundStream != null) {
				if(!this.hasSoundStream) {
					this.hasSoundStream = true;
					this.soundStream.startFrame = this.currentFrame.frameNumber;
				}
				var tagSoundStreamBlock = tag;
				var soundData = tagSoundStreamBlock.soundData;
				soundData.__endian = 1;
				soundData.position = 0;
				var _g1 = this.soundStream.compression;
				switch(_g1) {
				case 1:
					break;
				case 2:
					var numSamples = soundData.readUnsignedShort();
					var seekSamples = soundData.readShort();
					if(numSamples > 0) {
						this.soundStream.numSamples += numSamples;
						this.soundStream.data.writeBytes(soundData,4);
					}
					break;
				}
				this.soundStream.numFrames++;
			}
			break;
		}
	}
	,processBackgroundColorTag: function(tag,currentTagIndex) {
		this.backgroundColor = tag.color;
	}
	,processJPEGTablesTag: function(tag,currentTagIndex) {
		this.jpegTablesTag = tag;
	}
	,processScalingGridTag: function(tag,currentTagIndex) {
		format_swf_SWFTimelineContainer.scalingGrids.h[tag.characterId] = currentTagIndex;
	}
	,processAS3Tag: function(tag,currentTagIndex) {
		this.abcTag = tag;
		var bytes = tag.bytes;
		var input = new haxe_io_BytesInput(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes));
		var reader = new format_abc_Reader(input);
		this.abcData = reader.read();
		this.pcode = [];
		var _g = 0;
		var _g1 = this.abcData.functions;
		while(_g < _g1.length) {
			var fn = _g1[_g];
			++_g;
			this.pcode.push(format_abc_OpReader.decode(new haxe_io_BytesInput(fn.code)));
		}
	}
	,buildLayers: function() {
		var i;
		var depth;
		var depthInt;
		var depths = new haxe_ds_IntMap();
		var depthsAvailable = [];
		var _g1 = 0;
		var _g = this.frames.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			var frame = this.frames[i1];
			var depth1 = frame.objects.keys();
			while(depth1.hasNext()) {
				var depth2 = depth1.next();
				depthInt = depth2 | 0;
				var foundIndex = false;
				var _g2 = 0;
				while(_g2 < depthsAvailable.length) {
					var index = depthsAvailable[_g2];
					++_g2;
					if(index == depthInt) {
						foundIndex = true;
					}
					break;
				}
				if(foundIndex) {
					depths.h[depth2].push(frame.frameNumber);
				} else {
					depths.h[depth2] = [frame.frameNumber];
					depthsAvailable.push(depthInt);
				}
			}
		}
		depthsAvailable.sort($bind(this,this.sortNumeric));
		var _g11 = 0;
		var _g3 = depthsAvailable.length;
		while(_g11 < _g3) {
			var i2 = _g11++;
			var layer = new format_swf_timeline_Layer(depthsAvailable[i2],this.frames.length);
			var frameIndices = depths.h[depthsAvailable[i2]];
			var frameIndicesLen = frameIndices.length;
			if(frameIndicesLen > 0) {
				var curStripType = 0;
				var startFrameIndex = format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE | 0;
				var endFrameIndex = format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE | 0;
				var _g31 = 0;
				var _g21 = frameIndicesLen;
				while(_g31 < _g21) {
					var j = _g31++;
					var curFrameIndex = frameIndices[j];
					var curFrameObject = this.frames[curFrameIndex].objects.h[layer.depth];
					if(curFrameObject.isKeyframe) {
						layer.appendStrip(curStripType,startFrameIndex,endFrameIndex);
						startFrameIndex = curFrameIndex;
						if(js_Boot.__instanceof(this.getCharacter(curFrameObject.characterId),format_swf_tags_TagDefineMorphShape)) {
							curStripType = 4;
						} else {
							curStripType = 2;
						}
					} else if(curStripType == 2 && curFrameObject.lastModifiedAtIndex > 0) {
						curStripType = 3;
					}
					endFrameIndex = curFrameIndex;
				}
				layer.appendStrip(curStripType,startFrameIndex,endFrameIndex);
			}
			this.layers.push(layer);
		}
		var _g12 = 0;
		var _g4 = this.frames.length;
		while(_g12 < _g4) {
			var i3 = _g12++;
			var frameObjs = this.frames[i3].objects;
			var depth3 = frameObjs.keys();
			while(depth3.hasNext()) {
				var depth4 = depth3.next();
				var _g32 = 0;
				var _g22 = depthsAvailable.length;
				while(_g32 < _g22) {
					var j1 = _g32++;
					if(depth4 == depthsAvailable[j1]) {
						frameObjs.h[depth4].layer = j1;
					}
				}
			}
		}
	}
	,sortNumeric: function(a,b) {
		return a - b;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var i;
		var str = "";
		if(this.tags.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Tags:";
			var _g1 = 0;
			var _g = this.tags.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += "\n" + this.tags[i1].toString(indent + 4);
			}
		}
		if(this.scenes.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Scenes:";
			var _g11 = 0;
			var _g2 = this.scenes.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += "\n" + this.scenes[i2].toString(indent + 4);
			}
		}
		if(this.frames.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Frames:";
			var _g12 = 0;
			var _g3 = this.frames.length;
			while(_g12 < _g3) {
				var i3 = _g12++;
				str += "\n" + this.frames[i3].toString(indent + 4);
			}
		}
		if(this.layers.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Layers:";
			var _g13 = 0;
			var _g4 = this.layers.length;
			while(_g13 < _g4) {
				var i4 = _g13++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i4 + "] " + this.layers[i4].toString(indent + 4);
			}
		}
		return str;
	}
	,__class__: format_swf_SWFTimelineContainer
});
var format_swf_SWFRoot = function(ba) {
	format_swf_SWFTimelineContainer.call(this);
	this.bytes = format_swf__$SWFData_SWFData_$Impl_$._new();
	if(ba != null) {
		this.loadBytes(ba);
	} else {
		this.version = 10;
		this.fileLength = 0;
		this.fileLengthCompressed = 0;
		this.frameSize = new format_swf_data_SWFRectangle();
		this.frameRate = 50;
		this.frameCount = 1;
		this.compressed = true;
		this.compressionMethod = 2;
	}
	this.symbols = new haxe_ds_StringMap();
	var _g = 0;
	var _g1 = this.tags;
	while(_g < _g1.length) {
		var tag = _g1[_g];
		++_g;
		if(js_Boot.__instanceof(tag,format_swf_tags_TagSymbolClass)) {
			var _g2 = 0;
			var _g3 = (js_Boot.__cast(tag , format_swf_tags_TagSymbolClass)).symbols;
			while(_g2 < _g3.length) {
				var symbol = _g3[_g2];
				++_g2;
				var key = symbol.name;
				var value = symbol.tagId;
				var _this = this.symbols;
				if(__map_reserved[key] != null) {
					_this.setReserved(key,value);
				} else {
					_this.h[key] = value;
				}
			}
		}
	}
};
$hxClasses["format.swf.SWFRoot"] = format_swf_SWFRoot;
format_swf_SWFRoot.__name__ = ["format","swf","SWFRoot"];
format_swf_SWFRoot.__super__ = format_swf_SWFTimelineContainer;
format_swf_SWFRoot.prototype = $extend(format_swf_SWFTimelineContainer.prototype,{
	signature: null
	,version: null
	,fileLength: null
	,fileLengthCompressed: null
	,frameSize: null
	,frameRate: null
	,frameCount: null
	,compressed: null
	,compressionMethod: null
	,symbols: null
	,bytes: null
	,loadBytes: function(ba) {
		this.bytes = format_swf__$SWFData_SWFData_$Impl_$._new();
		ba.position = 0;
		ba.readBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(this.bytes));
		this.parse(this.bytes);
	}
	,loadBytesAsync: function(ba) {
		this.bytes = format_swf__$SWFData_SWFData_$Impl_$._new();
		ba.position = 0;
		ba.readBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(this.bytes));
		this.parseAsync(this.bytes);
	}
	,parse: function(data) {
		this.bytes = data;
		this.parseHeader();
		this.parseTags(data,this.version);
	}
	,parseAsync: function(data) {
		this.bytes = data;
		this.parseHeader();
		this.parseTagsAsync(data,this.version);
	}
	,publish: function(ba) {
		var data = format_swf__$SWFData_SWFData_$Impl_$._new();
		this.publishHeader(data);
		this.publishTags(data,this.version);
		this.publishFinalize(data);
		ba.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(data));
	}
	,publishAsync: function(ba) {
		var _gthis = this;
		var data = format_swf__$SWFData_SWFData_$Impl_$._new();
		this.publishHeader(data);
		this.publishTagsAsync(data,this.version);
		this.addEventListener("complete",function(event) {
			_gthis.removeEventListener("complete",_gthis);
			_gthis.publishFinalize(data);
			ba = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(format_swf__$SWFData_SWFData_$Impl_$._new());
			ba.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(data));
		},false);
	}
	,parseHeader: function() {
		this.signature = "";
		this.compressed = false;
		this.compressionMethod = 2;
		this.bytes.position = 0;
		var signatureByte = format_swf__$SWFData_SWFData_$Impl_$.readUI8(this.bytes);
		if(signatureByte == 67) {
			this.compressed = true;
		} else if(signatureByte == 90) {
			this.compressed = true;
			this.compressionMethod = 1;
		} else if(signatureByte != 70) {
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Not a SWF. First signature byte is 0x" + StringTools.hex(signatureByte) + " (expected: 0x43 or 0x5A or 0x46)"));
		}
		this.signature += String.fromCharCode(signatureByte);
		signatureByte = format_swf__$SWFData_SWFData_$Impl_$.readUI8(this.bytes);
		if(signatureByte != 87) {
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Not a SWF. Second signature byte is 0x" + StringTools.hex(signatureByte) + " (expected: 0x57)"));
		}
		this.signature += String.fromCharCode(signatureByte);
		signatureByte = format_swf__$SWFData_SWFData_$Impl_$.readUI8(this.bytes);
		if(signatureByte != 83) {
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Not a SWF. Third signature byte is 0x" + StringTools.hex(signatureByte) + " (expected: 0x53)"));
		}
		this.signature += String.fromCharCode(signatureByte);
		this.version = format_swf__$SWFData_SWFData_$Impl_$.readUI8(this.bytes);
		this.fileLength = format_swf__$SWFData_SWFData_$Impl_$.readUI32(this.bytes);
		this.fileLengthCompressed = format_swf__$SWFData_SWFData_$Impl_$.get_length(this.bytes);
		if(this.compressed) {
			format_swf__$SWFData_SWFData_$Impl_$.swfUncompress(this.bytes,this.compressionMethod,this.fileLength);
		}
		this.frameSize = format_swf__$SWFData_SWFData_$Impl_$.readRECT(this.bytes);
		this.frameRate = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(this.bytes);
		this.frameCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(this.bytes);
	}
	,publishHeader: function(data) {
		var firstHeaderByte = 70;
		if(this.compressed) {
			if(this.compressionMethod == 2) {
				firstHeaderByte = 67;
			} else if(this.compressionMethod == 1) {
				firstHeaderByte = 90;
			}
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,firstHeaderByte);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,87);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,83);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.version);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(data,this.frameSize);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.frameRate);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.frameCount);
	}
	,publishFinalize: function(data) {
		this.fileLength = this.fileLengthCompressed = format_swf__$SWFData_SWFData_$Impl_$.get_length(data);
		if(this.compressed) {
			this.compressionMethod = 2;
			data.position = 8;
			format_swf__$SWFData_SWFData_$Impl_$.swfCompress(data,this.compressionMethod);
			this.fileLengthCompressed = format_swf__$SWFData_SWFData_$Impl_$.get_length(data);
		}
		var endPos = data.position;
		data.position = 4;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,this.fileLength);
		data.position = 0;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var s = "[SWF]\n" + "  Header:\n" + "    Version: " + this.version + "\n" + "    Compression: ";
		if(this.compressed) {
			if(this.compressionMethod == 2) {
				s += "ZLIB";
			} else if(this.compressionMethod == 1) {
				s += "LZMA";
			} else {
				s += "Unknown";
			}
		} else {
			s += "None";
		}
		return s + "\n    FileLength: " + this.fileLength + "\n" + "    FileLengthCompressed: " + this.fileLengthCompressed + "\n" + "    FrameSize: " + this.frameSize.toStringSize() + "\n" + "    FrameRate: " + this.frameRate + "\n" + "    FrameCount: " + this.frameCount + format_swf_SWFTimelineContainer.prototype.toString.call(this,indent);
	}
	,__class__: format_swf_SWFRoot
});
var format_swf_data_SWFButtonCondAction = function(data) {
	this.actions = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFButtonCondAction"] = format_swf_data_SWFButtonCondAction;
format_swf_data_SWFButtonCondAction.__name__ = ["format","swf","data","SWFButtonCondAction"];
format_swf_data_SWFButtonCondAction.prototype = {
	condActionSize: null
	,condIdleToOverDown: null
	,condOutDownToIdle: null
	,condOutDownToOverDown: null
	,condOverDownToOutDown: null
	,condOverDownToOverUp: null
	,condOverUpToOverDown: null
	,condOverUpToIdle: null
	,condIdleToOverUp: null
	,condOverDownToIdle: null
	,condKeyPress: null
	,actions: null
	,parse: function(data) {
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data) << 8 | format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.condIdleToOverDown = (flags & 32768) != 0;
		this.condOutDownToIdle = (flags & 16384) != 0;
		this.condOutDownToOverDown = (flags & 8192) != 0;
		this.condOverDownToOutDown = (flags & 4096) != 0;
		this.condOverDownToOverUp = (flags & 2048) != 0;
		this.condOverUpToOverDown = (flags & 1024) != 0;
		this.condOverUpToIdle = (flags & 512) != 0;
		this.condIdleToOverUp = (flags & 256) != 0;
		this.condOverDownToIdle = (flags & 1) != 0;
		this.condKeyPress = (flags & 255) >> 1;
		var action;
		while(true) {
			action = format_swf__$SWFData_SWFData_$Impl_$.readACTIONRECORD(data);
			if(!(action != null)) {
				break;
			}
			this.actions.data.push(action);
		}
		format_swf_data_actions_Action.resolveOffsets(this.actions);
	}
	,publish: function(data) {
		var flags1 = 0;
		if(this.condIdleToOverDown) {
			flags1 |= 128;
		}
		if(this.condOutDownToIdle) {
			flags1 |= 64;
		}
		if(this.condOutDownToOverDown) {
			flags1 |= 32;
		}
		if(this.condOverDownToOutDown) {
			flags1 |= 16;
		}
		if(this.condOverDownToOverUp) {
			flags1 |= 8;
		}
		if(this.condOverUpToOverDown) {
			flags1 |= 4;
		}
		if(this.condOverUpToIdle) {
			flags1 |= 2;
		}
		if(this.condIdleToOverUp) {
			flags1 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags1);
		var flags2 = this.condKeyPress << 1;
		if(this.condOverDownToIdle) {
			flags2 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags2);
		var _g1 = 0;
		var _g = this.actions.data.get_length();
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeACTIONRECORD(data,this.actions.data.get(i));
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
	}
	,clone: function() {
		var condAction = new format_swf_data_SWFButtonCondAction();
		condAction.condActionSize = this.condActionSize;
		condAction.condIdleToOverDown = this.condIdleToOverDown;
		condAction.condOutDownToIdle = this.condOutDownToIdle;
		condAction.condOutDownToOverDown = this.condOutDownToOverDown;
		condAction.condOverDownToOutDown = this.condOverDownToOutDown;
		condAction.condOverDownToOverUp = this.condOverDownToOverUp;
		condAction.condOverUpToOverDown = this.condOverUpToOverDown;
		condAction.condOverUpToIdle = this.condOverUpToIdle;
		condAction.condIdleToOverUp = this.condIdleToOverUp;
		condAction.condOverDownToIdle = this.condOverDownToIdle;
		condAction.condKeyPress = this.condKeyPress;
		var _g1 = 0;
		var _g = this.actions.data.get_length();
		while(_g1 < _g) {
			var i = _g1++;
			var this1 = condAction.actions;
			var x = this.actions.data.get(i).clone();
			this1.data.push(x);
		}
		return condAction;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var a = [];
		if(this.condIdleToOverDown) {
			a.push("idleToOverDown");
		}
		if(this.condOutDownToIdle) {
			a.push("outDownToIdle");
		}
		if(this.condOutDownToOverDown) {
			a.push("outDownToOverDown");
		}
		if(this.condOverDownToOutDown) {
			a.push("overDownToOutDown");
		}
		if(this.condOverDownToOverUp) {
			a.push("overDownToOverUp");
		}
		if(this.condOverUpToOverDown) {
			a.push("overUpToOverDown");
		}
		if(this.condOverUpToIdle) {
			a.push("overUpToIdle");
		}
		if(this.condIdleToOverUp) {
			a.push("idleToOverUp");
		}
		if(this.condOverDownToIdle) {
			a.push("overDownToIdle");
		}
		var str = "Cond: (" + a.join(",") + "), KeyPress: " + this.condKeyPress;
		var _g1 = 0;
		var _g = this.actions.data.get_length();
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.actions.data.get(i).toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_data_SWFButtonCondAction
};
var format_swf_data_SWFButtonRecord = function(data,level) {
	if(level == null) {
		level = 1;
	}
	this.filterList = [];
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFButtonRecord"] = format_swf_data_SWFButtonRecord;
format_swf_data_SWFButtonRecord.__name__ = ["format","swf","data","SWFButtonRecord"];
format_swf_data_SWFButtonRecord.prototype = {
	hasBlendMode: null
	,hasFilterList: null
	,stateHitTest: null
	,stateDown: null
	,stateOver: null
	,stateUp: null
	,characterId: null
	,placeDepth: null
	,placeMatrix: null
	,colorTransform: null
	,blendMode: null
	,filterList: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.stateHitTest = (flags & 8) != 0;
		this.stateDown = (flags & 4) != 0;
		this.stateOver = (flags & 2) != 0;
		this.stateUp = (flags & 1) != 0;
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.placeDepth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.placeMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
		if(level >= 2) {
			this.colorTransform = format_swf__$SWFData_SWFData_$Impl_$.readCXFORMWITHALPHA(data);
			this.hasFilterList = (flags & 16) != 0;
			if(this.hasFilterList) {
				var numberOfFilters = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
				var _g1 = 0;
				var _g = numberOfFilters;
				while(_g1 < _g) {
					var i = _g1++;
					this.filterList.push(format_swf__$SWFData_SWFData_$Impl_$.readFILTER(data));
				}
			}
			this.hasBlendMode = (flags & 32) != 0;
			if(this.hasBlendMode) {
				this.blendMode = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
			}
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		var flags = 0;
		if(level >= 2 && this.hasBlendMode) {
			flags |= 32;
		}
		if(level >= 2 && this.hasFilterList) {
			flags |= 16;
		}
		if(this.stateHitTest) {
			flags |= 8;
		}
		if(this.stateDown) {
			flags |= 4;
		}
		if(this.stateOver) {
			flags |= 2;
		}
		if(this.stateUp) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.placeDepth);
		format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.placeMatrix);
		if(level >= 2) {
			format_swf__$SWFData_SWFData_$Impl_$.writeCXFORMWITHALPHA(data,this.colorTransform);
			if(this.hasFilterList) {
				var numberOfFilters = this.filterList.length;
				format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,numberOfFilters);
				var _g1 = 0;
				var _g = numberOfFilters;
				while(_g1 < _g) {
					var i = _g1++;
					format_swf__$SWFData_SWFData_$Impl_$.writeFILTER(data,this.filterList[i]);
				}
			}
			if(this.hasBlendMode) {
				format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.blendMode);
			}
		}
	}
	,clone: function() {
		var data = new format_swf_data_SWFButtonRecord();
		data.hasBlendMode = this.hasBlendMode;
		data.hasFilterList = this.hasFilterList;
		data.stateHitTest = this.stateHitTest;
		data.stateDown = this.stateDown;
		data.stateOver = this.stateOver;
		data.stateUp = this.stateUp;
		data.characterId = this.characterId;
		data.placeDepth = this.placeDepth;
		data.placeMatrix = this.placeMatrix.clone();
		if(this.colorTransform != null) {
			data.colorTransform = js_Boot.__cast(this.colorTransform.clone() , format_swf_data_SWFColorTransformWithAlpha);
		}
		var _g1 = 0;
		var _g = this.filterList.length;
		while(_g1 < _g) {
			var i = _g1++;
			data.filterList.push(this.filterList[i].clone());
		}
		data.blendMode = this.blendMode;
		return data;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "Depth: " + this.placeDepth + ", CharacterID: " + this.characterId + ", States: ";
		var states = [];
		if(this.stateUp) {
			states.push("up");
		}
		if(this.stateOver) {
			states.push("over");
		}
		if(this.stateDown) {
			states.push("down");
		}
		if(this.stateHitTest) {
			states.push("hit");
		}
		str += states.join(",");
		if(this.hasBlendMode) {
			str += ", BlendMode: " + format_swf_data_consts_BlendMode.toString(this.blendMode);
		}
		if(this.placeMatrix != null && !this.placeMatrix.isIdentity()) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Matrix: " + Std.string(this.placeMatrix);
		}
		if(this.colorTransform != null && !this.colorTransform.isIdentity()) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "ColorTransform: " + Std.string(this.colorTransform);
		}
		if(this.hasFilterList) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Filters:";
			var _g1 = 0;
			var _g = this.filterList.length;
			while(_g1 < _g) {
				var i = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + this.filterList[i].toString(indent + 4);
			}
		}
		return str;
	}
	,__class__: format_swf_data_SWFButtonRecord
};
var format_swf_data_SWFClipActionRecord = function(data,version) {
	if(version == null) {
		version = 0;
	}
	this.actions = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
	if(data != null) {
		this.parse(data,version);
	}
};
$hxClasses["format.swf.data.SWFClipActionRecord"] = format_swf_data_SWFClipActionRecord;
format_swf_data_SWFClipActionRecord.__name__ = ["format","swf","data","SWFClipActionRecord"];
format_swf_data_SWFClipActionRecord.prototype = {
	eventFlags: null
	,keyCode: null
	,actions: null
	,parse: function(data,version) {
		this.eventFlags = format_swf__$SWFData_SWFData_$Impl_$.readCLIPEVENTFLAGS(data,version);
		format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		if(this.eventFlags.keyPressEvent) {
			this.keyCode = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		}
		var action;
		while(true) {
			action = format_swf__$SWFData_SWFData_$Impl_$.readACTIONRECORD(data);
			if(!(action != null)) {
				break;
			}
			this.actions.data.push(action);
		}
		format_swf_data_actions_Action.resolveOffsets(this.actions);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeCLIPEVENTFLAGS(data,this.eventFlags,version);
		var actionBlock = format_swf__$SWFData_SWFData_$Impl_$._new();
		if(this.eventFlags.keyPressEvent) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(actionBlock,this.keyCode);
		}
		var _g1 = 0;
		var _g = this.actions.data.get_length();
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeACTIONRECORD(actionBlock,this.actions.data.get(i));
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(actionBlock,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,format_swf__$SWFData_SWFData_$Impl_$.get_length(actionBlock));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(actionBlock));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "ClipActionRecords (" + this.eventFlags.toString() + "):";
		if(this.keyCode > 0) {
			str += ", KeyCode: " + this.keyCode;
		}
		str += ":";
		var _g1 = 0;
		var _g = this.actions.data.get_length();
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.actions.data.get(i).toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_data_SWFClipActionRecord
};
var format_swf_data_SWFClipActions = function(data,version) {
	if(version == null) {
		version = 0;
	}
	this.records = [];
	if(data != null) {
		this.parse(data,version);
	}
};
$hxClasses["format.swf.data.SWFClipActions"] = format_swf_data_SWFClipActions;
format_swf_data_SWFClipActions.__name__ = ["format","swf","data","SWFClipActions"];
format_swf_data_SWFClipActions.prototype = {
	eventFlags: null
	,records: null
	,parse: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.eventFlags = format_swf__$SWFData_SWFData_$Impl_$.readCLIPEVENTFLAGS(data,version);
		var record;
		while(true) {
			record = format_swf__$SWFData_SWFData_$Impl_$.readCLIPACTIONRECORD(data,version);
			if(!(record != null)) {
				break;
			}
			this.records.push(record);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeCLIPEVENTFLAGS(data,this.eventFlags,version);
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeCLIPACTIONRECORD(data,this.records[i],version);
		}
		if(version >= 6) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,0);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,0);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "ClipActions (" + this.eventFlags.toString() + "):";
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.records[i].toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_data_SWFClipActions
};
var format_swf_data_SWFClipEventFlags = function(data,version) {
	if(version == null) {
		version = 0;
	}
	if(data != null) {
		this.parse(data,version);
	}
};
$hxClasses["format.swf.data.SWFClipEventFlags"] = format_swf_data_SWFClipEventFlags;
format_swf_data_SWFClipEventFlags.__name__ = ["format","swf","data","SWFClipEventFlags"];
format_swf_data_SWFClipEventFlags.prototype = {
	keyUpEvent: null
	,keyDownEvent: null
	,mouseUpEvent: null
	,mouseDownEvent: null
	,mouseMoveEvent: null
	,unloadEvent: null
	,enterFrameEvent: null
	,loadEvent: null
	,dragOverEvent: null
	,rollOutEvent: null
	,rollOverEvent: null
	,releaseOutsideEvent: null
	,releaseEvent: null
	,pressEvent: null
	,initializeEvent: null
	,dataEvent: null
	,constructEvent: null
	,keyPressEvent: null
	,dragOutEvent: null
	,parse: function(data,version) {
		var flags1 = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.keyUpEvent = (flags1 & 128) != 0;
		this.keyDownEvent = (flags1 & 64) != 0;
		this.mouseUpEvent = (flags1 & 32) != 0;
		this.mouseDownEvent = (flags1 & 16) != 0;
		this.mouseMoveEvent = (flags1 & 8) != 0;
		this.unloadEvent = (flags1 & 4) != 0;
		this.enterFrameEvent = (flags1 & 2) != 0;
		this.loadEvent = (flags1 & 1) != 0;
		var flags2 = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.dragOverEvent = (flags2 & 128) != 0;
		this.rollOutEvent = (flags2 & 64) != 0;
		this.rollOverEvent = (flags2 & 32) != 0;
		this.releaseOutsideEvent = (flags2 & 16) != 0;
		this.releaseEvent = (flags2 & 8) != 0;
		this.pressEvent = (flags2 & 4) != 0;
		this.initializeEvent = (flags2 & 2) != 0;
		this.dataEvent = (flags2 & 1) != 0;
		if(version >= 6) {
			var flags3 = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
			this.constructEvent = (flags3 & 4) != 0;
			this.keyPressEvent = (flags3 & 2) != 0;
			this.dragOutEvent = (flags3 & 1) != 0;
			format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		}
	}
	,publish: function(data,version) {
		var flags1 = 0;
		if(this.keyUpEvent) {
			flags1 |= 128;
		}
		if(this.keyDownEvent) {
			flags1 |= 64;
		}
		if(this.mouseUpEvent) {
			flags1 |= 32;
		}
		if(this.mouseDownEvent) {
			flags1 |= 16;
		}
		if(this.mouseMoveEvent) {
			flags1 |= 8;
		}
		if(this.unloadEvent) {
			flags1 |= 4;
		}
		if(this.enterFrameEvent) {
			flags1 |= 2;
		}
		if(this.loadEvent) {
			flags1 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags1);
		var flags2 = 0;
		if(this.dragOverEvent) {
			flags2 |= 128;
		}
		if(this.rollOutEvent) {
			flags2 |= 64;
		}
		if(this.rollOverEvent) {
			flags2 |= 32;
		}
		if(this.releaseOutsideEvent) {
			flags2 |= 16;
		}
		if(this.releaseEvent) {
			flags2 |= 8;
		}
		if(this.pressEvent) {
			flags2 |= 4;
		}
		if(this.initializeEvent) {
			flags2 |= 2;
		}
		if(this.dataEvent) {
			flags2 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags2);
		if(version >= 6) {
			var flags3 = 0;
			if(this.constructEvent) {
				flags3 |= 4;
			}
			if(this.keyPressEvent) {
				flags3 |= 2;
			}
			if(this.dragOutEvent) {
				flags3 |= 1;
			}
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags3);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
		}
	}
	,toString: function() {
		var a = [];
		if(this.keyUpEvent) {
			a.push("keyup");
		}
		if(this.keyDownEvent) {
			a.push("keydown");
		}
		if(this.mouseUpEvent) {
			a.push("mouseup");
		}
		if(this.mouseDownEvent) {
			a.push("mousedown");
		}
		if(this.mouseMoveEvent) {
			a.push("mousemove");
		}
		if(this.unloadEvent) {
			a.push("unload");
		}
		if(this.enterFrameEvent) {
			a.push("enterframe");
		}
		if(this.loadEvent) {
			a.push("load");
		}
		if(this.dragOverEvent) {
			a.push("dragover");
		}
		if(this.rollOutEvent) {
			a.push("rollout");
		}
		if(this.rollOverEvent) {
			a.push("rollover");
		}
		if(this.releaseOutsideEvent) {
			a.push("releaseoutside");
		}
		if(this.releaseEvent) {
			a.push("release");
		}
		if(this.pressEvent) {
			a.push("press");
		}
		if(this.initializeEvent) {
			a.push("initialize");
		}
		if(this.dataEvent) {
			a.push("data");
		}
		if(this.constructEvent) {
			a.push("construct");
		}
		if(this.keyPressEvent) {
			a.push("keypress");
		}
		if(this.dragOutEvent) {
			a.push("dragout");
		}
		return a.join(",");
	}
	,__class__: format_swf_data_SWFClipEventFlags
};
var format_swf_data_SWFColorTransform = function(data) {
	this.aAdd = 0;
	this.aMult = 255;
	this.bAdd = 0;
	this.gAdd = 0;
	this.rAdd = 0;
	this.bMult = 255;
	this.gMult = 255;
	this.rMult = 255;
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFColorTransform"] = format_swf_data_SWFColorTransform;
format_swf_data_SWFColorTransform.__name__ = ["format","swf","data","SWFColorTransform"];
format_swf_data_SWFColorTransform.prototype = {
	colorTransform: null
	,rMult: null
	,gMult: null
	,bMult: null
	,rAdd: null
	,gAdd: null
	,bAdd: null
	,aMult: null
	,aAdd: null
	,hasMultTerms: null
	,hasAddTerms: null
	,get_colorTransform: function() {
		return new openfl_geom_ColorTransform(this.rMult / 255,this.gMult / 255,this.bMult / 255,this.aMult / 255,this.rAdd,this.gAdd,this.bAdd,this.aAdd);
	}
	,parse: function(data) {
		data.resetBitsPending();
		this.hasAddTerms = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.hasMultTerms = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		var bits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.rMult = 255;
		this.gMult = 255;
		this.bMult = 255;
		if(this.hasMultTerms) {
			this.rMult = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.gMult = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.bMult = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
		}
		this.rAdd = 0;
		this.gAdd = 0;
		this.bAdd = 0;
		if(this.hasAddTerms) {
			this.rAdd = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.gAdd = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.bAdd = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
		}
	}
	,publish: function(data) {
		data.resetBitsPending();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.hasAddTerms ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.hasMultTerms ? 1 : 0);
		var values = [];
		if(this.hasMultTerms) {
			values.push(this.rMult);
			values.push(this.gMult);
			values.push(this.bMult);
		}
		if(this.hasAddTerms) {
			values.push(this.rAdd);
			values.push(this.gAdd);
			values.push(this.bAdd);
		}
		var bits = data.calculateMaxBits(true,values);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,bits);
		if(this.hasMultTerms) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.rMult);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.gMult);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.bMult);
		}
		if(this.hasAddTerms) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.rAdd);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.gAdd);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.bAdd);
		}
	}
	,clone: function() {
		var colorTransform = new format_swf_data_SWFColorTransform();
		colorTransform.hasAddTerms = this.hasAddTerms;
		colorTransform.hasMultTerms = this.hasMultTerms;
		colorTransform.rMult = this.rMult;
		colorTransform.gMult = this.gMult;
		colorTransform.bMult = this.bMult;
		colorTransform.rAdd = this.rAdd;
		colorTransform.gAdd = this.gAdd;
		colorTransform.bAdd = this.bAdd;
		return colorTransform;
	}
	,isIdentity: function() {
		if(this.rMult == 1 && this.gMult == 1 && this.bMult == 1 && this.aMult == 1) {
			if(this.rAdd == 0 && this.gAdd == 0 && this.bAdd == 0) {
				return this.aAdd == 0;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}
	,toString: function() {
		return "(redMultiplier=" + this.rMult + ", greenMultiplier=" + this.gMult + ", blueMultiplier=" + this.bMult + ", alphaMultiplier=" + this.aMult + ", redOffset=" + this.rAdd + ", greenOffset=" + this.gAdd + ", blueOffset=" + this.bAdd + ", alphaOffset=" + this.aAdd + ")";
	}
	,__class__: format_swf_data_SWFColorTransform
	,__properties__: {get_colorTransform:"get_colorTransform"}
};
var format_swf_data_SWFColorTransformWithAlpha = function(data) {
	format_swf_data_SWFColorTransform.call(this,data);
};
$hxClasses["format.swf.data.SWFColorTransformWithAlpha"] = format_swf_data_SWFColorTransformWithAlpha;
format_swf_data_SWFColorTransformWithAlpha.__name__ = ["format","swf","data","SWFColorTransformWithAlpha"];
format_swf_data_SWFColorTransformWithAlpha.__super__ = format_swf_data_SWFColorTransform;
format_swf_data_SWFColorTransformWithAlpha.prototype = $extend(format_swf_data_SWFColorTransform.prototype,{
	parse: function(data) {
		data.resetBitsPending();
		this.hasAddTerms = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.hasMultTerms = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		var bits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.rMult = 255;
		this.gMult = 255;
		this.bMult = 255;
		this.aMult = 255;
		if(this.hasMultTerms) {
			this.rMult = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.gMult = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.bMult = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.aMult = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
		}
		this.rAdd = 0;
		this.gAdd = 0;
		this.bAdd = 0;
		this.aAdd = 0;
		if(this.hasAddTerms) {
			this.rAdd = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.gAdd = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.bAdd = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
			this.aAdd = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
		}
	}
	,publish: function(data) {
		data.resetBitsPending();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.hasAddTerms ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.hasMultTerms ? 1 : 0);
		var values = [];
		if(this.hasMultTerms) {
			values.push(this.rMult);
			values.push(this.gMult);
			values.push(this.bMult);
			values.push(this.aMult);
		}
		if(this.hasAddTerms) {
			values.push(this.rAdd);
			values.push(this.gAdd);
			values.push(this.bAdd);
			values.push(this.aAdd);
		}
		var bits = this.hasMultTerms || this.hasAddTerms ? data.calculateMaxBits(true,values) : 1;
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,bits);
		if(this.hasMultTerms) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.rMult);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.gMult);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.bMult);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.aMult);
		}
		if(this.hasAddTerms) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.rAdd);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.gAdd);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.bAdd);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,bits,this.aAdd);
		}
	}
	,clone: function() {
		var colorTransform = new format_swf_data_SWFColorTransformWithAlpha();
		colorTransform.hasAddTerms = this.hasAddTerms;
		colorTransform.hasMultTerms = this.hasMultTerms;
		colorTransform.rMult = this.rMult;
		colorTransform.gMult = this.gMult;
		colorTransform.bMult = this.bMult;
		colorTransform.aMult = this.aMult;
		colorTransform.rAdd = this.rAdd;
		colorTransform.gAdd = this.gAdd;
		colorTransform.bAdd = this.bAdd;
		colorTransform.aAdd = this.aAdd;
		return colorTransform;
	}
	,toString: function() {
		return "(redMultiplier=" + this.rMult + ", greenMultiplier=" + this.gMult + ", blueMultiplier=" + this.bMult + ", alphaMultiplier=" + this.aMult + ", redOffset=" + this.rAdd + ", greenOffset=" + this.gAdd + ", blueOffset=" + this.bAdd + ", alphaOffset=" + this.aAdd + ")";
	}
	,__class__: format_swf_data_SWFColorTransformWithAlpha
});
var format_swf_data_SWFFillStyle = function(data,level) {
	if(level == null) {
		level = 1;
	}
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFFillStyle"] = format_swf_data_SWFFillStyle;
format_swf_data_SWFFillStyle.__name__ = ["format","swf","data","SWFFillStyle"];
format_swf_data_SWFFillStyle.prototype = {
	type: null
	,rgb: null
	,gradient: null
	,gradientMatrix: null
	,bitmapId: null
	,bitmapMatrix: null
	,_level: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this._level = level;
		this.type = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var _g = this.type;
		switch(_g) {
		case 0:
			this.rgb = level <= 2 ? format_swf__$SWFData_SWFData_$Impl_$.readRGB(data) : format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
			break;
		case 16:case 18:case 19:
			this.gradientMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
			this.gradient = this.type == 19 ? format_swf__$SWFData_SWFData_$Impl_$.readFOCALGRADIENT(data,level) : format_swf__$SWFData_SWFData_$Impl_$.readGRADIENT(data,level);
			break;
		case 64:case 65:case 66:case 67:
			this.bitmapId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			this.bitmapMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Unknown fill style type: 0x" + StringTools.hex(this.type)));
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.type);
		var _g = this.type;
		switch(_g) {
		case 0:
			if(level <= 2) {
				format_swf__$SWFData_SWFData_$Impl_$.writeRGB(data,this.rgb);
			} else {
				format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.rgb);
			}
			break;
		case 16:case 18:
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.gradientMatrix);
			format_swf__$SWFData_SWFData_$Impl_$.writeGRADIENT(data,this.gradient,level);
			break;
		case 19:
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.gradientMatrix);
			format_swf__$SWFData_SWFData_$Impl_$.writeFOCALGRADIENT(data,js_Boot.__cast(this.gradient , format_swf_data_SWFFocalGradient),level);
			break;
		case 64:case 65:case 66:case 67:
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.bitmapId);
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.bitmapMatrix);
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Unknown fill style type: 0x" + StringTools.hex(this.type)));
		}
	}
	,clone: function() {
		var fillStyle = new format_swf_data_SWFFillStyle();
		fillStyle.type = this.type;
		fillStyle.rgb = this.rgb;
		fillStyle.gradient = this.gradient.clone();
		fillStyle.gradientMatrix = this.gradientMatrix.clone();
		fillStyle.bitmapId = this.bitmapId;
		fillStyle.bitmapMatrix = this.bitmapMatrix.clone();
		return fillStyle;
	}
	,toString: function() {
		var str = "[SWFFillStyle] Type: " + format_swf_utils_StringUtils.printf("%02x",[this.type]);
		var _g = this.type;
		switch(_g) {
		case 0:
			str += " (solid), Color: " + (this._level <= 2 ? format_swf_utils_ColorUtils.rgbToString(this.rgb) : format_swf_utils_ColorUtils.rgbaToString(this.rgb));
			break;
		case 16:
			str += " (linear gradient), Gradient: " + Std.string(this.gradient) + ", Matrix: " + Std.string(this.gradientMatrix);
			break;
		case 18:
			str += " (radial gradient), Gradient: " + Std.string(this.gradient) + ", Matrix: " + Std.string(this.gradientMatrix);
			break;
		case 19:
			str += " (focal radial gradient), Gradient: " + Std.string(this.gradient) + ", Matrix: " + Std.string(this.gradientMatrix) + ", FocalPoint: " + this.gradient.focalPoint;
			break;
		case 64:
			str += " (repeating bitmap), BitmapID: " + this.bitmapId;
			break;
		case 65:
			str += " (clipped bitmap), BitmapID: " + this.bitmapId;
			break;
		case 66:
			str += " (non-smoothed repeating bitmap), BitmapID: " + this.bitmapId;
			break;
		case 67:
			str += " (non-smoothed clipped bitmap), BitmapID: " + this.bitmapId;
			break;
		}
		return str;
	}
	,__class__: format_swf_data_SWFFillStyle
};
var format_swf_data_SWFGradient = function(data,level) {
	if(level == null) {
		level = 1;
	}
	this.focalPoint = 0.0;
	this.records = [];
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFGradient"] = format_swf_data_SWFGradient;
format_swf_data_SWFGradient.__name__ = ["format","swf","data","SWFGradient"];
format_swf_data_SWFGradient.prototype = {
	spreadMode: null
	,interpolationMode: null
	,focalPoint: null
	,records: null
	,parse: function(data,level) {
		data.resetBitsPending();
		this.spreadMode = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.interpolationMode = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		var numGradients = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		var _g1 = 0;
		var _g = numGradients;
		while(_g1 < _g) {
			var i = _g1++;
			this.records.push(format_swf__$SWFData_SWFData_$Impl_$.readGRADIENTRECORD(data,level));
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		var numRecords = this.records.length;
		data.resetBitsPending();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.spreadMode);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.interpolationMode);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,numRecords);
		var _g1 = 0;
		var _g = numRecords;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeGRADIENTRECORD(data,this.records[i],level);
		}
	}
	,clone: function() {
		var gradient = new format_swf_data_SWFGradient();
		gradient.spreadMode = this.spreadMode;
		gradient.interpolationMode = this.interpolationMode;
		gradient.focalPoint = this.focalPoint;
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			gradient.records.push(this.records[i].clone());
		}
		return gradient;
	}
	,toString: function() {
		return "(" + this.records.join(",") + "), SpreadMode: " + this.spreadMode + ", InterpolationMode: " + this.interpolationMode;
	}
	,__class__: format_swf_data_SWFGradient
};
var format_swf_data_SWFFocalGradient = function(data,level) {
	if(level == null) {
		level = 1;
	}
	format_swf_data_SWFGradient.call(this,data,level);
};
$hxClasses["format.swf.data.SWFFocalGradient"] = format_swf_data_SWFFocalGradient;
format_swf_data_SWFFocalGradient.__name__ = ["format","swf","data","SWFFocalGradient"];
format_swf_data_SWFFocalGradient.__super__ = format_swf_data_SWFGradient;
format_swf_data_SWFFocalGradient.prototype = $extend(format_swf_data_SWFGradient.prototype,{
	parse: function(data,level) {
		format_swf_data_SWFGradient.prototype.parse.call(this,data,level);
		this.focalPoint = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		format_swf_data_SWFGradient.prototype.publish.call(this,data,level);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.focalPoint);
	}
	,toString: function() {
		return "(" + this.records.join(",") + ")";
	}
	,__class__: format_swf_data_SWFFocalGradient
});
var format_swf_data_SWFFrameLabel = function(frameNumber,name) {
	this.frameNumber = frameNumber;
	this.name = name;
};
$hxClasses["format.swf.data.SWFFrameLabel"] = format_swf_data_SWFFrameLabel;
format_swf_data_SWFFrameLabel.__name__ = ["format","swf","data","SWFFrameLabel"];
format_swf_data_SWFFrameLabel.prototype = {
	frameNumber: null
	,name: null
	,toString: function() {
		return "Frame: " + this.frameNumber + ", Name: " + this.name;
	}
	,__class__: format_swf_data_SWFFrameLabel
};
var format_swf_data_SWFGlyphEntry = function(data,glyphBits,advanceBits) {
	if(advanceBits == null) {
		advanceBits = 0;
	}
	if(glyphBits == null) {
		glyphBits = 0;
	}
	if(data != null) {
		this.parse(data,glyphBits,advanceBits);
	}
};
$hxClasses["format.swf.data.SWFGlyphEntry"] = format_swf_data_SWFGlyphEntry;
format_swf_data_SWFGlyphEntry.__name__ = ["format","swf","data","SWFGlyphEntry"];
format_swf_data_SWFGlyphEntry.prototype = {
	index: null
	,advance: null
	,parse: function(data,glyphBits,advanceBits) {
		this.index = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,glyphBits);
		this.advance = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,advanceBits);
	}
	,publish: function(data,glyphBits,advanceBits) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,glyphBits,this.index);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,advanceBits,this.advance);
	}
	,clone: function() {
		var entry = new format_swf_data_SWFGlyphEntry();
		entry.index = this.index;
		entry.advance = this.advance;
		return entry;
	}
	,toString: function() {
		return "[SWFGlyphEntry] Index: " + Std.string(this.index) + ", Advance: " + Std.string(this.advance);
	}
	,__class__: format_swf_data_SWFGlyphEntry
};
var format_swf_data_SWFGradientRecord = function(data,level) {
	if(level == null) {
		level = 1;
	}
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFGradientRecord"] = format_swf_data_SWFGradientRecord;
format_swf_data_SWFGradientRecord.__name__ = ["format","swf","data","SWFGradientRecord"];
format_swf_data_SWFGradientRecord.prototype = {
	ratio: null
	,color: null
	,_level: null
	,parse: function(data,level) {
		this._level = level;
		this.ratio = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.color = level <= 2 ? format_swf__$SWFData_SWFData_$Impl_$.readRGB(data) : format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
	}
	,publish: function(data,level) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.ratio);
		if(level <= 2) {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGB(data,this.color);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.color);
		}
	}
	,clone: function() {
		var gradientRecord = new format_swf_data_SWFGradientRecord();
		gradientRecord.ratio = this.ratio;
		gradientRecord.color = this.color;
		return gradientRecord;
	}
	,toString: function() {
		return "[" + this.ratio + "," + (this._level <= 2 ? format_swf_utils_ColorUtils.rgbToString(this.color) : format_swf_utils_ColorUtils.rgbaToString(this.color)) + "]";
	}
	,__class__: format_swf_data_SWFGradientRecord
};
var format_swf_data_SWFKerningRecord = function(data,wideCodes) {
	if(wideCodes == null) {
		wideCodes = false;
	}
	if(data != null) {
		this.parse(data,wideCodes);
	}
};
$hxClasses["format.swf.data.SWFKerningRecord"] = format_swf_data_SWFKerningRecord;
format_swf_data_SWFKerningRecord.__name__ = ["format","swf","data","SWFKerningRecord"];
format_swf_data_SWFKerningRecord.prototype = {
	code1: null
	,code2: null
	,adjustment: null
	,parse: function(data,wideCodes) {
		this.code1 = wideCodes ? format_swf__$SWFData_SWFData_$Impl_$.readUI16(data) : format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.code2 = wideCodes ? format_swf__$SWFData_SWFData_$Impl_$.readUI16(data) : format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.adjustment = format_swf__$SWFData_SWFData_$Impl_$.readSI16(data);
	}
	,publish: function(data,wideCodes) {
		if(wideCodes) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.code1);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.code1);
		}
		if(wideCodes) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.code2);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.code2);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeSI16(data,this.adjustment);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "Code1: " + this.code1 + ", " + "Code2: " + this.code2 + ", " + "Adjustment: " + this.adjustment;
	}
	,__class__: format_swf_data_SWFKerningRecord
};
var format_swf_data_SWFLineStyle = function(data,level) {
	if(level == null) {
		level = 1;
	}
	this.startCapsStyle = 0;
	this.endCapsStyle = 0;
	this.jointStyle = 0;
	this.hasFillFlag = false;
	this.noHScaleFlag = false;
	this.noVScaleFlag = false;
	this.pixelHintingFlag = false;
	this.noClose = false;
	this.miterLimitFactor = 3;
	this.color = 0;
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFLineStyle"] = format_swf_data_SWFLineStyle;
format_swf_data_SWFLineStyle.__name__ = ["format","swf","data","SWFLineStyle"];
format_swf_data_SWFLineStyle.prototype = {
	width: null
	,color: null
	,_level: null
	,startCapsStyle: null
	,endCapsStyle: null
	,jointStyle: null
	,hasFillFlag: null
	,noHScaleFlag: null
	,noVScaleFlag: null
	,pixelHintingFlag: null
	,noClose: null
	,miterLimitFactor: null
	,fillType: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this._level = level;
		this.width = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.color = level <= 2 ? format_swf__$SWFData_SWFData_$Impl_$.readRGB(data) : format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.width);
		if(level <= 2) {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGB(data,this.color);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.color);
		}
	}
	,clone: function() {
		var lineStyle = new format_swf_data_SWFLineStyle();
		lineStyle.width = this.width;
		lineStyle.color = this.color;
		lineStyle.startCapsStyle = this.startCapsStyle;
		lineStyle.endCapsStyle = this.endCapsStyle;
		lineStyle.jointStyle = this.jointStyle;
		lineStyle.hasFillFlag = this.hasFillFlag;
		lineStyle.noHScaleFlag = this.noHScaleFlag;
		lineStyle.noVScaleFlag = this.noVScaleFlag;
		lineStyle.pixelHintingFlag = this.pixelHintingFlag;
		lineStyle.noClose = this.noClose;
		lineStyle.miterLimitFactor = this.miterLimitFactor;
		lineStyle.fillType = this.fillType.clone();
		return lineStyle;
	}
	,toString: function() {
		return "[SWFLineStyle] Width: " + this.width + " Color: " + (this._level <= 2 ? format_swf_utils_ColorUtils.rgbToString(this.color) : format_swf_utils_ColorUtils.rgbaToString(this.color));
	}
	,__class__: format_swf_data_SWFLineStyle
};
var format_swf_data_SWFLineStyle2 = function(data,level) {
	if(level == null) {
		level = 1;
	}
	format_swf_data_SWFLineStyle.call(this,data,level);
};
$hxClasses["format.swf.data.SWFLineStyle2"] = format_swf_data_SWFLineStyle2;
format_swf_data_SWFLineStyle2.__name__ = ["format","swf","data","SWFLineStyle2"];
format_swf_data_SWFLineStyle2.__super__ = format_swf_data_SWFLineStyle;
format_swf_data_SWFLineStyle2.prototype = $extend(format_swf_data_SWFLineStyle.prototype,{
	parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this.width = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.startCapsStyle = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.jointStyle = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.hasFillFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.noHScaleFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.noVScaleFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.pixelHintingFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
		this.noClose = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.endCapsStyle = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		if(this.jointStyle == 2) {
			this.miterLimitFactor = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		}
		if(this.hasFillFlag) {
			this.fillType = format_swf__$SWFData_SWFData_$Impl_$.readFILLSTYLE(data,level);
		} else {
			this.color = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.width);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.startCapsStyle);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.jointStyle);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.hasFillFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.noHScaleFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.noVScaleFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.pixelHintingFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,5,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.noClose ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.endCapsStyle);
		if(this.jointStyle == 2) {
			format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.miterLimitFactor);
		}
		if(this.hasFillFlag) {
			format_swf__$SWFData_SWFData_$Impl_$.writeFILLSTYLE(data,this.fillType,level);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.color);
		}
	}
	,toString: function() {
		var str = "[SWFLineStyle2] Width: " + this.width + ", " + "StartCaps: " + format_swf_data_consts_LineCapsStyle.toString(this.startCapsStyle) + ", " + "EndCaps: " + format_swf_data_consts_LineCapsStyle.toString(this.endCapsStyle) + ", " + "Joint: " + format_swf_data_consts_LineJointStyle.toString(this.jointStyle) + ", ";
		if(this.noClose) {
			str += "NoClose, ";
		}
		if(this.noHScaleFlag) {
			str += "NoHScale, ";
		}
		if(this.noVScaleFlag) {
			str += "NoVScale, ";
		}
		if(this.pixelHintingFlag) {
			str += "PixelHinting, ";
		}
		if(this.hasFillFlag) {
			str += "Fill: " + this.fillType.toString();
		} else {
			str += "Color: " + format_swf_utils_ColorUtils.rgbaToString(this.color);
		}
		return str;
	}
	,__class__: format_swf_data_SWFLineStyle2
});
var format_swf_data_SWFMatrix = function(data) {
	this.translateY = 0;
	this.translateX = 0;
	this.rotateSkew1 = 0.0;
	this.rotateSkew0 = 0.0;
	this.scaleY = 1.0;
	this.scaleX = 1.0;
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFMatrix"] = format_swf_data_SWFMatrix;
format_swf_data_SWFMatrix.__name__ = ["format","swf","data","SWFMatrix"];
format_swf_data_SWFMatrix.prototype = {
	matrix: null
	,scaleX: null
	,scaleY: null
	,rotateSkew0: null
	,rotateSkew1: null
	,translateX: null
	,translateY: null
	,xscale: null
	,yscale: null
	,rotation: null
	,get_matrix: function() {
		return new openfl_geom_Matrix(this.scaleX,this.rotateSkew0,this.rotateSkew1,this.scaleY,this.translateX,this.translateY);
	}
	,parse: function(data) {
		data.resetBitsPending();
		this.scaleX = 1.0;
		this.scaleY = 1.0;
		if(format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1) {
			var scaleBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
			this.scaleX = format_swf__$SWFData_SWFData_$Impl_$.readFB(data,scaleBits);
			this.scaleY = format_swf__$SWFData_SWFData_$Impl_$.readFB(data,scaleBits);
		}
		this.rotateSkew0 = 0.0;
		this.rotateSkew1 = 0.0;
		if(format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1) {
			var rotateBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
			this.rotateSkew0 = format_swf__$SWFData_SWFData_$Impl_$.readFB(data,rotateBits);
			this.rotateSkew1 = format_swf__$SWFData_SWFData_$Impl_$.readFB(data,rotateBits);
		}
		var translateBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
		this.translateX = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,translateBits);
		this.translateY = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,translateBits);
		var px = this.get_matrix().deltaTransformPoint(new openfl_geom_Point(0,1));
		this.rotation = 180 / Math.PI * Math.atan2(px.y,px.x) - 90;
		if(this.rotation < 0) {
			this.rotation = 360 + this.rotation;
		}
		this.xscale = Math.sqrt(this.scaleX * this.scaleX + this.rotateSkew0 * this.rotateSkew0) * (this.scaleX < 0 ? -1 : 1);
		this.yscale = Math.sqrt(this.rotateSkew1 * this.rotateSkew1 + this.scaleY * this.scaleY) * (this.scaleY < 0 ? -1 : 1);
	}
	,clone: function() {
		var matrix = new format_swf_data_SWFMatrix();
		matrix.scaleX = this.scaleX;
		matrix.scaleY = this.scaleY;
		matrix.rotateSkew0 = this.rotateSkew0;
		matrix.rotateSkew1 = this.rotateSkew1;
		matrix.translateX = this.translateX;
		matrix.translateY = this.translateY;
		return matrix;
	}
	,isIdentity: function() {
		if(this.scaleX == 1 && this.scaleY == 1 && this.rotateSkew0 == 0 && this.rotateSkew1 == 0 && this.translateX == 0) {
			return this.translateY == 0;
		} else {
			return false;
		}
	}
	,toString: function() {
		return "(" + this.scaleX + "," + this.rotateSkew0 + "," + this.rotateSkew1 + "," + this.scaleY + "," + this.translateX + "," + this.translateY + ")";
	}
	,__class__: format_swf_data_SWFMatrix
	,__properties__: {get_matrix:"get_matrix"}
};
var format_swf_data_SWFMorphFillStyle = function(data,level) {
	if(level == null) {
		level = 1;
	}
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFMorphFillStyle"] = format_swf_data_SWFMorphFillStyle;
format_swf_data_SWFMorphFillStyle.__name__ = ["format","swf","data","SWFMorphFillStyle"];
format_swf_data_SWFMorphFillStyle.prototype = {
	type: null
	,startColor: null
	,endColor: null
	,startGradientMatrix: null
	,endGradientMatrix: null
	,gradient: null
	,bitmapId: null
	,startBitmapMatrix: null
	,endBitmapMatrix: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this.type = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var _g = this.type;
		switch(_g) {
		case 0:
			this.startColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
			this.endColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
			break;
		case 16:case 18:case 19:
			this.startGradientMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
			this.endGradientMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
			this.gradient = this.type == 19 ? format_swf__$SWFData_SWFData_$Impl_$.readMORPHFOCALGRADIENT(data,level) : format_swf__$SWFData_SWFData_$Impl_$.readMORPHGRADIENT(data,level);
			break;
		case 64:case 65:case 66:case 67:
			this.bitmapId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			this.startBitmapMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
			this.endBitmapMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Unknown fill style type: 0x" + StringTools.hex(this.type)));
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.type);
		var _g = this.type;
		switch(_g) {
		case 0:
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.startColor);
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.endColor);
			break;
		case 16:case 18:case 19:
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.startGradientMatrix);
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.endGradientMatrix);
			if(this.type == 19) {
				format_swf__$SWFData_SWFData_$Impl_$.writeMORPHFOCALGRADIENT(data,js_Boot.__cast(this.gradient , format_swf_data_SWFMorphFocalGradient),level);
			} else {
				format_swf__$SWFData_SWFData_$Impl_$.writeMORPHGRADIENT(data,this.gradient,level);
			}
			break;
		case 64:case 65:case 66:case 67:
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.bitmapId);
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.startBitmapMatrix);
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(data,this.endBitmapMatrix);
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Unknown fill style type: 0x" + StringTools.hex(this.type)));
		}
	}
	,getMorphedFillStyle: function(ratio) {
		if(ratio == null) {
			ratio = 0;
		}
		var fillStyle = new format_swf_data_SWFFillStyle();
		fillStyle.type = this.type;
		var _g = this.type;
		switch(_g) {
		case 0:
			fillStyle.rgb = format_swf_utils_ColorUtils.interpolate(this.startColor,this.endColor,ratio);
			break;
		case 16:case 18:
			fillStyle.gradientMatrix = format_swf_utils_MatrixUtils.interpolate(this.startGradientMatrix,this.endGradientMatrix,ratio);
			fillStyle.gradient = this.gradient.getMorphedGradient(ratio);
			break;
		case 64:case 65:case 66:case 67:
			fillStyle.bitmapId = this.bitmapId;
			fillStyle.bitmapMatrix = format_swf_utils_MatrixUtils.interpolate(this.startBitmapMatrix,this.endBitmapMatrix,ratio);
			break;
		}
		return fillStyle;
	}
	,toString: function() {
		var str = "[SWFMorphFillStyle] Type: " + StringTools.hex(this.type);
		var _g = this.type;
		switch(_g) {
		case 0:
			str += " (solid), StartColor: " + format_swf_utils_ColorUtils.rgbaToString(this.startColor) + ", EndColor: " + format_swf_utils_ColorUtils.rgbaToString(this.endColor);
			break;
		case 16:
			str += " (linear gradient), Gradient: " + Std.string(this.gradient);
			break;
		case 18:
			str += " (radial gradient), Gradient: " + Std.string(this.gradient);
			break;
		case 19:
			str += " (focal radial gradient), Gradient: " + Std.string(this.gradient);
			break;
		case 64:
			str += " (repeating bitmap), BitmapID: " + this.bitmapId;
			break;
		case 65:
			str += " (clipped bitmap), BitmapID: " + this.bitmapId;
			break;
		case 66:
			str += " (non-smoothed repeating bitmap), BitmapID: " + this.bitmapId;
			break;
		case 67:
			str += " (non-smoothed clipped bitmap), BitmapID: " + this.bitmapId;
			break;
		}
		return str;
	}
	,__class__: format_swf_data_SWFMorphFillStyle
};
var format_swf_data_SWFMorphGradient = function(data,level) {
	if(level == null) {
		level = 1;
	}
	this.records = [];
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFMorphGradient"] = format_swf_data_SWFMorphGradient;
format_swf_data_SWFMorphGradient.__name__ = ["format","swf","data","SWFMorphGradient"];
format_swf_data_SWFMorphGradient.prototype = {
	spreadMode: null
	,interpolationMode: null
	,startFocalPoint: null
	,endFocalPoint: null
	,records: null
	,parse: function(data,level) {
		data.resetBitsPending();
		this.spreadMode = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.interpolationMode = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		var numGradients = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		var _g1 = 0;
		var _g = numGradients;
		while(_g1 < _g) {
			var i = _g1++;
			this.records.push(format_swf__$SWFData_SWFData_$Impl_$.readMORPHGRADIENTRECORD(data));
		}
	}
	,publish: function(data,level) {
		var numGradients = this.records.length;
		data.resetBitsPending();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.spreadMode);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.interpolationMode);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,numGradients);
		var _g1 = 0;
		var _g = numGradients;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeMORPHGRADIENTRECORD(data,this.records[i]);
		}
	}
	,getMorphedGradient: function(ratio) {
		if(ratio == null) {
			ratio = 0;
		}
		var gradient = new format_swf_data_SWFGradient();
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			gradient.records.push(this.records[i].getMorphedGradientRecord(ratio));
		}
		return gradient;
	}
	,toString: function() {
		return "(" + this.records.join(",") + "), spread:" + this.spreadMode + ", interpolation:" + this.interpolationMode;
	}
	,__class__: format_swf_data_SWFMorphGradient
};
var format_swf_data_SWFMorphFocalGradient = function(data,level) {
	if(level == null) {
		level = 1;
	}
	format_swf_data_SWFMorphGradient.call(this,data,level);
};
$hxClasses["format.swf.data.SWFMorphFocalGradient"] = format_swf_data_SWFMorphFocalGradient;
format_swf_data_SWFMorphFocalGradient.__name__ = ["format","swf","data","SWFMorphFocalGradient"];
format_swf_data_SWFMorphFocalGradient.__super__ = format_swf_data_SWFMorphGradient;
format_swf_data_SWFMorphFocalGradient.prototype = $extend(format_swf_data_SWFMorphGradient.prototype,{
	parse: function(data,level) {
		format_swf_data_SWFMorphGradient.prototype.parse.call(this,data,level);
		this.startFocalPoint = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		this.endFocalPoint = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
	}
	,publish: function(data,level) {
		format_swf_data_SWFMorphGradient.prototype.publish.call(this,data,level);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.startFocalPoint);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.endFocalPoint);
	}
	,getMorphedGradient: function(ratio) {
		if(ratio == null) {
			ratio = 0;
		}
		var gradient = new format_swf_data_SWFGradient();
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			gradient.records.push(this.records[i].getMorphedGradientRecord(ratio));
		}
		return gradient;
	}
	,toString: function() {
		return "FocalPoint: " + this.startFocalPoint + "," + this.endFocalPoint + " (" + this.records.join(",") + ")";
	}
	,__class__: format_swf_data_SWFMorphFocalGradient
});
var format_swf_data_SWFMorphGradientRecord = function(data) {
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFMorphGradientRecord"] = format_swf_data_SWFMorphGradientRecord;
format_swf_data_SWFMorphGradientRecord.__name__ = ["format","swf","data","SWFMorphGradientRecord"];
format_swf_data_SWFMorphGradientRecord.prototype = {
	startRatio: null
	,startColor: null
	,endRatio: null
	,endColor: null
	,parse: function(data) {
		this.startRatio = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.startColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		this.endRatio = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.endColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.startRatio);
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.startColor);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.endRatio);
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.endColor);
	}
	,getMorphedGradientRecord: function(ratio) {
		if(ratio == null) {
			ratio = 0;
		}
		var gradientRecord = new format_swf_data_SWFGradientRecord();
		gradientRecord.color = format_swf_utils_ColorUtils.interpolate(this.startColor,this.endColor,ratio);
		gradientRecord.ratio = this.startRatio + (this.endRatio - this.startRatio) * ratio | 0;
		return gradientRecord;
	}
	,toString: function() {
		return "[" + this.startRatio + "," + format_swf_utils_ColorUtils.rgbaToString(this.startColor) + "," + this.endRatio + "," + format_swf_utils_ColorUtils.rgbaToString(this.endColor) + "]";
	}
	,__class__: format_swf_data_SWFMorphGradientRecord
};
var format_swf_data_SWFMorphLineStyle = function(data,level) {
	if(level == null) {
		level = 1;
	}
	this.startCapsStyle = 0;
	this.endCapsStyle = 0;
	this.jointStyle = 0;
	this.miterLimitFactor = 3;
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFMorphLineStyle"] = format_swf_data_SWFMorphLineStyle;
format_swf_data_SWFMorphLineStyle.__name__ = ["format","swf","data","SWFMorphLineStyle"];
format_swf_data_SWFMorphLineStyle.prototype = {
	startWidth: null
	,endWidth: null
	,startColor: null
	,endColor: null
	,startCapsStyle: null
	,endCapsStyle: null
	,jointStyle: null
	,hasFillFlag: null
	,noHScaleFlag: null
	,noVScaleFlag: null
	,pixelHintingFlag: null
	,noClose: null
	,miterLimitFactor: null
	,fillType: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this.startWidth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.endWidth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.startColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		this.endColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.startWidth);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.endWidth);
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.startColor);
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.endColor);
	}
	,getMorphedLineStyle: function(ratio) {
		if(ratio == null) {
			ratio = 0;
		}
		var lineStyle = new format_swf_data_SWFLineStyle();
		if(this.hasFillFlag) {
			lineStyle.fillType = this.fillType.getMorphedFillStyle(ratio);
		} else {
			lineStyle.color = format_swf_utils_ColorUtils.interpolate(this.startColor,this.endColor,ratio);
			lineStyle.width = this.startWidth + (this.endWidth - this.startWidth) * ratio | 0;
		}
		lineStyle.startCapsStyle = this.startCapsStyle;
		lineStyle.endCapsStyle = this.endCapsStyle;
		lineStyle.jointStyle = this.jointStyle;
		lineStyle.hasFillFlag = this.hasFillFlag;
		lineStyle.noHScaleFlag = this.noHScaleFlag;
		lineStyle.noVScaleFlag = this.noVScaleFlag;
		lineStyle.pixelHintingFlag = this.pixelHintingFlag;
		lineStyle.noClose = this.noClose;
		lineStyle.miterLimitFactor = this.miterLimitFactor;
		return lineStyle;
	}
	,toString: function() {
		return "[SWFMorphLineStyle] " + "StartWidth: " + this.startWidth + ", " + "EndWidth: " + this.endWidth + ", " + "StartColor: " + format_swf_utils_ColorUtils.rgbaToString(this.startColor) + ", " + "EndColor: " + format_swf_utils_ColorUtils.rgbaToString(this.endColor);
	}
	,__class__: format_swf_data_SWFMorphLineStyle
};
var format_swf_data_SWFMorphLineStyle2 = function(data,level) {
	if(level == null) {
		level = 1;
	}
	format_swf_data_SWFMorphLineStyle.call(this,data,level);
};
$hxClasses["format.swf.data.SWFMorphLineStyle2"] = format_swf_data_SWFMorphLineStyle2;
format_swf_data_SWFMorphLineStyle2.__name__ = ["format","swf","data","SWFMorphLineStyle2"];
format_swf_data_SWFMorphLineStyle2.__super__ = format_swf_data_SWFMorphLineStyle;
format_swf_data_SWFMorphLineStyle2.prototype = $extend(format_swf_data_SWFMorphLineStyle.prototype,{
	parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this.startWidth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.endWidth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.startCapsStyle = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.jointStyle = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.hasFillFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.noHScaleFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.noVScaleFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.pixelHintingFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		var reserved = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
		this.noClose = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.endCapsStyle = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		if(this.jointStyle == 2) {
			this.miterLimitFactor = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		}
		if(this.hasFillFlag) {
			this.fillType = format_swf__$SWFData_SWFData_$Impl_$.readMORPHFILLSTYLE(data,level);
		} else {
			this.startColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
			this.endColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.startWidth);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.endWidth);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.startCapsStyle);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.jointStyle);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.hasFillFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.noHScaleFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.noVScaleFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.pixelHintingFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,5,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.noClose ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.endCapsStyle);
		if(this.jointStyle == 2) {
			format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.miterLimitFactor);
		}
		if(this.hasFillFlag) {
			format_swf__$SWFData_SWFData_$Impl_$.writeMORPHFILLSTYLE(data,this.fillType,level);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.startColor);
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.endColor);
		}
	}
	,toString: function() {
		var str = "[SWFMorphLineStyle2] " + "StartWidth: " + this.startWidth + ", " + "EndWidth: " + this.endWidth + ", " + "StartCaps: " + format_swf_data_consts_LineCapsStyle.toString(this.startCapsStyle) + ", " + "EndCaps: " + format_swf_data_consts_LineCapsStyle.toString(this.endCapsStyle) + ", " + "Joint: " + format_swf_data_consts_LineJointStyle.toString(this.jointStyle);
		if(this.hasFillFlag) {
			str += ", Fill: " + this.fillType.toString();
		} else {
			str += ", StartColor: " + format_swf_utils_ColorUtils.rgbaToString(this.startColor);
			str += ", EndColor: " + format_swf_utils_ColorUtils.rgbaToString(this.endColor);
		}
		return str;
	}
	,__class__: format_swf_data_SWFMorphLineStyle2
});
var format_swf_data_SWFRawTag = function(data) {
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFRawTag"] = format_swf_data_SWFRawTag;
format_swf_data_SWFRawTag.__name__ = ["format","swf","data","SWFRawTag"];
format_swf_data_SWFRawTag.prototype = {
	header: null
	,bytes: null
	,parse: function(data) {
		var pos = data.position;
		this.header = format_swf__$SWFData_SWFData_$Impl_$.readTagHeader(data);
		this.bytes = format_swf__$SWFData_SWFData_$Impl_$._new();
		var posContent = data.position;
		data.position = pos;
		data.readBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(this.bytes),0,this.header.get_tagLength());
		data.position = posContent;
	}
	,publish: function(data) {
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(this.bytes));
	}
	,__class__: format_swf_data_SWFRawTag
};
var format_swf_data_SWFRecordHeader = function(type,contentLength,headerLength) {
	this.type = type;
	this.contentLength = contentLength;
	this.headerLength = headerLength;
};
$hxClasses["format.swf.data.SWFRecordHeader"] = format_swf_data_SWFRecordHeader;
format_swf_data_SWFRecordHeader.__name__ = ["format","swf","data","SWFRecordHeader"];
format_swf_data_SWFRecordHeader.prototype = {
	type: null
	,contentLength: null
	,headerLength: null
	,tagLength: null
	,get_tagLength: function() {
		return this.headerLength + this.contentLength;
	}
	,toString: function() {
		return "[SWFRecordHeader] type: " + this.type + ", headerLength: " + this.headerLength + ", contentlength: " + this.contentLength;
	}
	,__class__: format_swf_data_SWFRecordHeader
	,__properties__: {get_tagLength:"get_tagLength"}
};
var format_swf_data_SWFRectangle = function(data) {
	this.xmax = 11000;
	this.ymax = 8000;
	this._rectangle = new openfl_geom_Rectangle();
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFRectangle"] = format_swf_data_SWFRectangle;
format_swf_data_SWFRectangle.__name__ = ["format","swf","data","SWFRectangle"];
format_swf_data_SWFRectangle.prototype = {
	xmin: null
	,xmax: null
	,ymin: null
	,ymax: null
	,rect: null
	,_rectangle: null
	,parse: function(data) {
		data.resetBitsPending();
		var bits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
		this.xmin = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
		this.xmax = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
		this.ymin = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
		this.ymax = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,bits);
	}
	,publish: function(data) {
		var numBits = data.calculateMaxBits(true,[this.xmin,this.xmax,this.ymin,this.ymax]);
		data.resetBitsPending();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,5,numBits);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,numBits,this.xmin);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,numBits,this.xmax);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,numBits,this.ymin);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,numBits,this.ymax);
	}
	,clone: function() {
		var rect = new format_swf_data_SWFRectangle();
		rect.xmin = this.xmin;
		rect.xmax = this.xmax;
		rect.ymin = this.ymin;
		rect.ymax = this.ymax;
		return rect;
	}
	,get_rect: function() {
		this._rectangle.set_left(format_swf_utils_NumberUtils.roundPixels20(this.xmin / 20));
		this._rectangle.set_right(format_swf_utils_NumberUtils.roundPixels20(this.xmax / 20));
		this._rectangle.set_top(format_swf_utils_NumberUtils.roundPixels20(this.ymin / 20));
		this._rectangle.set_bottom(format_swf_utils_NumberUtils.roundPixels20(this.ymax / 20));
		return this._rectangle;
	}
	,toString: function() {
		return "(" + this.xmin + "," + this.xmax + "," + this.ymin + "," + this.ymax + ")";
	}
	,toStringSize: function() {
		return "(" + (this.xmax / 20 - this.xmin / 20) + "," + (this.ymax / 20 - this.ymin / 20) + ")";
	}
	,__class__: format_swf_data_SWFRectangle
	,__properties__: {get_rect:"get_rect"}
};
var format_swf_data_SWFRegisterParam = function(data) {
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFRegisterParam"] = format_swf_data_SWFRegisterParam;
format_swf_data_SWFRegisterParam.__name__ = ["format","swf","data","SWFRegisterParam"];
format_swf_data_SWFRegisterParam.prototype = {
	register: null
	,name: null
	,parse: function(data) {
		this.register = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.name = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.register);
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(data,this.name);
	}
	,toString: function() {
		return this.register + ":" + this.name;
	}
	,__class__: format_swf_data_SWFRegisterParam
};
var format_swf_data_SWFScene = function(offset,name) {
	this.offset = offset;
	this.name = name;
};
$hxClasses["format.swf.data.SWFScene"] = format_swf_data_SWFScene;
format_swf_data_SWFScene.__name__ = ["format","swf","data","SWFScene"];
format_swf_data_SWFScene.prototype = {
	offset: null
	,name: null
	,toString: function() {
		return "Frame: " + this.offset + ", Name: " + this.name;
	}
	,__class__: format_swf_data_SWFScene
};
var format_swf_data_SWFShape = function(data,level,unitDivisor) {
	if(unitDivisor == null) {
		unitDivisor = 20;
	}
	if(level == null) {
		level = 1;
	}
	this.edgeMapsCreated = false;
	this.records = [];
	this.fillStyles = [];
	this.lineStyles = [];
	this.referencePoint = new openfl_geom_Point(0,0);
	this.unitDivisor = unitDivisor;
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFShape"] = format_swf_data_SWFShape;
format_swf_data_SWFShape.__name__ = ["format","swf","data","SWFShape"];
format_swf_data_SWFShape.prototype = {
	records: null
	,fillStyles: null
	,lineStyles: null
	,referencePoint: null
	,fillEdgeMaps: null
	,lineEdgeMaps: null
	,currentFillEdgeMap: null
	,currentLineEdgeMap: null
	,numGroups: null
	,coordMap: null
	,unitDivisor: null
	,edgeMapsCreated: null
	,getMaxFillStyleIndex: function() {
		var ret = 0;
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			var shapeRecord = this.records[i];
			if(shapeRecord.get_type() == 2) {
				var shapeRecordStyleChange = js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordStyleChange);
				if(shapeRecordStyleChange.fillStyle0 > ret) {
					ret = shapeRecordStyleChange.fillStyle0;
				}
				if(shapeRecordStyleChange.fillStyle1 > ret) {
					ret = shapeRecordStyleChange.fillStyle1;
				}
				if(shapeRecordStyleChange.stateNewStyles) {
					break;
				}
			}
		}
		return ret;
	}
	,getMaxLineStyleIndex: function() {
		var ret = 0;
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			var shapeRecord = this.records[i];
			if(shapeRecord.get_type() == 2) {
				var shapeRecordStyleChange = js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordStyleChange);
				if(shapeRecordStyleChange.lineStyle > ret) {
					ret = shapeRecordStyleChange.lineStyle;
				}
				if(shapeRecordStyleChange.stateNewStyles) {
					break;
				}
			}
		}
		return ret;
	}
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		data.resetBitsPending();
		var numFillBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		var numLineBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.readShapeRecords(data,numFillBits,numLineBits,level);
		this.determineReferencePoint();
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		var numFillBits = data.calculateMaxBits(false,[this.getMaxFillStyleIndex()]);
		var numLineBits = data.calculateMaxBits(false,[this.getMaxLineStyleIndex()]);
		data.resetBitsPending();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,numFillBits);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,numLineBits);
		this.writeShapeRecords(data,numFillBits,numLineBits,level);
	}
	,readShapeRecords: function(data,fillBits,lineBits,level) {
		if(level == null) {
			level = 1;
		}
		var shapeRecord = null;
		while(!js_Boot.__instanceof(shapeRecord,format_swf_data_SWFShapeRecordEnd)) {
			var edgeRecord = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
			if(edgeRecord) {
				var straightFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
				var numBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4) + 2;
				if(straightFlag) {
					shapeRecord = format_swf__$SWFData_SWFData_$Impl_$.readSTRAIGHTEDGERECORD(data,numBits);
				} else {
					shapeRecord = format_swf__$SWFData_SWFData_$Impl_$.readCURVEDEDGERECORD(data,numBits);
				}
			} else {
				var states = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
				if(states == 0) {
					shapeRecord = new format_swf_data_SWFShapeRecordEnd();
				} else {
					var styleChangeRecord = format_swf__$SWFData_SWFData_$Impl_$.readSTYLECHANGERECORD(data,states,fillBits,lineBits,level);
					if(styleChangeRecord.stateNewStyles) {
						fillBits = styleChangeRecord.numFillBits;
						lineBits = styleChangeRecord.numLineBits;
					}
					shapeRecord = styleChangeRecord;
				}
			}
			this.records.push(shapeRecord);
		}
	}
	,writeShapeRecords: function(data,fillBits,lineBits,level) {
		if(level == null) {
			level = 1;
		}
		if(this.records.length == 0 || !js_Boot.__instanceof(this.records[this.records.length - 1],format_swf_data_SWFShapeRecordEnd)) {
			this.records.push(new format_swf_data_SWFShapeRecordEnd());
		}
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			var shapeRecord = this.records[i];
			if(shapeRecord.get_isEdgeRecord()) {
				format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,1);
				if(shapeRecord.get_type() == 3) {
					format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,1);
					format_swf__$SWFData_SWFData_$Impl_$.writeSTRAIGHTEDGERECORD(data,js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordStraightEdge));
				} else {
					format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,0);
					format_swf__$SWFData_SWFData_$Impl_$.writeCURVEDEDGERECORD(data,js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordCurvedEdge));
				}
			} else {
				format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,0);
				if(shapeRecord.get_type() == 1) {
					format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,5,0);
				} else {
					var states = 0;
					var styleChangeRecord = js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordStyleChange);
					if(styleChangeRecord.stateNewStyles) {
						states |= 16;
					}
					if(styleChangeRecord.stateLineStyle) {
						states |= 8;
					}
					if(styleChangeRecord.stateFillStyle1) {
						states |= 4;
					}
					if(styleChangeRecord.stateFillStyle0) {
						states |= 2;
					}
					if(styleChangeRecord.stateMoveTo) {
						states |= 1;
					}
					format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,5,states);
					format_swf__$SWFData_SWFData_$Impl_$.writeSTYLECHANGERECORD(data,styleChangeRecord,fillBits,lineBits,level);
					if(styleChangeRecord.stateNewStyles) {
						fillBits = styleChangeRecord.numFillBits;
						lineBits = styleChangeRecord.numLineBits;
					}
				}
			}
		}
	}
	,determineReferencePoint: function() {
		if(js_Boot.__instanceof(this.records[0],format_swf_data_SWFShapeRecordStyleChange)) {
			var styleChangeRecord = this.records[0];
			if(styleChangeRecord != null && styleChangeRecord.stateMoveTo) {
				this.referencePoint.x = format_swf_utils_NumberUtils.roundPixels400(styleChangeRecord.moveDeltaX / this.unitDivisor);
				this.referencePoint.y = format_swf_utils_NumberUtils.roundPixels400(styleChangeRecord.moveDeltaY / this.unitDivisor);
			}
		}
	}
	,'export': function(handler) {
		this.edgeMapsCreated = false;
		this.createEdgeMaps();
		if(handler == null) {
			handler = new format_swf_exporters_core_DefaultShapeExporter(null);
		}
		handler.beginShape();
		var _g1 = 0;
		var _g = this.numGroups;
		while(_g1 < _g) {
			var i = _g1++;
			this.exportFillPath(handler,i);
			this.exportLinePath(handler,i);
		}
		handler.endShape();
	}
	,createEdgeMaps: function() {
		if(!this.edgeMapsCreated) {
			var xPos = 0;
			var yPos = 0;
			var from;
			var to;
			var control;
			var fillStyleIdxOffset = 0;
			var lineStyleIdxOffset = 0;
			var currentFillStyleIdx0 = 0;
			var currentFillStyleIdx1 = 0;
			var currentLineStyleIdx = 0;
			var subPath = [];
			this.numGroups = 0;
			this.fillEdgeMaps = [];
			this.lineEdgeMaps = [];
			this.currentFillEdgeMap = new haxe_ds_IntMap();
			this.currentLineEdgeMap = new haxe_ds_IntMap();
			var _g1 = 0;
			var _g = this.records.length;
			while(_g1 < _g) {
				var i = _g1++;
				var shapeRecord = this.records[i];
				var _g2 = shapeRecord.get_type();
				switch(_g2) {
				case 1:
					this.processSubPath(subPath,currentLineStyleIdx,currentFillStyleIdx0,currentFillStyleIdx1);
					this.cleanEdgeMap(this.currentFillEdgeMap);
					this.cleanEdgeMap(this.currentLineEdgeMap);
					this.fillEdgeMaps.push(this.currentFillEdgeMap);
					this.lineEdgeMaps.push(this.currentLineEdgeMap);
					this.numGroups++;
					break;
				case 2:
					var styleChangeRecord = js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordStyleChange);
					if(styleChangeRecord.stateLineStyle || styleChangeRecord.stateFillStyle0 || styleChangeRecord.stateFillStyle1) {
						this.processSubPath(subPath,currentLineStyleIdx,currentFillStyleIdx0,currentFillStyleIdx1);
						subPath = [];
					}
					if(styleChangeRecord.stateNewStyles) {
						fillStyleIdxOffset = this.fillStyles.length;
						lineStyleIdxOffset = this.lineStyles.length;
						this.appendFillStyles(this.fillStyles,styleChangeRecord.fillStyles);
						this.appendLineStyles(this.lineStyles,styleChangeRecord.lineStyles);
					}
					if(styleChangeRecord.stateLineStyle && styleChangeRecord.lineStyle == 0 && styleChangeRecord.stateFillStyle0 && styleChangeRecord.fillStyle0 == 0 && styleChangeRecord.stateFillStyle1 && styleChangeRecord.fillStyle1 == 0) {
						this.cleanEdgeMap(this.currentFillEdgeMap);
						this.cleanEdgeMap(this.currentLineEdgeMap);
						this.fillEdgeMaps.push(this.currentFillEdgeMap);
						this.lineEdgeMaps.push(this.currentLineEdgeMap);
						this.currentFillEdgeMap = new haxe_ds_IntMap();
						this.currentLineEdgeMap = new haxe_ds_IntMap();
						currentLineStyleIdx = 0;
						currentFillStyleIdx0 = 0;
						currentFillStyleIdx1 = 0;
						this.numGroups++;
					} else {
						if(styleChangeRecord.stateLineStyle) {
							currentLineStyleIdx = styleChangeRecord.lineStyle;
							if(currentLineStyleIdx > 0) {
								currentLineStyleIdx += lineStyleIdxOffset;
							}
						}
						if(styleChangeRecord.stateFillStyle0) {
							currentFillStyleIdx0 = styleChangeRecord.fillStyle0;
							if(currentFillStyleIdx0 > 0) {
								currentFillStyleIdx0 += fillStyleIdxOffset;
							}
						}
						if(styleChangeRecord.stateFillStyle1) {
							currentFillStyleIdx1 = styleChangeRecord.fillStyle1;
							if(currentFillStyleIdx1 > 0) {
								currentFillStyleIdx1 += fillStyleIdxOffset;
							}
						}
					}
					if(styleChangeRecord.stateMoveTo) {
						xPos = styleChangeRecord.moveDeltaX / this.unitDivisor;
						yPos = styleChangeRecord.moveDeltaY / this.unitDivisor;
					}
					break;
				case 3:
					var straightEdgeRecord = js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordStraightEdge);
					from = new openfl_geom_Point(format_swf_utils_NumberUtils.roundPixels400(xPos),format_swf_utils_NumberUtils.roundPixels400(yPos));
					if(straightEdgeRecord.generalLineFlag) {
						xPos += straightEdgeRecord.deltaX / this.unitDivisor;
						yPos += straightEdgeRecord.deltaY / this.unitDivisor;
					} else if(straightEdgeRecord.vertLineFlag) {
						yPos += straightEdgeRecord.deltaY / this.unitDivisor;
					} else {
						xPos += straightEdgeRecord.deltaX / this.unitDivisor;
					}
					to = new openfl_geom_Point(format_swf_utils_NumberUtils.roundPixels400(xPos),format_swf_utils_NumberUtils.roundPixels400(yPos));
					subPath.push(new format_swf_data_etc_StraightEdge(from,to,currentLineStyleIdx,currentFillStyleIdx1));
					break;
				case 4:
					var curvedEdgeRecord = js_Boot.__cast(shapeRecord , format_swf_data_SWFShapeRecordCurvedEdge);
					from = new openfl_geom_Point(format_swf_utils_NumberUtils.roundPixels400(xPos),format_swf_utils_NumberUtils.roundPixels400(yPos));
					var xPosControl = xPos + curvedEdgeRecord.controlDeltaX / this.unitDivisor;
					var yPosControl = yPos + curvedEdgeRecord.controlDeltaY / this.unitDivisor;
					xPos = xPosControl + curvedEdgeRecord.anchorDeltaX / this.unitDivisor;
					yPos = yPosControl + curvedEdgeRecord.anchorDeltaY / this.unitDivisor;
					control = new openfl_geom_Point(xPosControl,yPosControl);
					to = new openfl_geom_Point(format_swf_utils_NumberUtils.roundPixels400(xPos),format_swf_utils_NumberUtils.roundPixels400(yPos));
					subPath.push(new format_swf_data_etc_CurvedEdge(from,control,to,currentLineStyleIdx,currentFillStyleIdx1));
					break;
				}
			}
			this.edgeMapsCreated = true;
		}
	}
	,processSubPath: function(subPath,lineStyleIdx,fillStyleIdx0,fillStyleIdx1) {
		var path;
		if(fillStyleIdx0 != 0) {
			path = this.currentFillEdgeMap.h[fillStyleIdx0];
			if(path == null) {
				var this1 = this.currentFillEdgeMap;
				var value = [];
				this1.h[fillStyleIdx0] = value;
				path = this.currentFillEdgeMap.h[fillStyleIdx0];
			}
			var j = subPath.length - 1;
			while(j >= 0) {
				path.push(subPath[j].reverseWithNewFillStyle(fillStyleIdx0));
				--j;
			}
		}
		if(fillStyleIdx1 != 0) {
			path = this.currentFillEdgeMap.h[fillStyleIdx1];
			if(path == null) {
				var this2 = this.currentFillEdgeMap;
				var value1 = [];
				this2.h[fillStyleIdx1] = value1;
				path = this.currentFillEdgeMap.h[fillStyleIdx1];
			}
			this.appendEdges(path,subPath);
		}
		if(lineStyleIdx != 0) {
			path = this.currentLineEdgeMap.h[lineStyleIdx];
			if(path == null) {
				var this3 = this.currentLineEdgeMap;
				var value2 = [];
				this3.h[lineStyleIdx] = value2;
				path = this.currentLineEdgeMap.h[lineStyleIdx];
			}
			this.appendEdges(path,subPath);
		}
	}
	,exportFillPath: function(handler,groupIndex) {
		var path = this.createPathFromEdgeMap(this.fillEdgeMaps[groupIndex]);
		var pos = new openfl_geom_Point(format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE,format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE);
		var fillStyleIdx = format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE | 0;
		if(path.length > 0) {
			handler.beginFills();
			var _g1 = 0;
			var _g = path.length;
			while(_g1 < _g) {
				var i = _g1++;
				var e = path[i];
				if(fillStyleIdx != e.fillStyleIdx) {
					if(fillStyleIdx != format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE) {
						handler.endFill();
					}
					fillStyleIdx = e.fillStyleIdx;
					pos = new openfl_geom_Point(format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE,format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE);
					try {
						var matrix;
						var fillStyle = this.fillStyles[fillStyleIdx - 1];
						if(fillStyle != null) {
							var _g2 = fillStyle.type;
							switch(_g2) {
							case 0:
								handler.beginFill(format_swf_utils_ColorUtils.rgb(fillStyle.rgb),format_swf_utils_ColorUtils.alpha(fillStyle.rgb));
								break;
							case 16:case 18:case 19:
								var colors = [];
								var alphas = [];
								var ratios = [];
								var gradientRecord;
								matrix = fillStyle.gradientMatrix.get_matrix().clone();
								matrix.tx /= 20;
								matrix.ty /= 20;
								var _g3 = 0;
								var _g21 = fillStyle.gradient.records.length;
								while(_g3 < _g21) {
									var gri = _g3++;
									gradientRecord = fillStyle.gradient.records[gri];
									colors.push(format_swf_utils_ColorUtils.rgb(gradientRecord.color));
									alphas.push(format_swf_utils_ColorUtils.alpha(gradientRecord.color));
									ratios.push(gradientRecord.ratio);
								}
								handler.beginGradientFill(fillStyle.type == 16 ? 0 : 1,colors,alphas,ratios,matrix,format_swf_data_consts_GradientSpreadMode.toEnum(fillStyle.gradient.spreadMode),format_swf_data_consts_GradientInterpolationMode.toEnum(fillStyle.gradient.interpolationMode),fillStyle.gradient.focalPoint);
								break;
							case 64:case 65:case 66:case 67:
								var m = fillStyle.bitmapMatrix;
								matrix = new openfl_geom_Matrix(m.scaleX / 20,m.rotateSkew0 / 20,m.rotateSkew1 / 20,m.scaleY / 20,m.translateX / 20,m.translateY / 20);
								handler.beginBitmapFill(fillStyle.bitmapId,matrix,fillStyle.type == 64 || fillStyle.type == 66,fillStyle.type == 64 || fillStyle.type == 65);
								break;
							}
						} else {
							handler.beginFill(16777215);
						}
					} catch( e1 ) {
						haxe_CallStack.lastException = e1;
						if (e1 instanceof js__$Boot_HaxeError) e1 = e1.val;
						if( js_Boot.__instanceof(e1,openfl_errors_Error) ) {
							handler.beginFill(0);
						} else throw(e1);
					}
				}
				if(!pos.equals(e.from)) {
					handler.moveTo(e.from.x,e.from.y);
				}
				if(js_Boot.__instanceof(e,format_swf_data_etc_CurvedEdge)) {
					var c = e;
					handler.curveTo(c.control.x,c.control.y,c.to.x,c.to.y);
				} else {
					handler.lineTo(e.to.x,e.to.y);
				}
				pos = e.to;
			}
			if(fillStyleIdx != format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE) {
				handler.endFill();
			}
			handler.endFills();
		}
	}
	,exportLinePath: function(handler,groupIndex) {
		var path = this.createPathFromEdgeMap(this.lineEdgeMaps[groupIndex]);
		var pos = new openfl_geom_Point(format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE,format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE);
		var lineStyleIdx = format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE | 0;
		var lineStyle;
		if(path.length > 0) {
			handler.beginLines();
			var _g1 = 0;
			var _g = path.length;
			while(_g1 < _g) {
				var i = _g1++;
				var e = path[i];
				if(lineStyleIdx != e.lineStyleIdx) {
					lineStyleIdx = e.lineStyleIdx;
					pos = new openfl_geom_Point(format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE,format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE);
					try {
						lineStyle = this.lineStyles[lineStyleIdx - 1];
					} catch( e1 ) {
						haxe_CallStack.lastException = e1;
						if (e1 instanceof js__$Boot_HaxeError) e1 = e1.val;
						if( js_Boot.__instanceof(e1,openfl_errors_Error) ) {
							lineStyle = null;
						} else throw(e1);
					}
					if(lineStyle != null) {
						var scaleMode = 2;
						if(lineStyle.noHScaleFlag && lineStyle.noVScaleFlag) {
							scaleMode = 1;
						} else if(lineStyle.noHScaleFlag) {
							scaleMode = 0;
						} else if(lineStyle.noVScaleFlag) {
							scaleMode = 3;
						}
						handler.lineStyle(lineStyle.width / 20,format_swf_utils_ColorUtils.rgb(lineStyle.color),format_swf_utils_ColorUtils.alpha(lineStyle.color),lineStyle.pixelHintingFlag,scaleMode,format_swf_data_consts_LineCapsStyle.toEnum(lineStyle.startCapsStyle),format_swf_data_consts_LineCapsStyle.toEnum(lineStyle.endCapsStyle),format_swf_data_consts_LineJointStyle.toEnum(lineStyle.jointStyle),lineStyle.miterLimitFactor);
						if(lineStyle.hasFillFlag) {
							var fillStyle = lineStyle.fillType;
							var _g2 = fillStyle.type;
							switch(_g2) {
							case 16:case 18:case 19:
								var colors = [];
								var alphas = [];
								var ratios = [];
								var gradientRecord;
								var matrix = fillStyle.gradientMatrix.get_matrix().clone();
								matrix.tx /= 20;
								matrix.ty /= 20;
								var _g3 = 0;
								var _g21 = fillStyle.gradient.records.length;
								while(_g3 < _g21) {
									var gri = _g3++;
									gradientRecord = fillStyle.gradient.records[gri];
									colors.push(format_swf_utils_ColorUtils.rgb(gradientRecord.color));
									alphas.push(format_swf_utils_ColorUtils.alpha(gradientRecord.color));
									ratios.push(gradientRecord.ratio);
								}
								handler.lineGradientStyle(fillStyle.type == 16 ? 0 : 1,colors,alphas,ratios,matrix,format_swf_data_consts_GradientSpreadMode.toEnum(fillStyle.gradient.spreadMode),format_swf_data_consts_GradientInterpolationMode.toEnum(fillStyle.gradient.interpolationMode),fillStyle.gradient.focalPoint);
								break;
							}
						}
					} else {
						handler.lineStyle(0);
					}
				}
				if(!e.from.equals(pos)) {
					handler.moveTo(e.from.x,e.from.y);
				}
				if(js_Boot.__instanceof(e,format_swf_data_etc_CurvedEdge)) {
					var c = e;
					handler.curveTo(c.control.x,c.control.y,c.to.x,c.to.y);
				} else {
					handler.lineTo(e.to.x,e.to.y);
				}
				pos = e.to;
			}
			handler.endLines();
		}
	}
	,createPathFromEdgeMap: function(edgeMap) {
		var newPath = [];
		var styleIdxArray = [];
		var styleIdx = edgeMap.keys();
		while(styleIdx.hasNext()) {
			var styleIdx1 = styleIdx.next();
			styleIdxArray.push(styleIdx1 | 0);
		}
		styleIdxArray.sort(function(a,b) {
			return a - b;
		});
		var _g1 = 0;
		var _g = styleIdxArray.length;
		while(_g1 < _g) {
			var i = _g1++;
			this.appendEdges(newPath,edgeMap.h[styleIdxArray[i]]);
		}
		return newPath;
	}
	,cleanEdgeMap: function(edgeMap) {
		var styleIdx = edgeMap.keys();
		while(styleIdx.hasNext()) {
			var styleIdx1 = styleIdx.next();
			var subPath = edgeMap.h[styleIdx1];
			if(subPath != null && subPath.length > 0) {
				var idx;
				var prevEdge = null;
				var tmpPath = [];
				this.createCoordMap(subPath);
				while(subPath.length > 0) {
					idx = 0;
					while(idx < subPath.length) if(prevEdge == null || prevEdge.to.equals(subPath[idx].from)) {
						var edge = subPath.splice(idx,1)[0];
						tmpPath.push(edge);
						this.removeEdgeFromCoordMap(edge);
						prevEdge = edge;
					} else {
						var edge1 = this.findNextEdgeInCoordMap(prevEdge);
						if(edge1 != null) {
							var _g1 = 0;
							var _g = subPath.length;
							while(_g1 < _g) {
								var i = _g1++;
								if(subPath[i] == edge1) {
									idx = i;
								}
							}
						} else {
							idx = 0;
							prevEdge = null;
						}
					}
				}
				edgeMap.h[styleIdx1] = tmpPath;
			}
		}
	}
	,createCoordMap: function(path) {
		this.coordMap = new haxe_ds_StringMap();
		var _g1 = 0;
		var _g = path.length;
		while(_g1 < _g) {
			var i = _g1++;
			var from = path[i].from;
			var key = from.x + "_" + from.y;
			var _this = this.coordMap;
			var coordMapArray = __map_reserved[key] != null ? _this.getReserved(key) : _this.h[key];
			if(coordMapArray == null) {
				var _this1 = this.coordMap;
				var value = [path[i]];
				if(__map_reserved[key] != null) {
					_this1.setReserved(key,value);
				} else {
					_this1.h[key] = value;
				}
			} else {
				coordMapArray.push(path[i]);
			}
		}
	}
	,removeEdgeFromCoordMap: function(edge) {
		var key = edge.from.x + "_" + edge.from.y;
		var _this = this.coordMap;
		var coordMapArray = __map_reserved[key] != null ? _this.getReserved(key) : _this.h[key];
		if(coordMapArray != null) {
			this.coordMap.remove(key);
		}
	}
	,findNextEdgeInCoordMap: function(edge) {
		var key = edge.to.x + "_" + edge.to.y;
		var _this = this.coordMap;
		var coordMapArray = __map_reserved[key] != null ? _this.getReserved(key) : _this.h[key];
		if(coordMapArray != null && coordMapArray.length > 0) {
			return coordMapArray[0];
		}
		return null;
	}
	,appendFillStyles: function(v1,v2) {
		var _g1 = 0;
		var _g = v2.length;
		while(_g1 < _g) {
			var i = _g1++;
			v1.push(v2[i]);
		}
	}
	,appendLineStyles: function(v1,v2) {
		var _g1 = 0;
		var _g = v2.length;
		while(_g1 < _g) {
			var i = _g1++;
			v1.push(v2[i]);
		}
	}
	,appendEdges: function(v1,v2) {
		var _g1 = 0;
		var _g = v2.length;
		while(_g1 < _g) {
			var i = _g1++;
			v1.push(v2[i]);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "\n" + format_swf_utils_StringUtils.repeat(indent) + "ShapeRecords:";
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.records[i].toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_data_SWFShape
};
var format_swf_data_SWFShapeRecord = function(data,level) {
	if(level == null) {
		level = 1;
	}
	if(data != null) {
		this.parse(data,level);
	}
};
$hxClasses["format.swf.data.SWFShapeRecord"] = format_swf_data_SWFShapeRecord;
format_swf_data_SWFShapeRecord.__name__ = ["format","swf","data","SWFShapeRecord"];
format_swf_data_SWFShapeRecord.prototype = {
	type: null
	,isEdgeRecord: null
	,get_type: function() {
		return 0;
	}
	,get_isEdgeRecord: function() {
		if(this.get_type() != 3) {
			return this.get_type() == 4;
		} else {
			return true;
		}
	}
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
	}
	,clone: function() {
		return null;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[SWFShapeRecord]";
	}
	,__class__: format_swf_data_SWFShapeRecord
	,__properties__: {get_isEdgeRecord:"get_isEdgeRecord",get_type:"get_type"}
};
var format_swf_data_SWFShapeRecordCurvedEdge = function(data,numBits,level) {
	if(level == null) {
		level = 1;
	}
	if(numBits == null) {
		numBits = 0;
	}
	this.numBits = numBits;
	format_swf_data_SWFShapeRecord.call(this,data,level);
};
$hxClasses["format.swf.data.SWFShapeRecordCurvedEdge"] = format_swf_data_SWFShapeRecordCurvedEdge;
format_swf_data_SWFShapeRecordCurvedEdge.__name__ = ["format","swf","data","SWFShapeRecordCurvedEdge"];
format_swf_data_SWFShapeRecordCurvedEdge.__super__ = format_swf_data_SWFShapeRecord;
format_swf_data_SWFShapeRecordCurvedEdge.prototype = $extend(format_swf_data_SWFShapeRecord.prototype,{
	controlDeltaX: null
	,controlDeltaY: null
	,anchorDeltaX: null
	,anchorDeltaY: null
	,numBits: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this.controlDeltaX = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,this.numBits);
		this.controlDeltaY = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,this.numBits);
		this.anchorDeltaX = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,this.numBits);
		this.anchorDeltaY = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,this.numBits);
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this.numBits = data.calculateMaxBits(true,[this.controlDeltaX,this.controlDeltaY,this.anchorDeltaX,this.anchorDeltaY]);
		if(this.numBits < 2) {
			this.numBits = 2;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,this.numBits - 2);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,this.numBits,this.controlDeltaX);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,this.numBits,this.controlDeltaY);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,this.numBits,this.anchorDeltaX);
		format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,this.numBits,this.anchorDeltaY);
	}
	,clone: function() {
		var record = new format_swf_data_SWFShapeRecordCurvedEdge();
		record.anchorDeltaX = this.anchorDeltaX;
		record.anchorDeltaY = this.anchorDeltaY;
		record.controlDeltaX = this.controlDeltaX;
		record.controlDeltaY = this.controlDeltaY;
		record.numBits = this.numBits;
		return record;
	}
	,get_type: function() {
		return 4;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[SWFShapeRecordCurvedEdge] " + "ControlDelta: " + this.controlDeltaX + "," + this.controlDeltaY + ", " + "AnchorDelta: " + this.anchorDeltaX + "," + this.anchorDeltaY;
	}
	,__class__: format_swf_data_SWFShapeRecordCurvedEdge
});
var format_swf_data_SWFShapeRecordEnd = function() {
	format_swf_data_SWFShapeRecord.call(this);
};
$hxClasses["format.swf.data.SWFShapeRecordEnd"] = format_swf_data_SWFShapeRecordEnd;
format_swf_data_SWFShapeRecordEnd.__name__ = ["format","swf","data","SWFShapeRecordEnd"];
format_swf_data_SWFShapeRecordEnd.__super__ = format_swf_data_SWFShapeRecord;
format_swf_data_SWFShapeRecordEnd.prototype = $extend(format_swf_data_SWFShapeRecord.prototype,{
	clone: function() {
		return new format_swf_data_SWFShapeRecordEnd();
	}
	,get_type: function() {
		return 1;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[SWFShapeRecordEnd]";
	}
	,__class__: format_swf_data_SWFShapeRecordEnd
});
var format_swf_data_SWFShapeRecordStraightEdge = function(data,numBits,level) {
	if(level == null) {
		level = 1;
	}
	if(numBits == null) {
		numBits = 0;
	}
	this.numBits = numBits;
	format_swf_data_SWFShapeRecord.call(this,data,level);
};
$hxClasses["format.swf.data.SWFShapeRecordStraightEdge"] = format_swf_data_SWFShapeRecordStraightEdge;
format_swf_data_SWFShapeRecordStraightEdge.__name__ = ["format","swf","data","SWFShapeRecordStraightEdge"];
format_swf_data_SWFShapeRecordStraightEdge.__super__ = format_swf_data_SWFShapeRecord;
format_swf_data_SWFShapeRecordStraightEdge.prototype = $extend(format_swf_data_SWFShapeRecord.prototype,{
	generalLineFlag: null
	,vertLineFlag: null
	,deltaY: null
	,deltaX: null
	,numBits: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		this.generalLineFlag = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.vertLineFlag = !this.generalLineFlag && format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.deltaX = this.generalLineFlag || !this.vertLineFlag ? format_swf__$SWFData_SWFData_$Impl_$.readSB(data,this.numBits) : 0;
		this.deltaY = this.generalLineFlag || this.vertLineFlag ? format_swf__$SWFData_SWFData_$Impl_$.readSB(data,this.numBits) : 0;
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		var deltas = [];
		if(this.generalLineFlag || !this.vertLineFlag) {
			deltas.push(this.deltaX);
		}
		if(this.generalLineFlag || this.vertLineFlag) {
			deltas.push(this.deltaY);
		}
		this.numBits = data.calculateMaxBits(true,deltas);
		if(this.numBits < 2) {
			this.numBits = 2;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,this.numBits - 2);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.generalLineFlag ? 1 : 0);
		if(!this.generalLineFlag) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.vertLineFlag ? 1 : 0);
		}
		var _g1 = 0;
		var _g = deltas.length;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,this.numBits,deltas[i] | 0);
		}
	}
	,clone: function() {
		var record = new format_swf_data_SWFShapeRecordStraightEdge();
		record.deltaX = this.deltaX;
		record.deltaY = this.deltaY;
		record.generalLineFlag = this.generalLineFlag;
		record.vertLineFlag = this.vertLineFlag;
		record.numBits = this.numBits;
		return record;
	}
	,get_type: function() {
		return 3;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "[SWFShapeRecordStraightEdge] ";
		if(this.generalLineFlag) {
			str += "General: " + this.deltaX + "," + this.deltaY;
		} else if(this.vertLineFlag) {
			str += "Vertical: " + this.deltaY;
		} else {
			str += "Horizontal: " + this.deltaX;
		}
		return str;
	}
	,__class__: format_swf_data_SWFShapeRecordStraightEdge
});
var format_swf_data_SWFShapeRecordStyleChange = function(data,states,fillBits,lineBits,level) {
	if(level == null) {
		level = 1;
	}
	if(lineBits == null) {
		lineBits = 0;
	}
	if(fillBits == null) {
		fillBits = 0;
	}
	if(states == null) {
		states = 0;
	}
	this.numLineBits = 0;
	this.numFillBits = 0;
	this.fillStyles = [];
	this.lineStyles = [];
	this.stateNewStyles = (states & 16) != 0;
	this.stateLineStyle = (states & 8) != 0;
	this.stateFillStyle1 = (states & 4) != 0;
	this.stateFillStyle0 = (states & 2) != 0;
	this.stateMoveTo = (states & 1) != 0;
	this.numFillBits = fillBits;
	this.numLineBits = lineBits;
	format_swf_data_SWFShapeRecord.call(this,data,level);
};
$hxClasses["format.swf.data.SWFShapeRecordStyleChange"] = format_swf_data_SWFShapeRecordStyleChange;
format_swf_data_SWFShapeRecordStyleChange.__name__ = ["format","swf","data","SWFShapeRecordStyleChange"];
format_swf_data_SWFShapeRecordStyleChange.__super__ = format_swf_data_SWFShapeRecord;
format_swf_data_SWFShapeRecordStyleChange.prototype = $extend(format_swf_data_SWFShapeRecord.prototype,{
	stateNewStyles: null
	,stateLineStyle: null
	,stateFillStyle1: null
	,stateFillStyle0: null
	,stateMoveTo: null
	,moveDeltaX: null
	,moveDeltaY: null
	,fillStyle0: null
	,fillStyle1: null
	,lineStyle: null
	,numFillBits: null
	,numLineBits: null
	,fillStyles: null
	,lineStyles: null
	,get_type: function() {
		return 2;
	}
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		if(this.stateMoveTo) {
			var moveBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,5);
			this.moveDeltaX = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,moveBits);
			this.moveDeltaY = format_swf__$SWFData_SWFData_$Impl_$.readSB(data,moveBits);
		}
		this.fillStyle0 = this.stateFillStyle0 ? format_swf__$SWFData_SWFData_$Impl_$.readUB(data,this.numFillBits) : 0;
		this.fillStyle1 = this.stateFillStyle1 ? format_swf__$SWFData_SWFData_$Impl_$.readUB(data,this.numFillBits) : 0;
		this.lineStyle = this.stateLineStyle ? format_swf__$SWFData_SWFData_$Impl_$.readUB(data,this.numLineBits) : 0;
		if(this.stateNewStyles) {
			data.resetBitsPending();
			var i;
			var fillStylesLen = this.readStyleArrayLength(data,level);
			var _g1 = 0;
			var _g = fillStylesLen;
			while(_g1 < _g) {
				var i1 = _g1++;
				this.fillStyles.push(format_swf__$SWFData_SWFData_$Impl_$.readFILLSTYLE(data,level));
			}
			var lineStylesLen = this.readStyleArrayLength(data,level);
			var _g11 = 0;
			var _g2 = lineStylesLen;
			while(_g11 < _g2) {
				var i2 = _g11++;
				this.lineStyles.push(level <= 3 ? format_swf__$SWFData_SWFData_$Impl_$.readLINESTYLE(data,level) : format_swf__$SWFData_SWFData_$Impl_$.readLINESTYLE2(data,level));
			}
			data.resetBitsPending();
			this.numFillBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
			this.numLineBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		}
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		if(this.stateMoveTo) {
			var moveBits = data.calculateMaxBits(true,[this.moveDeltaX,this.moveDeltaY]);
			format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,5,moveBits);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,moveBits,this.moveDeltaX);
			format_swf__$SWFData_SWFData_$Impl_$.writeSB(data,moveBits,this.moveDeltaY);
		}
		if(this.stateFillStyle0) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,this.numFillBits,this.fillStyle0);
		}
		if(this.stateFillStyle1) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,this.numFillBits,this.fillStyle1);
		}
		if(this.stateLineStyle) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,this.numLineBits,this.lineStyle);
		}
		if(this.stateNewStyles) {
			data.resetBitsPending();
			var i;
			var fillStylesLen = this.fillStyles.length;
			this.writeStyleArrayLength(data,fillStylesLen,level);
			var _g1 = 0;
			var _g = fillStylesLen;
			while(_g1 < _g) {
				var i1 = _g1++;
				this.fillStyles[i1].publish(data,level);
			}
			var lineStylesLen = this.lineStyles.length;
			this.writeStyleArrayLength(data,lineStylesLen,level);
			var _g11 = 0;
			var _g2 = lineStylesLen;
			while(_g11 < _g2) {
				var i2 = _g11++;
				this.lineStyles[i2].publish(data,level);
			}
			this.numFillBits = data.calculateMaxBits(false,[fillStylesLen]);
			this.numLineBits = data.calculateMaxBits(false,[lineStylesLen]);
			data.resetBitsPending();
			format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,this.numFillBits);
			format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,this.numLineBits);
		}
	}
	,readStyleArrayLength: function(data,level) {
		if(level == null) {
			level = 1;
		}
		var len = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		if(level >= 2 && len == 255) {
			len = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		return len;
	}
	,writeStyleArrayLength: function(data,length,level) {
		if(level == null) {
			level = 1;
		}
		if(level >= 2 && length > 254) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,255);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,length);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,length);
		}
	}
	,clone: function() {
		var record = new format_swf_data_SWFShapeRecordStyleChange();
		record.stateNewStyles = this.stateNewStyles;
		record.stateLineStyle = this.stateLineStyle;
		record.stateFillStyle1 = this.stateFillStyle1;
		record.stateFillStyle0 = this.stateFillStyle0;
		record.stateMoveTo = this.stateMoveTo;
		record.moveDeltaX = this.moveDeltaX;
		record.moveDeltaY = this.moveDeltaY;
		record.fillStyle0 = this.fillStyle0;
		record.fillStyle1 = this.fillStyle1;
		record.lineStyle = this.lineStyle;
		record.numFillBits = this.numFillBits;
		record.numLineBits = this.numLineBits;
		var i;
		var _g1 = 0;
		var _g = this.fillStyles.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			record.fillStyles.push(this.fillStyles[i1].clone());
		}
		var _g11 = 0;
		var _g2 = this.lineStyles.length;
		while(_g11 < _g2) {
			var i2 = _g11++;
			record.lineStyles.push(this.lineStyles[i2].clone());
		}
		return record;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "[SWFShapeRecordStyleChange] ";
		var cmds = [];
		if(this.stateMoveTo) {
			cmds.push("MoveTo: " + this.moveDeltaX + "," + this.moveDeltaY);
		}
		if(this.stateFillStyle0) {
			cmds.push("FillStyle0: " + this.fillStyle0);
		}
		if(this.stateFillStyle1) {
			cmds.push("FillStyle1: " + this.fillStyle1);
		}
		if(this.stateLineStyle) {
			cmds.push("LineStyle: " + this.lineStyle);
		}
		if(cmds.length > 0) {
			str += cmds.join(", ");
		}
		if(this.stateNewStyles) {
			var i;
			if(this.fillStyles.length > 0) {
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "New FillStyles:";
				var _g1 = 0;
				var _g = this.fillStyles.length;
				while(_g1 < _g) {
					var i1 = _g1++;
					str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + (i1 + 1) + "] " + this.fillStyles[i1].toString();
				}
			}
			if(this.lineStyles.length > 0) {
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "New LineStyles:";
				var _g11 = 0;
				var _g2 = this.lineStyles.length;
				while(_g11 < _g2) {
					var i2 = _g11++;
					str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + (i2 + 1) + "] " + this.lineStyles[i2].toString();
				}
			}
		}
		return str;
	}
	,__class__: format_swf_data_SWFShapeRecordStyleChange
});
var format_swf_data_SWFShapeWithStyle = function(data,level,unitDivisor) {
	if(unitDivisor == null) {
		unitDivisor = 20;
	}
	if(level == null) {
		level = 1;
	}
	this.initialFillStyles = [];
	this.initialLineStyles = [];
	format_swf_data_SWFShape.call(this,data,level,unitDivisor);
};
$hxClasses["format.swf.data.SWFShapeWithStyle"] = format_swf_data_SWFShapeWithStyle;
format_swf_data_SWFShapeWithStyle.__name__ = ["format","swf","data","SWFShapeWithStyle"];
format_swf_data_SWFShapeWithStyle.__super__ = format_swf_data_SWFShape;
format_swf_data_SWFShapeWithStyle.prototype = $extend(format_swf_data_SWFShape.prototype,{
	initialFillStyles: null
	,initialLineStyles: null
	,parse: function(data,level) {
		if(level == null) {
			level = 1;
		}
		data.resetBitsPending();
		var i;
		var fillStylesLen = this.readStyleArrayLength(data,level);
		var _g1 = 0;
		var _g = fillStylesLen;
		while(_g1 < _g) {
			var i1 = _g1++;
			this.initialFillStyles.push(format_swf__$SWFData_SWFData_$Impl_$.readFILLSTYLE(data,level));
		}
		var lineStylesLen = this.readStyleArrayLength(data,level);
		var _g11 = 0;
		var _g2 = lineStylesLen;
		while(_g11 < _g2) {
			var i2 = _g11++;
			this.initialLineStyles.push(level <= 3 ? format_swf__$SWFData_SWFData_$Impl_$.readLINESTYLE(data,level) : format_swf__$SWFData_SWFData_$Impl_$.readLINESTYLE2(data,level));
		}
		data.resetBitsPending();
		var numFillBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		var numLineBits = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.readShapeRecords(data,numFillBits,numLineBits,level);
	}
	,publish: function(data,level) {
		if(level == null) {
			level = 1;
		}
		data.resetBitsPending();
		var i;
		var fillStylesLen = this.initialFillStyles.length;
		this.writeStyleArrayLength(data,fillStylesLen,level);
		var _g1 = 0;
		var _g = fillStylesLen;
		while(_g1 < _g) {
			var i1 = _g1++;
			this.initialFillStyles[i1].publish(data,level);
		}
		var lineStylesLen = this.initialLineStyles.length;
		this.writeStyleArrayLength(data,lineStylesLen,level);
		var _g11 = 0;
		var _g2 = lineStylesLen;
		while(_g11 < _g2) {
			var i2 = _g11++;
			this.initialLineStyles[i2].publish(data,level);
		}
		var fillBits = data.calculateMaxBits(false,[this.getMaxFillStyleIndex()]);
		var lineBits = data.calculateMaxBits(false,[this.getMaxLineStyleIndex()]);
		data.resetBitsPending();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,fillBits);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,lineBits);
		this.writeShapeRecords(data,fillBits,lineBits,level);
	}
	,'export': function(handler) {
		this.fillStyles = this.initialFillStyles.slice();
		this.lineStyles = this.initialLineStyles.slice();
		format_swf_data_SWFShape.prototype["export"].call(this,handler);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var i;
		var str = "";
		if(this.initialFillStyles.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent) + "FillStyles:";
			var _g1 = 0;
			var _g = this.initialFillStyles.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + (i1 + 1) + "] " + this.initialFillStyles[i1].toString();
			}
		}
		if(this.initialLineStyles.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent) + "LineStyles:";
			var _g11 = 0;
			var _g2 = this.initialLineStyles.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + (i2 + 1) + "] " + this.initialLineStyles[i2].toString();
			}
		}
		return str + format_swf_data_SWFShape.prototype.toString.call(this,indent);
	}
	,readStyleArrayLength: function(data,level) {
		if(level == null) {
			level = 1;
		}
		var len = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		if(level >= 2 && len == 255) {
			len = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		return len;
	}
	,writeStyleArrayLength: function(data,length,level) {
		if(level == null) {
			level = 1;
		}
		if(level >= 2 && length > 254) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,255);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,length);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,length);
		}
	}
	,__class__: format_swf_data_SWFShapeWithStyle
});
var format_swf_data_SWFSoundEnvelope = function(data) {
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFSoundEnvelope"] = format_swf_data_SWFSoundEnvelope;
format_swf_data_SWFSoundEnvelope.__name__ = ["format","swf","data","SWFSoundEnvelope"];
format_swf_data_SWFSoundEnvelope.prototype = {
	pos44: null
	,leftLevel: null
	,rightLevel: null
	,parse: function(data) {
		this.pos44 = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		this.leftLevel = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.rightLevel = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,this.pos44);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.leftLevel);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.rightLevel);
	}
	,clone: function() {
		var soundEnvelope = new format_swf_data_SWFSoundEnvelope();
		soundEnvelope.pos44 = this.pos44;
		soundEnvelope.leftLevel = this.leftLevel;
		soundEnvelope.rightLevel = this.rightLevel;
		return soundEnvelope;
	}
	,toString: function() {
		return "[SWFSoundEnvelope]";
	}
	,__class__: format_swf_data_SWFSoundEnvelope
};
var format_swf_data_SWFSoundInfo = function(data) {
	this.envelopeRecords = [];
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFSoundInfo"] = format_swf_data_SWFSoundInfo;
format_swf_data_SWFSoundInfo.__name__ = ["format","swf","data","SWFSoundInfo"];
format_swf_data_SWFSoundInfo.prototype = {
	syncStop: null
	,syncNoMultiple: null
	,hasEnvelope: null
	,hasLoops: null
	,hasOutPoint: null
	,hasInPoint: null
	,outPoint: null
	,inPoint: null
	,loopCount: null
	,envelopeRecords: null
	,parse: function(data) {
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.syncStop = (flags & 32) != 0;
		this.syncNoMultiple = (flags & 16) != 0;
		this.hasEnvelope = (flags & 8) != 0;
		this.hasLoops = (flags & 4) != 0;
		this.hasOutPoint = (flags & 2) != 0;
		this.hasInPoint = (flags & 1) != 0;
		if(this.hasInPoint) {
			this.inPoint = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		}
		if(this.hasOutPoint) {
			this.outPoint = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		}
		if(this.hasLoops) {
			this.loopCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasEnvelope) {
			var envPoints = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
			var _g1 = 0;
			var _g = envPoints;
			while(_g1 < _g) {
				var i = _g1++;
				this.envelopeRecords.push(format_swf__$SWFData_SWFData_$Impl_$.readSOUNDENVELOPE(data));
			}
		}
	}
	,publish: function(data) {
		var flags = 0;
		if(this.syncStop) {
			flags |= 32;
		}
		if(this.syncNoMultiple) {
			flags |= 16;
		}
		if(this.hasEnvelope) {
			flags |= 8;
		}
		if(this.hasLoops) {
			flags |= 4;
		}
		if(this.hasOutPoint) {
			flags |= 2;
		}
		if(this.hasInPoint) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
		if(this.hasInPoint) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,this.inPoint);
		}
		if(this.hasOutPoint) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,this.outPoint);
		}
		if(this.hasLoops) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.loopCount);
		}
		if(this.hasEnvelope) {
			var envPoints = this.envelopeRecords.length;
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,envPoints);
			var _g1 = 0;
			var _g = envPoints;
			while(_g1 < _g) {
				var i = _g1++;
				format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDENVELOPE(data,this.envelopeRecords[i]);
			}
		}
	}
	,clone: function() {
		var soundInfo = new format_swf_data_SWFSoundInfo();
		soundInfo.syncStop = this.syncStop;
		soundInfo.syncNoMultiple = this.syncNoMultiple;
		soundInfo.hasEnvelope = this.hasEnvelope;
		soundInfo.hasLoops = this.hasLoops;
		soundInfo.hasOutPoint = this.hasOutPoint;
		soundInfo.hasInPoint = this.hasInPoint;
		soundInfo.outPoint = this.outPoint;
		soundInfo.inPoint = this.inPoint;
		soundInfo.loopCount = this.loopCount;
		var _g1 = 0;
		var _g = this.envelopeRecords.length;
		while(_g1 < _g) {
			var i = _g1++;
			soundInfo.envelopeRecords.push(this.envelopeRecords[i].clone());
		}
		return soundInfo;
	}
	,toString: function() {
		return "[SWFSoundInfo]";
	}
	,__class__: format_swf_data_SWFSoundInfo
};
var format_swf_data_SWFSymbol = function(data) {
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFSymbol"] = format_swf_data_SWFSymbol;
format_swf_data_SWFSymbol.__name__ = ["format","swf","data","SWFSymbol"];
format_swf_data_SWFSymbol.create = function(aTagID,aName) {
	var swfSymbol = new format_swf_data_SWFSymbol();
	swfSymbol.tagId = aTagID;
	swfSymbol.name = aName;
	return swfSymbol;
};
format_swf_data_SWFSymbol.prototype = {
	tagId: null
	,name: null
	,parse: function(data) {
		this.tagId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.name = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.tagId);
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(data,this.name);
	}
	,toString: function() {
		return "TagID: " + this.tagId + ", Name: " + this.name;
	}
	,__class__: format_swf_data_SWFSymbol
};
var format_swf_data_SWFTextRecord = function(data,glyphBits,advanceBits,previousRecord,level) {
	if(level == null) {
		level = 1;
	}
	if(advanceBits == null) {
		advanceBits = 0;
	}
	if(glyphBits == null) {
		glyphBits = 0;
	}
	this.glyphEntries = [];
	if(data != null) {
		this.parse(data,glyphBits,advanceBits,previousRecord,level);
	}
};
$hxClasses["format.swf.data.SWFTextRecord"] = format_swf_data_SWFTextRecord;
format_swf_data_SWFTextRecord.__name__ = ["format","swf","data","SWFTextRecord"];
format_swf_data_SWFTextRecord.prototype = {
	type: null
	,hasFont: null
	,hasColor: null
	,hasXOffset: null
	,hasYOffset: null
	,fontId: null
	,textColor: null
	,textHeight: null
	,xOffset: null
	,yOffset: null
	,glyphEntries: null
	,_level: null
	,parse: function(data,glyphBits,advanceBits,previousRecord,level) {
		if(level == null) {
			level = 1;
		}
		this._level = level;
		var styles = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.type = styles >> 7;
		this.hasFont = (styles & 8) != 0;
		this.hasColor = (styles & 4) != 0;
		this.hasYOffset = (styles & 2) != 0;
		this.hasXOffset = (styles & 1) != 0;
		if(this.hasFont) {
			this.fontId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		} else if(previousRecord != null) {
			this.fontId = previousRecord.fontId;
		}
		if(this.hasColor) {
			this.textColor = level < 2 ? format_swf__$SWFData_SWFData_$Impl_$.readRGB(data) : format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		} else if(previousRecord != null) {
			this.textColor = previousRecord.textColor;
		}
		if(this.hasXOffset) {
			this.xOffset = format_swf__$SWFData_SWFData_$Impl_$.readSI16(data);
		} else if(previousRecord != null) {
			this.xOffset = previousRecord.xOffset;
		}
		if(this.hasYOffset) {
			this.yOffset = format_swf__$SWFData_SWFData_$Impl_$.readSI16(data);
		} else if(previousRecord != null) {
			this.yOffset = previousRecord.yOffset;
		}
		if(this.hasFont) {
			this.textHeight = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		} else if(previousRecord != null) {
			this.textHeight = previousRecord.textHeight;
		}
		var glyphCount = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var _g1 = 0;
		var _g = glyphCount;
		while(_g1 < _g) {
			var i = _g1++;
			this.glyphEntries.push(format_swf__$SWFData_SWFData_$Impl_$.readGLYPHENTRY(data,glyphBits,advanceBits));
		}
	}
	,publish: function(data,glyphBits,advanceBits,previousRecord,level) {
		if(level == null) {
			level = 1;
		}
		var flags = this.type << 7;
		this.hasFont = previousRecord == null || previousRecord.fontId != this.fontId || previousRecord.textHeight != this.textHeight;
		this.hasColor = previousRecord == null || previousRecord.textColor != this.textColor;
		this.hasXOffset = previousRecord == null || previousRecord.xOffset != this.xOffset;
		this.hasYOffset = previousRecord == null || previousRecord.yOffset != this.yOffset;
		if(this.hasFont) {
			flags |= 8;
		}
		if(this.hasColor) {
			flags |= 4;
		}
		if(this.hasYOffset) {
			flags |= 2;
		}
		if(this.hasXOffset) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
		if(this.hasFont) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.fontId);
		}
		if(this.hasColor) {
			if(level >= 2) {
				format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.textColor);
			} else {
				format_swf__$SWFData_SWFData_$Impl_$.writeRGB(data,this.textColor);
			}
		}
		if(this.hasXOffset) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSI16(data,this.xOffset);
		}
		if(this.hasYOffset) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSI16(data,this.yOffset);
		}
		if(this.hasFont) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.textHeight);
		}
		var glyphCount = this.glyphEntries.length;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,glyphCount);
		var _g1 = 0;
		var _g = glyphCount;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeGLYPHENTRY(data,this.glyphEntries[i],glyphBits,advanceBits);
		}
	}
	,clone: function() {
		var record = new format_swf_data_SWFTextRecord();
		record.type = this.type;
		record.hasFont = this.hasFont;
		record.hasColor = this.hasColor;
		record.hasXOffset = this.hasXOffset;
		record.hasYOffset = this.hasYOffset;
		record.fontId = this.fontId;
		record.textColor = this.textColor;
		record.textHeight = this.textHeight;
		record.xOffset = this.xOffset;
		record.yOffset = this.yOffset;
		var _g1 = 0;
		var _g = this.glyphEntries.length;
		while(_g1 < _g) {
			var i = _g1++;
			record.glyphEntries.push(this.glyphEntries[i].clone());
		}
		return record;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var params = ["Glyphs: " + Std.string(this.glyphEntries.length)];
		if(this.hasFont) {
			params.push("FontID: " + this.fontId);
			params.push("Height: " + this.textHeight);
		}
		if(this.hasColor) {
			params.push("Color: " + (this._level <= 2 ? format_swf_utils_ColorUtils.rgbToString(this.textColor) : format_swf_utils_ColorUtils.rgbaToString(this.textColor)));
		}
		if(this.hasXOffset) {
			params.push("XOffset: " + this.xOffset);
		}
		if(this.hasYOffset) {
			params.push("YOffset: " + this.yOffset);
		}
		var str = params.join(", ");
		var _g1 = 0;
		var _g = this.glyphEntries.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.glyphEntries[i].toString();
		}
		return str;
	}
	,__class__: format_swf_data_SWFTextRecord
};
var format_swf_data_SWFZoneData = function(data) {
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFZoneData"] = format_swf_data_SWFZoneData;
format_swf_data_SWFZoneData.__name__ = ["format","swf","data","SWFZoneData"];
format_swf_data_SWFZoneData.prototype = {
	alignmentCoordinate: null
	,range: null
	,parse: function(data) {
		this.alignmentCoordinate = format_swf__$SWFData_SWFData_$Impl_$.readFLOAT16(data);
		this.range = format_swf__$SWFData_SWFData_$Impl_$.readFLOAT16(data);
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT16(data,this.alignmentCoordinate);
		format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT16(data,this.range);
	}
	,toString: function() {
		return "(" + this.alignmentCoordinate + "," + this.range + ")";
	}
	,__class__: format_swf_data_SWFZoneData
};
var format_swf_data_SWFZoneRecord = function(data) {
	this.zoneData = [];
	if(data != null) {
		this.parse(data);
	}
};
$hxClasses["format.swf.data.SWFZoneRecord"] = format_swf_data_SWFZoneRecord;
format_swf_data_SWFZoneRecord.__name__ = ["format","swf","data","SWFZoneRecord"];
format_swf_data_SWFZoneRecord.prototype = {
	maskX: null
	,maskY: null
	,zoneData: null
	,parse: function(data) {
		var numZoneData = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var _g1 = 0;
		var _g = numZoneData;
		while(_g1 < _g) {
			var i = _g1++;
			this.zoneData.push(format_swf__$SWFData_SWFData_$Impl_$.readZONEDATA(data));
		}
		var mask = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.maskX = (mask & 1) != 0;
		this.maskY = (mask & 2) != 0;
	}
	,publish: function(data) {
		var numZoneData = this.zoneData.length;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,numZoneData);
		var _g1 = 0;
		var _g = numZoneData;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeZONEDATA(data,this.zoneData[i]);
		}
		var mask = 0;
		if(this.maskX) {
			mask |= 1;
		}
		if(this.maskY) {
			mask |= 2;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,mask);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "MaskY: " + Std.string(this.maskY) + ", MaskX: " + Std.string(this.maskX);
		var _g1 = 0;
		var _g = this.zoneData.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += ", " + i + ": " + this.zoneData[i].toString();
		}
		return str;
	}
	,__class__: format_swf_data_SWFZoneRecord
};
var format_swf_data_actions_IAction = function() { };
$hxClasses["format.swf.data.actions.IAction"] = format_swf_data_actions_IAction;
format_swf_data_actions_IAction.__name__ = ["format","swf","data","actions","IAction"];
format_swf_data_actions_IAction.prototype = {
	get_lengthWithHeader: null
	,code: null
	,length: null
	,lengthWithHeader: null
	,pos: null
	,parse: null
	,publish: null
	,clone: null
	,toString: null
	,__class__: format_swf_data_actions_IAction
	,__properties__: {get_lengthWithHeader:"get_lengthWithHeader"}
};
var format_swf_data_actions_Action = function(code,length,pos) {
	this.code = code;
	this.length = length;
	this.pos = pos;
};
$hxClasses["format.swf.data.actions.Action"] = format_swf_data_actions_Action;
format_swf_data_actions_Action.__name__ = ["format","swf","data","actions","Action"];
format_swf_data_actions_Action.__interfaces__ = [format_swf_data_actions_IAction];
format_swf_data_actions_Action.resolveOffsets = function(actions) {
	var action;
	var n = actions.data.get_length();
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		action = actions.data.get(i);
		if(js_Boot.__instanceof(action,format_swf_data_actions_IActionBranch)) {
			var j = 0;
			var found = false;
			var actionBranch = action;
			var targetPos = actionBranch.pos + actionBranch.get_lengthWithHeader() + actionBranch.branchOffset;
			if(targetPos <= actionBranch.pos) {
				j = i;
				while(j >= 0) {
					if(targetPos == actions.data.get(j).pos) {
						found = true;
						break;
					}
					--j;
				}
			} else {
				while(j < n) {
					if(targetPos == actions.data.get(j).pos) {
						found = true;
						break;
					}
					++j;
				}
				if(!found) {
					action = actions.data.get(j - 1);
					if(targetPos == action.pos + action.get_lengthWithHeader()) {
						j = -1;
						found = true;
					}
				}
			}
			actionBranch.branchIndex = found ? j : -2;
		}
	}
};
format_swf_data_actions_Action.prototype = {
	code: null
	,length: null
	,lengthWithHeader: null
	,pos: null
	,get_lengthWithHeader: function() {
		return this.length + (this.code >= 128 ? 3 : 1);
	}
	,parse: function(data) {
	}
	,publish: function(data) {
		this.write(data);
	}
	,clone: function() {
		return new format_swf_data_actions_Action(this.code,this.length,this.pos);
	}
	,write: function(data,body) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.code);
		if(this.code >= 128) {
			if(body != null && format_swf__$SWFData_SWFData_$Impl_$.get_length(body) > 0) {
				this.length = format_swf__$SWFData_SWFData_$Impl_$.get_length(body);
				format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.length);
				data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
			} else {
				this.length = 0;
				throw new js__$Boot_HaxeError(new openfl_errors_Error("Action body null or empty."));
			}
		} else {
			this.length = 0;
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[Action] Code: " + StringTools.hex(this.code) + ", Length: " + this.length;
	}
	,__class__: format_swf_data_actions_Action
	,__properties__: {get_lengthWithHeader:"get_lengthWithHeader"}
};
var format_swf_data_actions_ActionUnknown = function(code,length,pos) {
	format_swf_data_actions_Action.call(this,code,length,pos);
};
$hxClasses["format.swf.data.actions.ActionUnknown"] = format_swf_data_actions_ActionUnknown;
format_swf_data_actions_ActionUnknown.__name__ = ["format","swf","data","actions","ActionUnknown"];
format_swf_data_actions_ActionUnknown.__interfaces__ = [format_swf_data_actions_IAction];
format_swf_data_actions_ActionUnknown.__super__ = format_swf_data_actions_Action;
format_swf_data_actions_ActionUnknown.prototype = $extend(format_swf_data_actions_Action.prototype,{
	parse: function(data) {
		if(this.length > 0) {
			format_swf__$SWFData_SWFData_$Impl_$.skipBytes(data,this.length);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[????] Code: " + StringTools.hex(this.code) + ", Length: " + this.length;
	}
	,__class__: format_swf_data_actions_ActionUnknown
});
var format_swf_data_actions_IActionBranch = function() { };
$hxClasses["format.swf.data.actions.IActionBranch"] = format_swf_data_actions_IActionBranch;
format_swf_data_actions_IActionBranch.__name__ = ["format","swf","data","actions","IActionBranch"];
format_swf_data_actions_IActionBranch.__interfaces__ = [format_swf_data_actions_IAction];
format_swf_data_actions_IActionBranch.prototype = {
	branchOffset: null
	,branchIndex: null
	,__class__: format_swf_data_actions_IActionBranch
};
var format_swf_data_actions_swf3_ActionStop = function(code,length,pos) {
	format_swf_data_actions_Action.call(this,code,length,pos);
};
$hxClasses["format.swf.data.actions.swf3.ActionStop"] = format_swf_data_actions_swf3_ActionStop;
format_swf_data_actions_swf3_ActionStop.__name__ = ["format","swf","data","actions","swf3","ActionStop"];
format_swf_data_actions_swf3_ActionStop.__interfaces__ = [format_swf_data_actions_IAction];
format_swf_data_actions_swf3_ActionStop.__super__ = format_swf_data_actions_Action;
format_swf_data_actions_swf3_ActionStop.prototype = $extend(format_swf_data_actions_Action.prototype,{
	toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[ActionStop]";
	}
	,__class__: format_swf_data_actions_swf3_ActionStop
});
var format_swf_data_consts_BitmapFormat = function() { };
$hxClasses["format.swf.data.consts.BitmapFormat"] = format_swf_data_consts_BitmapFormat;
format_swf_data_consts_BitmapFormat.__name__ = ["format","swf","data","consts","BitmapFormat"];
format_swf_data_consts_BitmapFormat.toString = function(bitmapFormat) {
	switch(bitmapFormat) {
	case 3:
		return "8 BPP";
	case 4:
		return "15 BPP";
	case 5:
		return "24 BPP";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_BitmapType = function() { };
$hxClasses["format.swf.data.consts.BitmapType"] = format_swf_data_consts_BitmapType;
format_swf_data_consts_BitmapType.__name__ = ["format","swf","data","consts","BitmapType"];
format_swf_data_consts_BitmapType.toString = function(bitmapFormat) {
	switch(bitmapFormat) {
	case 1:
		return "JPEG";
	case 2:
		return "GIF89a";
	case 3:
		return "PNG";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_BlendMode = function() { };
$hxClasses["format.swf.data.consts.BlendMode"] = format_swf_data_consts_BlendMode;
format_swf_data_consts_BlendMode.__name__ = ["format","swf","data","consts","BlendMode"];
format_swf_data_consts_BlendMode.toString = function(blendMode) {
	switch(blendMode) {
	case 0:case 1:
		return "normal";
	case 2:
		return "layer";
	case 3:
		return "multiply";
	case 4:
		return "screen";
	case 5:
		return "lighten";
	case 6:
		return "darken";
	case 7:
		return "difference";
	case 8:
		return "add";
	case 9:
		return "subtract";
	case 10:
		return "invert";
	case 11:
		return "alpha";
	case 12:
		return "erase";
	case 13:
		return "overlay";
	case 14:
		return "hardlight";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_CSMTableHint = function() { };
$hxClasses["format.swf.data.consts.CSMTableHint"] = format_swf_data_consts_CSMTableHint;
format_swf_data_consts_CSMTableHint.__name__ = ["format","swf","data","consts","CSMTableHint"];
format_swf_data_consts_CSMTableHint.toString = function(csmTableHint) {
	switch(csmTableHint) {
	case 0:
		return "thin";
	case 1:
		return "medium";
	case 2:
		return "thick";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_GradientInterpolationMode = function() { };
$hxClasses["format.swf.data.consts.GradientInterpolationMode"] = format_swf_data_consts_GradientInterpolationMode;
format_swf_data_consts_GradientInterpolationMode.__name__ = ["format","swf","data","consts","GradientInterpolationMode"];
format_swf_data_consts_GradientInterpolationMode.toEnum = function(interpolationMode) {
	switch(interpolationMode) {
	case 0:
		return 1;
	case 1:
		return 0;
	default:
		return 1;
	}
};
format_swf_data_consts_GradientInterpolationMode.toString = function(interpolationMode) {
	switch(interpolationMode) {
	case 0:
		return openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.toString(1).toLowerCase();
	case 1:
		return openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.toString(0).toLowerCase();
	default:
		return openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.toString(1).toLowerCase();
	}
};
var format_swf_data_consts_GradientSpreadMode = function() { };
$hxClasses["format.swf.data.consts.GradientSpreadMode"] = format_swf_data_consts_GradientSpreadMode;
format_swf_data_consts_GradientSpreadMode.__name__ = ["format","swf","data","consts","GradientSpreadMode"];
format_swf_data_consts_GradientSpreadMode.toEnum = function(spreadMode) {
	switch(spreadMode) {
	case 0:
		return 0;
	case 1:
		return 1;
	case 2:
		return 2;
	default:
		return 0;
	}
};
format_swf_data_consts_GradientSpreadMode.toString = function(spreadMode) {
	switch(spreadMode) {
	case 0:
		return openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.toString(0).toLowerCase();
	case 1:
		return openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.toString(1).toLowerCase();
	case 2:
		return openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.toString(2).toLowerCase();
	default:
		return "unknown";
	}
};
var format_swf_data_consts_LineCapsStyle = function() { };
$hxClasses["format.swf.data.consts.LineCapsStyle"] = format_swf_data_consts_LineCapsStyle;
format_swf_data_consts_LineCapsStyle.__name__ = ["format","swf","data","consts","LineCapsStyle"];
format_swf_data_consts_LineCapsStyle.toEnum = function(lineCapsStyle) {
	switch(lineCapsStyle) {
	case 0:
		break;
	case 1:
		break;
	case 2:
		break;
	}
	return 1;
};
format_swf_data_consts_LineCapsStyle.toString = function(lineCapsStyle) {
	switch(lineCapsStyle) {
	case 0:
		return openfl_display__$CapsStyle_CapsStyle_$Impl_$.toString(1).toLowerCase();
	case 1:
		return openfl_display__$CapsStyle_CapsStyle_$Impl_$.toString(0).toLowerCase();
	case 2:
		return openfl_display__$CapsStyle_CapsStyle_$Impl_$.toString(2).toLowerCase();
	default:
		return "unknown";
	}
};
var format_swf_data_consts_LineJointStyle = function() { };
$hxClasses["format.swf.data.consts.LineJointStyle"] = format_swf_data_consts_LineJointStyle;
format_swf_data_consts_LineJointStyle.__name__ = ["format","swf","data","consts","LineJointStyle"];
format_swf_data_consts_LineJointStyle.toEnum = function(lineJointStyle) {
	switch(lineJointStyle) {
	case 0:
		return 2;
	case 1:
		return 0;
	case 2:
		return 1;
	default:
		return 2;
	}
};
format_swf_data_consts_LineJointStyle.toString = function(lineJointStyle) {
	switch(lineJointStyle) {
	case 0:
		return openfl_display__$JointStyle_JointStyle_$Impl_$.toString(2).toLowerCase();
	case 1:
		return openfl_display__$JointStyle_JointStyle_$Impl_$.toString(0).toLowerCase();
	case 2:
		return openfl_display__$JointStyle_JointStyle_$Impl_$.toString(1).toLowerCase();
	default:
		return "null";
	}
};
var format_swf_data_consts_SoundCompression = function() { };
$hxClasses["format.swf.data.consts.SoundCompression"] = format_swf_data_consts_SoundCompression;
format_swf_data_consts_SoundCompression.__name__ = ["format","swf","data","consts","SoundCompression"];
format_swf_data_consts_SoundCompression.toString = function(soundCompression) {
	switch(soundCompression) {
	case 0:
		return "Uncompressed Native Endian";
	case 1:
		return "ADPCM";
	case 2:
		return "MP3";
	case 3:
		return "Uncompressed Little Endian";
	case 4:
		return "Nellymoser 16kHz";
	case 5:
		return "Nellymoser 8kHz";
	case 6:
		return "Nellymoser";
	case 11:
		return "Speex";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_SoundRate = function() { };
$hxClasses["format.swf.data.consts.SoundRate"] = format_swf_data_consts_SoundRate;
format_swf_data_consts_SoundRate.__name__ = ["format","swf","data","consts","SoundRate"];
format_swf_data_consts_SoundRate.toString = function(soundRate) {
	switch(soundRate) {
	case 0:
		return "5.5kHz";
	case 1:
		return "11kHz";
	case 2:
		return "22kHz";
	case 3:
		return "44kHz";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_SoundSize = function() { };
$hxClasses["format.swf.data.consts.SoundSize"] = format_swf_data_consts_SoundSize;
format_swf_data_consts_SoundSize.__name__ = ["format","swf","data","consts","SoundSize"];
format_swf_data_consts_SoundSize.toString = function(soundSize) {
	switch(soundSize) {
	case 0:
		return "8bit";
	case 1:
		return "16bit";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_SoundType = function() { };
$hxClasses["format.swf.data.consts.SoundType"] = format_swf_data_consts_SoundType;
format_swf_data_consts_SoundType.__name__ = ["format","swf","data","consts","SoundType"];
format_swf_data_consts_SoundType.toString = function(soundType) {
	switch(soundType) {
	case 0:
		return "mono";
	case 1:
		return "stereo";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_VideoCodecID = function() { };
$hxClasses["format.swf.data.consts.VideoCodecID"] = format_swf_data_consts_VideoCodecID;
format_swf_data_consts_VideoCodecID.__name__ = ["format","swf","data","consts","VideoCodecID"];
format_swf_data_consts_VideoCodecID.toString = function(codecId) {
	switch(codecId) {
	case 2:
		return "H.263";
	case 3:
		return "Screen Video";
	case 4:
		return "VP6";
	case 5:
		return "VP6 With Alpha";
	case 6:
		return "Screen Video V2";
	default:
		return "unknown";
	}
};
var format_swf_data_consts_VideoDeblockingType = function() { };
$hxClasses["format.swf.data.consts.VideoDeblockingType"] = format_swf_data_consts_VideoDeblockingType;
format_swf_data_consts_VideoDeblockingType.__name__ = ["format","swf","data","consts","VideoDeblockingType"];
format_swf_data_consts_VideoDeblockingType.toString = function(deblockingType) {
	switch(deblockingType) {
	case 0:
		return "videopacket";
	case 1:
		return "off";
	case 2:
		return "level 1";
	case 3:
		return "level 2";
	case 4:
		return "level 3";
	case 5:
		return "level 4";
	default:
		return "unknown";
	}
};
var format_swf_data_etc_IEdge = function() { };
$hxClasses["format.swf.data.etc.IEdge"] = format_swf_data_etc_IEdge;
format_swf_data_etc_IEdge.__name__ = ["format","swf","data","etc","IEdge"];
format_swf_data_etc_IEdge.prototype = {
	from: null
	,to: null
	,lineStyleIdx: null
	,fillStyleIdx: null
	,reverseWithNewFillStyle: null
	,__class__: format_swf_data_etc_IEdge
};
var format_swf_data_etc_StraightEdge = function(aFrom,aTo,aLineStyleIdx,aFillStyleIdx) {
	if(aFillStyleIdx == null) {
		aFillStyleIdx = 0;
	}
	if(aLineStyleIdx == null) {
		aLineStyleIdx = 0;
	}
	this.from = aFrom;
	this.to = aTo;
	this.lineStyleIdx = aLineStyleIdx;
	this.fillStyleIdx = aFillStyleIdx;
};
$hxClasses["format.swf.data.etc.StraightEdge"] = format_swf_data_etc_StraightEdge;
format_swf_data_etc_StraightEdge.__name__ = ["format","swf","data","etc","StraightEdge"];
format_swf_data_etc_StraightEdge.__interfaces__ = [format_swf_data_etc_IEdge];
format_swf_data_etc_StraightEdge.prototype = {
	from: null
	,to: null
	,lineStyleIdx: null
	,fillStyleIdx: null
	,reverseWithNewFillStyle: function(newFillStyleIdx) {
		return new format_swf_data_etc_StraightEdge(this.to,this.from,this.lineStyleIdx,newFillStyleIdx);
	}
	,toString: function() {
		return "stroke:" + this.lineStyleIdx + ", fill:" + this.fillStyleIdx + ", start:" + this.from.toString() + ", end:" + this.to.toString();
	}
	,__class__: format_swf_data_etc_StraightEdge
};
var format_swf_data_etc_CurvedEdge = function(aFrom,aControl,aTo,aLineStyleIdx,aFillStyleIdx) {
	if(aFillStyleIdx == null) {
		aFillStyleIdx = 0;
	}
	if(aLineStyleIdx == null) {
		aLineStyleIdx = 0;
	}
	format_swf_data_etc_StraightEdge.call(this,aFrom,aTo,aLineStyleIdx,aFillStyleIdx);
	this.control = aControl;
};
$hxClasses["format.swf.data.etc.CurvedEdge"] = format_swf_data_etc_CurvedEdge;
format_swf_data_etc_CurvedEdge.__name__ = ["format","swf","data","etc","CurvedEdge"];
format_swf_data_etc_CurvedEdge.__interfaces__ = [format_swf_data_etc_IEdge];
format_swf_data_etc_CurvedEdge.__super__ = format_swf_data_etc_StraightEdge;
format_swf_data_etc_CurvedEdge.prototype = $extend(format_swf_data_etc_StraightEdge.prototype,{
	control: null
	,reverseWithNewFillStyle: function(newFillStyleIdx) {
		return new format_swf_data_etc_CurvedEdge(this.to,this.control,this.from,this.lineStyleIdx,newFillStyleIdx);
	}
	,toString: function() {
		return "stroke:" + this.lineStyleIdx + ", fill:" + this.fillStyleIdx + ", start:" + this.from.toString() + ", control:" + this.control.toString() + ", end:" + this.to.toString();
	}
	,__class__: format_swf_data_etc_CurvedEdge
});
var format_swf_data_etc_MPEGFrame = function() {
	this.samples = 1152;
	this.init();
};
$hxClasses["format.swf.data.etc.MPEGFrame"] = format_swf_data_etc_MPEGFrame;
format_swf_data_etc_MPEGFrame.__name__ = ["format","swf","data","etc","MPEGFrame"];
format_swf_data_etc_MPEGFrame.prototype = {
	version: null
	,layer: null
	,bitrate: null
	,samplingrate: null
	,padding: null
	,channelMode: null
	,channelModeExt: null
	,copyright: null
	,original: null
	,emphasis: null
	,_header: null
	,data: null
	,_crc: null
	,crc: null
	,size: null
	,hasCRC: null
	,samples: null
	,get_crc: function() {
		this._crc.position = 0;
		return this._crc.readUnsignedShort();
	}
	,get_size: function() {
		var ret = 0;
		if(this.layer == 0) {
			ret = Math.floor(12000.0 * this.bitrate / this.samplingrate);
			if(this.padding) {
				++ret;
			}
			ret <<= 2;
		} else {
			ret = Math.floor((this.version == 0 ? 144000.0 : 72000.0) * this.bitrate / this.samplingrate);
			if(this.padding) {
				++ret;
			}
		}
		return ret - 4 - (this.hasCRC ? 2 : 0);
	}
	,setHeaderByteAt: function(index,value) {
		switch(index) {
		case 0:
			if(value != 255) {
				throw new js__$Boot_HaxeError(new openfl_errors_Error("Not a MPEG header."));
			}
			break;
		case 1:
			if((value & 224) != 224) {
				throw new js__$Boot_HaxeError(new openfl_errors_Error("Not a MPEG header."));
			}
			var mpegVersionBits = (value & 24) >> 3;
			switch(mpegVersionBits) {
			case 2:
				this.version = 1;
				break;
			case 3:
				this.version = 0;
				break;
			default:
				throw new js__$Boot_HaxeError(new openfl_errors_Error("Unsupported MPEG version."));
			}
			var mpegLayerBits = (value & 6) >> 1;
			if(mpegLayerBits == 1) {
				this.layer = 2;
			} else {
				throw new js__$Boot_HaxeError(new openfl_errors_Error("Unsupported MPEG layer."));
			}
			this.hasCRC = (value & 1) == 0;
			break;
		case 2:
			var bitrateIndex = (value & 240) >> 4;
			if(bitrateIndex == 0 || bitrateIndex == 15) {
				throw new js__$Boot_HaxeError(new openfl_errors_Error("Unsupported bitrate index."));
			}
			this.bitrate = format_swf_data_etc_MPEGFrame.mpegBitrates[this.version][this.layer][bitrateIndex];
			var samplingrateIndex = (value & 12) >> 2;
			if(samplingrateIndex == 3) {
				throw new js__$Boot_HaxeError(new openfl_errors_Error("Unsupported samplingrate index."));
			}
			this.samplingrate = format_swf_data_etc_MPEGFrame.mpegsamplingrates[this.version][samplingrateIndex];
			this.padding = (value & 2) == 2;
			break;
		case 3:
			this.channelMode = (value & 192) >> 6;
			this.channelModeExt = (value & 48) >> 4;
			this.copyright = (value & 8) == 8;
			this.original = (value & 4) == 4;
			this.emphasis = value & 2;
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Index out of bounds."));
		}
		var this1 = this._header;
		this1.__resize(index + 1);
		this1.b[index] = value & 255;
	}
	,setCRCByteAt: function(index,value) {
		if(index > 1) {
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Index out of bounds."));
		}
		var this1 = this._crc;
		this1.__resize(index + 1);
		this1.b[index] = value & 255;
	}
	,init: function() {
		var this1 = new openfl_utils_ByteArrayData(0);
		this._header = this1;
		this._header.writeByte(0);
		this._header.writeByte(0);
		this._header.writeByte(0);
		this._header.writeByte(0);
		var this2 = new openfl_utils_ByteArrayData(0);
		this._crc = this2;
		this._crc.writeByte(0);
		this._crc.writeByte(0);
	}
	,getFrame: function() {
		var this1 = new openfl_utils_ByteArrayData(0);
		var ba = this1;
		ba.writeBytes(this._header,0,4);
		if(this.hasCRC) {
			ba.writeBytes(this._crc,0,2);
		}
		ba.writeBytes(this.data);
		return ba;
	}
	,toString: function() {
		var encoding = "MPEG ";
		var _g = this.version;
		switch(_g) {
		case 0:
			encoding += "1.0 ";
			break;
		case 1:
			encoding += "2.0 ";
			break;
		case 2:
			encoding += "2.5 ";
			break;
		default:
			encoding += "?.? ";
		}
		var _g1 = this.layer;
		switch(_g1) {
		case 0:
			encoding += "Layer I";
			break;
		case 1:
			encoding += "Layer II";
			break;
		case 2:
			encoding += "Layer III";
			break;
		default:
			encoding += "Layer ?";
		}
		var channel = "unknown";
		var _g2 = this.channelMode;
		switch(_g2) {
		case 0:
			channel = "Stereo";
			break;
		case 1:
			channel = "Joint stereo";
			break;
		case 2:
			channel = "Dual channel";
			break;
		case 3:
			channel = "Mono";
			break;
		}
		return encoding + ", " + this.bitrate + " kbit/s, " + this.samplingrate + " Hz, " + channel + ", " + this.get_size() + " bytes";
	}
	,__class__: format_swf_data_etc_MPEGFrame
	,__properties__: {get_size:"get_size",get_crc:"get_crc"}
};
var format_swf_data_filters_IFilter = function() { };
$hxClasses["format.swf.data.filters.IFilter"] = format_swf_data_filters_IFilter;
format_swf_data_filters_IFilter.__name__ = ["format","swf","data","filters","IFilter"];
format_swf_data_filters_IFilter.prototype = {
	get_filter: null
	,get_type: null
	,id: null
	,filter: null
	,type: null
	,parse: null
	,publish: null
	,clone: null
	,toString: null
	,__class__: format_swf_data_filters_IFilter
	,__properties__: {get_type:"get_type",get_filter:"get_filter"}
};
var format_swf_data_filters_Filter = function(id) {
	this.id = id;
};
$hxClasses["format.swf.data.filters.Filter"] = format_swf_data_filters_Filter;
format_swf_data_filters_Filter.__name__ = ["format","swf","data","filters","Filter"];
format_swf_data_filters_Filter.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_Filter.prototype = {
	filter: null
	,id: null
	,type: null
	,get_filter: function() {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Implement in subclasses!"));
	}
	,get_type: function() {
		return null;
	}
	,parse: function(data) {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Implement in subclasses!"));
	}
	,publish: function(data) {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Implement in subclasses!"));
	}
	,clone: function() {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Implement in subclasses!"));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[Filter]";
	}
	,__class__: format_swf_data_filters_Filter
	,__properties__: {get_type:"get_type",get_filter:"get_filter"}
};
var format_swf_data_filters_FilterBevel = function(id) {
	format_swf_data_filters_Filter.call(this,id);
};
$hxClasses["format.swf.data.filters.FilterBevel"] = format_swf_data_filters_FilterBevel;
format_swf_data_filters_FilterBevel.__name__ = ["format","swf","data","filters","FilterBevel"];
format_swf_data_filters_FilterBevel.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterBevel.__super__ = format_swf_data_filters_Filter;
format_swf_data_filters_FilterBevel.prototype = $extend(format_swf_data_filters_Filter.prototype,{
	shadowColor: null
	,highlightColor: null
	,blurX: null
	,blurY: null
	,angle: null
	,distance: null
	,strength: null
	,innerShadow: null
	,knockout: null
	,compositeSource: null
	,onTop: null
	,passes: null
	,get_filter: function() {
		var filterType;
		if(this.onTop) {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(0);
		} else if(this.innerShadow) {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(1);
		} else {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(2);
		}
		return new openfl_filters_BitmapFilter();
	}
	,parse: function(data) {
		this.shadowColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		this.highlightColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		this.blurX = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.blurY = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.angle = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.distance = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.strength = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.innerShadow = (flags & 128) != 0;
		this.knockout = (flags & 64) != 0;
		this.compositeSource = (flags & 32) != 0;
		this.onTop = (flags & 16) != 0;
		this.passes = flags & 15;
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.shadowColor);
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.highlightColor);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurX);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurY);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.angle);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.distance);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.strength);
		var flags = this.passes & 15;
		if(this.innerShadow) {
			flags |= 128;
		}
		if(this.knockout) {
			flags |= 64;
		}
		if(this.compositeSource) {
			flags |= 32;
		}
		if(this.onTop) {
			flags |= 16;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterBevel(this.id);
		filter.shadowColor = this.shadowColor;
		filter.highlightColor = this.highlightColor;
		filter.blurX = this.blurX;
		filter.blurY = this.blurY;
		filter.angle = this.angle;
		filter.distance = this.distance;
		filter.strength = this.strength;
		filter.passes = this.passes;
		filter.innerShadow = this.innerShadow;
		filter.knockout = this.knockout;
		filter.compositeSource = this.compositeSource;
		filter.onTop = this.onTop;
		return filter;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "[BevelFilter] " + "ShadowColor: " + format_swf_utils_ColorUtils.rgbToString(this.shadowColor) + ", " + "HighlightColor: " + format_swf_utils_ColorUtils.rgbToString(this.highlightColor) + ", " + "BlurX: " + this.blurX + ", " + "BlurY: " + this.blurY + ", " + "Angle: " + this.angle + ", " + "Distance: " + this.distance + ", " + "Strength: " + this.strength + ", " + "Passes: " + this.passes;
		var flags = [];
		if(this.innerShadow) {
			flags.push("InnerShadow");
		}
		if(this.knockout) {
			flags.push("Knockout");
		}
		if(this.compositeSource) {
			flags.push("CompositeSource");
		}
		if(this.onTop) {
			flags.push("OnTop");
		}
		if(flags.length > 0) {
			str += ", Flags: " + flags.join(", ");
		}
		return str;
	}
	,__class__: format_swf_data_filters_FilterBevel
});
var format_swf_data_filters_FilterBlur = function(id) {
	format_swf_data_filters_Filter.call(this,id);
};
$hxClasses["format.swf.data.filters.FilterBlur"] = format_swf_data_filters_FilterBlur;
format_swf_data_filters_FilterBlur.__name__ = ["format","swf","data","filters","FilterBlur"];
format_swf_data_filters_FilterBlur.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterBlur.__super__ = format_swf_data_filters_Filter;
format_swf_data_filters_FilterBlur.prototype = $extend(format_swf_data_filters_Filter.prototype,{
	blurX: null
	,blurY: null
	,passes: null
	,get_filter: function() {
		return new openfl_filters_BlurFilter(this.blurX,this.blurY,this.passes);
	}
	,get_type: function() {
		return openfl__$internal_swf_FilterType.BlurFilter(this.blurX,this.blurY,this.passes);
	}
	,parse: function(data) {
		this.blurX = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.blurY = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.passes = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data) >> 3;
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurX);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurY);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.passes << 3);
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterBlur(this.id);
		filter.blurX = this.blurX;
		filter.blurY = this.blurY;
		filter.passes = this.passes;
		return filter;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return "[BlurFilter] " + "BlurX: " + this.blurX + ", " + "BlurY: " + this.blurY + ", " + "Passes: " + this.passes;
	}
	,__class__: format_swf_data_filters_FilterBlur
});
var format_swf_data_filters_FilterColorMatrix = function(id) {
	format_swf_data_filters_Filter.call(this,id);
	this.colorMatrix = [];
};
$hxClasses["format.swf.data.filters.FilterColorMatrix"] = format_swf_data_filters_FilterColorMatrix;
format_swf_data_filters_FilterColorMatrix.__name__ = ["format","swf","data","filters","FilterColorMatrix"];
format_swf_data_filters_FilterColorMatrix.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterColorMatrix.__super__ = format_swf_data_filters_Filter;
format_swf_data_filters_FilterColorMatrix.prototype = $extend(format_swf_data_filters_Filter.prototype,{
	colorMatrix: null
	,get_filter: function() {
		return new openfl_filters_ColorMatrixFilter([this.colorMatrix[0],this.colorMatrix[1],this.colorMatrix[2],this.colorMatrix[3],this.colorMatrix[4],this.colorMatrix[5],this.colorMatrix[6],this.colorMatrix[7],this.colorMatrix[8],this.colorMatrix[9],this.colorMatrix[10],this.colorMatrix[11],this.colorMatrix[12],this.colorMatrix[13],this.colorMatrix[14],this.colorMatrix[15],this.colorMatrix[16],this.colorMatrix[17],this.colorMatrix[18],this.colorMatrix[19]]);
	}
	,get_type: function() {
		return openfl__$internal_swf_FilterType.ColorMatrixFilter([this.colorMatrix[0],this.colorMatrix[1],this.colorMatrix[2],this.colorMatrix[3],this.colorMatrix[4],this.colorMatrix[5],this.colorMatrix[6],this.colorMatrix[7],this.colorMatrix[8],this.colorMatrix[9],this.colorMatrix[10],this.colorMatrix[11],this.colorMatrix[12],this.colorMatrix[13],this.colorMatrix[14],this.colorMatrix[15],this.colorMatrix[16],this.colorMatrix[17],this.colorMatrix[18],this.colorMatrix[19]]);
	}
	,parse: function(data) {
		var _g = 0;
		while(_g < 20) {
			var i = _g++;
			this.colorMatrix.push(format_swf__$SWFData_SWFData_$Impl_$.readFLOAT(data));
		}
	}
	,publish: function(data) {
		var _g = 0;
		while(_g < 20) {
			var i = _g++;
			format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT(data,this.colorMatrix[i]);
		}
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterColorMatrix(this.id);
		var _g = 0;
		while(_g < 20) {
			var i = _g++;
			filter.colorMatrix.push(this.colorMatrix[i]);
		}
		return filter;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var si = format_swf_utils_StringUtils.repeat(indent + 2);
		return "[ColorMatrixFilter]" + "\n" + si + "[R] " + this.colorMatrix[0] + ", " + this.colorMatrix[1] + ", " + this.colorMatrix[2] + ", " + this.colorMatrix[3] + ", " + this.colorMatrix[4] + "\n" + si + "[G] " + this.colorMatrix[5] + ", " + this.colorMatrix[6] + ", " + this.colorMatrix[7] + ", " + this.colorMatrix[8] + ", " + this.colorMatrix[9] + "\n" + si + "[B] " + this.colorMatrix[10] + ", " + this.colorMatrix[11] + ", " + this.colorMatrix[12] + ", " + this.colorMatrix[13] + ", " + this.colorMatrix[14] + "\n" + si + "[A] " + this.colorMatrix[15] + ", " + this.colorMatrix[16] + ", " + this.colorMatrix[17] + ", " + this.colorMatrix[18] + ", " + this.colorMatrix[19];
	}
	,__class__: format_swf_data_filters_FilterColorMatrix
});
var format_swf_data_filters_FilterConvolution = function(id) {
	format_swf_data_filters_Filter.call(this,id);
	this.matrix = [];
};
$hxClasses["format.swf.data.filters.FilterConvolution"] = format_swf_data_filters_FilterConvolution;
format_swf_data_filters_FilterConvolution.__name__ = ["format","swf","data","filters","FilterConvolution"];
format_swf_data_filters_FilterConvolution.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterConvolution.__super__ = format_swf_data_filters_Filter;
format_swf_data_filters_FilterConvolution.prototype = $extend(format_swf_data_filters_Filter.prototype,{
	matrixX: null
	,matrixY: null
	,divisor: null
	,bias: null
	,defaultColor: null
	,clamp: null
	,preserveAlpha: null
	,matrix: null
	,get_filter: function() {
		var convolutionMatrix = [];
		var _g1 = 0;
		var _g = this.matrix.length;
		while(_g1 < _g) {
			var i = _g1++;
			convolutionMatrix.push(this.matrix[i]);
		}
		return new openfl_filters_BitmapFilter();
	}
	,parse: function(data) {
		this.matrixX = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.matrixY = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.divisor = format_swf__$SWFData_SWFData_$Impl_$.readFLOAT(data);
		this.bias = format_swf__$SWFData_SWFData_$Impl_$.readFLOAT(data);
		var len = this.matrixX * this.matrixY;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i = _g1++;
			this.matrix.push(format_swf__$SWFData_SWFData_$Impl_$.readFLOAT(data));
		}
		this.defaultColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.clamp = (flags & 2) != 0;
		this.preserveAlpha = (flags & 1) != 0;
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.matrixX);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.matrixY);
		format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT(data,this.divisor);
		format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT(data,this.bias);
		var len = this.matrixX * this.matrixY;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeFLOAT(data,this.matrix[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.defaultColor);
		var flags = 0;
		if(this.clamp) {
			flags |= 2;
		}
		if(this.preserveAlpha) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterConvolution(this.id);
		filter.matrixX = this.matrixX;
		filter.matrixY = this.matrixY;
		filter.divisor = this.divisor;
		filter.bias = this.bias;
		var len = this.matrixX * this.matrixY;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i = _g1++;
			filter.matrix.push(this.matrix[i]);
		}
		filter.defaultColor = this.defaultColor;
		filter.clamp = this.clamp;
		filter.preserveAlpha = this.preserveAlpha;
		return filter;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "[ConvolutionFilter] " + "DefaultColor: " + format_swf_utils_ColorUtils.rgbToString(this.defaultColor) + ", " + "Divisor: " + this.divisor + ", " + "Bias: " + this.bias;
		var flags = [];
		if(this.clamp) {
			flags.push("Clamp");
		}
		if(this.preserveAlpha) {
			flags.push("PreserveAlpha");
		}
		if(flags.length > 0) {
			str += ", Flags: " + flags.join(", ");
		}
		if(this.matrix.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Matrix:";
			var _g1 = 0;
			var _g = this.matrixY;
			while(_g1 < _g) {
				var y = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + y + "]";
				var _g3 = 0;
				var _g2 = this.matrixX;
				while(_g3 < _g2) {
					var x = _g3++;
					str += (x > 0 ? ", " : " ") + this.matrix[this.matrixX * y + x];
				}
			}
		}
		return str;
	}
	,__class__: format_swf_data_filters_FilterConvolution
});
var format_swf_data_filters_FilterDropShadow = function(id) {
	format_swf_data_filters_Filter.call(this,id);
};
$hxClasses["format.swf.data.filters.FilterDropShadow"] = format_swf_data_filters_FilterDropShadow;
format_swf_data_filters_FilterDropShadow.__name__ = ["format","swf","data","filters","FilterDropShadow"];
format_swf_data_filters_FilterDropShadow.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterDropShadow.__super__ = format_swf_data_filters_Filter;
format_swf_data_filters_FilterDropShadow.prototype = $extend(format_swf_data_filters_Filter.prototype,{
	dropShadowColor: null
	,blurX: null
	,blurY: null
	,angle: null
	,distance: null
	,strength: null
	,innerShadow: null
	,knockout: null
	,compositeSource: null
	,passes: null
	,get_filter: function() {
		return new openfl_filters_DropShadowFilter(this.distance,this.angle * 180 / Math.PI,format_swf_utils_ColorUtils.rgb(this.dropShadowColor),format_swf_utils_ColorUtils.alpha(this.dropShadowColor),this.blurX,this.blurY,this.strength,this.passes,this.innerShadow,this.knockout);
	}
	,get_type: function() {
		return openfl__$internal_swf_FilterType.DropShadowFilter(this.distance,this.angle * 180 / Math.PI,format_swf_utils_ColorUtils.rgb(this.dropShadowColor),format_swf_utils_ColorUtils.alpha(this.dropShadowColor),this.blurX,this.blurY,this.strength,this.passes,this.innerShadow,this.knockout,false);
	}
	,parse: function(data) {
		this.dropShadowColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		this.blurX = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.blurY = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.angle = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.distance = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.strength = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.innerShadow = (flags & 128) != 0;
		this.knockout = (flags & 64) != 0;
		this.compositeSource = (flags & 32) != 0;
		this.passes = flags & 31;
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.dropShadowColor);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurX);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurY);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.angle);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.distance);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.strength);
		var flags = this.passes & 31;
		if(this.innerShadow) {
			flags |= 128;
		}
		if(this.knockout) {
			flags |= 64;
		}
		if(this.compositeSource) {
			flags |= 32;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterDropShadow(this.id);
		filter.dropShadowColor = this.dropShadowColor;
		filter.blurX = this.blurX;
		filter.blurY = this.blurY;
		filter.angle = this.angle;
		filter.distance = this.distance;
		filter.strength = this.strength;
		filter.passes = this.passes;
		filter.innerShadow = this.innerShadow;
		filter.knockout = this.knockout;
		filter.compositeSource = this.compositeSource;
		return filter;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "[DropShadowFilter] " + "DropShadowColor: " + format_swf_utils_ColorUtils.rgbToString(this.dropShadowColor) + ", " + "BlurX: " + this.blurX + ", " + "BlurY: " + this.blurY + ", " + "Angle: " + this.angle + ", " + "Distance: " + this.distance + ", " + "Strength: " + this.strength + ", " + "Passes: " + this.passes;
		var flags = [];
		if(this.innerShadow) {
			flags.push("InnerShadow");
		}
		if(this.knockout) {
			flags.push("Knockout");
		}
		if(this.compositeSource) {
			flags.push("CompositeSource");
		}
		if(flags.length > 0) {
			str += ", Flags: " + flags.join(", ");
		}
		return str;
	}
	,__class__: format_swf_data_filters_FilterDropShadow
});
var format_swf_data_filters_FilterGlow = function(id) {
	format_swf_data_filters_Filter.call(this,id);
};
$hxClasses["format.swf.data.filters.FilterGlow"] = format_swf_data_filters_FilterGlow;
format_swf_data_filters_FilterGlow.__name__ = ["format","swf","data","filters","FilterGlow"];
format_swf_data_filters_FilterGlow.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterGlow.__super__ = format_swf_data_filters_Filter;
format_swf_data_filters_FilterGlow.prototype = $extend(format_swf_data_filters_Filter.prototype,{
	glowColor: null
	,blurX: null
	,blurY: null
	,strength: null
	,innerGlow: null
	,knockout: null
	,compositeSource: null
	,passes: null
	,get_filter: function() {
		return new openfl_filters_GlowFilter(format_swf_utils_ColorUtils.rgb(this.glowColor),format_swf_utils_ColorUtils.alpha(this.glowColor),this.blurX,this.blurY,this.strength,this.passes,this.innerGlow,this.knockout);
	}
	,get_type: function() {
		return openfl__$internal_swf_FilterType.GlowFilter(format_swf_utils_ColorUtils.rgb(this.glowColor),format_swf_utils_ColorUtils.alpha(this.glowColor),this.blurX,this.blurY,this.strength,this.passes,this.innerGlow,this.knockout);
	}
	,parse: function(data) {
		this.glowColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		this.blurX = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.blurY = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.strength = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.innerGlow = (flags & 128) != 0;
		this.knockout = (flags & 64) != 0;
		this.compositeSource = (flags & 32) != 0;
		this.passes = flags & 31;
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.glowColor);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurX);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurY);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.strength);
		var flags = this.passes & 31;
		if(this.innerGlow) {
			flags |= 128;
		}
		if(this.knockout) {
			flags |= 64;
		}
		if(this.compositeSource) {
			flags |= 32;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterGlow(this.id);
		filter.glowColor = this.glowColor;
		filter.blurX = this.blurX;
		filter.blurY = this.blurY;
		filter.strength = this.strength;
		filter.passes = this.passes;
		filter.innerGlow = this.innerGlow;
		filter.knockout = this.knockout;
		filter.compositeSource = this.compositeSource;
		return filter;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "[GlowFilter] " + "GlowColor: " + format_swf_utils_ColorUtils.rgbToString(this.glowColor) + ", " + "BlurX: " + this.blurX + ", " + "BlurY: " + this.blurY + ", " + "Strength: " + this.strength + ", " + "Passes: " + this.passes;
		var flags = [];
		if(this.innerGlow) {
			flags.push("InnerGlow");
		}
		if(this.knockout) {
			flags.push("Knockout");
		}
		if(this.compositeSource) {
			flags.push("CompositeSource");
		}
		if(flags.length > 0) {
			str += ", Flags: " + flags.join(", ");
		}
		return str;
	}
	,__class__: format_swf_data_filters_FilterGlow
});
var format_swf_data_filters_FilterGradientGlow = function(id) {
	format_swf_data_filters_Filter.call(this,id);
	this.gradientColors = [];
	this.gradientRatios = [];
};
$hxClasses["format.swf.data.filters.FilterGradientGlow"] = format_swf_data_filters_FilterGradientGlow;
format_swf_data_filters_FilterGradientGlow.__name__ = ["format","swf","data","filters","FilterGradientGlow"];
format_swf_data_filters_FilterGradientGlow.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterGradientGlow.__super__ = format_swf_data_filters_Filter;
format_swf_data_filters_FilterGradientGlow.prototype = $extend(format_swf_data_filters_Filter.prototype,{
	numColors: null
	,blurX: null
	,blurY: null
	,angle: null
	,distance: null
	,strength: null
	,innerShadow: null
	,knockout: null
	,compositeSource: null
	,onTop: null
	,passes: null
	,gradientColors: null
	,gradientRatios: null
	,filterName: null
	,get_filter: function() {
		var gradientGlowColors = [];
		var gradientGlowAlphas = [];
		var gradientGlowRatios = [];
		var _g1 = 0;
		var _g = this.numColors;
		while(_g1 < _g) {
			var i = _g1++;
			gradientGlowColors.push(format_swf_utils_ColorUtils.rgb(this.gradientColors[i]));
			gradientGlowAlphas.push(format_swf_utils_ColorUtils.alpha(this.gradientColors[i]));
			gradientGlowRatios.push(this.gradientRatios[i]);
		}
		var filterType;
		if(this.onTop) {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(0);
		} else if(this.innerShadow) {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(1);
		} else {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(2);
		}
		return new openfl_filters_BitmapFilter();
	}
	,parse: function(data) {
		this.numColors = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var i;
		var _g1 = 0;
		var _g = this.numColors;
		while(_g1 < _g) {
			var i1 = _g1++;
			this.gradientColors.push(format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data));
		}
		var _g11 = 0;
		var _g2 = this.numColors;
		while(_g11 < _g2) {
			var i2 = _g11++;
			this.gradientRatios.push(format_swf__$SWFData_SWFData_$Impl_$.readUI8(data));
		}
		this.blurX = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.blurY = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.angle = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.distance = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.strength = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.innerShadow = (flags & 128) != 0;
		this.knockout = (flags & 64) != 0;
		this.compositeSource = (flags & 32) != 0;
		this.onTop = (flags & 16) != 0;
		this.passes = flags & 15;
	}
	,publish: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.numColors);
		var i;
		var _g1 = 0;
		var _g = this.numColors;
		while(_g1 < _g) {
			var i1 = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(data,this.gradientColors[i1]);
		}
		var _g11 = 0;
		var _g2 = this.numColors;
		while(_g11 < _g2) {
			var i2 = _g11++;
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.gradientRatios[i2]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurX);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.blurY);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.angle);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.distance);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.strength);
		var flags = this.passes & 15;
		if(this.innerShadow) {
			flags |= 128;
		}
		if(this.knockout) {
			flags |= 64;
		}
		if(this.compositeSource) {
			flags |= 32;
		}
		if(this.onTop) {
			flags |= 16;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterGradientGlow(this.id);
		filter.numColors = this.numColors;
		var i;
		var _g1 = 0;
		var _g = this.numColors;
		while(_g1 < _g) {
			var i1 = _g1++;
			filter.gradientColors.push(this.gradientColors[i1]);
		}
		var _g11 = 0;
		var _g2 = this.numColors;
		while(_g11 < _g2) {
			var i2 = _g11++;
			filter.gradientRatios.push(this.gradientRatios[i2]);
		}
		filter.blurX = this.blurX;
		filter.blurY = this.blurY;
		filter.angle = this.angle;
		filter.distance = this.distance;
		filter.strength = this.strength;
		filter.passes = this.passes;
		filter.innerShadow = this.innerShadow;
		filter.knockout = this.knockout;
		filter.compositeSource = this.compositeSource;
		filter.onTop = this.onTop;
		return filter;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var i;
		var str = "[" + this.get_filterName() + "] " + "BlurX: " + this.blurX + ", " + "BlurY: " + this.blurY + ", " + "Angle: " + this.angle + ", " + "Distance: " + this.distance + ", " + "Strength: " + this.strength + ", " + "Passes: " + this.passes;
		var flags = [];
		if(this.innerShadow) {
			flags.push("InnerShadow");
		}
		if(this.knockout) {
			flags.push("Knockout");
		}
		if(this.compositeSource) {
			flags.push("CompositeSource");
		}
		if(this.onTop) {
			flags.push("OnTop");
		}
		if(flags.length > 0) {
			str += ", Flags: " + flags.join(", ");
		}
		if(this.gradientColors.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "GradientColors:";
			var _g1 = 0;
			var _g = this.gradientColors.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += (i1 > 0 ? ", " : " ") + format_swf_utils_ColorUtils.rgbToString(this.gradientColors[i1]);
			}
		}
		if(this.gradientRatios.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "GradientRatios:";
			var _g11 = 0;
			var _g2 = this.gradientRatios.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += (i2 > 0 ? ", " : " ") + this.gradientRatios[i2];
			}
		}
		return str;
	}
	,get_filterName: function() {
		return "GradientGlowFilter";
	}
	,__class__: format_swf_data_filters_FilterGradientGlow
	,__properties__: $extend(format_swf_data_filters_Filter.prototype.__properties__,{get_filterName:"get_filterName"})
});
var format_swf_data_filters_FilterGradientBevel = function(id) {
	format_swf_data_filters_FilterGradientGlow.call(this,id);
};
$hxClasses["format.swf.data.filters.FilterGradientBevel"] = format_swf_data_filters_FilterGradientBevel;
format_swf_data_filters_FilterGradientBevel.__name__ = ["format","swf","data","filters","FilterGradientBevel"];
format_swf_data_filters_FilterGradientBevel.__interfaces__ = [format_swf_data_filters_IFilter];
format_swf_data_filters_FilterGradientBevel.__super__ = format_swf_data_filters_FilterGradientGlow;
format_swf_data_filters_FilterGradientBevel.prototype = $extend(format_swf_data_filters_FilterGradientGlow.prototype,{
	get_filter: function() {
		var gradientGlowColors = [];
		var gradientGlowAlphas = [];
		var gradientGlowRatios = [];
		var _g1 = 0;
		var _g = this.numColors;
		while(_g1 < _g) {
			var i = _g1++;
			gradientGlowColors.push(format_swf_utils_ColorUtils.rgb(this.gradientColors[i]));
			gradientGlowAlphas.push(format_swf_utils_ColorUtils.alpha(this.gradientColors[i]));
			gradientGlowRatios.push(this.gradientRatios[i]);
		}
		var filterType;
		if(this.onTop) {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(0);
		} else if(this.innerShadow) {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(1);
		} else {
			filterType = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString(2);
		}
		return new openfl_filters_BitmapFilter();
	}
	,clone: function() {
		var filter = new format_swf_data_filters_FilterGradientBevel(this.id);
		filter.numColors = this.numColors;
		var i;
		var _g1 = 0;
		var _g = this.numColors;
		while(_g1 < _g) {
			var i1 = _g1++;
			filter.gradientColors.push(this.gradientColors[i1]);
		}
		var _g11 = 0;
		var _g2 = this.numColors;
		while(_g11 < _g2) {
			var i2 = _g11++;
			filter.gradientRatios.push(this.gradientRatios[i2]);
		}
		filter.blurX = this.blurX;
		filter.blurY = this.blurY;
		filter.angle = this.angle;
		filter.distance = this.distance;
		filter.strength = this.strength;
		filter.passes = this.passes;
		filter.innerShadow = this.innerShadow;
		filter.knockout = this.knockout;
		filter.compositeSource = this.compositeSource;
		filter.onTop = this.onTop;
		return filter;
	}
	,get_filterName: function() {
		return "GradientBevelFilter";
	}
	,__class__: format_swf_data_filters_FilterGradientBevel
});
var openfl_events_Event = function(type,bubbles,cancelable) {
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	this.type = type;
	this.bubbles = bubbles;
	this.cancelable = cancelable;
	this.eventPhase = 2;
};
$hxClasses["openfl.events.Event"] = openfl_events_Event;
openfl_events_Event.__name__ = ["openfl","events","Event"];
openfl_events_Event.prototype = {
	bubbles: null
	,cancelable: null
	,currentTarget: null
	,eventPhase: null
	,target: null
	,type: null
	,__isCanceled: null
	,__isCanceledNow: null
	,__preventDefault: null
	,clone: function() {
		var event = new openfl_events_Event(this.type,this.bubbles,this.cancelable);
		event.eventPhase = this.eventPhase;
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		return event;
	}
	,formatToString: function(className,p1,p2,p3,p4,p5) {
		var parameters = [];
		if(p1 != null) {
			parameters.push(p1);
		}
		if(p2 != null) {
			parameters.push(p2);
		}
		if(p3 != null) {
			parameters.push(p3);
		}
		if(p4 != null) {
			parameters.push(p4);
		}
		if(p5 != null) {
			parameters.push(p5);
		}
		return $bind(this,this.__formatToString).apply(this,[className,parameters]);
	}
	,isDefaultPrevented: function() {
		return this.__preventDefault;
	}
	,preventDefault: function() {
		if(this.cancelable) {
			this.__preventDefault = true;
		}
	}
	,stopImmediatePropagation: function() {
		this.__isCanceled = true;
		this.__isCanceledNow = true;
	}
	,stopPropagation: function() {
		this.__isCanceled = true;
	}
	,toString: function() {
		return this.__formatToString("Event",["type","bubbles","cancelable"]);
	}
	,__formatToString: function(className,parameters) {
		var output = "[" + className;
		var arg = null;
		var _g = 0;
		while(_g < parameters.length) {
			var param = parameters[_g];
			++_g;
			arg = Reflect.field(this,param);
			if(typeof(arg) == "string") {
				output += " " + param + "=\"" + Std.string(arg) + "\"";
			} else {
				output += " " + param + "=" + Std.string(arg);
			}
		}
		output += "]";
		return output;
	}
	,__class__: openfl_events_Event
};
var format_swf_events_SWFErrorEvent = function(type,reason,bubbles,cancelable) {
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.reason = reason;
};
$hxClasses["format.swf.events.SWFErrorEvent"] = format_swf_events_SWFErrorEvent;
format_swf_events_SWFErrorEvent.__name__ = ["format","swf","events","SWFErrorEvent"];
format_swf_events_SWFErrorEvent.__super__ = openfl_events_Event;
format_swf_events_SWFErrorEvent.prototype = $extend(openfl_events_Event.prototype,{
	reason: null
	,clone: function() {
		return new format_swf_events_SWFErrorEvent(this.type,this.reason,this.bubbles,this.cancelable);
	}
	,toString: function() {
		return "[SWFErrorEvent] reason: " + this.reason;
	}
	,__class__: format_swf_events_SWFErrorEvent
});
var format_swf_events_SWFProgressEvent = function(type,processed,total,bubbles,cancelable) {
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.processed = processed;
	this.total = total;
};
$hxClasses["format.swf.events.SWFProgressEvent"] = format_swf_events_SWFProgressEvent;
format_swf_events_SWFProgressEvent.__name__ = ["format","swf","events","SWFProgressEvent"];
format_swf_events_SWFProgressEvent.__super__ = openfl_events_Event;
format_swf_events_SWFProgressEvent.prototype = $extend(openfl_events_Event.prototype,{
	progress: null
	,progressPercent: null
	,processed: null
	,total: null
	,get_progress: function() {
		return this.processed / this.total;
	}
	,get_progressPercent: function() {
		return Math.round(this.get_progress() * 100);
	}
	,clone: function() {
		return new format_swf_events_SWFProgressEvent(this.type,this.processed,this.total,this.bubbles,this.cancelable);
	}
	,toString: function() {
		return "[SWFProgressEvent] processed: " + this.processed + ", total: " + this.total + " (" + this.get_progressPercent() + "%)";
	}
	,__class__: format_swf_events_SWFProgressEvent
	,__properties__: {get_progressPercent:"get_progressPercent",get_progress:"get_progress"}
});
var format_swf_events_SWFWarningEvent = function(type,index,data,bubbles,cancelable) {
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.index = index;
	this.data = data;
};
$hxClasses["format.swf.events.SWFWarningEvent"] = format_swf_events_SWFWarningEvent;
format_swf_events_SWFWarningEvent.__name__ = ["format","swf","events","SWFWarningEvent"];
format_swf_events_SWFWarningEvent.__super__ = openfl_events_Event;
format_swf_events_SWFWarningEvent.prototype = $extend(openfl_events_Event.prototype,{
	index: null
	,data: null
	,clone: function() {
		return new format_swf_events_SWFWarningEvent(this.type,this.index,this.data,this.bubbles,this.cancelable);
	}
	,toString: function() {
		return "[SWFWarningEvent] index: " + this.index;
	}
	,__class__: format_swf_events_SWFWarningEvent
});
var format_swf_exporters_SWFLiteExporter = function(data) {
	this.data = data;
	this.bitmapAlpha = new haxe_ds_IntMap();
	this.bitmaps = new haxe_ds_IntMap();
	this.bitmapTypes = new haxe_ds_IntMap();
	this.sounds = new haxe_ds_IntMap();
	this.soundTypes = new haxe_ds_IntMap();
	this.soundSymbolClassNames = new haxe_ds_IntMap();
	this.filterClasses = new haxe_ds_StringMap();
	this.swfLite = new openfl__$internal_swf_SWFLite();
	this.swfLite.frameRate = data.frameRate;
	this.addSprite(data,true);
	var _g = 0;
	var _g1 = data.tags;
	while(_g < _g1.length) {
		var tag = _g1[_g];
		++_g;
		if(js_Boot.__instanceof(tag,format_swf_tags_TagSymbolClass)) {
			var _g2 = 0;
			var _g3 = (js_Boot.__cast(tag , format_swf_tags_TagSymbolClass)).symbols;
			while(_g2 < _g3.length) {
				var symbol = _g3[_g2];
				++_g2;
				this.processSymbol(symbol);
			}
		}
	}
};
$hxClasses["format.swf.exporters.SWFLiteExporter"] = format_swf_exporters_SWFLiteExporter;
format_swf_exporters_SWFLiteExporter.__name__ = ["format","swf","exporters","SWFLiteExporter"];
format_swf_exporters_SWFLiteExporter.prototype = {
	bitmapAlpha: null
	,bitmaps: null
	,bitmapTypes: null
	,sounds: null
	,soundTypes: null
	,soundSymbolClassNames: null
	,filterClasses: null
	,swfLite: null
	,alphaPalette: null
	,data: null
	,addButton: function(tag) {
		var _gthis = this;
		var symbol = new openfl__$internal_symbols_ButtonSymbol();
		if(js_Boot.__instanceof(tag,format_swf_tags_IDefinitionTag)) {
			symbol.id = tag.characterId;
		}
		var processRecords = function(records) {
			if(records.length > 0) {
				var sprite = new openfl__$internal_symbols_SpriteSymbol();
				var frame = new openfl__$internal_timeline_Frame();
				frame.objects = [];
				var _g1 = 0;
				var _g = records.length;
				while(_g1 < _g) {
					var i = _g1++;
					var object = records[i];
					var frameObject = new openfl__$internal_timeline_FrameObject();
					frameObject.type = openfl__$internal_timeline_FrameObjectType.CREATE;
					frameObject.symbol = object.characterId;
					frameObject.id = i;
					_gthis.processTag(_gthis.data.getCharacter(object.characterId));
					if(object.placeMatrix != null) {
						var matrix = object.placeMatrix.get_matrix();
						matrix.tx *= 0.05;
						matrix.ty *= 0.05;
						frameObject.matrix = matrix;
					}
					if(object.colorTransform != null) {
						frameObject.colorTransform = object.colorTransform.get_colorTransform();
					}
					if(object.hasBlendMode) {
						var blendMode = format_swf_data_consts_BlendMode.toString(object.blendMode);
						frameObject.blendMode = openfl_display__$BlendMode_BlendMode_$Impl_$.fromString(blendMode);
					}
					if(object.hasFilterList) {
						var filters = [];
						var _g2 = 0;
						var _g3 = object.filterList;
						while(_g2 < _g3.length) {
							var filter = _g3[_g2];
							++_g2;
							var type = filter.get_type();
							if(type != null) {
								filters.push(filter.get_type());
							}
						}
						frameObject.filters = filters;
					}
					frameObject.depth = i;
					frameObject.clipDepth = 0;
					frameObject.visible = true;
					frame.objects.push(frameObject);
				}
				sprite.frames.push(frame);
				return sprite;
			}
			return null;
		};
		if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineButton)) {
			var defineButton = tag;
			symbol.downState = processRecords(defineButton.getRecordsByState("down"));
			symbol.hitState = processRecords(defineButton.getRecordsByState("hit"));
			symbol.overState = processRecords(defineButton.getRecordsByState("over"));
			symbol.upState = processRecords(defineButton.getRecordsByState("up"));
		} else {
			var defineButton1 = tag;
			symbol.downState = processRecords(defineButton1.getRecordsByState("down"));
			symbol.hitState = processRecords(defineButton1.getRecordsByState("hit"));
			symbol.overState = processRecords(defineButton1.getRecordsByState("over"));
			symbol.upState = processRecords(defineButton1.getRecordsByState("up"));
		}
		this.swfLite.symbols.h[symbol.id] = symbol;
		return symbol;
	}
	,addBitmap: function(tag) {
		var alphaByteArray = null;
		var byteArray = null;
		var type = null;
		if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsLossless)) {
			var data = tag;
			var transparent = data.level > 1;
			var buffer = data.zlibBitmapData;
			buffer.uncompress();
			buffer.position = 0;
			if(data.bitmapFormat == 3) {
				var palette = new haxe_io_Bytes(new ArrayBuffer(data.bitmapColorTableSize * 3));
				var alpha = null;
				if(transparent) {
					alpha = new haxe_io_Bytes(new ArrayBuffer(data.bitmapColorTableSize));
				}
				var index = 0;
				var _g1 = 0;
				var _g = data.bitmapColorTableSize;
				while(_g1 < _g) {
					var i = _g1++;
					var v = buffer.readUnsignedByte();
					palette.b[index++] = v & 255;
					var v1 = buffer.readUnsignedByte();
					palette.b[index++] = v1 & 255;
					var v2 = buffer.readUnsignedByte();
					palette.b[index++] = v2 & 255;
					if(transparent) {
						var v3 = buffer.readUnsignedByte();
						alpha.b[i] = v3 & 255;
					}
				}
				var paddedWidth = Math.ceil(data.bitmapWidth / 4) * 4;
				var values = new haxe_io_Bytes(new ArrayBuffer((data.bitmapWidth + 1) * data.bitmapHeight));
				index = 0;
				var _g11 = 0;
				var _g2 = data.bitmapHeight;
				while(_g11 < _g2) {
					var y = _g11++;
					values.b[index++] = 0;
					values.blit(index,openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(buffer),buffer.position,data.bitmapWidth);
					index += data.bitmapWidth;
					buffer.position += paddedWidth;
				}
				var png = new List();
				png.add(format_png_Chunk.CHeader({ width : data.bitmapWidth, height : data.bitmapHeight, colbits : 8, color : format_png_Color.ColIndexed, interlaced : false}));
				png.add(format_png_Chunk.CPalette(palette));
				if(transparent) {
					png.add(format_png_Chunk.CUnknown("tRNS",alpha));
				}
				png.add(format_png_Chunk.CData(format_tools_Deflate.run(values)));
				png.add(format_png_Chunk.CEnd);
				var output = new haxe_io_BytesOutput();
				var writer = new format_png_Writer(output);
				writer.write(png);
				byteArray = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(output.getBytes());
				type = format_swf_exporters_BitmapType.PNG;
			} else {
				var bitmapData = new openfl_display_BitmapData(data.bitmapWidth,data.bitmapHeight,transparent);
				bitmapData.image.buffer.premultiplied = false;
				bitmapData.setPixels(bitmapData.rect,buffer);
				bitmapData.image.buffer.premultiplied = true;
				bitmapData.image.set_premultiplied(false);
				byteArray = bitmapData.encode(bitmapData.rect,new openfl_display_PNGEncoderOptions());
				type = format_swf_exporters_BitmapType.PNG;
			}
		} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsJPEG2)) {
			var data1 = tag;
			if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsJPEG3)) {
				var alpha1 = (js_Boot.__cast(tag , format_swf_tags_TagDefineBitsJPEG3)).bitmapAlphaData;
				alpha1.uncompress();
				alpha1.position = 0;
				if(this.alphaPalette == null) {
					this.alphaPalette = new haxe_io_Bytes(new ArrayBuffer(768));
					var index1 = 0;
					var _g3 = 0;
					while(_g3 < 256) {
						var i1 = _g3++;
						this.alphaPalette.b[index1++] = i1 & 255;
						this.alphaPalette.b[index1++] = i1 & 255;
						this.alphaPalette.b[index1++] = i1 & 255;
					}
				}
				var tempFile = lime_tools_helpers_PathHelper.getTemporaryFile("jpg");
				var bytes = openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(data1.bitmapData);
				var data2 = bytes.b;
				js_node_Fs.writeFileSync(tempFile,new js_node_buffer_Buffer(data2.buffer,data2.byteOffset,bytes.length));
				var image = lime_graphics_format_JPEG.decodeFile(tempFile,false);
				try {
					js_node_Fs.unlinkSync(tempFile);
				} catch( e ) {
					haxe_CallStack.lastException = e;
				}
				var values1 = new haxe_io_Bytes(new ArrayBuffer((image.width + 1) * image.height));
				var index2 = 0;
				var _g12 = 0;
				var _g4 = image.height;
				while(_g12 < _g4) {
					var y1 = _g12++;
					values1.b[index2++] = 0;
					values1.blit(index2,openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(alpha1),alpha1.position,image.width);
					index2 += image.width;
					alpha1.position += image.width;
				}
				var png1 = new List();
				png1.add(format_png_Chunk.CHeader({ width : image.width, height : image.height, colbits : 8, color : format_png_Color.ColIndexed, interlaced : false}));
				png1.add(format_png_Chunk.CPalette(this.alphaPalette));
				png1.add(format_png_Chunk.CData(format_tools_Deflate.run(values1)));
				png1.add(format_png_Chunk.CEnd);
				var output1 = new haxe_io_BytesOutput();
				var writer1 = new format_png_Writer(output1);
				writer1.write(png1);
				alphaByteArray = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(output1.getBytes());
				byteArray = data1.bitmapData;
				type = format_swf_exporters_BitmapType.JPEG_ALPHA;
			} else {
				byteArray = data1.bitmapData;
				type = format_swf_exporters_BitmapType.JPEG;
			}
		} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBits)) {
			var data3 = tag;
			byteArray = data3.bitmapData;
			type = format_swf_exporters_BitmapType.JPEG;
		}
		if(byteArray != null) {
			var symbol = new openfl__$internal_symbols_BitmapSymbol();
			symbol.id = tag.characterId;
			this.bitmapAlpha.h[symbol.id] = alphaByteArray;
			this.bitmaps.h[symbol.id] = byteArray;
			this.bitmapTypes.h[symbol.id] = type;
			symbol.path = "";
			this.swfLite.symbols.h[symbol.id] = symbol;
			return symbol;
		}
		return null;
	}
	,addFont: function(tag) {
		if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineFont2)) {
			var defineFont = tag;
			var symbol = new openfl__$internal_symbols_FontSymbol();
			symbol.id = defineFont.characterId;
			symbol.glyphs = [];
			symbol.advances = [];
			symbol.ascent = defineFont.ascent;
			symbol.bold = defineFont.bold;
			symbol.codes = defineFont.codeTable.slice();
			symbol.descent = defineFont.descent;
			symbol.italic = defineFont.italic;
			symbol.leading = defineFont.leading;
			symbol.name = defineFont.fontName;
			this.swfLite.symbols.h[symbol.id] = symbol;
			return symbol;
		}
		return null;
	}
	,addShape: function(tag) {
		var handler = new format_swf_exporters_ShapeCommandExporter(this.data);
		tag["export"](handler);
		var bitmaps = format_swf_exporters_ShapeBitmapExporter.process(handler);
		if(bitmaps != null) {
			var symbol = new openfl__$internal_symbols_SpriteSymbol();
			var frame = new openfl__$internal_timeline_Frame();
			frame.objects = [];
			var bitmap;
			var frameObject;
			var _g1 = 0;
			var _g = bitmaps.length;
			while(_g1 < _g) {
				var i = _g1++;
				bitmap = bitmaps[i];
				this.processTag(this.data.getCharacter(bitmap.id));
				var bitmapSymbol = this.swfLite.symbols.h[bitmap.id];
				if(bitmapSymbol != null) {
					if(bitmapSymbol.smooth == null && !bitmap.smooth) {
						bitmapSymbol.smooth = false;
					} else if(bitmapSymbol.smooth == false && bitmap.smooth) {
						bitmapSymbol.smooth = true;
					}
				}
				frameObject = new openfl__$internal_timeline_FrameObject();
				frameObject.symbol = bitmap.id;
				frameObject.type = openfl__$internal_timeline_FrameObjectType.CREATE;
				frameObject.id = i;
				frameObject.depth = i;
				frameObject.clipDepth = 0;
				frameObject.matrix = bitmap.transform;
				frameObject.visible = true;
				frame.objects.push(frameObject);
			}
			symbol.frames.push(frame);
			symbol.id = tag.characterId;
			this.swfLite.symbols.h[symbol.id] = symbol;
			return symbol;
		} else {
			var symbol1 = new openfl__$internal_symbols_ShapeSymbol();
			symbol1.id = tag.characterId;
			symbol1.commands = handler.commands;
			var _g2 = 0;
			var _g11 = handler.commands;
			while(_g2 < _g11.length) {
				var command = _g11[_g2];
				++_g2;
				if(command[1] == 0) {
					var bitmapID = command[2];
					this.processTag(this.data.getCharacter(bitmapID));
				}
			}
			this.swfLite.symbols.h[symbol1.id] = symbol1;
			return symbol1;
		}
	}
	,addSprite: function(tag,root) {
		if(root == null) {
			root = false;
		}
		var symbol = new openfl__$internal_symbols_SpriteSymbol();
		if(js_Boot.__instanceof(tag,format_swf_tags_IDefinitionTag)) {
			symbol.id = tag.characterId;
		}
		var instances = [];
		var lastModified = new haxe_ds_IntMap();
		var zeroCharacter = -1;
		var frame;
		var frameObject;
		var frameData;
		var placeTag;
		var _g = 0;
		var _g1 = tag.frames;
		while(_g < _g1.length) {
			var frameData1 = _g1[_g];
			++_g;
			frame = new openfl__$internal_timeline_Frame();
			if(frameData1.label != null) {
				frame.label = frameData1.label;
			}
			instances.splice(0,instances.length);
			var _g2 = 0;
			var _g3 = frameData1.getObjectsSortedByDepth();
			while(_g2 < _g3.length) {
				var object = _g3[_g2];
				++_g2;
				instances.push(object.placedAtIndex);
				if(object.placedAtIndex == 0 && object.characterId != zeroCharacter) {
					lastModified.remove(0);
					zeroCharacter = object.characterId;
				}
				if(!lastModified.h.hasOwnProperty(object.placedAtIndex)) {
					this.processTag(this.data.getCharacter(object.characterId));
					placeTag = tag.tags[object.placedAtIndex];
				} else if(object.lastModifiedAtIndex > lastModified.h[object.placedAtIndex]) {
					placeTag = tag.tags[object.lastModifiedAtIndex];
				} else {
					continue;
				}
				frameObject = new openfl__$internal_timeline_FrameObject();
				frameObject.symbol = object.characterId;
				frameObject.id = object.placedAtIndex;
				frameObject.name = placeTag.instanceName;
				if(!lastModified.h.hasOwnProperty(object.placedAtIndex)) {
					frameObject.type = openfl__$internal_timeline_FrameObjectType.CREATE;
				} else {
					frameObject.type = openfl__$internal_timeline_FrameObjectType.UPDATE;
				}
				if(placeTag.matrix != null) {
					var matrix = placeTag.matrix.get_matrix();
					matrix.tx *= 0.05;
					matrix.ty *= 0.05;
					frameObject.matrix = matrix;
				}
				if(placeTag.colorTransform != null) {
					frameObject.colorTransform = placeTag.colorTransform.get_colorTransform();
				}
				if(placeTag.hasFilterList) {
					var filters = [];
					var _g4 = 0;
					var _g5 = placeTag.surfaceFilterList;
					while(_g4 < _g5.length) {
						var surfaceFilter = _g5[_g4];
						++_g4;
						var type = surfaceFilter.get_type();
						if(type != null) {
							filters.push(surfaceFilter.get_type());
						}
					}
					frameObject.filters = filters;
				}
				frameObject.depth = placeTag.depth;
				frameObject.clipDepth = placeTag.hasClipDepth ? placeTag.clipDepth : 0;
				if(placeTag.hasVisible) {
					frameObject.visible = placeTag.visible != 0;
				}
				if(placeTag.hasBlendMode) {
					var blendMode = format_swf_data_consts_BlendMode.toString(placeTag.blendMode);
					frameObject.blendMode = openfl_display__$BlendMode_BlendMode_$Impl_$.fromString(blendMode);
				}
				if(placeTag.hasCacheAsBitmap) {
					frameObject.cacheAsBitmap = placeTag.bitmapCache != 0;
				}
				lastModified.h[object.placedAtIndex] = object.lastModifiedAtIndex;
				if(frame.objects == null) {
					frame.objects = [];
				}
				frame.objects.push(frameObject);
			}
			var id = lastModified.keys();
			while(id.hasNext()) {
				var id1 = id.next();
				if(instances.indexOf(id1) == -1) {
					lastModified.remove(id1);
					frameObject = new openfl__$internal_timeline_FrameObject();
					frameObject.id = id1;
					frameObject.type = openfl__$internal_timeline_FrameObjectType.DESTROY;
					if(frame.objects == null) {
						frame.objects = [];
					}
					frame.objects.push(frameObject);
				}
			}
			symbol.frames.push(frame);
		}
		if(root) {
			this.swfLite.root = symbol;
		} else {
			this.swfLite.symbols.h[symbol.id] = symbol;
		}
		return symbol;
	}
	,addDynamicText: function(tag) {
		var symbol = new openfl__$internal_symbols_DynamicTextSymbol();
		symbol.id = tag.characterId;
		symbol.border = tag.border;
		if(tag.hasTextColor) {
			symbol.color = tag.textColor;
		}
		symbol.fontHeight = tag.fontHeight;
		symbol.multiline = tag.multiline;
		symbol.selectable = !tag.noSelect;
		if(tag.hasText) {
			symbol.html = tag.html;
			symbol.text = tag.initialText;
		}
		if(tag.hasLayout) {
			var _g = tag.align;
			switch(_g) {
			case 0:
				symbol.align = "left";
				break;
			case 1:
				symbol.align = "right";
				break;
			case 2:
				symbol.align = "center";
				break;
			case 3:
				symbol.align = "justify";
				break;
			}
			symbol.leftMargin = tag.leftMargin;
			symbol.rightMargin = tag.rightMargin;
			symbol.indent = tag.indent;
			symbol.leading = tag.leading;
		}
		symbol.wordWrap = tag.wordWrap;
		symbol.input = !tag.readOnly;
		if(tag.hasFont) {
			var font = this.data.getCharacter(tag.fontId);
			var tmp = font != null;
			symbol.fontID = tag.fontId;
			symbol.fontName = (js_Boot.__cast(font , format_swf_tags_TagDefineFont2)).fontName;
		}
		if(tag.hasFontClass) {
			symbol.fontName = tag.fontClass;
		}
		var bounds = tag.bounds.get_rect();
		symbol.x = bounds.x;
		symbol.y = bounds.y;
		symbol.width = bounds.width;
		symbol.height = bounds.height;
		this.swfLite.symbols.h[symbol.id] = symbol;
		return symbol;
	}
	,addStaticText: function(tag) {
		var symbol = new openfl__$internal_symbols_StaticTextSymbol();
		symbol.id = tag.characterId;
		var records = [];
		var _g = 0;
		var _g1 = tag.records;
		while(_g < _g1.length) {
			var record = _g1[_g];
			++_g;
			var textRecord = new openfl__$internal_symbols_StaticTextRecord();
			var font = null;
			var defineFont = null;
			if(record.hasFont) {
				textRecord.fontID = record.fontId;
				defineFont = this.data.getCharacter(record.fontId);
				this.processTag(defineFont);
				font = this.swfLite.symbols.h[record.fontId];
			}
			if(record.hasColor) {
				textRecord.color = record.textColor;
			}
			if(record.hasXOffset) {
				textRecord.offsetX = record.xOffset;
			}
			if(record.hasYOffset) {
				textRecord.offsetY = record.yOffset;
			}
			textRecord.fontHeight = record.textHeight;
			var advances = [];
			var glyphs = [];
			if(font != null) {
				var handler = new format_swf_exporters_ShapeCommandExporter(this.data);
				var _g2 = 0;
				var _g3 = record.glyphEntries;
				while(_g2 < _g3.length) {
					var glyphEntry = _g3[_g2];
					++_g2;
					var index = glyphEntry.index;
					advances.push(glyphEntry.advance);
					glyphs.push(index);
					if(font.glyphs[index] == null) {
						handler.beginShape();
						defineFont["export"](handler,index);
						font.glyphs[index] = handler.commands.slice();
						font.advances[index] = defineFont.fontAdvanceTable[index];
					}
				}
			}
			textRecord.advances = advances;
			textRecord.glyphs = glyphs;
			records.push(textRecord);
		}
		symbol.records = records;
		var matrix = tag.textMatrix.get_matrix();
		matrix.tx *= 0.05;
		matrix.ty *= 0.05;
		symbol.matrix = matrix;
		this.swfLite.symbols.h[symbol.id] = symbol;
		return symbol;
	}
	,addSound: function(tag) {
		if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineSound)) {
			var defineSound = tag;
			var byteArray = defineSound.soundData;
			var type;
			var _g = defineSound.soundFormat;
			switch(_g) {
			case 0:
				type = format_swf_exporters_SoundType.UNCOMPRESSED_NATIVE_ENDIAN;
				break;
			case 1:
				type = format_swf_exporters_SoundType.ADPCM;
				break;
			case 2:
				type = format_swf_exporters_SoundType.MP3;
				break;
			case 3:
				type = format_swf_exporters_SoundType.UNCOMPRESSED_LITTLE_ENDIAN;
				break;
			case 4:
				type = format_swf_exporters_SoundType.NELLYMOSER_16_KHZ;
				break;
			case 5:
				type = format_swf_exporters_SoundType.NELLYMOSER_8_KHZ;
				break;
			case 6:
				type = format_swf_exporters_SoundType.NELLYMOSER;
				break;
			case 7:
				type = format_swf_exporters_SoundType.SPEEX;
				break;
			default:
				throw new js__$Boot_HaxeError("invalid sound type!");
			}
			this.sounds.h[tag.characterId] = byteArray;
			this.soundTypes.h[tag.characterId] = type;
		}
		return;
	}
	,processSymbol: function(symbol) {
		lime_tools_helpers_LogHelper.info("","processing symbol " + symbol.name);
		var data2 = this.processTag(this.data.getCharacter(symbol.tagId));
		if(data2 != null) {
			data2.className = symbol.name;
		}
		if(null != this.sounds.h[symbol.tagId]) {
			this.soundSymbolClassNames.h[symbol.tagId] = symbol.name;
		}
		if(data2 == null && new EReg("_fla\\.MainTimeline$","").match(symbol.name)) {
			data2 = this.swfLite.root;
		}
		if(!js_Boot.__instanceof(data2,openfl__$internal_symbols_SpriteSymbol)) {
			return;
		}
		var spriteSymbol = data2;
		var cls = format_swf_exporters_AVM2.findClassByName(this.data.abcData,symbol.name);
		if(cls != null) {
			if(cls.superclass != null) {
				var superClsName = format_swf_exporters_AVM2.resolveMultiNameByIndex(this.data.abcData,cls.superclass);
				var _g = superClsName.nameSpace;
				if(_g[1] == 2) {
					if(!new EReg("^flash\\.","").match(superClsName.nameSpaceName)) {
						spriteSymbol.baseClassName = ("" == superClsName.nameSpaceName ? "" : superClsName.nameSpaceName + ".") + superClsName.name;
						lime_tools_helpers_LogHelper.info("","data.className: " + symbol.name + ", baseClass: " + spriteSymbol.baseClassName);
					}
				}
			}
			if(cls.fields.length > 0) {
				var _g1 = 0;
				var _g11 = cls.fields;
				while(_g1 < _g11.length) {
					var field = _g11[_g1];
					++_g1;
					var _g2 = field.kind;
					if(_g2[1] == 1) {
						var idx = _g2[2];
						var methodName = format_swf_exporters_AVM2.resolveMultiNameByIndex(this.data.abcData,field.name);
						if(format_swf_exporters_AVM2.FRAME_SCRIPT_METHOD_NAME.match(methodName.name)) {
							var frameNumOneIndexed = Std.parseInt(format_swf_exporters_AVM2.FRAME_SCRIPT_METHOD_NAME.matched(1));
							lime_tools_helpers_LogHelper.info("","frame script #" + frameNumOneIndexed);
							var pcodes = this.data.pcode[format_swf_exporters_AVM2.getIndex(idx)];
							var js1 = "";
							var prop = null;
							var stack = [];
							var _g21 = 0;
							try {
								while(_g21 < pcodes.length) {
									var pcode = pcodes[_g21];
									++_g21;
									switch(pcode[1]) {
									case 9:
										var delta = pcode[3];
										var j = pcode[2];
										switch(j[1]) {
										case 4:
											js1 += "else\n";
											lime_tools_helpers_LogHelper.info("",delta == null ? "null" : "" + delta);
											break;
										case 6:
											js1 += "if (" + Std.string(stack.pop()) + ")\n";
											break;
										case 8:
											var temp = stack.pop();
											js1 += "if (" + Std.string(stack.pop()) + " == " + Std.string(temp) + ")\n";
											break;
										default:
											lime_tools_helpers_LogHelper.info("","OJump");
										}
										break;
									case 15:
										stack.push(null);
										break;
									case 18:
										var i = pcode[2];
										stack.push(i);
										lime_tools_helpers_LogHelper.info("","smallint: " + i);
										break;
									case 19:
										var i1 = pcode[2];
										stack.push(i1);
										lime_tools_helpers_LogHelper.info("","int: " + i1);
										break;
									case 20:
										stack.push(true);
										break;
									case 21:
										stack.push(false);
										break;
									case 24:
										stack.push(stack[stack.length - 1]);
										break;
									case 26:
										var strIndex = pcode[2];
										var str = format_swf_exporters_AVM2.getStringByIndex(this.data.abcData,strIndex);
										stack.push("\"" + str + "\"");
										break;
									case 30:
										stack.pop();
										break;
									case 39:
										var argCount = pcode[3];
										var nameIndex = pcode[2];
										lime_tools_helpers_LogHelper.info("","OCallProperty stack: " + Std.string(stack));
										stack.pop();
										if(prop != null) {
											stack.push(format_swf_exporters_AVM2.getFullName(this.data.abcData,prop,cls) + "." + format_swf_exporters_AVM2.parseFunctionCall(this.data.abcData,cls,nameIndex,argCount,stack));
										}
										break;
									case 40:
										break;
									case 43:
										var argCount1 = pcode[3];
										var nameIndex1 = pcode[2];
										lime_tools_helpers_LogHelper.info("","OConstructProperty stack: " + Std.string(stack));
										var temp1 = "new ";
										temp1 += format_swf_exporters_AVM2.parseFunctionCall(this.data.abcData,cls,nameIndex1,argCount1,stack);
										stack.push(temp1);
										lime_tools_helpers_LogHelper.info("","OConstructProperty value: " + temp1);
										break;
									case 46:
										var argCount2 = pcode[3];
										var nameIndex2 = pcode[2];
										var temp2 = format_swf_exporters_AVM2.parseFunctionCall(this.data.abcData,cls,nameIndex2,argCount2,stack);
										if(stack.length > 0) {
											js1 += Std.string(stack.pop()) + ".";
										} else {
											js1 += "this" + ".";
										}
										js1 += temp2;
										js1 += ";\n";
										break;
									case 49:
										var argCount3 = pcode[2];
										lime_tools_helpers_LogHelper.info("","before array: " + Std.string(stack));
										var str1 = "";
										var temp3 = [];
										var _g4 = 0;
										var _g3 = argCount3;
										while(_g4 < _g3) {
											var i2 = _g4++;
											temp3.push(stack.pop());
										}
										temp3.reverse();
										stack.push(temp3);
										lime_tools_helpers_LogHelper.info("","after array: " + Std.string(stack));
										break;
									case 54:
										var nameIndex3 = pcode[2];
										break;
									case 57:
										var nameIndex4 = pcode[2];
										prop = format_swf_exporters_AVM2.resolveMultiNameByIndex(this.data.abcData,nameIndex4);
										var fullname = "";
										if(prop != null) {
											fullname += format_swf_exporters_AVM2.getFullName(this.data.abcData,prop,cls);
											stack.push(fullname);
										}
										break;
									case 58:
										var nameIndex5 = pcode[2];
										prop = format_swf_exporters_AVM2.resolveMultiNameByIndex(this.data.abcData,nameIndex5);
										lime_tools_helpers_LogHelper.info("","OSetProp stack: " + Std.string(prop) + ", " + Std.string(stack));
										var result = stack.pop();
										var name = null;
										if(prop != null) {
											if(prop.name != null) {
												name = "." + prop.name;
											} else {
												name = "[" + Std.string(stack.pop()) + "]";
											}
										} else {
											lime_tools_helpers_LogHelper.info("","OSetProp stack prop is null");
											throw "__break__";
										}
										var instance = stack.pop();
										if(instance != "this") {
											instance = "this" + "." + Std.string(instance);
										}
										js1 += Std.string(instance) + name + " = " + Std.string(result) + ";\n";
										break;
									case 63:
										var nameIndex6 = pcode[2];
										var fullname1 = "";
										prop = format_swf_exporters_AVM2.resolveMultiNameByIndex(this.data.abcData,nameIndex6);
										if(prop != null) {
											fullname1 += Std.string(stack.pop()) + "." + format_swf_exporters_AVM2.getFullName(this.data.abcData,prop,cls);
										}
										lime_tools_helpers_LogHelper.info("","OGetProp fullname: " + fullname1);
										stack.push(fullname1);
										break;
									case 64:
										var nameIndex7 = pcode[2];
										lime_tools_helpers_LogHelper.info("","OInitProp stack: " + Std.string(stack));
										prop = format_swf_exporters_AVM2.resolveMultiNameByIndex(this.data.abcData,nameIndex7);
										var temp4 = stack.pop();
										js1 += Std.string(stack.pop()) + "." + prop.name + " = " + Std.string(temp4) + ";\n";
										break;
									case 89:
										stack.push("this");
										break;
									case 96:
										var op = pcode[2];
										var operator = null;
										switch(op[1]) {
										case 6:
											operator = "+";
											break;
										case 8:
											operator = "*";
											break;
										default:
											lime_tools_helpers_LogHelper.info("","OOp");
										}
										if(op == format_abc_Operation.OpAs) {
											lime_tools_helpers_LogHelper.info("","cast to " + Std.string(stack.pop()) + " is discarded");
										}
										if(operator != null) {
											var temp5 = stack.pop();
											stack.push(Std.string(stack.pop()) + " " + operator + " " + Std.string(temp5));
										}
										break;
									default:
										lime_tools_helpers_LogHelper.info("","pcode " + Std.string(pcode));
									}
								}
							} catch( e ) { if( e != "__break__" ) throw e; }
							lime_tools_helpers_LogHelper.info("","javascript:\n" + js1);
							spriteSymbol.frames[frameNumOneIndexed - 1].scriptSource = js1;
						}
					}
				}
			}
		}
	}
	,processTag: function(tag) {
		if(tag == null) {
			return null;
		}
		if(!this.swfLite.symbols.h.hasOwnProperty(tag.characterId)) {
			if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineSprite)) {
				return this.addSprite(tag);
			} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBits) || js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsJPEG2) || js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsLossless)) {
				return this.addBitmap(tag);
			} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineButton) || js_Boot.__instanceof(tag,format_swf_tags_TagDefineButton2)) {
				return this.addButton(tag);
			} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineEditText)) {
				return this.addDynamicText(tag);
			} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineText)) {
				return this.addStaticText(tag);
			} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineShape)) {
				return this.addShape(tag);
			} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineFont) || js_Boot.__instanceof(tag,format_swf_tags_TagDefineFont4)) {
				return this.addFont(tag);
			} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineSound)) {
				this.addSound(tag);
			}
			return null;
		} else {
			return this.swfLite.symbols.h[tag.characterId];
		}
	}
	,__class__: format_swf_exporters_SWFLiteExporter
};
var format_swf_exporters_BitmapType = $hxClasses["format.swf.exporters.BitmapType"] = { __ename__ : ["format","swf","exporters","BitmapType"], __constructs__ : ["PNG","JPEG_ALPHA","JPEG"] };
format_swf_exporters_BitmapType.PNG = ["PNG",0];
format_swf_exporters_BitmapType.PNG.toString = $estr;
format_swf_exporters_BitmapType.PNG.__enum__ = format_swf_exporters_BitmapType;
format_swf_exporters_BitmapType.JPEG_ALPHA = ["JPEG_ALPHA",1];
format_swf_exporters_BitmapType.JPEG_ALPHA.toString = $estr;
format_swf_exporters_BitmapType.JPEG_ALPHA.__enum__ = format_swf_exporters_BitmapType;
format_swf_exporters_BitmapType.JPEG = ["JPEG",2];
format_swf_exporters_BitmapType.JPEG.toString = $estr;
format_swf_exporters_BitmapType.JPEG.__enum__ = format_swf_exporters_BitmapType;
var format_swf_exporters_SoundType = $hxClasses["format.swf.exporters.SoundType"] = { __ename__ : ["format","swf","exporters","SoundType"], __constructs__ : ["UNCOMPRESSED_NATIVE_ENDIAN","ADPCM","MP3","UNCOMPRESSED_LITTLE_ENDIAN","NELLYMOSER_16_KHZ","NELLYMOSER_8_KHZ","NELLYMOSER","SPEEX"] };
format_swf_exporters_SoundType.UNCOMPRESSED_NATIVE_ENDIAN = ["UNCOMPRESSED_NATIVE_ENDIAN",0];
format_swf_exporters_SoundType.UNCOMPRESSED_NATIVE_ENDIAN.toString = $estr;
format_swf_exporters_SoundType.UNCOMPRESSED_NATIVE_ENDIAN.__enum__ = format_swf_exporters_SoundType;
format_swf_exporters_SoundType.ADPCM = ["ADPCM",1];
format_swf_exporters_SoundType.ADPCM.toString = $estr;
format_swf_exporters_SoundType.ADPCM.__enum__ = format_swf_exporters_SoundType;
format_swf_exporters_SoundType.MP3 = ["MP3",2];
format_swf_exporters_SoundType.MP3.toString = $estr;
format_swf_exporters_SoundType.MP3.__enum__ = format_swf_exporters_SoundType;
format_swf_exporters_SoundType.UNCOMPRESSED_LITTLE_ENDIAN = ["UNCOMPRESSED_LITTLE_ENDIAN",3];
format_swf_exporters_SoundType.UNCOMPRESSED_LITTLE_ENDIAN.toString = $estr;
format_swf_exporters_SoundType.UNCOMPRESSED_LITTLE_ENDIAN.__enum__ = format_swf_exporters_SoundType;
format_swf_exporters_SoundType.NELLYMOSER_16_KHZ = ["NELLYMOSER_16_KHZ",4];
format_swf_exporters_SoundType.NELLYMOSER_16_KHZ.toString = $estr;
format_swf_exporters_SoundType.NELLYMOSER_16_KHZ.__enum__ = format_swf_exporters_SoundType;
format_swf_exporters_SoundType.NELLYMOSER_8_KHZ = ["NELLYMOSER_8_KHZ",5];
format_swf_exporters_SoundType.NELLYMOSER_8_KHZ.toString = $estr;
format_swf_exporters_SoundType.NELLYMOSER_8_KHZ.__enum__ = format_swf_exporters_SoundType;
format_swf_exporters_SoundType.NELLYMOSER = ["NELLYMOSER",6];
format_swf_exporters_SoundType.NELLYMOSER.toString = $estr;
format_swf_exporters_SoundType.NELLYMOSER.__enum__ = format_swf_exporters_SoundType;
format_swf_exporters_SoundType.SPEEX = ["SPEEX",7];
format_swf_exporters_SoundType.SPEEX.toString = $estr;
format_swf_exporters_SoundType.SPEEX.__enum__ = format_swf_exporters_SoundType;
var format_swf_exporters_AVM2 = function() { };
$hxClasses["format.swf.exporters.AVM2"] = format_swf_exporters_AVM2;
format_swf_exporters_AVM2.__name__ = ["format","swf","exporters","AVM2"];
format_swf_exporters_AVM2.getIndex = function(idx) {
	var i = idx[2];
	return i;
};
format_swf_exporters_AVM2.getMultiNameByIndex = function(abcData,i) {
	return abcData.names[format_swf_exporters_AVM2.getIndex(i) - 1];
};
format_swf_exporters_AVM2.getStringByIndex = function(abcData,i) {
	return abcData.strings[format_swf_exporters_AVM2.getIndex(i) - 1];
};
format_swf_exporters_AVM2.getNameSpaceByIndex = function(abcData,i) {
	return abcData.namespaces[format_swf_exporters_AVM2.getIndex(i) - 1];
};
format_swf_exporters_AVM2.getFunctionByIndex = function(abcData,i) {
	return abcData.functions[format_swf_exporters_AVM2.getIndex(i)];
};
format_swf_exporters_AVM2.resolveMultiNameByIndex = function(abcData,i) {
	var multiName = format_swf_exporters_AVM2.getMultiNameByIndex(abcData,i);
	switch(multiName[1]) {
	case 0:
		var nsIndex = multiName[3];
		var nameIndex = multiName[2];
		var nameSpace = format_swf_exporters_AVM2.getNameSpaceByIndex(abcData,nsIndex);
		switch(nameSpace[1]) {
		case 0:
			var nsNameIndex = nameSpace[2];
			return { name : format_swf_exporters_AVM2.getStringByIndex(abcData,nameIndex), nameIndex : i, nameSpace : nameSpace, nameSpaceName : format_swf_exporters_AVM2.getStringByIndex(abcData,nsNameIndex)};
		case 2:
			var nsNameIndex1 = nameSpace[2];
			return { name : format_swf_exporters_AVM2.getStringByIndex(abcData,nameIndex), nameIndex : i, nameSpace : nameSpace, nameSpaceName : format_swf_exporters_AVM2.getStringByIndex(abcData,nsNameIndex1)};
		case 3:
			var nsNameIndex2 = nameSpace[2];
			return { name : format_swf_exporters_AVM2.getStringByIndex(abcData,nameIndex), nameIndex : i, nameSpace : nameSpace, nameSpaceName : format_swf_exporters_AVM2.getStringByIndex(abcData,nsNameIndex2)};
		default:
			lime_tools_helpers_LogHelper.info("","other type of namespace");
		}
		break;
	case 1:
		var nsIndexSet = multiName[3];
		var nameIndex1 = multiName[2];
		return { name : format_swf_exporters_AVM2.getStringByIndex(abcData,nameIndex1), nameIndex : i, nameSpace : null, nameSpaceName : null};
	case 4:
		var nset = multiName[2];
		return { name : null, nameIndex : i, nameSpace : null, nameSpaceName : null};
	default:
		lime_tools_helpers_LogHelper.info("","other type of name");
	}
	return null;
};
format_swf_exporters_AVM2.findClassByName = function(abcData,s) {
	var x = s.lastIndexOf(".");
	var pkgName = "";
	var clsName = s;
	if(-1 != x) {
		pkgName = HxOverrides.substr(s,0,x);
		clsName = HxOverrides.substr(s,x + 1,null);
	}
	var _g = 0;
	var _g1 = abcData.classes;
	while(_g < _g1.length) {
		var cls = _g1[_g];
		++_g;
		if(cls.isInterface) {
			continue;
		}
		var multiName = format_swf_exporters_AVM2.resolveMultiNameByIndex(abcData,cls.name);
		if(multiName != null) {
			if(clsName == multiName.name && pkgName == multiName.nameSpaceName) {
				return cls;
			}
		} else {
			lime_tools_helpers_LogHelper.info("","multiname: " + Std.string(multiName));
		}
	}
	return null;
};
format_swf_exporters_AVM2.classHasField = function(abcData,cls,name) {
	var classHasField = false;
	var _g = 0;
	var _g1 = cls.fields;
	try {
		while(_g < _g1.length) {
			var field = _g1[_g];
			++_g;
			var _g2 = field.kind;
			switch(_g2[1]) {
			case 0:
				var methodName = format_swf_exporters_AVM2.resolveMultiNameByIndex(abcData,field.name);
				if(methodName.name == name) {
					classHasField = true;
					throw "__break__";
				}
				break;
			case 1:
				var idx = _g2[2];
				var methodName1 = format_swf_exporters_AVM2.resolveMultiNameByIndex(abcData,field.name);
				if(methodName1.name == name) {
					classHasField = true;
					throw "__break__";
				}
				break;
			default:
			}
		}
	} catch( e ) { if( e != "__break__" ) throw e; }
	return classHasField;
};
format_swf_exporters_AVM2.getFullName = function(abcData,prop,cls) {
	var js = null;
	if(prop == null) {
		lime_tools_helpers_LogHelper.info("","unable to get full name of property, prop = null");
		return "";
	}
	if(prop.nameSpace == null) {
		lime_tools_helpers_LogHelper.info("","namespace is null");
		js = prop.name;
	} else {
		var _g = prop.nameSpace;
		switch(_g[1]) {
		case 2:
			if("" != prop.nameSpaceName) {
				js = prop.nameSpaceName + "_" + prop.name;
			} else {
				var _g1 = prop.name;
				if(_g1 == "trace") {
					js = "console.log";
				} else {
					js = prop.name;
				}
			}
			break;
		case 3:
			if(cls.name == prop.nameIndex) {
				js = "this." + prop.name;
			} else {
				lime_tools_helpers_LogHelper.info("","unsupported namespace " + Std.string(prop.nameSpace));
			}
			break;
		default:
			lime_tools_helpers_LogHelper.info("","unsupported namespace " + Std.string(prop.nameSpace));
		}
	}
	return js;
};
format_swf_exporters_AVM2.parseFunctionCall = function(abcData,cls,nameIndex,argCount,stack) {
	var prop = format_swf_exporters_AVM2.resolveMultiNameByIndex(abcData,nameIndex);
	if(prop == null) {
		lime_tools_helpers_LogHelper.info("","parseFunctionCall is stopped, prop = null");
		return "";
	}
	var js = format_swf_exporters_AVM2.getFullName(abcData,prop,cls);
	js += "(";
	var temp = [];
	var _g1 = 0;
	var _g = argCount;
	while(_g1 < _g) {
		var i = _g1++;
		var arg = stack.pop();
		if(typeof(arg) == "string") {
			temp.push(arg);
		} else {
			temp.push(JSON.stringify(arg));
		}
	}
	temp.reverse();
	js += temp.join(", ") + ")";
	return js;
};
var format_swf_exporters_ShapeBitmapExporter = function() { };
$hxClasses["format.swf.exporters.ShapeBitmapExporter"] = format_swf_exporters_ShapeBitmapExporter;
format_swf_exporters_ShapeBitmapExporter.__name__ = ["format","swf","exporters","ShapeBitmapExporter"];
format_swf_exporters_ShapeBitmapExporter.process = function(exporter) {
	var bitmaps = [];
	var commands = exporter.commands.slice();
	var eligible = commands != null && commands.length > 0 && commands.length % 9 == 0;
	if(!eligible) {
		return null;
	}
	while(commands.length > 0) {
		var _g = format_swf_exporters_ShapeBitmapExporter.processNextBitmap(commands.splice(0,9));
		switch(_g[1]) {
		case 0:
			var bitmap = _g[2];
			bitmaps.push(bitmap);
			break;
		case 1:
			return null;
		}
	}
	return bitmaps;
};
format_swf_exporters_ShapeBitmapExporter.processNextBitmap = function(commands) {
	var index = 0;
	var bitmapID = 0;
	var positionX = 0.0;
	var positionY = 0.0;
	var transform = null;
	var smoothBitmap = true;
	var _g = 0;
	while(_g < commands.length) {
		var command = commands[_g];
		++_g;
		switch(command[1]) {
		case 0:
			var smooth = command[5];
			var repeat = command[4];
			var matrix = command[3];
			var bid = command[2];
			if(index == 2) {
				bitmapID = bid;
				transform = matrix;
				smoothBitmap = smooth;
			} else {
				return haxe_ds_Option.None;
			}
			break;
		case 4:
			if(index != 1) {
				if(index != 8) {
					return haxe_ds_Option.None;
				}
			}
			break;
		case 5:
			if(command[2] == null) {
				if(command[3] == null) {
					if(command[4] == null) {
						if(command[5] == null) {
							if(command[6] == null) {
								if(command[7] == null) {
									if(command[8] == null) {
										if(command[9] == null) {
											if(index != 0) {
												return haxe_ds_Option.None;
											}
										} else {
											return haxe_ds_Option.None;
										}
									} else {
										return haxe_ds_Option.None;
									}
								} else {
									return haxe_ds_Option.None;
								}
							} else {
								return haxe_ds_Option.None;
							}
						} else {
							return haxe_ds_Option.None;
						}
					} else {
						return haxe_ds_Option.None;
					}
				} else {
					return haxe_ds_Option.None;
				}
			} else {
				return haxe_ds_Option.None;
			}
			break;
		case 6:
			var y = command[3];
			var x = command[2];
			if(index != 4) {
				var y1 = command[3];
				var x1 = command[2];
				if(index != 5) {
					var y2 = command[3];
					var x2 = command[2];
					if(index != 6) {
						var y3 = command[3];
						var x3 = command[2];
						if(index != 7) {
							return haxe_ds_Option.None;
						}
					}
				}
			}
			break;
		case 7:
			var y4 = command[3];
			var x4 = command[2];
			if(index == 3) {
				positionX = x4;
				positionY = y4;
			} else {
				return haxe_ds_Option.None;
			}
			break;
		default:
			return haxe_ds_Option.None;
		}
		++index;
	}
	if(transform == null) {
		transform = new openfl_geom_Matrix();
		transform.translate(positionX,positionY);
	}
	return haxe_ds_Option.Some({ id : bitmapID, transform : transform, smooth : smoothBitmap});
};
var format_swf_exporters_core_IShapeExporter = function() { };
$hxClasses["format.swf.exporters.core.IShapeExporter"] = format_swf_exporters_core_IShapeExporter;
format_swf_exporters_core_IShapeExporter.__name__ = ["format","swf","exporters","core","IShapeExporter"];
format_swf_exporters_core_IShapeExporter.prototype = {
	beginShape: null
	,endShape: null
	,beginFills: null
	,endFills: null
	,beginLines: null
	,endLines: null
	,beginFill: null
	,beginGradientFill: null
	,beginBitmapFill: null
	,endFill: null
	,lineStyle: null
	,lineGradientStyle: null
	,moveTo: null
	,lineTo: null
	,curveTo: null
	,__class__: format_swf_exporters_core_IShapeExporter
};
var format_swf_exporters_core_DefaultShapeExporter = function(swf) {
	this.swf = swf;
};
$hxClasses["format.swf.exporters.core.DefaultShapeExporter"] = format_swf_exporters_core_DefaultShapeExporter;
format_swf_exporters_core_DefaultShapeExporter.__name__ = ["format","swf","exporters","core","DefaultShapeExporter"];
format_swf_exporters_core_DefaultShapeExporter.__interfaces__ = [format_swf_exporters_core_IShapeExporter];
format_swf_exporters_core_DefaultShapeExporter.prototype = {
	swf: null
	,beginShape: function() {
	}
	,endShape: function() {
	}
	,beginFills: function() {
	}
	,endFills: function() {
	}
	,beginLines: function() {
	}
	,endLines: function() {
	}
	,beginFill: function(color,alpha) {
		if(alpha == null) {
			alpha = 1.0;
		}
	}
	,beginGradientFill: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
		if(focalPointRatio == null) {
			focalPointRatio = 0;
		}
	}
	,beginBitmapFill: function(bitmapId,matrix,repeat,smooth) {
		if(smooth == null) {
			smooth = false;
		}
		if(repeat == null) {
			repeat = true;
		}
	}
	,endFill: function() {
	}
	,lineStyle: function(thickness,color,alpha,pixelHinting,scaleMode,startCaps,endCaps,joints,miterLimit) {
		if(miterLimit == null) {
			miterLimit = 3;
		}
		if(pixelHinting == null) {
			pixelHinting = false;
		}
		if(alpha == null) {
			alpha = 1.0;
		}
		if(color == null) {
			color = 0;
		}
		if(thickness == null) {
			thickness = 0;
		}
	}
	,lineGradientStyle: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
		if(focalPointRatio == null) {
			focalPointRatio = 0;
		}
	}
	,moveTo: function(x,y) {
	}
	,lineTo: function(x,y) {
	}
	,curveTo: function(controlX,controlY,anchorX,anchorY) {
	}
	,__class__: format_swf_exporters_core_DefaultShapeExporter
};
var format_swf_exporters_ShapeCommandExporter = function(swf) {
	format_swf_exporters_core_DefaultShapeExporter.call(this,swf);
	this.commands = [];
};
$hxClasses["format.swf.exporters.ShapeCommandExporter"] = format_swf_exporters_ShapeCommandExporter;
format_swf_exporters_ShapeCommandExporter.__name__ = ["format","swf","exporters","ShapeCommandExporter"];
format_swf_exporters_ShapeCommandExporter.__super__ = format_swf_exporters_core_DefaultShapeExporter;
format_swf_exporters_ShapeCommandExporter.prototype = $extend(format_swf_exporters_core_DefaultShapeExporter.prototype,{
	commands: null
	,beginShape: function() {
		this.commands = [];
	}
	,beginFills: function() {
		this.commands.push(openfl__$internal_swf_ShapeCommand.LineStyle(null,null,null,null,null,null,null,null));
	}
	,beginLines: function() {
	}
	,beginFill: function(color,alpha) {
		if(alpha == null) {
			alpha = 1.0;
		}
		this.commands.push(openfl__$internal_swf_ShapeCommand.BeginFill(color,alpha));
	}
	,beginGradientFill: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
		if(focalPointRatio == null) {
			focalPointRatio = 0;
		}
		this.commands.push(openfl__$internal_swf_ShapeCommand.BeginGradientFill(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio));
	}
	,beginBitmapFill: function(bitmapId,matrix,repeat,smooth) {
		if(smooth == null) {
			smooth = false;
		}
		if(repeat == null) {
			repeat = true;
		}
		this.commands.push(openfl__$internal_swf_ShapeCommand.BeginBitmapFill(bitmapId,matrix,repeat,smooth));
	}
	,endFill: function() {
		this.commands.push(openfl__$internal_swf_ShapeCommand.EndFill);
	}
	,lineStyle: function(thickness,color,alpha,pixelHinting,scaleMode,startCaps,endCaps,joints,miterLimit) {
		if(miterLimit == null) {
			miterLimit = 3;
		}
		if(pixelHinting == null) {
			pixelHinting = false;
		}
		if(alpha == null) {
			alpha = 1.0;
		}
		if(color == null) {
			color = 0;
		}
		if(thickness == null) {
			thickness = 0;
		}
		this.commands.push(openfl__$internal_swf_ShapeCommand.LineStyle(thickness,color,alpha,pixelHinting,scaleMode,startCaps,joints,miterLimit));
	}
	,moveTo: function(x,y) {
		this.commands.push(openfl__$internal_swf_ShapeCommand.MoveTo(x,y));
	}
	,lineTo: function(x,y) {
		this.commands.push(openfl__$internal_swf_ShapeCommand.LineTo(x,y));
	}
	,curveTo: function(controlX,controlY,anchorX,anchorY) {
		this.commands.push(openfl__$internal_swf_ShapeCommand.CurveTo(controlX,controlY,anchorX,anchorY));
	}
	,__class__: format_swf_exporters_ShapeCommandExporter
});
var format_swf_factories_ISWFTagFactory = function() { };
$hxClasses["format.swf.factories.ISWFTagFactory"] = format_swf_factories_ISWFTagFactory;
format_swf_factories_ISWFTagFactory.__name__ = ["format","swf","factories","ISWFTagFactory"];
format_swf_factories_ISWFTagFactory.prototype = {
	create: null
	,__class__: format_swf_factories_ISWFTagFactory
};
var format_swf_factories_SWFActionFactory = function() { };
$hxClasses["format.swf.factories.SWFActionFactory"] = format_swf_factories_SWFActionFactory;
format_swf_factories_SWFActionFactory.__name__ = ["format","swf","factories","SWFActionFactory"];
format_swf_factories_SWFActionFactory.create = function(code,length,pos) {
	if(code == 7) {
		return new format_swf_data_actions_swf3_ActionStop(code,length,pos);
	} else {
		return new format_swf_data_actions_ActionUnknown(code,length,pos);
	}
};
var format_swf_factories_SWFFilterFactory = function() { };
$hxClasses["format.swf.factories.SWFFilterFactory"] = format_swf_factories_SWFFilterFactory;
format_swf_factories_SWFFilterFactory.__name__ = ["format","swf","factories","SWFFilterFactory"];
format_swf_factories_SWFFilterFactory.create = function(id) {
	switch(id) {
	case 0:
		return new format_swf_data_filters_FilterDropShadow(id);
	case 1:
		return new format_swf_data_filters_FilterBlur(id);
	case 2:
		return new format_swf_data_filters_FilterGlow(id);
	case 3:
		return new format_swf_data_filters_FilterBevel(id);
	case 4:
		return new format_swf_data_filters_FilterGradientGlow(id);
	case 5:
		return new format_swf_data_filters_FilterConvolution(id);
	case 6:
		return new format_swf_data_filters_FilterColorMatrix(id);
	case 7:
		return new format_swf_data_filters_FilterGradientBevel(id);
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Unknown filter ID: " + id));
	}
};
var format_swf_factories_SWFTagFactory = function() {
};
$hxClasses["format.swf.factories.SWFTagFactory"] = format_swf_factories_SWFTagFactory;
format_swf_factories_SWFTagFactory.__name__ = ["format","swf","factories","SWFTagFactory"];
format_swf_factories_SWFTagFactory.__interfaces__ = [format_swf_factories_ISWFTagFactory];
format_swf_factories_SWFTagFactory.prototype = {
	create: function(type) {
		switch(type) {
		case 0:
			return this.createTagEnd();
		case 1:
			return this.createTagShowFrame();
		case 2:
			return this.createTagDefineShape();
		case 4:
			return this.createTagPlaceObject();
		case 5:
			return this.createTagRemoveObject();
		case 6:
			return this.createTagDefineBits();
		case 7:
			return this.createTagDefineButton();
		case 8:
			return this.createTagJPEGTables();
		case 9:
			return this.createTagSetBackgroundColor();
		case 10:
			return this.createTagDefineFont();
		case 11:
			return this.createTagDefineText();
		case 12:
			return this.createTagDoAction();
		case 13:
			return this.createTagDefineFontInfo();
		case 14:
			return this.createTagDefineSound();
		case 15:
			return this.createTagStartSound();
		case 17:
			return this.createTagDefineButtonSound();
		case 18:
			return this.createTagSoundStreamHead();
		case 19:
			return this.createTagSoundStreamBlock();
		case 20:
			return this.createTagDefineBitsLossless();
		case 21:
			return this.createTagDefineBitsJPEG2();
		case 22:
			return this.createTagDefineShape2();
		case 23:
			return this.createTagDefineButtonCxform();
		case 24:
			return this.createTagProtect();
		case 26:
			return this.createTagPlaceObject2();
		case 28:
			return this.createTagRemoveObject2();
		case 32:
			return this.createTagDefineShape3();
		case 33:
			return this.createTagDefineText2();
		case 34:
			return this.createTagDefineButton2();
		case 35:
			return this.createTagDefineBitsJPEG3();
		case 36:
			return this.createTagDefineBitsLossless2();
		case 37:
			return this.createTagDefineEditText();
		case 39:
			return this.createTagDefineSprite();
		case 40:
			return this.createTagNameCharacter();
		case 41:
			return this.createTagProductInfo();
		case 43:
			return this.createTagFrameLabel();
		case 45:
			return this.createTagSoundStreamHead2();
		case 46:
			return this.createTagDefineMorphShape();
		case 48:
			return this.createTagDefineFont2();
		case 56:
			return this.createTagExportAssets();
		case 57:
			return this.createTagImportAssets();
		case 58:
			return this.createTagEnableDebugger();
		case 59:
			return this.createTagDoInitAction();
		case 60:
			return this.createTagDefineVideoStream();
		case 61:
			return this.createTagVideoFrame();
		case 62:
			return this.createTagDefineFontInfo2();
		case 63:
			return this.createTagDebugID();
		case 64:
			return this.createTagEnableDebugger2();
		case 65:
			return this.createTagScriptLimits();
		case 66:
			return this.createTagSetTabIndex();
		case 69:
			return this.createTagFileAttributes();
		case 70:
			return this.createTagPlaceObject3();
		case 71:
			return this.createTagImportAssets2();
		case 72:
			return this.createTagDoABCDeprecated();
		case 73:
			return this.createTagDefineFontAlignZones();
		case 74:
			return this.createTagCSMTextSettings();
		case 75:
			return this.createTagDefineFont3();
		case 76:
			return this.createTagSymbolClass();
		case 77:
			return this.createTagMetadata();
		case 78:
			return this.createTagDefineScalingGrid();
		case 82:
			return this.createTagDoABC();
		case 83:
			return this.createTagDefineShape4();
		case 84:
			return this.createTagDefineMorphShape2();
		case 86:
			return this.createTagDefineSceneAndFrameLabelData();
		case 87:
			return this.createTagDefineBinaryData();
		case 88:
			return this.createTagDefineFontName();
		case 89:
			return this.createTagStartSound2();
		case 90:
			return this.createTagDefineBitsJPEG4();
		case 91:
			return this.createTagDefineFont4();
		case 93:
			return this.createTagEnableTelemetry();
		case 94:
			return this.createTagPlaceObject4();
		case 253:
			return this.createTagSWFEncryptActions();
		case 255:
			return this.createTagSWFEncryptSignature();
		default:
			return this.createTagUnknown(type);
		}
	}
	,createTagEnd: function() {
		return new format_swf_tags_TagEnd();
	}
	,createTagShowFrame: function() {
		return new format_swf_tags_TagShowFrame();
	}
	,createTagDefineShape: function() {
		return new format_swf_tags_TagDefineShape();
	}
	,createTagPlaceObject: function() {
		return new format_swf_tags_TagPlaceObject();
	}
	,createTagRemoveObject: function() {
		return new format_swf_tags_TagRemoveObject();
	}
	,createTagDefineBits: function() {
		return new format_swf_tags_TagDefineBits();
	}
	,createTagDefineButton: function() {
		return new format_swf_tags_TagDefineButton();
	}
	,createTagJPEGTables: function() {
		return new format_swf_tags_TagJPEGTables();
	}
	,createTagSetBackgroundColor: function() {
		return new format_swf_tags_TagSetBackgroundColor();
	}
	,createTagDefineFont: function() {
		return new format_swf_tags_TagDefineFont();
	}
	,createTagDefineText: function() {
		return new format_swf_tags_TagDefineText();
	}
	,createTagDoAction: function() {
		return new format_swf_tags_TagDoAction();
	}
	,createTagDefineFontInfo: function() {
		return new format_swf_tags_TagDefineFontInfo();
	}
	,createTagDefineSound: function() {
		return new format_swf_tags_TagDefineSound();
	}
	,createTagStartSound: function() {
		return new format_swf_tags_TagStartSound();
	}
	,createTagDefineButtonSound: function() {
		return new format_swf_tags_TagDefineButtonSound();
	}
	,createTagSoundStreamHead: function() {
		return new format_swf_tags_TagSoundStreamHead();
	}
	,createTagSoundStreamBlock: function() {
		return new format_swf_tags_TagSoundStreamBlock();
	}
	,createTagDefineBitsLossless: function() {
		return new format_swf_tags_TagDefineBitsLossless();
	}
	,createTagDefineBitsJPEG2: function() {
		return new format_swf_tags_TagDefineBitsJPEG2();
	}
	,createTagDefineShape2: function() {
		return new format_swf_tags_TagDefineShape2();
	}
	,createTagDefineButtonCxform: function() {
		return new format_swf_tags_TagDefineButtonCxform();
	}
	,createTagProtect: function() {
		return new format_swf_tags_TagProtect();
	}
	,createTagPlaceObject2: function() {
		return new format_swf_tags_TagPlaceObject2();
	}
	,createTagRemoveObject2: function() {
		return new format_swf_tags_TagRemoveObject2();
	}
	,createTagDefineShape3: function() {
		return new format_swf_tags_TagDefineShape3();
	}
	,createTagDefineText2: function() {
		return new format_swf_tags_TagDefineText2();
	}
	,createTagDefineButton2: function() {
		return new format_swf_tags_TagDefineButton2();
	}
	,createTagDefineBitsJPEG3: function() {
		return new format_swf_tags_TagDefineBitsJPEG3();
	}
	,createTagDefineBitsLossless2: function() {
		return new format_swf_tags_TagDefineBitsLossless2();
	}
	,createTagDefineEditText: function() {
		return new format_swf_tags_TagDefineEditText();
	}
	,createTagDefineSprite: function() {
		return new format_swf_tags_TagDefineSprite();
	}
	,createTagNameCharacter: function() {
		return new format_swf_tags_TagNameCharacter();
	}
	,createTagProductInfo: function() {
		return new format_swf_tags_TagProductInfo();
	}
	,createTagFrameLabel: function() {
		return new format_swf_tags_TagFrameLabel();
	}
	,createTagSoundStreamHead2: function() {
		return new format_swf_tags_TagSoundStreamHead2();
	}
	,createTagDefineMorphShape: function() {
		return new format_swf_tags_TagDefineMorphShape();
	}
	,createTagDefineFont2: function() {
		return new format_swf_tags_TagDefineFont2();
	}
	,createTagExportAssets: function() {
		return new format_swf_tags_TagExportAssets();
	}
	,createTagImportAssets: function() {
		return new format_swf_tags_TagImportAssets();
	}
	,createTagEnableDebugger: function() {
		return new format_swf_tags_TagEnableDebugger();
	}
	,createTagDoInitAction: function() {
		return new format_swf_tags_TagDoInitAction();
	}
	,createTagDefineVideoStream: function() {
		return new format_swf_tags_TagDefineVideoStream();
	}
	,createTagVideoFrame: function() {
		return new format_swf_tags_TagVideoFrame();
	}
	,createTagDefineFontInfo2: function() {
		return new format_swf_tags_TagDefineFontInfo2();
	}
	,createTagDebugID: function() {
		return new format_swf_tags_TagDebugID();
	}
	,createTagEnableDebugger2: function() {
		return new format_swf_tags_TagEnableDebugger2();
	}
	,createTagScriptLimits: function() {
		return new format_swf_tags_TagScriptLimits();
	}
	,createTagSetTabIndex: function() {
		return new format_swf_tags_TagSetTabIndex();
	}
	,createTagFileAttributes: function() {
		return new format_swf_tags_TagFileAttributes();
	}
	,createTagPlaceObject3: function() {
		return new format_swf_tags_TagPlaceObject3();
	}
	,createTagImportAssets2: function() {
		return new format_swf_tags_TagImportAssets2();
	}
	,createTagDefineFontAlignZones: function() {
		return new format_swf_tags_TagDefineFontAlignZones();
	}
	,createTagCSMTextSettings: function() {
		return new format_swf_tags_TagCSMTextSettings();
	}
	,createTagDefineFont3: function() {
		return new format_swf_tags_TagDefineFont3();
	}
	,createTagSymbolClass: function() {
		return new format_swf_tags_TagSymbolClass();
	}
	,createTagMetadata: function() {
		return new format_swf_tags_TagMetadata();
	}
	,createTagDefineScalingGrid: function() {
		return new format_swf_tags_TagDefineScalingGrid();
	}
	,createTagDoABC: function() {
		return new format_swf_tags_TagDoABC();
	}
	,createTagDoABCDeprecated: function() {
		return new format_swf_tags_TagDoABCDeprecated();
	}
	,createTagDefineShape4: function() {
		return new format_swf_tags_TagDefineShape4();
	}
	,createTagDefineMorphShape2: function() {
		return new format_swf_tags_TagDefineMorphShape2();
	}
	,createTagDefineSceneAndFrameLabelData: function() {
		return new format_swf_tags_TagDefineSceneAndFrameLabelData();
	}
	,createTagDefineBinaryData: function() {
		return new format_swf_tags_TagDefineBinaryData();
	}
	,createTagDefineFontName: function() {
		return new format_swf_tags_TagDefineFontName();
	}
	,createTagStartSound2: function() {
		return new format_swf_tags_TagStartSound2();
	}
	,createTagDefineBitsJPEG4: function() {
		return new format_swf_tags_TagDefineBitsJPEG4();
	}
	,createTagDefineFont4: function() {
		return new format_swf_tags_TagDefineFont4();
	}
	,createTagEnableTelemetry: function() {
		return new format_swf_tags_TagEnableTelemetry();
	}
	,createTagPlaceObject4: function() {
		return new format_swf_tags_TagPlaceObject4();
	}
	,createTagSWFEncryptActions: function() {
		return new format_swf_tags_etc_TagSWFEncryptActions();
	}
	,createTagSWFEncryptSignature: function() {
		return new format_swf_tags_etc_TagSWFEncryptSignature();
	}
	,createTagUnknown: function(type) {
		return new format_swf_tags_TagUnknown(type);
	}
	,__class__: format_swf_factories_SWFTagFactory
};
var openfl_display_IBitmapDrawable = function() { };
$hxClasses["openfl.display.IBitmapDrawable"] = openfl_display_IBitmapDrawable;
openfl_display_IBitmapDrawable.__name__ = ["openfl","display","IBitmapDrawable"];
openfl_display_IBitmapDrawable.prototype = {
	__blendMode: null
	,__isMask: null
	,__renderable: null
	,__transform: null
	,__worldAlpha: null
	,__worldColorTransform: null
	,__worldTransform: null
	,__getBounds: null
	,__renderCairo: null
	,__renderCairoMask: null
	,__renderCanvas: null
	,__renderCanvasMask: null
	,__renderGL: null
	,__renderGLMask: null
	,__updateChildren: null
	,__updateTransforms: null
	,__updateMask: null
	,__class__: openfl_display_IBitmapDrawable
};
var openfl__$Vector_Vector_$Impl_$ = {};
$hxClasses["openfl._Vector.Vector_Impl_"] = openfl__$Vector_Vector_$Impl_$;
openfl__$Vector_Vector_$Impl_$.__name__ = ["openfl","_Vector","Vector_Impl_"];
openfl__$Vector_Vector_$Impl_$.__properties__ = {set_length:"set_length",get_length:"get_length",set_fixed:"set_fixed",get_fixed:"get_fixed"};
openfl__$Vector_Vector_$Impl_$.concat = function(this1,a) {
	var data = a != null ? a.data : null;
	return new openfl__$Vector_AbstractVector(this1.data.concat(data));
};
openfl__$Vector_Vector_$Impl_$.copy = function(this1) {
	return new openfl__$Vector_AbstractVector(this1.data.copy());
};
openfl__$Vector_Vector_$Impl_$.get = function(this1,index) {
	return this1.data.get(index);
};
openfl__$Vector_Vector_$Impl_$.indexOf = function(this1,x,from) {
	if(from == null) {
		from = 0;
	}
	return this1.data.indexOf(x,from);
};
openfl__$Vector_Vector_$Impl_$.insertAt = function(this1,index,element) {
	this1.data.insertAt(index,element);
};
openfl__$Vector_Vector_$Impl_$.iterator = function(this1) {
	return this1.data.iterator();
};
openfl__$Vector_Vector_$Impl_$.join = function(this1,sep) {
	if(sep == null) {
		sep = ",";
	}
	return this1.data.join(sep);
};
openfl__$Vector_Vector_$Impl_$.lastIndexOf = function(this1,x,from) {
	if(from == null) {
		from = 0;
	}
	return this1.data.lastIndexOf(x,from);
};
openfl__$Vector_Vector_$Impl_$.pop = function(this1) {
	return this1.data.pop();
};
openfl__$Vector_Vector_$Impl_$.push = function(this1,x) {
	return this1.data.push(x);
};
openfl__$Vector_Vector_$Impl_$.removeAt = function(this1,index) {
	return this1.data.removeAt(index);
};
openfl__$Vector_Vector_$Impl_$.reverse = function(this1) {
	return new openfl__$Vector_AbstractVector(this1.data.reverse());
};
openfl__$Vector_Vector_$Impl_$.set = function(this1,index,value) {
	return this1.data.set(index,value);
};
openfl__$Vector_Vector_$Impl_$.shift = function(this1) {
	return this1.data.shift();
};
openfl__$Vector_Vector_$Impl_$.slice = function(this1,pos,end) {
	return new openfl__$Vector_AbstractVector(this1.data.slice(pos,end));
};
openfl__$Vector_Vector_$Impl_$.sort = function(this1,f) {
	this1.data.sort(f);
};
openfl__$Vector_Vector_$Impl_$.splice = function(this1,pos,len) {
	return new openfl__$Vector_AbstractVector(this1.data.splice(pos,len));
};
openfl__$Vector_Vector_$Impl_$.toString = function(this1) {
	if(this1 != null && this1.data != null) {
		return this1.data.toString();
	} else {
		return null;
	}
};
openfl__$Vector_Vector_$Impl_$.unshift = function(this1,x) {
	this1.data.unshift(x);
};
openfl__$Vector_Vector_$Impl_$.ofArray = function(a) {
	var vector = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
	var _g1 = 0;
	var _g = a.length;
	while(_g1 < _g) {
		var i = _g1++;
		vector.data.set(i,a[i]);
	}
	return vector;
};
openfl__$Vector_Vector_$Impl_$.convert = function(v) {
	return v;
};
openfl__$Vector_Vector_$Impl_$.toBoolVector = function(t,length,fixed,array) {
	return new openfl__$Vector_AbstractVector(new openfl__$Vector_BoolVector(length,fixed),array);
};
openfl__$Vector_Vector_$Impl_$.toIntVector = function(t,length,fixed,array) {
	return new openfl__$Vector_AbstractVector(new openfl__$Vector_IntVector(length,fixed),array);
};
openfl__$Vector_Vector_$Impl_$.toFloatVector = function(t,length,fixed,array) {
	return new openfl__$Vector_AbstractVector(new openfl__$Vector_FloatVector(length,fixed),array);
};
openfl__$Vector_Vector_$Impl_$.toFunctionVector = function(t,length,fixed,array) {
	return new openfl__$Vector_AbstractVector(new openfl__$Vector_FunctionVector(length,fixed),array);
};
openfl__$Vector_Vector_$Impl_$.toObjectVector = function(t,length,fixed,array) {
	return new openfl__$Vector_AbstractVector(new openfl__$Vector_ObjectVector(length,fixed),array);
};
openfl__$Vector_Vector_$Impl_$.get_fixed = function(this1) {
	return this1.data.fixed;
};
openfl__$Vector_Vector_$Impl_$.set_fixed = function(this1,value) {
	return this1.data.fixed = value;
};
openfl__$Vector_Vector_$Impl_$.get_length = function(this1) {
	return this1.data.get_length();
};
openfl__$Vector_Vector_$Impl_$.set_length = function(this1,value) {
	return this1.data.set_length(value);
};
var lime_utils_ObjectPool = function(create,clean,size) {
	if(create != null) {
		this.create = create;
	}
	if(clean != null) {
		this.clean = clean;
	}
	if(size != null) {
		this.set_size(size);
	}
	this.__pool = new haxe_ds_ObjectMap();
	this.activeObjects = 0;
	this.inactiveObjects = 0;
	this.__inactiveObject0 = null;
	this.__inactiveObject1 = null;
	this.__inactiveObjectList = new List();
};
$hxClasses["lime.utils.ObjectPool"] = lime_utils_ObjectPool;
lime_utils_ObjectPool.__name__ = ["lime","utils","ObjectPool"];
lime_utils_ObjectPool.prototype = {
	activeObjects: null
	,inactiveObjects: null
	,__inactiveObject0: null
	,__inactiveObject1: null
	,__inactiveObjectList: null
	,__pool: null
	,__size: null
	,add: function(object) {
		if(!this.__pool.exists(object)) {
			this.__pool.set(object,false);
			this.clean(object);
			if(this.__inactiveObject0 == null) {
				this.__inactiveObject0 = object;
			} else if(this.__inactiveObject1 == null) {
				this.__inactiveObject1 = object;
			} else {
				this.__inactiveObjectList.add(object);
			}
			this.inactiveObjects++;
		}
	}
	,clean: function(object) {
	}
	,clear: function() {
		this.__pool = new haxe_ds_ObjectMap();
		this.activeObjects = 0;
		this.inactiveObjects = 0;
		this.__inactiveObject0 = null;
		this.__inactiveObject1 = null;
		this.__inactiveObjectList.clear();
	}
	,create: function() {
		return null;
	}
	,get: function() {
		var object = null;
		if(this.inactiveObjects > 0) {
			var object1 = null;
			if(this.__inactiveObject0 != null) {
				object1 = this.__inactiveObject0;
				this.__inactiveObject0 = null;
			} else if(this.__inactiveObject1 != null) {
				object1 = this.__inactiveObject1;
				this.__inactiveObject1 = null;
			} else {
				object1 = this.__inactiveObjectList.pop();
				if(this.__inactiveObjectList.length > 0) {
					this.__inactiveObject0 = this.__inactiveObjectList.pop();
				}
				if(this.__inactiveObjectList.length > 0) {
					this.__inactiveObject1 = this.__inactiveObjectList.pop();
				}
			}
			this.inactiveObjects--;
			this.activeObjects++;
			object = object1;
		} else if(this.__size == null || this.activeObjects < this.__size) {
			object = this.create();
			if(object != null) {
				this.__pool.set(object,true);
				this.activeObjects++;
			}
		}
		return object;
	}
	,release: function(object) {
		this.activeObjects--;
		if(this.__size == null || this.activeObjects + this.inactiveObjects < this.__size) {
			this.clean(object);
			if(this.__inactiveObject0 == null) {
				this.__inactiveObject0 = object;
			} else if(this.__inactiveObject1 == null) {
				this.__inactiveObject1 = object;
			} else {
				this.__inactiveObjectList.add(object);
			}
			this.inactiveObjects++;
		} else {
			this.__pool.remove(object);
		}
	}
	,__addInactive: function(object) {
		if(this.__inactiveObject0 == null) {
			this.__inactiveObject0 = object;
		} else if(this.__inactiveObject1 == null) {
			this.__inactiveObject1 = object;
		} else {
			this.__inactiveObjectList.add(object);
		}
		this.inactiveObjects++;
	}
	,__getInactive: function() {
		var object = null;
		if(this.__inactiveObject0 != null) {
			object = this.__inactiveObject0;
			this.__inactiveObject0 = null;
		} else if(this.__inactiveObject1 != null) {
			object = this.__inactiveObject1;
			this.__inactiveObject1 = null;
		} else {
			object = this.__inactiveObjectList.pop();
			if(this.__inactiveObjectList.length > 0) {
				this.__inactiveObject0 = this.__inactiveObjectList.pop();
			}
			if(this.__inactiveObjectList.length > 0) {
				this.__inactiveObject1 = this.__inactiveObjectList.pop();
			}
		}
		this.inactiveObjects--;
		this.activeObjects++;
		return object;
	}
	,__removeInactive: function(count) {
		if(count <= 0 || this.inactiveObjects == 0) {
			return;
		}
		if(this.__inactiveObject0 != null) {
			this.__pool.remove(this.__inactiveObject0);
			this.__inactiveObject0 = null;
			this.inactiveObjects--;
			--count;
		}
		if(count == 0 || this.inactiveObjects == 0) {
			return;
		}
		if(this.__inactiveObject1 != null) {
			this.__pool.remove(this.__inactiveObject1);
			this.__inactiveObject1 = null;
			this.inactiveObjects--;
			--count;
		}
		if(count == 0 || this.inactiveObjects == 0) {
			return;
		}
		var _g_head = this.__inactiveObjectList.h;
		while(_g_head != null) {
			var val = _g_head.item;
			_g_head = _g_head.next;
			var object = val;
			this.__pool.remove(object);
			this.__inactiveObjectList.remove(object);
			this.inactiveObjects--;
			--count;
			if(count == 0 || this.inactiveObjects == 0) {
				return;
			}
		}
	}
	,get_size: function() {
		return this.__size;
	}
	,set_size: function(value) {
		if(value == null) {
			this.__size = null;
		} else {
			var current = this.inactiveObjects + this.activeObjects;
			this.__size = value;
			if(current > value) {
				this.__removeInactive(current - value);
			} else if(value > current) {
				var object;
				var _g1 = 0;
				var _g = value - current;
				while(_g1 < _g) {
					var i = _g1++;
					object = this.create();
					if(object != null) {
						this.__pool.set(object,false);
						this.__inactiveObjectList.add(object);
						this.inactiveObjects++;
					} else {
						break;
					}
				}
			}
		}
		return value;
	}
	,__class__: lime_utils_ObjectPool
	,__properties__: {set_size:"set_size",get_size:"get_size"}
};
var haxe_IMap = function() { };
$hxClasses["haxe.IMap"] = haxe_IMap;
haxe_IMap.__name__ = ["haxe","IMap"];
haxe_IMap.prototype = {
	get: null
	,set: null
	,exists: null
	,remove: null
	,__class__: haxe_IMap
};
var haxe_ds_ObjectMap = function() {
	this.h = { __keys__ : { }};
};
$hxClasses["haxe.ds.ObjectMap"] = haxe_ds_ObjectMap;
haxe_ds_ObjectMap.__name__ = ["haxe","ds","ObjectMap"];
haxe_ds_ObjectMap.__interfaces__ = [haxe_IMap];
haxe_ds_ObjectMap.assignId = function(obj) {
	return obj.__id__ = ++haxe_ds_ObjectMap.count;
};
haxe_ds_ObjectMap.getId = function(obj) {
	return obj.__id__;
};
haxe_ds_ObjectMap.prototype = {
	h: null
	,set: function(key,value) {
		var id = key.__id__ || (key.__id__ = ++haxe_ds_ObjectMap.count);
		this.h[id] = value;
		this.h.__keys__[id] = key;
	}
	,get: function(key) {
		return this.h[key.__id__];
	}
	,exists: function(key) {
		return this.h.__keys__[key.__id__] != null;
	}
	,remove: function(key) {
		var id = key.__id__;
		if(this.h.__keys__[id] == null) {
			return false;
		}
		delete(this.h[id]);
		delete(this.h.__keys__[id]);
		return true;
	}
	,keys: function() {
		var a = [];
		for( var key in this.h.__keys__ ) {
		if(this.h.hasOwnProperty(key)) {
			a.push(this.h.__keys__[key]);
		}
		}
		return HxOverrides.iter(a);
	}
	,__class__: haxe_ds_ObjectMap
};
var openfl_display_DisplayObject = function() {
	openfl_events_EventDispatcher.call(this);
	if(openfl_display_DisplayObject.__initStage != null) {
		this.stage = openfl_display_DisplayObject.__initStage;
		openfl_display_DisplayObject.__initStage = null;
	}
	this.__alpha = 1;
	this.__blendMode = 10;
	this.__cacheAsBitmap = false;
	this.__transform = new openfl_geom_Matrix();
	this.__visible = true;
	this.__rotation = 0;
	this.__rotationSine = 0;
	this.__rotationCosine = 1;
	this.__scaleX = 1;
	this.__scaleY = 1;
	this.__worldAlpha = 1;
	this.__worldBlendMode = 10;
	this.__worldTransform = new openfl_geom_Matrix();
	this.__worldColorTransform = new openfl_geom_ColorTransform();
	this.__renderTransform = new openfl_geom_Matrix();
	this.__worldVisible = true;
	this.set_name("instance" + ++openfl_display_DisplayObject.__instanceCount);
};
$hxClasses["openfl.display.DisplayObject"] = openfl_display_DisplayObject;
openfl_display_DisplayObject.__name__ = ["openfl","display","DisplayObject"];
openfl_display_DisplayObject.__interfaces__ = [openfl_display_IBitmapDrawable];
openfl_display_DisplayObject.__super__ = openfl_events_EventDispatcher;
openfl_display_DisplayObject.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	opaqueBackground: null
	,parent: null
	,scale9Grid: null
	,stage: null
	,__alpha: null
	,__blendMode: null
	,__cacheAsBitmap: null
	,__cacheAsBitmapMatrix: null
	,__cacheBitmap: null
	,__cacheBitmapBackground: null
	,__cacheBitmapColorTransform: null
	,__cacheBitmapData: null
	,__cacheBitmapRender: null
	,__cairo: null
	,__children: null
	,__filters: null
	,__graphics: null
	,__interactive: null
	,__isMask: null
	,__loaderInfo: null
	,__mask: null
	,__maskTarget: null
	,__name: null
	,__objectTransform: null
	,__renderable: null
	,__renderDirty: null
	,__renderParent: null
	,__renderTransform: null
	,__renderTransformCache: null
	,__renderTransformChanged: null
	,__rotation: null
	,__rotationCosine: null
	,__rotationSine: null
	,__scaleX: null
	,__scaleY: null
	,__scrollRect: null
	,__transform: null
	,__transformDirty: null
	,__visible: null
	,__worldAlpha: null
	,__worldAlphaChanged: null
	,__worldBlendMode: null
	,__worldClip: null
	,__worldClipChanged: null
	,__worldColorTransform: null
	,__worldTransform: null
	,__worldVisible: null
	,__worldVisibleChanged: null
	,__worldTransformInvalid: null
	,__worldZ: null
	,addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
		if(useWeakReference == null) {
			useWeakReference = false;
		}
		if(priority == null) {
			priority = 0;
		}
		if(useCapture == null) {
			useCapture = false;
		}
		switch(type) {
		case "activate":case "deactivate":case "enterFrame":case "exitFrame":case "frameConstructed":case "render":
			if(!openfl_display_DisplayObject.__broadcastEvents.exists(type)) {
				openfl_display_DisplayObject.__broadcastEvents.set(type,[]);
			}
			var dispatchers = openfl_display_DisplayObject.__broadcastEvents.get(type);
			if(dispatchers.indexOf(this) == -1) {
				dispatchers.push(this);
			}
			break;
		default:
		}
		openfl_events_EventDispatcher.prototype.addEventListener.call(this,type,listener,useCapture,priority,useWeakReference);
	}
	,dispatchEvent: function(event) {
		if(js_Boot.__instanceof(event,openfl_events_MouseEvent)) {
			var mouseEvent = event;
			var _this = this.__getRenderTransform();
			mouseEvent.stageX = mouseEvent.localX * _this.a + mouseEvent.localY * _this.c + _this.tx;
			var _this1 = this.__getRenderTransform();
			mouseEvent.stageY = mouseEvent.localX * _this1.b + mouseEvent.localY * _this1.d + _this1.ty;
		} else if(js_Boot.__instanceof(event,openfl_events_TouchEvent)) {
			var touchEvent = event;
			var _this2 = this.__getRenderTransform();
			touchEvent.stageX = touchEvent.localX * _this2.a + touchEvent.localY * _this2.c + _this2.tx;
			var _this3 = this.__getRenderTransform();
			touchEvent.stageY = touchEvent.localX * _this3.b + touchEvent.localY * _this3.d + _this3.ty;
		}
		return this.__dispatchWithCapture(event);
	}
	,getBounds: function(targetCoordinateSpace) {
		var matrix;
		var usingTemp = false;
		if(targetCoordinateSpace != null) {
			matrix = this.__getWorldTransform().clone();
			matrix.concat(targetCoordinateSpace.__getWorldTransform().clone().invert());
		} else {
			usingTemp = true;
			matrix = openfl_geom_Matrix.__pool.get();
			matrix.identity();
		}
		var bounds = new openfl_geom_Rectangle();
		this.__getBounds(bounds,matrix);
		if(usingTemp) {
			openfl_geom_Matrix.__pool.release(matrix);
		}
		return bounds;
	}
	,getRect: function(targetCoordinateSpace) {
		return this.getBounds(targetCoordinateSpace);
	}
	,globalToLocal: function(pos) {
		return this.__globalToLocal(pos,new openfl_geom_Point());
	}
	,hitTestObject: function(obj) {
		if(obj != null && obj.parent != null && this.parent != null) {
			var currentBounds = this.getBounds(this);
			var targetBounds = obj.getBounds(this);
			return currentBounds.intersects(targetBounds);
		}
		return false;
	}
	,hitTestPoint: function(x,y,shapeFlag) {
		if(shapeFlag == null) {
			shapeFlag = false;
		}
		if(this.stage != null) {
			return this.__hitTest(x,y,shapeFlag,null,true,this);
		} else {
			return false;
		}
	}
	,localToGlobal: function(point) {
		return this.__getRenderTransform().transformPoint(point);
	}
	,removeEventListener: function(type,listener,useCapture) {
		if(useCapture == null) {
			useCapture = false;
		}
		openfl_events_EventDispatcher.prototype.removeEventListener.call(this,type,listener,useCapture);
		switch(type) {
		case "activate":case "deactivate":case "enterFrame":case "exitFrame":case "frameConstructed":case "render":
			if(!this.hasEventListener(type)) {
				if(openfl_display_DisplayObject.__broadcastEvents.exists(type)) {
					HxOverrides.remove(openfl_display_DisplayObject.__broadcastEvents.get(type),this);
				}
			}
			break;
		default:
		}
	}
	,__cleanup: function() {
		this.__cairo = null;
		if(this.__graphics != null) {
			this.__graphics.__cleanup();
		}
	}
	,__dispatch: function(event) {
		if(this.__eventMap != null && this.hasEventListener(event.type)) {
			var result = openfl_events_EventDispatcher.prototype.__dispatchEvent.call(this,event);
			if(event.__isCanceled) {
				return true;
			}
			return result;
		}
		return true;
	}
	,__dispatchChildren: function(event) {
	}
	,__dispatchEvent: function(event) {
		var result = openfl_events_EventDispatcher.prototype.__dispatchEvent.call(this,event);
		if(event.__isCanceled) {
			return true;
		}
		if(event.bubbles && this.parent != null && this.parent != this) {
			event.eventPhase = 3;
			if(event.target == null) {
				event.target = this;
			}
			this.parent.__dispatchEvent(event);
		}
		return result;
	}
	,__dispatchWithCapture: function(event) {
		if(event.target == null) {
			event.target = this;
		}
		if(this.parent != null) {
			event.eventPhase = 1;
			if(this.parent == this.stage) {
				this.parent.__dispatch(event);
			} else {
				var stack = openfl_display_DisplayObject.__tempStack.get();
				var parent = this.parent;
				var i = 0;
				while(parent != null) {
					stack.data.set(i,parent);
					parent = parent.parent;
					++i;
				}
				var _g1 = 0;
				var _g = i;
				while(_g1 < _g) {
					var j = _g1++;
					stack.data.get(i - j - 1).__dispatch(event);
				}
				openfl_display_DisplayObject.__tempStack.release(stack);
			}
		}
		event.eventPhase = 2;
		return this.__dispatchEvent(event);
	}
	,__enterFrame: function(deltaTime) {
	}
	,__getBounds: function(rect,matrix) {
		if(this.__graphics != null) {
			this.__graphics.__getBounds(rect,matrix);
		}
	}
	,__getCursor: function() {
		return null;
	}
	,__getFilterBounds: function(rect,matrix) {
		this.__getBounds(rect,matrix);
		if(this.__filters != null && this.__filters.length > 0) {
			var extension = openfl_geom_Rectangle.__pool.get();
			var _g = 0;
			var _g1 = this.__filters;
			while(_g < _g1.length) {
				var filter = _g1[_g];
				++_g;
				extension.__expand(-filter.__leftExtension,-filter.__topExtension,filter.__leftExtension + filter.__rightExtension,filter.__topExtension + filter.__bottomExtension);
			}
			rect.width += extension.width;
			rect.height += extension.height;
			rect.x += extension.x;
			rect.y += extension.y;
			openfl_geom_Rectangle.__pool.release(extension);
		}
	}
	,__getInteractive: function(stack) {
		return false;
	}
	,__getLocalBounds: function(rect) {
		this.__getBounds(rect,this.__transform);
		rect.x -= this.__transform.tx;
		rect.y -= this.__transform.ty;
	}
	,__getRenderBounds: function(rect,matrix) {
		if(this.__scrollRect == null) {
			this.__getBounds(rect,matrix);
		} else {
			var r = openfl_geom_Rectangle.__pool.get();
			r.copyFrom(this.__scrollRect);
			r.__transform(r,matrix);
			rect.__expand(matrix.tx,matrix.ty,r.width,r.height);
			openfl_geom_Rectangle.__pool.release(r);
		}
	}
	,__getRenderTransform: function() {
		this.__getWorldTransform();
		return this.__renderTransform;
	}
	,__getWorldTransform: function() {
		var transformDirty = this.__transformDirty || this.__worldTransformInvalid;
		if(transformDirty) {
			var list = [];
			var current = this;
			if(this.parent == null) {
				this.__update(true,false);
			} else {
				while(current != this.stage) {
					list.push(current);
					current = current.parent;
					if(current == null) {
						break;
					}
				}
			}
			var i = list.length;
			while(--i >= 0) {
				current = list[i];
				current.__update(true,false);
				current.__worldTransformInvalid = false;
			}
		}
		return this.__worldTransform;
	}
	,__globalToLocal: function(global,local) {
		this.__getRenderTransform();
		if(global == local) {
			var _this = this.__renderTransform;
			var norm = _this.a * _this.d - _this.b * _this.c;
			if(norm == 0) {
				global.x = -_this.tx;
				global.y = -_this.ty;
			} else {
				var px = 1.0 / norm * (_this.c * (_this.ty - global.y) + _this.d * (global.x - _this.tx));
				global.y = 1.0 / norm * (_this.a * (global.y - _this.ty) + _this.b * (_this.tx - global.x));
				global.x = px;
			}
		} else {
			var _this1 = this.__renderTransform;
			var norm1 = _this1.a * _this1.d - _this1.b * _this1.c;
			local.x = norm1 == 0 ? -_this1.tx : 1.0 / norm1 * (_this1.c * (_this1.ty - global.y) + _this1.d * (global.x - _this1.tx));
			var _this2 = this.__renderTransform;
			var norm2 = _this2.a * _this2.d - _this2.b * _this2.c;
			local.y = norm2 == 0 ? -_this2.ty : 1.0 / norm2 * (_this2.a * (global.y - _this2.ty) + _this2.b * (_this2.tx - global.x));
		}
		return local;
	}
	,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		if(this.__graphics != null) {
			if(!hitObject.get_visible() || this.__isMask) {
				return false;
			}
			if(this.get_mask() != null && !this.get_mask().__hitTestMask(x,y)) {
				return false;
			}
			if(this.__graphics.__hitTest(x,y,shapeFlag,this.__getRenderTransform())) {
				if(stack != null && !interactiveOnly) {
					stack.push(hitObject);
				}
				return true;
			}
		}
		return false;
	}
	,__hitTestMask: function(x,y) {
		if(this.__graphics != null) {
			if(this.__graphics.__hitTest(x,y,true,this.__getRenderTransform())) {
				return true;
			}
		}
		return false;
	}
	,__readGraphicsData: function(graphicsData,recurse) {
		if(this.__graphics != null) {
			this.__graphics.__readGraphicsData(graphicsData);
		}
	}
	,__renderCairo: function(renderSession) {
	}
	,__renderCairoMask: function(renderSession) {
	}
	,__renderCanvas: function(renderSession) {
		if(this.get_mask() == null || this.get_mask().get_width() > 0 && this.get_mask().get_height() > 0) {
			this.__updateCacheBitmap(renderSession,!this.__worldColorTransform.__isDefault());
			if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
				var bitmap = this.__cacheBitmap;
			}
		}
	}
	,__renderCanvasMask: function(renderSession) {
		if(this.__graphics != null) {
			openfl__$internal_renderer_canvas_CanvasGraphics.renderMask(this.__graphics,renderSession);
		}
	}
	,__renderDOM: function(renderSession) {
		this.__updateCacheBitmap(renderSession,!this.__worldColorTransform.__isDefault());
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			this.__renderDOMClear(renderSession);
			this.__cacheBitmap.stage = this.stage;
			var bitmap = this.__cacheBitmap;
		}
	}
	,__renderDOMClear: function(renderSession) {
		openfl__$internal_renderer_dom_DOMDisplayObject.clear(this,renderSession);
	}
	,__renderGL: function(renderSession) {
		this.__updateCacheBitmap(renderSession,false);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			openfl__$internal_renderer_opengl_GLBitmap.render(this.__cacheBitmap,renderSession);
		} else if(!(this.opaqueBackground == null && this.__graphics == null)) {
			if(!(!this.__renderable || this.__worldAlpha <= 0)) {
				if(this.opaqueBackground != null && !this.__cacheBitmapRender && this.get_width() > 0 && this.get_height() > 0) {
					renderSession.blendModeManager.setBlendMode(this.__worldBlendMode);
					renderSession.maskManager.pushObject(this);
					var gl = renderSession.gl;
					var rect = openfl_geom_Rectangle.__pool.get();
					rect.setTo(0,0,this.get_width(),this.get_height());
					renderSession.maskManager.pushRect(rect,this.__renderTransform);
					var color = this.opaqueBackground;
					gl.clearColor((color >>> 16 & 255) / 255,(color >>> 8 & 255) / 255,(color & 255) / 255,1);
					gl.clear(gl.COLOR_BUFFER_BIT);
					renderSession.maskManager.popRect();
					renderSession.maskManager.popObject(this);
					openfl_geom_Rectangle.__pool.release(rect);
				}
				if(this.__graphics != null) {
					if(!(!this.__renderable || this.__worldAlpha <= 0)) {
						var graphics = this.__graphics;
						if(graphics != null) {
							var bounds = graphics.__bounds;
							if(graphics.__bitmap != null && graphics.__visible) {
								var renderer = renderSession.renderer;
								var gl1 = renderSession.gl;
								renderSession.blendModeManager.setBlendMode(this.__worldBlendMode);
								renderSession.maskManager.pushObject(this);
								var shader = renderSession.filterManager.pushObject(this);
								renderSession.shaderManager.setShader(shader);
								shader.get_data().uImage0.input = graphics.__bitmap;
								shader.get_data().uImage0.smoothing = renderSession.allowSmoothing;
								shader.get_data().uMatrix.value = renderer.getMatrix(graphics.__worldTransform);
								var useColorTransform = !this.__worldColorTransform.__isDefault();
								if(shader.get_data().uColorTransform.value == null) {
									shader.get_data().uColorTransform.value = [];
								}
								shader.get_data().uColorTransform.value[0] = useColorTransform;
								renderSession.shaderManager.updateShader(shader);
								gl1.bindBuffer(gl1.ARRAY_BUFFER,graphics.__bitmap.getBuffer(gl1,this.__worldAlpha,this.__worldColorTransform));
								gl1.vertexAttribPointer(shader.get_data().aPosition.index,3,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
								gl1.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
								gl1.vertexAttribPointer(shader.get_data().aAlpha.index,1,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(20));
								gl1.vertexAttribPointer(shader.get_data().aColorMultipliers0.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(24));
								gl1.vertexAttribPointer(shader.get_data().aColorMultipliers1.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(40));
								gl1.vertexAttribPointer(shader.get_data().aColorMultipliers2.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(56));
								gl1.vertexAttribPointer(shader.get_data().aColorMultipliers3.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(72));
								gl1.vertexAttribPointer(shader.get_data().aColorOffsets.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(88));
								gl1.drawArrays(gl1.TRIANGLE_STRIP,0,4);
								renderSession.filterManager.popObject(this);
								renderSession.maskManager.popObject(this);
							}
						}
					}
				}
			}
		}
	}
	,__renderGLMask: function(renderSession) {
		this.__updateCacheBitmap(renderSession,false);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			openfl__$internal_renderer_opengl_GLBitmap.renderMask(this.__cacheBitmap,renderSession);
		} else if(!(this.opaqueBackground == null && this.__graphics == null)) {
			if(this.opaqueBackground != null && !this.__cacheBitmapRender && this.get_width() > 0 && this.get_height() > 0) {
				var gl = renderSession.gl;
			}
			if(this.__graphics != null) {
				var graphics = this.__graphics;
				if(graphics != null) {
					var bounds = graphics.__bounds;
					if(graphics.__bitmap != null) {
						var renderer = renderSession.renderer;
						var gl1 = renderSession.gl;
						var shader = openfl__$internal_renderer_opengl_GLMaskManager.maskShader;
						renderSession.shaderManager.setShader(shader);
						shader.get_data().uImage0.input = graphics.__bitmap;
						shader.get_data().uImage0.smoothing = renderSession.allowSmoothing;
						shader.get_data().uMatrix.value = renderer.getMatrix(graphics.__worldTransform);
						renderSession.shaderManager.updateShader(shader);
						gl1.bindBuffer(gl1.ARRAY_BUFFER,graphics.__bitmap.getBuffer(gl1,this.__worldAlpha,this.__worldColorTransform));
						gl1.vertexAttribPointer(shader.get_data().aPosition.index,3,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
						gl1.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
						gl1.drawArrays(gl1.TRIANGLE_STRIP,0,4);
					}
				}
			}
		}
	}
	,__setParentRenderDirty: function() {
		var renderParent = this.__renderParent != null ? this.__renderParent : this.parent;
		if(renderParent != null && !renderParent.__renderDirty) {
			renderParent.__renderDirty = true;
			renderParent.__setParentRenderDirty();
		}
	}
	,__setRenderDirty: function() {
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
	}
	,__setStageReference: function(stage) {
		this.stage = stage;
	}
	,__setTransformDirty: function() {
		if(!this.__transformDirty) {
			this.__transformDirty = true;
			this.__setWorldTransformInvalid();
			this.__setParentRenderDirty();
		}
	}
	,__setWorldTransformInvalid: function() {
		this.__worldTransformInvalid = true;
	}
	,__stopAllMovieClips: function() {
	}
	,__update: function(transformOnly,updateChildren,maskGraphics) {
		var renderParent = this.__renderParent != null ? this.__renderParent : this.parent;
		if(this.__isMask && renderParent == null) {
			renderParent = this.__maskTarget;
		}
		this.__renderable = this.get_visible() && this.__scaleX != 0 && this.__scaleY != 0 && !this.__isMask && (renderParent == null || !renderParent.__isMask);
		this.__updateTransforms();
		this.__transformDirty = false;
		if(maskGraphics != null) {
			this.__updateMask(maskGraphics);
		}
		if(!transformOnly) {
			if(openfl_display_DisplayObject.__supportDOM) {
				this.__renderTransformChanged = !this.__renderTransform.equals(this.__renderTransformCache);
				if(this.__renderTransformCache == null) {
					this.__renderTransformCache = this.__renderTransform.clone();
				} else {
					this.__renderTransformCache.copyFrom(this.__renderTransform);
				}
			}
			if(!this.__worldColorTransform.__equals(this.get_transform().get_colorTransform())) {
				this.__worldColorTransform = this.get_transform().get_colorTransform().__clone();
			}
			if(renderParent != null) {
				if(openfl_display_DisplayObject.__supportDOM) {
					var worldVisible = renderParent.__worldVisible && this.get_visible();
					this.__worldVisibleChanged = this.__worldVisible != worldVisible;
					this.__worldVisible = worldVisible;
					var worldAlpha = this.get_alpha() * renderParent.__worldAlpha;
					this.__worldAlphaChanged = this.__worldAlpha != worldAlpha;
					this.__worldAlpha = worldAlpha;
				} else {
					this.__worldAlpha = this.get_alpha() * renderParent.__worldAlpha;
				}
				this.__worldColorTransform.__combine(renderParent.__worldColorTransform);
				if(this.__blendMode == null || this.__blendMode == 10) {
					this.__worldBlendMode = renderParent.__blendMode;
				} else {
					this.__worldBlendMode = this.__blendMode;
				}
			} else {
				this.__worldAlpha = this.get_alpha();
				if(openfl_display_DisplayObject.__supportDOM) {
					this.__worldVisibleChanged = this.__worldVisible != this.get_visible();
					this.__worldVisible = this.get_visible();
					this.__worldAlphaChanged = this.__worldAlpha != this.get_alpha();
				}
			}
		}
		if(updateChildren && this.get_mask() != null) {
			this.get_mask().__update(transformOnly,true,maskGraphics);
		}
	}
	,__updateCacheBitmap: function(renderSession,force) {
		if(this.__cacheBitmapRender) {
			return false;
		}
		if(this.get_cacheAsBitmap()) {
			var matrix = null;
			var rect = null;
			this.__update(false,true);
			var needRender = this.__cacheBitmap == null || this.__renderDirty && (force || this.__children != null && this.__children.length > 0 || this.__graphics != null && this.__graphics.__dirty) || this.opaqueBackground != this.__cacheBitmapBackground || !this.__cacheBitmapColorTransform.__equals(this.__worldColorTransform);
			var updateTransform = needRender || !this.__cacheBitmap.__worldTransform.equals(this.__worldTransform);
			var hasFilters = this.__filters != null && this.__filters.length > 0;
			if(hasFilters && !needRender) {
				var _g = 0;
				var _g1 = this.__filters;
				while(_g < _g1.length) {
					var filter = _g1[_g];
					++_g;
					if(filter.__renderDirty) {
						needRender = true;
						break;
					}
				}
			}
			var bitmapWidth = 0;
			var bitmapHeight = 0;
			if(updateTransform || needRender) {
				matrix = openfl_geom_Matrix.__pool.get();
				rect = openfl_geom_Rectangle.__pool.get();
				matrix.identity();
				this.__getFilterBounds(rect,this.__renderTransform);
				bitmapWidth = Math.ceil(rect.width);
				bitmapHeight = Math.ceil(rect.height);
				if(!needRender && this.__cacheBitmap != null && (bitmapWidth != this.__cacheBitmap.get_width() || bitmapHeight != this.__cacheBitmap.get_height())) {
					needRender = true;
				}
			}
			if(needRender) {
				this.__cacheBitmapBackground = this.opaqueBackground;
				var color = this.opaqueBackground != null ? -16777216 | this.opaqueBackground : 0;
				if(rect.width >= 0.5 && rect.height >= 0.5) {
					if(this.__cacheBitmap == null || bitmapWidth != this.__cacheBitmap.get_width() || bitmapHeight != this.__cacheBitmap.get_height()) {
						this.__cacheBitmapData = new openfl_display_BitmapData(bitmapWidth,bitmapHeight,true,color);
						if(this.__cacheBitmap == null) {
							this.__cacheBitmap = new openfl_display_Bitmap();
						}
						this.__cacheBitmap.__bitmapData = this.__cacheBitmapData;
					} else {
						this.__cacheBitmapData.fillRect(this.__cacheBitmapData.rect,color);
					}
				} else {
					this.__cacheBitmap = null;
					this.__cacheBitmapData = null;
					return true;
				}
			}
			if(updateTransform || needRender) {
				this.__cacheBitmap.__worldTransform.copyFrom(this.__worldTransform);
				this.__cacheBitmap.__renderTransform.identity();
				this.__cacheBitmap.__renderTransform.tx = rect.x;
				this.__cacheBitmap.__renderTransform.ty = rect.y;
				matrix.concat(this.__renderTransform);
				matrix.tx -= Math.round(rect.x);
				matrix.ty -= Math.round(rect.y);
			}
			this.__cacheBitmap.smoothing = renderSession.allowSmoothing;
			this.__cacheBitmap.__renderable = this.__renderable;
			this.__cacheBitmap.__worldAlpha = this.__worldAlpha;
			this.__cacheBitmap.__worldBlendMode = this.__worldBlendMode;
			this.__cacheBitmap.__scrollRect = this.__scrollRect;
			this.__cacheBitmap.set_mask(this.__mask);
			if(needRender) {
				this.__cacheBitmapRender = true;
				this.__cacheBitmapData.__draw(this,matrix,null,null,null,renderSession.allowSmoothing);
				if(hasFilters) {
					var needSecondBitmapData = false;
					var needCopyOfOriginal = false;
					var _g2 = 0;
					var _g11 = this.__filters;
					while(_g2 < _g11.length) {
						var filter1 = _g11[_g2];
						++_g2;
						if(filter1.__needSecondBitmapData) {
							needSecondBitmapData = true;
						}
						if(filter1.__preserveObject) {
							needCopyOfOriginal = true;
						}
					}
					var bitmapData = this.__cacheBitmapData;
					var bitmapData2 = null;
					var bitmapData3 = null;
					if(needSecondBitmapData) {
						bitmapData2 = new openfl_display_BitmapData(bitmapData.width,bitmapData.height,true,0);
					} else {
						bitmapData2 = bitmapData;
					}
					if(needCopyOfOriginal) {
						bitmapData3 = new openfl_display_BitmapData(bitmapData.width,bitmapData.height,true,0);
					}
					var sourceRect = bitmapData.rect;
					var destPoint = new openfl_geom_Point();
					var cacheBitmap;
					var lastBitmap;
					var _g3 = 0;
					var _g12 = this.__filters;
					while(_g3 < _g12.length) {
						var filter2 = _g12[_g3];
						++_g3;
						if(filter2.__preserveObject) {
							bitmapData3.copyPixels(bitmapData,bitmapData.rect,destPoint);
						}
						lastBitmap = filter2.__applyFilter(bitmapData2,bitmapData,sourceRect,destPoint);
						if(filter2.__preserveObject) {
							lastBitmap.draw(bitmapData3,null,this.get_transform().get_colorTransform());
						}
						filter2.__renderDirty = false;
						if(needSecondBitmapData && lastBitmap == bitmapData2) {
							cacheBitmap = bitmapData;
							bitmapData = bitmapData2;
							bitmapData2 = cacheBitmap;
						}
					}
					this.__cacheBitmap.set_bitmapData(bitmapData);
				}
				this.__cacheBitmapRender = false;
				if(this.__cacheBitmapColorTransform == null) {
					this.__cacheBitmapColorTransform = new openfl_geom_ColorTransform();
				}
				this.__cacheBitmapColorTransform.__copyFrom(this.__worldColorTransform);
				if(!this.__cacheBitmapColorTransform.__isDefault()) {
					this.__cacheBitmapData.colorTransform(this.__cacheBitmapData.rect,this.__cacheBitmapColorTransform);
				}
			}
			if(updateTransform) {
				this.__update(false,true);
				openfl_geom_Matrix.__pool.release(matrix);
				openfl_geom_Rectangle.__pool.release(rect);
				return true;
			} else {
				return false;
			}
		} else if(this.__cacheBitmap != null) {
			if(renderSession.renderType == lime_graphics_RendererType.DOM) {
				this.__cacheBitmap.__renderDOMClear(renderSession);
			}
			this.__cacheBitmap = null;
			this.__cacheBitmapData = null;
			this.__cacheBitmapColorTransform = null;
			return true;
		}
		return false;
	}
	,__updateChildren: function(transformOnly) {
		var renderParent = this.__renderParent != null ? this.__renderParent : this.parent;
		this.__renderable = this.get_visible() && this.__scaleX != 0 && this.__scaleY != 0 && !this.__isMask && (renderParent == null || !renderParent.__isMask);
		this.__worldAlpha = this.get_alpha();
		this.__worldBlendMode = this.get_blendMode();
		if(this.__transformDirty) {
			this.__transformDirty = false;
		}
	}
	,__updateMask: function(maskGraphics) {
		if(this.__graphics != null) {
			maskGraphics.__commands.overrideMatrix(this.__worldTransform);
			maskGraphics.__commands.append(this.__graphics.__commands);
			maskGraphics.set___dirty(true);
			maskGraphics.__visible = true;
			if(maskGraphics.__bounds == null) {
				maskGraphics.__bounds = new openfl_geom_Rectangle();
			}
			this.__graphics.__getBounds(maskGraphics.__bounds,openfl_geom_Matrix.__identity);
		}
	}
	,__updateTransforms: function(overrideTransform) {
		var overrided = overrideTransform != null;
		var local = overrided ? overrideTransform : this.__transform;
		if(this.__worldTransform == null) {
			this.__worldTransform = new openfl_geom_Matrix();
		}
		if(this.__renderTransform == null) {
			this.__renderTransform = new openfl_geom_Matrix();
		}
		var renderParent = this.__renderParent != null ? this.__renderParent : this.parent;
		var parentTransform;
		if(!overrided && this.parent != null) {
			parentTransform = this.parent.__worldTransform;
			this.__worldTransform.a = local.a * parentTransform.a + local.b * parentTransform.c;
			this.__worldTransform.b = local.a * parentTransform.b + local.b * parentTransform.d;
			this.__worldTransform.c = local.c * parentTransform.a + local.d * parentTransform.c;
			this.__worldTransform.d = local.c * parentTransform.b + local.d * parentTransform.d;
			this.__worldTransform.tx = local.tx * parentTransform.a + local.ty * parentTransform.c + parentTransform.tx;
			this.__worldTransform.ty = local.tx * parentTransform.b + local.ty * parentTransform.d + parentTransform.ty;
		} else {
			this.__worldTransform.copyFrom(local);
		}
		if(!overrided && renderParent != null) {
			parentTransform = renderParent.__renderTransform;
			this.__renderTransform.a = local.a * parentTransform.a + local.b * parentTransform.c;
			this.__renderTransform.b = local.a * parentTransform.b + local.b * parentTransform.d;
			this.__renderTransform.c = local.c * parentTransform.a + local.d * parentTransform.c;
			this.__renderTransform.d = local.c * parentTransform.b + local.d * parentTransform.d;
			this.__renderTransform.tx = local.tx * parentTransform.a + local.ty * parentTransform.c + parentTransform.tx;
			this.__renderTransform.ty = local.tx * parentTransform.b + local.ty * parentTransform.d + parentTransform.ty;
		} else {
			this.__renderTransform.copyFrom(local);
		}
		if(this.__scrollRect != null) {
			var _this = this.__renderTransform;
			var px = -this.__scrollRect.x;
			var py = -this.__scrollRect.y;
			_this.tx = px * _this.a + py * _this.c + _this.tx;
			_this.ty = px * _this.b + py * _this.d + _this.ty;
		}
	}
	,get_alpha: function() {
		return this.__alpha;
	}
	,set_alpha: function(value) {
		if(value > 1.0) {
			value = 1.0;
		}
		if(value != this.__alpha) {
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__alpha = value;
	}
	,get_blendMode: function() {
		return this.__blendMode;
	}
	,set_blendMode: function(value) {
		if(value == null) {
			value = 10;
		}
		if(value != this.__blendMode) {
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__blendMode = value;
	}
	,get_cacheAsBitmap: function() {
		if(this.__filters == null) {
			return this.__cacheAsBitmap;
		} else {
			return true;
		}
	}
	,set_cacheAsBitmap: function(value) {
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
		return this.__cacheAsBitmap = value;
	}
	,get_cacheAsBitmapMatrix: function() {
		return this.__cacheAsBitmapMatrix;
	}
	,set_cacheAsBitmapMatrix: function(value) {
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
		return this.__cacheAsBitmapMatrix = value.clone();
	}
	,get_filters: function() {
		if(this.__filters == null) {
			return [];
		} else {
			return this.__filters.slice();
		}
	}
	,set_filters: function(value) {
		if(value != null && value.length > 0) {
			this.__filters = value;
		} else {
			this.__filters = null;
		}
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
		return value;
	}
	,get_height: function() {
		var rect = openfl_geom_Rectangle.__pool.get();
		this.__getLocalBounds(rect);
		var height = rect.height;
		openfl_geom_Rectangle.__pool.release(rect);
		return height;
	}
	,set_height: function(value) {
		var rect = openfl_geom_Rectangle.__pool.get();
		var matrix = openfl_geom_Matrix.__pool.get();
		matrix.identity();
		this.__getBounds(rect,matrix);
		if(value != rect.height) {
			this.set_scaleY(value / rect.height);
		} else {
			this.set_scaleY(1);
		}
		openfl_geom_Rectangle.__pool.release(rect);
		openfl_geom_Matrix.__pool.release(matrix);
		return value;
	}
	,get_loaderInfo: function() {
		if(this.stage != null) {
			return openfl__$internal_Lib.current.__loaderInfo;
		}
		return null;
	}
	,get_mask: function() {
		return this.__mask;
	}
	,set_mask: function(value) {
		if(value == this.__mask) {
			return value;
		}
		if(value != this.__mask) {
			this.__setTransformDirty();
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		if(this.__mask != null) {
			this.__mask.__isMask = false;
			this.__mask.__maskTarget = null;
			this.__mask.__setTransformDirty();
			var _this = this.__mask;
			if(!_this.__renderDirty) {
				_this.__renderDirty = true;
				_this.__setParentRenderDirty();
			}
		}
		if(value != null) {
			value.__isMask = true;
			value.__maskTarget = this;
			value.__setWorldTransformInvalid();
		}
		if(this.__cacheBitmap != null && this.__cacheBitmap.get_mask() != value) {
			this.__cacheBitmap.set_mask(value);
		}
		return this.__mask = value;
	}
	,get_mouseX: function() {
		var mouseX = this.stage != null ? this.stage.__mouseX : openfl__$internal_Lib.current.stage.__mouseX;
		var mouseY = this.stage != null ? this.stage.__mouseY : openfl__$internal_Lib.current.stage.__mouseY;
		var _this = this.__getRenderTransform();
		var norm = _this.a * _this.d - _this.b * _this.c;
		if(norm == 0) {
			return -_this.tx;
		} else {
			return 1.0 / norm * (_this.c * (_this.ty - mouseY) + _this.d * (mouseX - _this.tx));
		}
	}
	,get_mouseY: function() {
		var mouseX = this.stage != null ? this.stage.__mouseX : openfl__$internal_Lib.current.stage.__mouseX;
		var mouseY = this.stage != null ? this.stage.__mouseY : openfl__$internal_Lib.current.stage.__mouseY;
		var _this = this.__getRenderTransform();
		var norm = _this.a * _this.d - _this.b * _this.c;
		if(norm == 0) {
			return -_this.ty;
		} else {
			return 1.0 / norm * (_this.a * (mouseY - _this.ty) + _this.b * (_this.tx - mouseX));
		}
	}
	,get_name: function() {
		return this.__name;
	}
	,set_name: function(value) {
		return this.__name = value;
	}
	,get_root: function() {
		if(this.stage != null) {
			return openfl__$internal_Lib.current;
		}
		return null;
	}
	,get_rotation: function() {
		return this.__rotation;
	}
	,set_rotation: function(value) {
		if(value != this.__rotation) {
			this.__rotation = value;
			var radians = this.__rotation * (Math.PI / 180);
			this.__rotationSine = Math.sin(radians);
			this.__rotationCosine = Math.cos(radians);
			this.__transform.a = this.__rotationCosine * this.__scaleX;
			this.__transform.b = this.__rotationSine * this.__scaleX;
			this.__transform.c = -this.__rotationSine * this.__scaleY;
			this.__transform.d = this.__rotationCosine * this.__scaleY;
			this.__setTransformDirty();
		}
		return value;
	}
	,get_scaleX: function() {
		return this.__scaleX;
	}
	,set_scaleX: function(value) {
		if(value != this.__scaleX) {
			this.__scaleX = value;
			if(this.__transform.b == 0) {
				if(value != this.__transform.a) {
					this.__setTransformDirty();
				}
				this.__transform.a = value;
			} else {
				var a = this.__rotationCosine * value;
				var b = this.__rotationSine * value;
				if(this.__transform.a != a || this.__transform.b != b) {
					this.__setTransformDirty();
				}
				this.__transform.a = a;
				this.__transform.b = b;
			}
		}
		return value;
	}
	,get_scaleY: function() {
		return this.__scaleY;
	}
	,set_scaleY: function(value) {
		if(value != this.__scaleY) {
			this.__scaleY = value;
			if(this.__transform.c == 0) {
				if(value != this.__transform.d) {
					this.__setTransformDirty();
				}
				this.__transform.d = value;
			} else {
				var c = -this.__rotationSine * value;
				var d = this.__rotationCosine * value;
				if(this.__transform.d != d || this.__transform.c != c) {
					this.__setTransformDirty();
				}
				this.__transform.c = c;
				this.__transform.d = d;
			}
		}
		return value;
	}
	,get_scrollRect: function() {
		if(this.__scrollRect == null) {
			return null;
		}
		return this.__scrollRect.clone();
	}
	,set_scrollRect: function(value) {
		if(value != this.__scrollRect) {
			this.__setTransformDirty();
			if(openfl_display_DisplayObject.__supportDOM) {
				if(!this.__renderDirty) {
					this.__renderDirty = true;
					this.__setParentRenderDirty();
				}
			}
		}
		return this.__scrollRect = value;
	}
	,get_transform: function() {
		if(this.__objectTransform == null) {
			this.__objectTransform = new openfl_geom_Transform(this);
		}
		return this.__objectTransform;
	}
	,set_transform: function(value) {
		if(value == null) {
			throw new js__$Boot_HaxeError(new openfl_errors_TypeError("Parameter transform must be non-null."));
		}
		if(this.__objectTransform == null) {
			this.__objectTransform = new openfl_geom_Transform(this);
		}
		this.__setTransformDirty();
		this.__objectTransform.set_matrix(value.get_matrix());
		this.__objectTransform.set_colorTransform(value.get_colorTransform().__clone());
		return this.__objectTransform;
	}
	,get_visible: function() {
		return this.__visible;
	}
	,set_visible: function(value) {
		if(value != this.__visible) {
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__visible = value;
	}
	,get_width: function() {
		var rect = openfl_geom_Rectangle.__pool.get();
		this.__getLocalBounds(rect);
		var width = rect.width;
		openfl_geom_Rectangle.__pool.release(rect);
		return width;
	}
	,set_width: function(value) {
		var rect = openfl_geom_Rectangle.__pool.get();
		var matrix = openfl_geom_Matrix.__pool.get();
		matrix.identity();
		this.__getBounds(rect,matrix);
		if(value != rect.width) {
			this.set_scaleX(value / rect.width);
		} else {
			this.set_scaleX(1);
		}
		openfl_geom_Rectangle.__pool.release(rect);
		openfl_geom_Matrix.__pool.release(matrix);
		return value;
	}
	,get_x: function() {
		return this.__transform.tx;
	}
	,set_x: function(value) {
		if(value != this.__transform.tx) {
			this.__setTransformDirty();
		}
		return this.__transform.tx = value;
	}
	,get_y: function() {
		return this.__transform.ty;
	}
	,set_y: function(value) {
		if(value != this.__transform.ty) {
			this.__setTransformDirty();
		}
		return this.__transform.ty = value;
	}
	,__class__: openfl_display_DisplayObject
	,__properties__: {set_y:"set_y",get_y:"get_y",set_x:"set_x",get_x:"get_x",set_width:"set_width",get_width:"get_width",set_visible:"set_visible",get_visible:"get_visible",set_transform:"set_transform",get_transform:"get_transform",set_scrollRect:"set_scrollRect",get_scrollRect:"get_scrollRect",set_scaleY:"set_scaleY",get_scaleY:"get_scaleY",set_scaleX:"set_scaleX",get_scaleX:"get_scaleX",set_rotation:"set_rotation",get_rotation:"get_rotation",get_root:"get_root",set_name:"set_name",get_name:"get_name",get_mouseY:"get_mouseY",get_mouseX:"get_mouseX",set_mask:"set_mask",get_mask:"get_mask",get_loaderInfo:"get_loaderInfo",set_height:"set_height",get_height:"get_height",set_filters:"set_filters",get_filters:"get_filters",set_cacheAsBitmapMatrix:"set_cacheAsBitmapMatrix",get_cacheAsBitmapMatrix:"get_cacheAsBitmapMatrix",set_cacheAsBitmap:"set_cacheAsBitmap",get_cacheAsBitmap:"get_cacheAsBitmap",set_blendMode:"set_blendMode",get_blendMode:"get_blendMode",set_alpha:"set_alpha",get_alpha:"get_alpha"}
});
var openfl_display_IShaderDrawable = function() { };
$hxClasses["openfl.display.IShaderDrawable"] = openfl_display_IShaderDrawable;
openfl_display_IShaderDrawable.__name__ = ["openfl","display","IShaderDrawable"];
openfl_display_IShaderDrawable.prototype = {
	shader: null
	,__class__: openfl_display_IShaderDrawable
};
var openfl_display_Bitmap = function(bitmapData,pixelSnapping,smoothing) {
	if(smoothing == null) {
		smoothing = false;
	}
	openfl_display_DisplayObject.call(this);
	this.__bitmapData = bitmapData;
	this.pixelSnapping = pixelSnapping;
	this.smoothing = smoothing;
	if(pixelSnapping == null) {
		this.pixelSnapping = 1;
	}
};
$hxClasses["openfl.display.Bitmap"] = openfl_display_Bitmap;
openfl_display_Bitmap.__name__ = ["openfl","display","Bitmap"];
openfl_display_Bitmap.__interfaces__ = [openfl_display_IShaderDrawable];
openfl_display_Bitmap.__super__ = openfl_display_DisplayObject;
openfl_display_Bitmap.prototype = $extend(openfl_display_DisplayObject.prototype,{
	pixelSnapping: null
	,shader: null
	,smoothing: null
	,__bitmapData: null
	,__imageVersion: null
	,__enterFrame: function(deltaTime) {
		if(this.__bitmapData != null && this.__bitmapData.image != null) {
			var image = this.__bitmapData.image;
			if(this.__bitmapData.image.version != this.__imageVersion) {
				if(!this.__renderDirty) {
					this.__renderDirty = true;
					this.__setParentRenderDirty();
				}
				this.__imageVersion = image.version;
			}
		}
	}
	,__getBounds: function(rect,matrix) {
		if(this.__bitmapData != null) {
			var bounds = openfl_geom_Rectangle.__pool.get();
			bounds.setTo(0,0,this.__bitmapData.width,this.__bitmapData.height);
			bounds.__transform(bounds,matrix);
			rect.__expand(bounds.x,bounds.y,bounds.width,bounds.height);
			openfl_geom_Rectangle.__pool.release(bounds);
		}
	}
	,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		if(!hitObject.get_visible() || this.__isMask || this.__bitmapData == null) {
			return false;
		}
		if(this.get_mask() != null && !this.get_mask().__hitTestMask(x,y)) {
			return false;
		}
		this.__getRenderTransform();
		var _this = this.__renderTransform;
		var norm = _this.a * _this.d - _this.b * _this.c;
		var px = norm == 0 ? -_this.tx : 1.0 / norm * (_this.c * (_this.ty - y) + _this.d * (x - _this.tx));
		var _this1 = this.__renderTransform;
		var norm1 = _this1.a * _this1.d - _this1.b * _this1.c;
		var py = norm1 == 0 ? -_this1.ty : 1.0 / norm1 * (_this1.a * (y - _this1.ty) + _this1.b * (_this1.tx - x));
		if(px > 0 && py > 0 && px <= this.__bitmapData.width && py <= this.__bitmapData.height) {
			if(this.__scrollRect != null && !this.__scrollRect.contains(px,py)) {
				return false;
			}
			if(stack != null && !interactiveOnly) {
				stack.push(hitObject);
			}
			return true;
		}
		return false;
	}
	,__hitTestMask: function(x,y) {
		if(this.__bitmapData == null) {
			return false;
		}
		this.__getRenderTransform();
		var _this = this.__renderTransform;
		var norm = _this.a * _this.d - _this.b * _this.c;
		var px = norm == 0 ? -_this.tx : 1.0 / norm * (_this.c * (_this.ty - y) + _this.d * (x - _this.tx));
		var _this1 = this.__renderTransform;
		var norm1 = _this1.a * _this1.d - _this1.b * _this1.c;
		var py = norm1 == 0 ? -_this1.ty : 1.0 / norm1 * (_this1.a * (y - _this1.ty) + _this1.b * (_this1.tx - x));
		if(px > 0 && py > 0 && px <= this.__bitmapData.width && py <= this.__bitmapData.height) {
			return true;
		}
		return false;
	}
	,__renderCairo: function(renderSession) {
	}
	,__renderCairoMask: function(renderSession) {
		renderSession.cairo.rectangle(0,0,this.get_width(),this.get_height());
	}
	,__renderCanvas: function(renderSession) {
		this.__updateCacheBitmap(renderSession,!this.__worldColorTransform.__isDefault());
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			var bitmap = this.__cacheBitmap;
		}
	}
	,__renderCanvasMask: function(renderSession) {
		renderSession.context.rect(0,0,this.get_width(),this.get_height());
	}
	,__renderDOM: function(renderSession) {
		this.__updateCacheBitmap(renderSession,!this.__worldColorTransform.__isDefault());
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			this.__renderDOMClear(renderSession);
			this.__cacheBitmap.stage = this.stage;
			var bitmap = this.__cacheBitmap;
		}
	}
	,__renderDOMClear: function(renderSession) {
		openfl__$internal_renderer_dom_DOMBitmap.clear(this,renderSession);
	}
	,__renderGL: function(renderSession) {
		this.__updateCacheBitmap(renderSession,false);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			openfl__$internal_renderer_opengl_GLBitmap.render(this.__cacheBitmap,renderSession);
		} else {
			openfl__$internal_renderer_opengl_GLBitmap.render(this,renderSession);
		}
	}
	,__renderGLMask: function(renderSession) {
		this.__updateCacheBitmap(renderSession,false);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			openfl__$internal_renderer_opengl_GLBitmap.renderMask(this.__cacheBitmap,renderSession);
		} else {
			openfl__$internal_renderer_opengl_GLBitmap.renderMask(this,renderSession);
		}
	}
	,__updateCacheBitmap: function(renderSession,force) {
		if(this.get_filters() == null) {
			return false;
		}
		return openfl_display_DisplayObject.prototype.__updateCacheBitmap.call(this,renderSession,force);
	}
	,__updateMask: function(maskGraphics) {
		if(this.__bitmapData == null) {
			return;
		}
		maskGraphics.__commands.overrideMatrix(this.__worldTransform);
		maskGraphics.beginFill(0);
		maskGraphics.drawRect(0,0,this.__bitmapData.width,this.__bitmapData.height);
		if(maskGraphics.__bounds == null) {
			maskGraphics.__bounds = new openfl_geom_Rectangle();
		}
		this.__getBounds(maskGraphics.__bounds,openfl_geom_Matrix.__identity);
		openfl_display_DisplayObject.prototype.__updateMask.call(this,maskGraphics);
	}
	,get_bitmapData: function() {
		return this.__bitmapData;
	}
	,set_bitmapData: function(value) {
		this.__bitmapData = value;
		this.smoothing = false;
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
		var tmp = this.__filters != null && this.__filters.length > 0;
		this.__imageVersion = -1;
		return this.__bitmapData;
	}
	,get_height: function() {
		if(this.__bitmapData != null) {
			return this.__bitmapData.height * Math.abs(this.get_scaleY());
		}
		return 0;
	}
	,set_height: function(value) {
		if(this.__bitmapData != null) {
			if(value != this.__bitmapData.height) {
				if(!this.__renderDirty) {
					this.__renderDirty = true;
					this.__setParentRenderDirty();
				}
				this.set_scaleY(value / this.__bitmapData.height);
			}
			return value;
		}
		return 0;
	}
	,get_width: function() {
		if(this.__bitmapData != null) {
			return this.__bitmapData.width * Math.abs(this.__scaleX);
		}
		return 0;
	}
	,set_width: function(value) {
		if(this.__bitmapData != null) {
			if(value != this.__bitmapData.width) {
				if(!this.__renderDirty) {
					this.__renderDirty = true;
					this.__setParentRenderDirty();
				}
				this.set_scaleX(value / this.__bitmapData.width);
			}
			return value;
		}
		return 0;
	}
	,__class__: openfl_display_Bitmap
	,__properties__: $extend(openfl_display_DisplayObject.prototype.__properties__,{set_bitmapData:"set_bitmapData",get_bitmapData:"get_bitmapData"})
});
var format_swf_instance_Bitmap = function(tag) {
	openfl_display_Bitmap.call(this);
	if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsLossless)) {
		var data = tag;
		if(data.instance != null) {
			this.set_bitmapData(data.instance);
		} else {
			var transparent = data.level > 1;
			var buffer = data.zlibBitmapData;
			buffer.uncompress();
			buffer.position = 0;
			if(data.bitmapFormat == 3) {
				var colorTable = [];
				var _g1 = 0;
				var _g = data.bitmapColorTableSize;
				while(_g1 < _g) {
					var i = _g1++;
					var r = buffer.readUnsignedByte();
					var g = buffer.readUnsignedByte();
					var b = buffer.readUnsignedByte();
					if(transparent) {
						var a = buffer.readUnsignedByte();
						colorTable.push((a << 24) + (r << 16) + (g << 8) + b);
					} else {
						colorTable.push((r << 16) + (g << 8) + b);
					}
				}
				var this1 = new openfl_utils_ByteArrayData(0);
				var imageData = this1;
				var padding = (4 - data.bitmapWidth % 4) % 4;
				var index = 0;
				var _g11 = 0;
				var _g2 = data.bitmapHeight;
				while(_g11 < _g2) {
					var y = _g11++;
					var _g3 = 0;
					var _g21 = data.bitmapWidth;
					while(_g3 < _g21) {
						var x = _g3++;
						index = buffer.readUnsignedByte();
						if(index >= 0 && index < colorTable.length) {
							imageData.writeUnsignedInt(colorTable[index]);
						} else {
							imageData.writeUnsignedInt(0);
						}
					}
					buffer.position += padding;
				}
				buffer = imageData;
				buffer.position = 0;
			}
			this.set_bitmapData(new openfl_display_BitmapData(data.bitmapWidth,data.bitmapHeight,transparent));
			this.get_bitmapData().image.buffer.premultiplied = false;
			this.get_bitmapData().setPixels(this.get_bitmapData().rect,buffer);
			this.get_bitmapData().image.buffer.premultiplied = true;
			data.instance = this.get_bitmapData();
		}
	} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsJPEG2)) {
		var data1 = tag;
		if(data1.instance != null) {
			this.set_bitmapData(data1.instance);
		} else {
			if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBitsJPEG3)) {
				var alpha = (js_Boot.__cast(tag , format_swf_tags_TagDefineBitsJPEG3)).bitmapAlphaData;
				alpha.uncompress();
				this.set_bitmapData(openfl_display_BitmapData.fromBytes(data1.bitmapData,alpha));
				this.get_bitmapData().image.buffer.premultiplied = true;
			} else {
				this.set_bitmapData(openfl_display_BitmapData.fromBytes(data1.bitmapData,null));
			}
			data1.instance = this.get_bitmapData();
		}
	} else if(js_Boot.__instanceof(tag,format_swf_tags_TagDefineBits)) {
		var data2 = tag;
		this.set_bitmapData(openfl_display_BitmapData.fromBytes(data2.bitmapData,null));
	}
};
$hxClasses["format.swf.instance.Bitmap"] = format_swf_instance_Bitmap;
format_swf_instance_Bitmap.__name__ = ["format","swf","instance","Bitmap"];
format_swf_instance_Bitmap.__super__ = openfl_display_Bitmap;
format_swf_instance_Bitmap.prototype = $extend(openfl_display_Bitmap.prototype,{
	__class__: format_swf_instance_Bitmap
});
var format_swf_tags_ITag = function() { };
$hxClasses["format.swf.tags.ITag"] = format_swf_tags_ITag;
format_swf_tags_ITag.__name__ = ["format","swf","tags","ITag"];
format_swf_tags_ITag.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,parse: null
	,publish: null
	,toString: null
	,__class__: format_swf_tags_ITag
};
var format_swf_tags_IDefinitionTag = function() { };
$hxClasses["format.swf.tags.IDefinitionTag"] = format_swf_tags_IDefinitionTag;
format_swf_tags_IDefinitionTag.__name__ = ["format","swf","tags","IDefinitionTag"];
format_swf_tags_IDefinitionTag.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_IDefinitionTag.prototype = {
	characterId: null
	,clone: null
	,__class__: format_swf_tags_IDefinitionTag
};
var format_swf_tags_IDisplayListTag = function() { };
$hxClasses["format.swf.tags.IDisplayListTag"] = format_swf_tags_IDisplayListTag;
format_swf_tags_IDisplayListTag.__name__ = ["format","swf","tags","IDisplayListTag"];
format_swf_tags_IDisplayListTag.__interfaces__ = [format_swf_tags_ITag];
var format_swf_tags_Tag = function() { };
$hxClasses["format.swf.tags.Tag"] = format_swf_tags_Tag;
format_swf_tags_Tag.__name__ = ["format","swf","tags","Tag"];
format_swf_tags_Tag.toStringCommon = function(type,name,indent) {
	if(indent == null) {
		indent = 0;
	}
	return format_swf_utils_StringUtils.repeat(indent) + "[" + format_swf_utils_StringUtils.printf("%02d",[type]) + ":" + name + "] ";
};
var format_swf_tags_TagCSMTextSettings = function() {
	this.type = 74;
	this.name = "CSMTextSettings";
	this.version = 8;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagCSMTextSettings"] = format_swf_tags_TagCSMTextSettings;
format_swf_tags_TagCSMTextSettings.__name__ = ["format","swf","tags","TagCSMTextSettings"];
format_swf_tags_TagCSMTextSettings.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagCSMTextSettings.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,textId: null
	,useFlashType: null
	,gridFit: null
	,thickness: null
	,sharpness: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.textId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.useFlashType = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.gridFit = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,3);
		format_swf__$SWFData_SWFData_$Impl_$.readUB(data,3);
		this.thickness = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		this.sharpness = format_swf__$SWFData_SWFData_$Impl_$.readFIXED(data);
		format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,12);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.textId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,2,this.useFlashType);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,3,this.gridFit);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,3,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.thickness);
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED(data,this.sharpness);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "TextID: " + this.textId + ", " + "UseFlashType: " + this.useFlashType + ", " + "GridFit: " + this.gridFit + ", " + "Thickness: " + this.thickness + ", " + "Sharpness: " + this.sharpness;
	}
	,__class__: format_swf_tags_TagCSMTextSettings
};
var format_swf_tags_TagDebugID = function() {
	this.type = 63;
	this.name = "DebugID";
	this.version = 6;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.uuid = this1;
	this.uuid.__endian = 0;
};
$hxClasses["format.swf.tags.TagDebugID"] = format_swf_tags_TagDebugID;
format_swf_tags_TagDebugID.__name__ = ["format","swf","tags","TagDebugID"];
format_swf_tags_TagDebugID.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDebugID.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,uuid: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		if(length > 0) {
			data.readBytes(this.uuid,0,length);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.uuid));
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.uuid) > 0) {
			data.writeBytes(this.uuid);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "UUID: ";
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.uuid) == 16) {
			str += format_swf_utils_StringUtils.printf("%02x%02x%02x%02x-",[this.uuid.b[0],this.uuid.b[1],this.uuid.b[2],this.uuid.b[3]]);
			str += format_swf_utils_StringUtils.printf("%02x%02x-",[this.uuid.b[4],this.uuid.b[5]]);
			str += format_swf_utils_StringUtils.printf("%02x%02x-",[this.uuid.b[6],this.uuid.b[7]]);
			str += format_swf_utils_StringUtils.printf("%02x%02x-",[this.uuid.b[8],this.uuid.b[9]]);
			str += format_swf_utils_StringUtils.printf("%02x%02x%02x%02x%02x%02x",[this.uuid.b[10],this.uuid.b[11],this.uuid.b[12],this.uuid.b[13],this.uuid.b[14],this.uuid.b[15]]);
		} else {
			str += "(invalid length: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.uuid) + ")";
		}
		return str;
	}
	,__class__: format_swf_tags_TagDebugID
};
var format_swf_tags_TagDefineBinaryData = function() {
	this.type = 87;
	this.name = "DefineBinaryData";
	this.version = 9;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.binaryData = this1;
	this.binaryData.__endian = 0;
};
$hxClasses["format.swf.tags.TagDefineBinaryData"] = format_swf_tags_TagDefineBinaryData;
format_swf_tags_TagDefineBinaryData.__name__ = ["format","swf","tags","TagDefineBinaryData"];
format_swf_tags_TagDefineBinaryData.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineBinaryData.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,characterId: null
	,binaryData: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		if(length > 6) {
			data.readBytes(this.binaryData,0,length - 6);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,0);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.binaryData) > 0) {
			body.writeBytes(this.binaryData);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineBinaryData();
		tag.characterId = this.characterId;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.binaryData) > 0) {
			tag.binaryData.writeBytes(this.binaryData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Length: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.binaryData);
	}
	,__class__: format_swf_tags_TagDefineBinaryData
};
var format_swf_tags_TagDefineBits = function() {
	this.bitmapType = 1;
	this.type = 6;
	this.name = "DefineBits";
	this.version = 1;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.bitmapData = this1;
	this.bitmapData.__endian = 0;
};
$hxClasses["format.swf.tags.TagDefineBits"] = format_swf_tags_TagDefineBits;
format_swf_tags_TagDefineBits.__name__ = ["format","swf","tags","TagDefineBits"];
format_swf_tags_TagDefineBits.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineBits.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,bitmapType: null
	,characterId: null
	,bitmapData: null
	,instance: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(length > 2) {
			data.readBytes(this.bitmapData,0,length - 2);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) + 2,true);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.characterId);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) > 0) {
			data.writeBytes(this.bitmapData);
		}
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineBits();
		tag.characterId = this.characterId;
		tag.bitmapType = this.bitmapType;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) > 0) {
			tag.bitmapData.writeBytes(this.bitmapData);
		}
		return tag;
	}
	,loader: null
	,onCompleteCallback: null
	,exportBitmapData: function(onComplete) {
		this.onCompleteCallback = onComplete;
		this.loader = new openfl_display_Loader();
		this.loader.contentLoaderInfo.addEventListener("complete",$bind(this,this.exportCompleteHandler));
		this.loader.loadBytes(this.bitmapData);
	}
	,exportCompleteHandler: function(event) {
		var loader = event.target.loader;
		var bitmapData = new openfl_display_BitmapData(Math.ceil(loader.content.get_width()),Math.ceil(loader.content.get_height()));
		bitmapData.draw(loader);
		this.instance = bitmapData;
		this.onCompleteCallback(bitmapData);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "BitmapLength: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData);
	}
	,__class__: format_swf_tags_TagDefineBits
};
var format_swf_tags_TagDefineBitsJPEG2 = function() {
	format_swf_tags_TagDefineBits.call(this);
	this.type = 21;
	this.name = "DefineBitsJPEG2";
	this.version = 2;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagDefineBitsJPEG2"] = format_swf_tags_TagDefineBitsJPEG2;
format_swf_tags_TagDefineBitsJPEG2.__name__ = ["format","swf","tags","TagDefineBitsJPEG2"];
format_swf_tags_TagDefineBitsJPEG2.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineBitsJPEG2.__super__ = format_swf_tags_TagDefineBits;
format_swf_tags_TagDefineBitsJPEG2.prototype = $extend(format_swf_tags_TagDefineBits.prototype,{
	parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		format_swf_tags_TagDefineBits.prototype.parse.call(this,data,length,version);
		if(this.bitmapData.b[0] == 255 && (this.bitmapData.b[1] == 216 || this.bitmapData.b[1] == 217)) {
			this.bitmapType = 1;
		} else if(this.bitmapData.b[0] == 137 && this.bitmapData.b[1] == 80 && this.bitmapData.b[2] == 78 && this.bitmapData.b[3] == 71 && this.bitmapData.b[4] == 13 && this.bitmapData.b[5] == 10 && this.bitmapData.b[6] == 26 && this.bitmapData.b[7] == 10) {
			this.bitmapType = 3;
		} else if(this.bitmapData.b[0] == 71 && this.bitmapData.b[1] == 73 && this.bitmapData.b[2] == 70 && this.bitmapData.b[3] == 56 && this.bitmapData.b[4] == 57 && this.bitmapData.b[5] == 97) {
			this.bitmapType = 2;
		}
		if(this.bitmapType != 1) {
			version = 8;
		}
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineBitsJPEG2();
		tag.characterId = this.characterId;
		tag.bitmapType = this.bitmapType;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) > 0) {
			tag.bitmapData.writeBytes(this.bitmapData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Type: " + format_swf_data_consts_BitmapType.toString(this.bitmapType) + ", " + "BitmapLength: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData);
		return str;
	}
	,__class__: format_swf_tags_TagDefineBitsJPEG2
});
var format_swf_tags_TagDefineBitsJPEG3 = function() {
	format_swf_tags_TagDefineBitsJPEG2.call(this);
	this.type = 35;
	this.name = "DefineBitsJPEG3";
	this.version = 3;
	this.level = 3;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.bitmapAlphaData = this1;
	this.bitmapAlphaData.__endian = 0;
};
$hxClasses["format.swf.tags.TagDefineBitsJPEG3"] = format_swf_tags_TagDefineBitsJPEG3;
format_swf_tags_TagDefineBitsJPEG3.__name__ = ["format","swf","tags","TagDefineBitsJPEG3"];
format_swf_tags_TagDefineBitsJPEG3.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineBitsJPEG3.__super__ = format_swf_tags_TagDefineBitsJPEG2;
format_swf_tags_TagDefineBitsJPEG3.prototype = $extend(format_swf_tags_TagDefineBitsJPEG2.prototype,{
	bitmapAlphaData: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var alphaDataOffset = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		data.readBytes(this.bitmapData,0,alphaDataOffset);
		if(this.bitmapData.b[0] == 255 && (this.bitmapData.b[1] == 216 || this.bitmapData.b[1] == 217)) {
			this.bitmapType = 1;
		} else if(this.bitmapData.b[0] == 137 && this.bitmapData.b[1] == 80 && this.bitmapData.b[2] == 78 && this.bitmapData.b[3] == 71 && this.bitmapData.b[4] == 13 && this.bitmapData.b[5] == 10 && this.bitmapData.b[6] == 26 && this.bitmapData.b[7] == 10) {
			this.bitmapType = 3;
		} else if(this.bitmapData.b[0] == 71 && this.bitmapData.b[1] == 73 && this.bitmapData.b[2] == 70 && this.bitmapData.b[3] == 56 && this.bitmapData.b[4] == 57 && this.bitmapData.b[5] == 97) {
			this.bitmapType = 2;
		}
		var alphaDataSize = length - alphaDataOffset - 6;
		if(alphaDataSize > 0) {
			data.readBytes(this.bitmapAlphaData,0,alphaDataSize);
		}
		if(this.bitmapType != 1) {
			version = 8;
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) + 6,true);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData));
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) > 0) {
			data.writeBytes(this.bitmapData);
		}
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0) {
			data.writeBytes(this.bitmapAlphaData);
		}
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineBitsJPEG3();
		tag.characterId = this.characterId;
		tag.bitmapType = this.bitmapType;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) > 0) {
			tag.bitmapData.writeBytes(this.bitmapData);
		}
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0) {
			tag.bitmapAlphaData.writeBytes(this.bitmapAlphaData);
		}
		return tag;
	}
	,exportCompleteHandler: function(event) {
		var loader = event.target.loader;
		var bitmapData = new openfl_display_BitmapData(Math.ceil(loader.content.get_width()),Math.ceil(loader.content.get_height()),true);
		bitmapData.draw(loader);
		try {
			this.bitmapAlphaData.uncompress();
		} catch( e ) {
			haxe_CallStack.lastException = e;
		}
		this.bitmapAlphaData.position = 0;
		var constrain = function(value) {
			if(value > 255) {
				return 255;
			} else if(value < 0) {
				return 0;
			}
			return value | 0;
		};
		var _g1 = 0;
		var _g = bitmapData.height;
		while(_g1 < _g) {
			var y = _g1++;
			var _g3 = 0;
			var _g2 = bitmapData.width;
			while(_g3 < _g2) {
				var x = _g3++;
				var a = this.bitmapAlphaData.readUnsignedByte();
				var unmultiply = 255.0 / a;
				var pixel = bitmapData.getPixel(x,y);
				var r = constrain((pixel >> 16 & 255) * unmultiply);
				var g = constrain((pixel >> 8 & 255) * unmultiply);
				var b = constrain((pixel & 255) * unmultiply);
				bitmapData.setPixel32(x,y,(a << 24) + (r << 16) + (g << 8) + b);
			}
		}
		this.instance = bitmapData;
		this.onCompleteCallback(bitmapData);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Type: " + format_swf_data_consts_BitmapType.toString(this.bitmapType) + ", " + "HasAlphaData: " + Std.string(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0) + ", " + (openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0 ? "BitmapAlphaLength: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) + ", " : "") + "BitmapLength: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData);
		return str;
	}
	,__class__: format_swf_tags_TagDefineBitsJPEG3
});
var format_swf_tags_TagDefineBitsJPEG4 = function() {
	format_swf_tags_TagDefineBitsJPEG3.call(this);
	this.type = 90;
	this.name = "DefineBitsJPEG4";
	this.version = 10;
	this.level = 4;
};
$hxClasses["format.swf.tags.TagDefineBitsJPEG4"] = format_swf_tags_TagDefineBitsJPEG4;
format_swf_tags_TagDefineBitsJPEG4.__name__ = ["format","swf","tags","TagDefineBitsJPEG4"];
format_swf_tags_TagDefineBitsJPEG4.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineBitsJPEG4.__super__ = format_swf_tags_TagDefineBitsJPEG3;
format_swf_tags_TagDefineBitsJPEG4.prototype = $extend(format_swf_tags_TagDefineBitsJPEG3.prototype,{
	deblockParam: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var alphaDataOffset = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		this.deblockParam = format_swf__$SWFData_SWFData_$Impl_$.readFIXED8(data);
		data.readBytes(this.bitmapData,0,alphaDataOffset);
		if(this.bitmapData.b[0] == 255 && (this.bitmapData.b[1] == 216 || this.bitmapData.b[1] == 217)) {
			this.bitmapType = 1;
		} else if(this.bitmapData.b[0] == 137 && this.bitmapData.b[1] == 80 && this.bitmapData.b[2] == 78 && this.bitmapData.b[3] == 71 && this.bitmapData.b[4] == 13 && this.bitmapData.b[5] == 10 && this.bitmapData.b[6] == 26 && this.bitmapData.b[7] == 10) {
			this.bitmapType = 3;
		} else if(this.bitmapData.b[0] == 71 && this.bitmapData.b[1] == 73 && this.bitmapData.b[2] == 70 && this.bitmapData.b[3] == 56 && this.bitmapData.b[4] == 57 && this.bitmapData.b[5] == 97) {
			this.bitmapType = 2;
		}
		var alphaDataSize = length - alphaDataOffset - 6;
		if(alphaDataSize > 0) {
			data.readBytes(this.bitmapAlphaData,0,alphaDataSize);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) + 6,true);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(data,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData));
		format_swf__$SWFData_SWFData_$Impl_$.writeFIXED8(data,this.deblockParam);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) > 0) {
			data.writeBytes(this.bitmapData);
		}
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0) {
			data.writeBytes(this.bitmapAlphaData);
		}
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineBitsJPEG4();
		tag.characterId = this.characterId;
		tag.bitmapType = this.bitmapType;
		tag.deblockParam = this.deblockParam;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData) > 0) {
			tag.bitmapData.writeBytes(this.bitmapData);
		}
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0) {
			tag.bitmapAlphaData.writeBytes(this.bitmapAlphaData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Type: " + format_swf_data_consts_BitmapType.toString(this.bitmapType) + ", " + "DeblockParam: " + this.deblockParam + ", " + "HasAlphaData: " + Std.string(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0) + ", " + (openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) > 0 ? "BitmapAlphaLength: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapAlphaData) + ", " : "") + "BitmapLength: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bitmapData);
		return str;
	}
	,__class__: format_swf_tags_TagDefineBitsJPEG4
});
var format_swf_tags_TagDefineBitsLossless = function() {
	this.type = 20;
	this.name = "DefineBitsLossless";
	this.version = 2;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.zlibBitmapData = this1;
	this.zlibBitmapData.__endian = 0;
};
$hxClasses["format.swf.tags.TagDefineBitsLossless"] = format_swf_tags_TagDefineBitsLossless;
format_swf_tags_TagDefineBitsLossless.__name__ = ["format","swf","tags","TagDefineBitsLossless"];
format_swf_tags_TagDefineBitsLossless.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineBitsLossless.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,bitmapFormat: null
	,bitmapWidth: null
	,bitmapHeight: null
	,bitmapColorTableSize: null
	,characterId: null
	,zlibBitmapData: null
	,instance: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.bitmapFormat = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.bitmapWidth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.bitmapHeight = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.bitmapFormat == 3) {
			this.bitmapColorTableSize = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data) + 1;
		}
		data.readBytes(this.zlibBitmapData,0,length - (this.bitmapFormat == 3 ? 8 : 7));
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.bitmapFormat);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.bitmapWidth);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.bitmapHeight);
		if(this.bitmapFormat == 3) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.bitmapColorTableSize - 1);
		}
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.zlibBitmapData) > 0) {
			body.writeBytes(this.zlibBitmapData);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body),true);
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineBitsLossless();
		tag.characterId = this.characterId;
		tag.bitmapFormat = this.bitmapFormat;
		tag.bitmapWidth = this.bitmapWidth;
		tag.bitmapHeight = this.bitmapHeight;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.zlibBitmapData) > 0) {
			tag.zlibBitmapData.writeBytes(this.zlibBitmapData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Format: " + format_swf_data_consts_BitmapFormat.toString(this.bitmapFormat) + ", " + "Size: (" + this.bitmapWidth + "," + this.bitmapHeight + ")";
	}
	,__class__: format_swf_tags_TagDefineBitsLossless
};
var format_swf_tags_TagDefineBitsLossless2 = function() {
	format_swf_tags_TagDefineBitsLossless.call(this);
	this.type = 36;
	this.name = "DefineBitsLossless2";
	this.version = 3;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagDefineBitsLossless2"] = format_swf_tags_TagDefineBitsLossless2;
format_swf_tags_TagDefineBitsLossless2.__name__ = ["format","swf","tags","TagDefineBitsLossless2"];
format_swf_tags_TagDefineBitsLossless2.__super__ = format_swf_tags_TagDefineBitsLossless;
format_swf_tags_TagDefineBitsLossless2.prototype = $extend(format_swf_tags_TagDefineBitsLossless.prototype,{
	clone: function() {
		var tag = new format_swf_tags_TagDefineBitsLossless2();
		tag.characterId = this.characterId;
		tag.bitmapFormat = this.bitmapFormat;
		tag.bitmapWidth = this.bitmapWidth;
		tag.bitmapHeight = this.bitmapHeight;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.zlibBitmapData) > 0) {
			tag.zlibBitmapData.writeBytes(this.zlibBitmapData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Format: " + format_swf_data_consts_BitmapFormat.toString(this.bitmapFormat) + ", " + "Size: (" + this.bitmapWidth + "," + this.bitmapHeight + ")";
	}
	,__class__: format_swf_tags_TagDefineBitsLossless2
});
var format_swf_tags_TagDefineButton = function() {
	this.type = 7;
	this.name = "DefineButton";
	this.version = 1;
	this.level = 1;
	this.characters = [];
	this.actions = [];
	this.frames = new haxe_ds_StringMap();
};
$hxClasses["format.swf.tags.TagDefineButton"] = format_swf_tags_TagDefineButton;
format_swf_tags_TagDefineButton.__name__ = ["format","swf","tags","TagDefineButton"];
format_swf_tags_TagDefineButton.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineButton.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,characterId: null
	,characters: null
	,actions: null
	,frames: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var record;
		while(true) {
			record = format_swf__$SWFData_SWFData_$Impl_$.readBUTTONRECORD(data);
			if(!(record != null)) {
				break;
			}
			this.characters.push(record);
		}
		var action;
		while(true) {
			action = format_swf__$SWFData_SWFData_$Impl_$.readACTIONRECORD(data);
			if(!(action != null)) {
				break;
			}
			this.actions.push(action);
		}
		this.processRecords();
	}
	,publish: function(data,version) {
		var i;
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		var _g1 = 0;
		var _g = this.characters.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeBUTTONRECORD(data,this.characters[i1]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
		var _g11 = 0;
		var _g2 = this.actions.length;
		while(_g11 < _g2) {
			var i2 = _g11++;
			format_swf__$SWFData_SWFData_$Impl_$.writeACTIONRECORD(data,this.actions[i2]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var i;
		var tag = new format_swf_tags_TagDefineButton();
		tag.characterId = this.characterId;
		var _g1 = 0;
		var _g = this.characters.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			tag.characters.push(this.characters[i1].clone());
		}
		var _g11 = 0;
		var _g2 = this.actions.length;
		while(_g11 < _g2) {
			var i2 = _g11++;
			tag.actions.push(this.actions[i2].clone());
		}
		return tag;
	}
	,getRecordsByState: function(state) {
		var _this = this.frames;
		if(__map_reserved[state] != null) {
			return _this.getReserved(state);
		} else {
			return _this.h[state];
		}
	}
	,processRecords: function() {
		var upState = [];
		var overState = [];
		var downState = [];
		var hitState = [];
		var _g1 = 0;
		var _g = this.characters.length;
		while(_g1 < _g) {
			var i = _g1++;
			var record = this.characters[i];
			if(record.stateUp) {
				upState.push(record);
			}
			if(record.stateOver) {
				overState.push(record);
			}
			if(record.stateDown) {
				downState.push(record);
			}
			if(record.stateHitTest) {
				hitState.push(record);
			}
		}
		upState.sort($bind(this,this.sortByDepthCompareFunction));
		overState.sort($bind(this,this.sortByDepthCompareFunction));
		downState.sort($bind(this,this.sortByDepthCompareFunction));
		hitState.sort($bind(this,this.sortByDepthCompareFunction));
		var _this = this.frames;
		if(__map_reserved["up"] != null) {
			_this.setReserved("up",upState);
		} else {
			_this.h["up"] = upState;
		}
		var _this1 = this.frames;
		if(__map_reserved["over"] != null) {
			_this1.setReserved("over",overState);
		} else {
			_this1.h["over"] = overState;
		}
		var _this2 = this.frames;
		if(__map_reserved["down"] != null) {
			_this2.setReserved("down",downState);
		} else {
			_this2.h["down"] = downState;
		}
		var _this3 = this.frames;
		if(__map_reserved["hit"] != null) {
			_this3.setReserved("hit",hitState);
		} else {
			_this3.h["hit"] = hitState;
		}
	}
	,sortByDepthCompareFunction: function(a,b) {
		if(a.placeDepth < b.placeDepth) {
			return -1;
		} else if(a.placeDepth > b.placeDepth) {
			return 1;
		} else {
			return 0;
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId;
		var i;
		if(this.characters.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Characters:";
			var _g1 = 0;
			var _g = this.characters.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i1 + "] " + this.characters[i1].toString(indent + 4);
			}
		}
		if(this.actions.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Actions:";
			var _g11 = 0;
			var _g2 = this.actions.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i2 + "] " + this.actions[i2].toString(indent + 4);
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineButton
};
var format_swf_tags_TagDefineButton2 = function() {
	this.type = 34;
	this.name = "DefineButton2";
	this.version = 3;
	this.level = 2;
	this.characters = [];
	this.condActions = [];
	this.frames = new haxe_ds_StringMap();
};
$hxClasses["format.swf.tags.TagDefineButton2"] = format_swf_tags_TagDefineButton2;
format_swf_tags_TagDefineButton2.__name__ = ["format","swf","tags","TagDefineButton2"];
format_swf_tags_TagDefineButton2.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineButton2.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,trackAsMenu: null
	,characterId: null
	,characters: null
	,condActions: null
	,frames: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.trackAsMenu = (format_swf__$SWFData_SWFData_$Impl_$.readUI8(data) & 1) != 0;
		var actionOffset = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var record;
		while(true) {
			record = format_swf__$SWFData_SWFData_$Impl_$.readBUTTONRECORD(data,2);
			if(!(record != null)) {
				break;
			}
			this.characters.push(record);
		}
		if(actionOffset != 0) {
			var condActionSize;
			while(true) {
				condActionSize = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
				this.condActions.push(format_swf__$SWFData_SWFData_$Impl_$.readBUTTONCONDACTION(data));
				if(!(condActionSize != 0)) {
					break;
				}
			}
		}
		this.processRecords();
	}
	,publish: function(data,version) {
		var i;
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.trackAsMenu ? 1 : 0);
		var hasCondActions = this.condActions.length > 0;
		var buttonRecordsBytes = format_swf__$SWFData_SWFData_$Impl_$._new();
		var _g1 = 0;
		var _g = this.characters.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeBUTTONRECORD(buttonRecordsBytes,this.characters[i1],2);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(buttonRecordsBytes,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,hasCondActions ? format_swf__$SWFData_SWFData_$Impl_$.get_length(buttonRecordsBytes) + 2 : 0);
		body.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(buttonRecordsBytes));
		if(hasCondActions) {
			var _g11 = 0;
			var _g2 = this.condActions.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				var condActionBytes = format_swf__$SWFData_SWFData_$Impl_$._new();
				format_swf__$SWFData_SWFData_$Impl_$.writeBUTTONCONDACTION(condActionBytes,this.condActions[i2]);
				format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,i2 < this.condActions.length - 1 ? format_swf__$SWFData_SWFData_$Impl_$.get_length(condActionBytes) + 2 : 0);
				body.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(condActionBytes));
			}
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var i;
		var tag = new format_swf_tags_TagDefineButton2();
		tag.characterId = this.characterId;
		tag.trackAsMenu = this.trackAsMenu;
		var _g1 = 0;
		var _g = this.characters.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			tag.characters.push(this.characters[i1].clone());
		}
		var _g11 = 0;
		var _g2 = this.condActions.length;
		while(_g11 < _g2) {
			var i2 = _g11++;
			tag.condActions.push(this.condActions[i2].clone());
		}
		return tag;
	}
	,getRecordsByState: function(state) {
		var _this = this.frames;
		if(__map_reserved[state] != null) {
			return _this.getReserved(state);
		} else {
			return _this.h[state];
		}
	}
	,processRecords: function() {
		var upState = [];
		var overState = [];
		var downState = [];
		var hitState = [];
		var _g1 = 0;
		var _g = this.characters.length;
		while(_g1 < _g) {
			var i = _g1++;
			var record = this.characters[i];
			if(record.stateUp) {
				upState.push(record);
			}
			if(record.stateOver) {
				overState.push(record);
			}
			if(record.stateDown) {
				downState.push(record);
			}
			if(record.stateHitTest) {
				hitState.push(record);
			}
		}
		upState.sort($bind(this,this.sortByDepthCompareFunction));
		overState.sort($bind(this,this.sortByDepthCompareFunction));
		downState.sort($bind(this,this.sortByDepthCompareFunction));
		hitState.sort($bind(this,this.sortByDepthCompareFunction));
		var _this = this.frames;
		if(__map_reserved["up"] != null) {
			_this.setReserved("up",upState);
		} else {
			_this.h["up"] = upState;
		}
		var _this1 = this.frames;
		if(__map_reserved["over"] != null) {
			_this1.setReserved("over",overState);
		} else {
			_this1.h["over"] = overState;
		}
		var _this2 = this.frames;
		if(__map_reserved["down"] != null) {
			_this2.setReserved("down",downState);
		} else {
			_this2.h["down"] = downState;
		}
		var _this3 = this.frames;
		if(__map_reserved["hit"] != null) {
			_this3.setReserved("hit",hitState);
		} else {
			_this3.h["hit"] = hitState;
		}
	}
	,sortByDepthCompareFunction: function(a,b) {
		if(a.placeDepth < b.placeDepth) {
			return -1;
		} else if(a.placeDepth > b.placeDepth) {
			return 1;
		} else {
			return 0;
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", TrackAsMenu: " + Std.string(this.trackAsMenu);
		var i;
		if(this.characters.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Characters:";
			var _g1 = 0;
			var _g = this.characters.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i1 + "] " + this.characters[i1].toString(indent + 4);
			}
		}
		if(this.condActions.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "CondActions:";
			var _g11 = 0;
			var _g2 = this.condActions.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i2 + "] " + this.condActions[i2].toString(indent + 4);
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineButton2
};
var format_swf_tags_TagDefineButtonCxform = function() {
	this.type = 23;
	this.name = "DefineButtonCxform";
	this.version = 2;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineButtonCxform"] = format_swf_tags_TagDefineButtonCxform;
format_swf_tags_TagDefineButtonCxform.__name__ = ["format","swf","tags","TagDefineButtonCxform"];
format_swf_tags_TagDefineButtonCxform.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineButtonCxform.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,buttonColorTransform: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.buttonColorTransform = format_swf__$SWFData_SWFData_$Impl_$.readCXFORM(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeCXFORM(body,this.buttonColorTransform);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineButtonCxform();
		tag.characterId = this.characterId;
		tag.buttonColorTransform = this.buttonColorTransform.clone();
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "ColorTransform: " + Std.string(this.buttonColorTransform);
		return str;
	}
	,__class__: format_swf_tags_TagDefineButtonCxform
};
var format_swf_tags_TagDefineButtonSound = function() {
	this.type = 17;
	this.name = "DefineButtonSound";
	this.version = 2;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineButtonSound"] = format_swf_tags_TagDefineButtonSound;
format_swf_tags_TagDefineButtonSound.__name__ = ["format","swf","tags","TagDefineButtonSound"];
format_swf_tags_TagDefineButtonSound.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineButtonSound.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,buttonSoundChar0: null
	,buttonSoundChar1: null
	,buttonSoundChar2: null
	,buttonSoundChar3: null
	,buttonSoundInfo0: null
	,buttonSoundInfo1: null
	,buttonSoundInfo2: null
	,buttonSoundInfo3: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.buttonSoundChar0 = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.buttonSoundChar0 != 0) {
			this.buttonSoundInfo0 = format_swf__$SWFData_SWFData_$Impl_$.readSOUNDINFO(data);
		}
		this.buttonSoundChar1 = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.buttonSoundChar1 != 0) {
			this.buttonSoundInfo1 = format_swf__$SWFData_SWFData_$Impl_$.readSOUNDINFO(data);
		}
		this.buttonSoundChar2 = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.buttonSoundChar2 != 0) {
			this.buttonSoundInfo2 = format_swf__$SWFData_SWFData_$Impl_$.readSOUNDINFO(data);
		}
		this.buttonSoundChar3 = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.buttonSoundChar3 != 0) {
			this.buttonSoundInfo3 = format_swf__$SWFData_SWFData_$Impl_$.readSOUNDINFO(data);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.buttonSoundChar0);
		if(this.buttonSoundChar0 != 0) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDINFO(body,this.buttonSoundInfo0);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.buttonSoundChar1);
		if(this.buttonSoundChar1 != 0) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDINFO(body,this.buttonSoundInfo1);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.buttonSoundChar2);
		if(this.buttonSoundChar2 != 0) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDINFO(body,this.buttonSoundInfo2);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.buttonSoundChar3);
		if(this.buttonSoundChar3 != 0) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDINFO(body,this.buttonSoundInfo3);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineButtonSound();
		tag.characterId = this.characterId;
		tag.buttonSoundChar0 = this.buttonSoundChar0;
		tag.buttonSoundChar1 = this.buttonSoundChar1;
		tag.buttonSoundChar2 = this.buttonSoundChar2;
		tag.buttonSoundChar3 = this.buttonSoundChar3;
		tag.buttonSoundInfo0 = this.buttonSoundInfo0.clone();
		tag.buttonSoundInfo1 = this.buttonSoundInfo1.clone();
		tag.buttonSoundInfo2 = this.buttonSoundInfo2.clone();
		tag.buttonSoundInfo3 = this.buttonSoundInfo3.clone();
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ButtonID: " + this.characterId + ", " + "ButtonSoundChars: " + this.buttonSoundChar0 + "," + this.buttonSoundChar1 + "," + this.buttonSoundChar2 + "," + this.buttonSoundChar3;
		return str;
	}
	,__class__: format_swf_tags_TagDefineButtonSound
};
var format_swf_tags_TagDefineEditText = function() {
	this.type = 37;
	this.name = "DefineEditText";
	this.version = 4;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineEditText"] = format_swf_tags_TagDefineEditText;
format_swf_tags_TagDefineEditText.__name__ = ["format","swf","tags","TagDefineEditText"];
format_swf_tags_TagDefineEditText.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineEditText.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,bounds: null
	,variableName: null
	,hasText: null
	,wordWrap: null
	,multiline: null
	,password: null
	,readOnly: null
	,hasTextColor: null
	,hasMaxLength: null
	,hasFont: null
	,hasFontClass: null
	,autoSize: null
	,hasLayout: null
	,noSelect: null
	,border: null
	,wasStatic: null
	,html: null
	,useOutlines: null
	,fontId: null
	,fontClass: null
	,fontHeight: null
	,textColor: null
	,maxLength: null
	,align: null
	,leftMargin: null
	,rightMargin: null
	,indent: null
	,leading: null
	,initialText: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.bounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		var flags1 = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.hasText = (flags1 & 128) != 0;
		this.wordWrap = (flags1 & 64) != 0;
		this.multiline = (flags1 & 32) != 0;
		this.password = (flags1 & 16) != 0;
		this.readOnly = (flags1 & 8) != 0;
		this.hasTextColor = (flags1 & 4) != 0;
		this.hasMaxLength = (flags1 & 2) != 0;
		this.hasFont = (flags1 & 1) != 0;
		var flags2 = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.hasFontClass = (flags2 & 128) != 0;
		this.autoSize = (flags2 & 64) != 0;
		this.hasLayout = (flags2 & 32) != 0;
		this.noSelect = (flags2 & 16) != 0;
		this.border = (flags2 & 8) != 0;
		this.wasStatic = (flags2 & 4) != 0;
		this.html = (flags2 & 2) != 0;
		this.useOutlines = (flags2 & 1) != 0;
		if(this.hasFont) {
			this.fontId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasFontClass) {
			this.fontClass = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		}
		if(this.hasFont || this.hasFontClass) {
			this.fontHeight = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasTextColor) {
			this.textColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		}
		if(this.hasMaxLength) {
			this.maxLength = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasLayout) {
			this.align = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
			this.leftMargin = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			this.rightMargin = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			this.indent = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			this.leading = format_swf__$SWFData_SWFData_$Impl_$.readSI16(data);
		}
		this.variableName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		if(this.hasText) {
			this.initialText = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.bounds);
		var flags1 = 0;
		if(this.hasText) {
			flags1 |= 128;
		}
		if(this.wordWrap) {
			flags1 |= 64;
		}
		if(this.multiline) {
			flags1 |= 32;
		}
		if(this.password) {
			flags1 |= 16;
		}
		if(this.readOnly) {
			flags1 |= 8;
		}
		if(this.hasTextColor) {
			flags1 |= 4;
		}
		if(this.hasMaxLength) {
			flags1 |= 2;
		}
		if(this.hasFont) {
			flags1 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags1);
		var flags2 = 0;
		if(this.hasFontClass) {
			flags2 |= 128;
		}
		if(this.autoSize) {
			flags2 |= 64;
		}
		if(this.hasLayout) {
			flags2 |= 32;
		}
		if(this.noSelect) {
			flags2 |= 16;
		}
		if(this.border) {
			flags2 |= 8;
		}
		if(this.wasStatic) {
			flags2 |= 4;
		}
		if(this.html) {
			flags2 |= 2;
		}
		if(this.useOutlines) {
			flags2 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags2);
		if(this.hasFont) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.fontId);
		}
		if(this.hasFontClass) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.fontClass);
		}
		if(this.hasFont || this.hasFontClass) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.fontHeight);
		}
		if(this.hasTextColor) {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(body,this.textColor);
		}
		if(this.hasMaxLength) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.maxLength);
		}
		if(this.hasLayout) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.align);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.leftMargin);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.rightMargin);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.indent);
			format_swf__$SWFData_SWFData_$Impl_$.writeSI16(body,this.leading);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.variableName);
		if(this.hasText) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.initialText);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineEditText();
		tag.characterId = this.characterId;
		tag.bounds = this.bounds.clone();
		tag.variableName = this.variableName;
		tag.hasText = this.hasText;
		tag.wordWrap = this.wordWrap;
		tag.multiline = this.multiline;
		tag.password = this.password;
		tag.readOnly = this.readOnly;
		tag.hasTextColor = this.hasTextColor;
		tag.hasMaxLength = this.hasMaxLength;
		tag.hasFont = this.hasFont;
		tag.hasFontClass = this.hasFontClass;
		tag.autoSize = this.autoSize;
		tag.hasLayout = this.hasLayout;
		tag.noSelect = this.noSelect;
		tag.border = this.border;
		tag.wasStatic = this.wasStatic;
		tag.html = this.html;
		tag.useOutlines = this.useOutlines;
		tag.fontId = this.fontId;
		tag.fontClass = this.fontClass;
		tag.fontHeight = this.fontHeight;
		tag.textColor = this.textColor;
		tag.maxLength = this.maxLength;
		tag.align = this.align;
		tag.leftMargin = this.leftMargin;
		tag.rightMargin = this.rightMargin;
		tag.indent = this.indent;
		tag.leading = this.leading;
		tag.initialText = this.initialText;
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + (this.hasText && this.initialText.length > 0 ? "Text: " + this.initialText + ", " : "") + (this.variableName.length > 0 ? "VariableName: " + this.variableName + ", " : "") + "Bounds: " + Std.string(this.bounds);
		return str;
	}
	,__class__: format_swf_tags_TagDefineEditText
};
var format_swf_tags_TagDefineFont = function() {
	this.type = 10;
	this.name = "DefineFont";
	this.version = 1;
	this.level = 1;
	this.glyphShapeTable = [];
};
$hxClasses["format.swf.tags.TagDefineFont"] = format_swf_tags_TagDefineFont;
format_swf_tags_TagDefineFont.__name__ = ["format","swf","tags","TagDefineFont"];
format_swf_tags_TagDefineFont.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineFont.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,characterId: null
	,glyphShapeTable: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var numGlyphs = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data) >> 1;
		format_swf__$SWFData_SWFData_$Impl_$.skipBytes(data,numGlyphs - 1 << 1);
		var _g1 = 0;
		var _g = numGlyphs;
		while(_g1 < _g) {
			var i = _g1++;
			this.glyphShapeTable.push(format_swf__$SWFData_SWFData_$Impl_$.readSHAPE(data,format_swf_tags_TagDefineFont.unitDivisor));
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		var i;
		var prevPtr = 0;
		var len = this.glyphShapeTable.length;
		var shapeTable = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		var offsetTableLength = len << 1;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i1 = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,shapeTable.position + offsetTableLength);
			format_swf__$SWFData_SWFData_$Impl_$.writeSHAPE(shapeTable,this.glyphShapeTable[i1]);
		}
		body.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(shapeTable));
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineFont();
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Not implemented yet."));
	}
	,'export': function(handler,glyphIndex) {
		this.glyphShapeTable[glyphIndex]["export"](handler);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Glyphs: " + this.glyphShapeTable.length;
		return str + this.toStringCommon(indent);
	}
	,toStringCommon: function(indent) {
		var str = "";
		var _g1 = 0;
		var _g = this.glyphShapeTable.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] GlyphShapes:";
			str += this.glyphShapeTable[i].toString(indent + 4);
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineFont
};
var format_swf_tags_TagDefineFont2 = function() {
	format_swf_tags_TagDefineFont.call(this);
	this.type = 48;
	this.name = "DefineFont2";
	this.version = 3;
	this.level = 2;
	this.codeTable = [];
	this.fontAdvanceTable = [];
	this.fontBoundsTable = [];
	this.fontKerningTable = [];
};
$hxClasses["format.swf.tags.TagDefineFont2"] = format_swf_tags_TagDefineFont2;
format_swf_tags_TagDefineFont2.__name__ = ["format","swf","tags","TagDefineFont2"];
format_swf_tags_TagDefineFont2.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineFont2.__super__ = format_swf_tags_TagDefineFont;
format_swf_tags_TagDefineFont2.prototype = $extend(format_swf_tags_TagDefineFont.prototype,{
	hasLayout: null
	,shiftJIS: null
	,smallText: null
	,ansi: null
	,wideOffsets: null
	,wideCodes: null
	,italic: null
	,bold: null
	,languageCode: null
	,fontName: null
	,ascent: null
	,descent: null
	,leading: null
	,codeTable: null
	,fontAdvanceTable: null
	,fontBoundsTable: null
	,fontKerningTable: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.hasLayout = (flags & 128) != 0;
		this.shiftJIS = (flags & 64) != 0;
		this.smallText = (flags & 32) != 0;
		this.ansi = (flags & 16) != 0;
		this.wideOffsets = (flags & 8) != 0;
		this.wideCodes = (flags & 4) != 0;
		this.italic = (flags & 2) != 0;
		this.bold = (flags & 1) != 0;
		this.languageCode = format_swf__$SWFData_SWFData_$Impl_$.readLANGCODE(data);
		var fontNameLen = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var this1 = new openfl_utils_ByteArrayData(0);
		var fontNameRaw = this1;
		fontNameRaw.__endian = 0;
		data.readBytes(fontNameRaw,0,fontNameLen);
		this.fontName = fontNameRaw.readUTFBytes(fontNameLen);
		var i;
		var numGlyphs = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(numGlyphs > 0) {
			format_swf__$SWFData_SWFData_$Impl_$.skipBytes(data,numGlyphs << (this.wideOffsets ? 2 : 1));
			var codeTableOffset = this.wideOffsets ? format_swf__$SWFData_SWFData_$Impl_$.readUI32(data) : format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			var _g1 = 0;
			var _g = numGlyphs;
			while(_g1 < _g) {
				var i1 = _g1++;
				this.glyphShapeTable.push(format_swf__$SWFData_SWFData_$Impl_$.readSHAPE(data));
			}
			var _g11 = 0;
			var _g2 = numGlyphs;
			while(_g11 < _g2) {
				var i2 = _g11++;
				this.codeTable.push(this.wideCodes ? format_swf__$SWFData_SWFData_$Impl_$.readUI16(data) : format_swf__$SWFData_SWFData_$Impl_$.readUI8(data));
			}
		}
		if(this.hasLayout) {
			this.ascent = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			this.descent = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			this.leading = format_swf__$SWFData_SWFData_$Impl_$.readSI16(data);
			var _g12 = 0;
			var _g3 = numGlyphs;
			while(_g12 < _g3) {
				var i3 = _g12++;
				this.fontAdvanceTable.push(format_swf__$SWFData_SWFData_$Impl_$.readSI16(data));
			}
			var _g13 = 0;
			var _g4 = numGlyphs;
			while(_g13 < _g4) {
				var i4 = _g13++;
				this.fontBoundsTable.push(format_swf__$SWFData_SWFData_$Impl_$.readRECT(data));
			}
			var kerningCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
			var _g14 = 0;
			var _g5 = kerningCount;
			while(_g14 < _g5) {
				var i5 = _g14++;
				this.fontKerningTable.push(format_swf__$SWFData_SWFData_$Impl_$.readKERNINGRECORD(data,this.wideCodes));
			}
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		var numGlyphs = this.glyphShapeTable.length;
		var i;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		var flags = 0;
		if(this.hasLayout) {
			flags |= 128;
		}
		if(this.shiftJIS) {
			flags |= 64;
		}
		if(this.smallText) {
			flags |= 32;
		}
		if(this.ansi) {
			flags |= 16;
		}
		if(this.wideOffsets) {
			flags |= 8;
		}
		if(this.wideCodes) {
			flags |= 4;
		}
		if(this.italic) {
			flags |= 2;
		}
		if(this.bold) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags);
		format_swf__$SWFData_SWFData_$Impl_$.writeLANGCODE(body,this.languageCode);
		var this1 = new openfl_utils_ByteArrayData(0);
		var fontNameRaw = this1;
		fontNameRaw.__endian = 0;
		fontNameRaw.writeUTFBytes(this.fontName);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(fontNameRaw));
		body.writeBytes(fontNameRaw);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,numGlyphs);
		if(numGlyphs > 0) {
			var offsetTableLength = numGlyphs << (this.wideOffsets ? 2 : 1);
			var codeTableOffsetLength = this.wideOffsets ? 4 : 2;
			var codeTableLength = this.wideOffsets ? numGlyphs << 1 : numGlyphs;
			var offset = offsetTableLength + codeTableOffsetLength;
			var shapeTable = format_swf__$SWFData_SWFData_$Impl_$._new();
			var _g1 = 0;
			var _g = numGlyphs;
			while(_g1 < _g) {
				var i1 = _g1++;
				if(this.wideOffsets) {
					format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,offset + shapeTable.position);
				} else {
					format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,offset + shapeTable.position);
				}
				format_swf__$SWFData_SWFData_$Impl_$.writeSHAPE(shapeTable,this.glyphShapeTable[i1]);
			}
			if(this.wideOffsets) {
				format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,offset + format_swf__$SWFData_SWFData_$Impl_$.get_length(shapeTable));
			} else {
				format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,offset + format_swf__$SWFData_SWFData_$Impl_$.get_length(shapeTable));
			}
			body.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(shapeTable));
			var _g11 = 0;
			var _g2 = numGlyphs;
			while(_g11 < _g2) {
				var i2 = _g11++;
				if(this.wideCodes) {
					format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.codeTable[i2]);
				} else {
					format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.codeTable[i2]);
				}
			}
		}
		if(this.hasLayout) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.ascent);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.descent);
			format_swf__$SWFData_SWFData_$Impl_$.writeSI16(body,this.leading);
			var _g12 = 0;
			var _g3 = numGlyphs;
			while(_g12 < _g3) {
				var i3 = _g12++;
				format_swf__$SWFData_SWFData_$Impl_$.writeSI16(body,this.fontAdvanceTable[i3]);
			}
			var _g13 = 0;
			var _g4 = numGlyphs;
			while(_g13 < _g4) {
				var i4 = _g13++;
				format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.fontBoundsTable[i4]);
			}
			var kerningCount = this.fontKerningTable.length;
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,kerningCount);
			var _g14 = 0;
			var _g5 = kerningCount;
			while(_g14 < _g5) {
				var i5 = _g14++;
				format_swf__$SWFData_SWFData_$Impl_$.writeKERNINGRECORD(body,this.fontKerningTable[i5],this.wideCodes);
			}
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "FontName: " + this.fontName + ", " + "Italic: " + Std.string(this.italic) + ", " + "Bold: " + Std.string(this.bold) + ", " + "Glyphs: " + this.glyphShapeTable.length;
		return str + this.toStringCommon(indent);
	}
	,toStringCommon: function(indent) {
		var i;
		var str = format_swf_tags_TagDefineFont.prototype.toStringCommon.call(this,indent);
		if(this.hasLayout) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Ascent: " + this.ascent;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Descent: " + this.descent;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Leading: " + this.leading;
		}
		if(this.codeTable.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "CodeTable:";
			var _g1 = 0;
			var _g = this.codeTable.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				if((i1 & 15) == 0) {
					str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + Std.string(this.codeTable[i1]);
				} else {
					str += ", " + Std.string(this.codeTable[i1]);
				}
			}
		}
		if(this.fontAdvanceTable.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "FontAdvanceTable:";
			var _g11 = 0;
			var _g2 = this.fontAdvanceTable.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				if((i2 & 7) == 0) {
					str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + Std.string(this.fontAdvanceTable[i2]);
				} else {
					str += ", " + Std.string(this.fontAdvanceTable[i2]);
				}
			}
		}
		if(this.fontBoundsTable.length > 0) {
			var hasNonNullBounds = false;
			var _g12 = 0;
			var _g3 = this.fontBoundsTable.length;
			while(_g12 < _g3) {
				var i3 = _g12++;
				var rect = this.fontBoundsTable[i3];
				if(rect.xmin != 0 || rect.xmax != 0 || rect.ymin != 0 || rect.ymax != 0) {
					hasNonNullBounds = true;
					break;
				}
			}
			if(hasNonNullBounds) {
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "FontBoundsTable:";
				var _g13 = 0;
				var _g4 = this.fontBoundsTable.length;
				while(_g13 < _g4) {
					var i4 = _g13++;
					str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i4 + "] " + this.fontBoundsTable[i4].toString();
				}
			}
		}
		if(this.fontKerningTable.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "KerningTable:";
			var _g14 = 0;
			var _g5 = this.fontKerningTable.length;
			while(_g14 < _g5) {
				var i5 = _g14++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i5 + "] " + this.fontKerningTable[i5].toString();
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineFont2
});
var format_swf_tags_TagDefineFont3 = function() {
	format_swf_tags_TagDefineFont2.call(this);
	this.type = 75;
	this.name = "DefineFont3";
	this.version = 8;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagDefineFont3"] = format_swf_tags_TagDefineFont3;
format_swf_tags_TagDefineFont3.__name__ = ["format","swf","tags","TagDefineFont3"];
format_swf_tags_TagDefineFont3.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineFont3.__super__ = format_swf_tags_TagDefineFont2;
format_swf_tags_TagDefineFont3.prototype = $extend(format_swf_tags_TagDefineFont2.prototype,{
	toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "FontName: " + this.fontName + ", " + "Italic: " + Std.string(this.italic) + ", " + "Bold: " + Std.string(this.bold) + ", " + "Glyphs: " + this.glyphShapeTable.length;
		return str + this.toStringCommon(indent);
	}
	,__class__: format_swf_tags_TagDefineFont3
});
var format_swf_tags_TagDefineFont4 = function() {
	this.type = 91;
	this.name = "DefineFont4";
	this.version = 10;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.fontData = this1;
	this.fontData.__endian = 0;
};
$hxClasses["format.swf.tags.TagDefineFont4"] = format_swf_tags_TagDefineFont4;
format_swf_tags_TagDefineFont4.__name__ = ["format","swf","tags","TagDefineFont4"];
format_swf_tags_TagDefineFont4.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineFont4.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,hasFontData: null
	,italic: null
	,bold: null
	,fontName: null
	,characterId: null
	,fontData: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var pos = data.position;
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.hasFontData = (flags & 4) != 0;
		this.italic = (flags & 2) != 0;
		this.bold = (flags & 1) != 0;
		this.fontName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		if(this.hasFontData && length > (data.position | 0) - pos) {
			data.readBytes(this.fontData,0,length - (data.position - pos));
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		var flags = 0;
		if(this.hasFontData) {
			flags |= 4;
		}
		if(this.italic) {
			flags |= 2;
		}
		if(this.bold) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags);
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.fontName);
		if(this.hasFontData && openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.fontData) > 0) {
			body.writeBytes(this.fontData);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineFont4();
		tag.characterId = this.characterId;
		tag.hasFontData = this.hasFontData;
		tag.italic = this.italic;
		tag.bold = this.bold;
		tag.fontName = this.fontName;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.fontData) > 0) {
			tag.fontData.writeBytes(this.fontData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "FontName: " + this.fontName + ", " + "HasFontData: " + Std.string(this.hasFontData) + ", " + "Italic: " + Std.string(this.italic) + ", " + "Bold: " + Std.string(this.bold);
		return str;
	}
	,__class__: format_swf_tags_TagDefineFont4
};
var format_swf_tags_TagDefineFontAlignZones = function() {
	this.type = 73;
	this.name = "DefineFontAlignZones";
	this.version = 8;
	this.level = 1;
	this.zoneTable = [];
};
$hxClasses["format.swf.tags.TagDefineFontAlignZones"] = format_swf_tags_TagDefineFontAlignZones;
format_swf_tags_TagDefineFontAlignZones.__name__ = ["format","swf","tags","TagDefineFontAlignZones"];
format_swf_tags_TagDefineFontAlignZones.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDefineFontAlignZones.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,fontId: null
	,csmTableHint: null
	,zoneTable: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.fontId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.csmTableHint = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data) >> 6;
		var recordsEndPos = data.position + length - 3;
		while((data.position | 0) < recordsEndPos) this.zoneTable.push(format_swf__$SWFData_SWFData_$Impl_$.readZONERECORD(data));
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.fontId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.csmTableHint << 6);
		var _g1 = 0;
		var _g = this.zoneTable.length;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeZONERECORD(body,this.zoneTable[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "FontID: " + this.fontId + ", " + "CSMTableHint: " + format_swf_data_consts_CSMTableHint.toString(this.csmTableHint) + ", " + "Records: " + this.zoneTable.length;
		var _g1 = 0;
		var _g = this.zoneTable.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.zoneTable[i].toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineFontAlignZones
};
var format_swf_tags_TagDefineFontInfo = function() {
	this.langCodeLength = 0;
	this.langCode = 0;
	this.type = 13;
	this.name = "DefineFontInfo";
	this.version = 1;
	this.level = 1;
	this.codeTable = [];
};
$hxClasses["format.swf.tags.TagDefineFontInfo"] = format_swf_tags_TagDefineFontInfo;
format_swf_tags_TagDefineFontInfo.__name__ = ["format","swf","tags","TagDefineFontInfo"];
format_swf_tags_TagDefineFontInfo.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDefineFontInfo.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,fontId: null
	,fontName: null
	,smallText: null
	,shiftJIS: null
	,ansi: null
	,italic: null
	,bold: null
	,wideCodes: null
	,langCode: null
	,codeTable: null
	,langCodeLength: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.fontId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var fontNameLen = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var this1 = new openfl_utils_ByteArrayData(0);
		var fontNameRaw = this1;
		fontNameRaw.__endian = 0;
		data.readBytes(fontNameRaw,0,fontNameLen);
		this.fontName = fontNameRaw.readUTFBytes(fontNameLen - 1);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.smallText = (flags & 32) != 0;
		this.shiftJIS = (flags & 16) != 0;
		this.ansi = (flags & 8) != 0;
		this.italic = (flags & 4) != 0;
		this.bold = (flags & 2) != 0;
		this.wideCodes = (flags & 1) != 0;
		this.parseLangCode(data);
		var numGlyphs = length - fontNameLen - this.langCodeLength - 4;
		var _g1 = 0;
		var _g = numGlyphs;
		while(_g1 < _g) {
			var i = _g1++;
			this.codeTable.push(this.wideCodes ? format_swf__$SWFData_SWFData_$Impl_$.readUI16(data) : format_swf__$SWFData_SWFData_$Impl_$.readUI8(data));
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.fontId);
		var this1 = new openfl_utils_ByteArrayData(0);
		var fontNameRaw = this1;
		fontNameRaw.__endian = 0;
		fontNameRaw.writeUTFBytes(this.fontName);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(fontNameRaw));
		body.writeBytes(fontNameRaw);
		var flags = 0;
		if(this.smallText) {
			flags |= 32;
		}
		if(this.shiftJIS) {
			flags |= 16;
		}
		if(this.ansi) {
			flags |= 8;
		}
		if(this.italic) {
			flags |= 4;
		}
		if(this.bold) {
			flags |= 2;
		}
		if(this.wideCodes) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags);
		this.publishLangCode(body);
		var numGlyphs = this.codeTable.length;
		var _g1 = 0;
		var _g = numGlyphs;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.wideCodes) {
				format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.codeTable[i]);
			} else {
				format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.codeTable[i]);
			}
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,parseLangCode: function(data) {
	}
	,publishLangCode: function(data) {
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "FontID: " + this.fontId + ", " + "FontName: " + this.fontName + ", " + "Italic: " + Std.string(this.italic) + ", " + "Bold: " + Std.string(this.bold) + ", " + "Codes: " + this.codeTable.length;
	}
	,__class__: format_swf_tags_TagDefineFontInfo
};
var format_swf_tags_TagDefineFontInfo2 = function() {
	format_swf_tags_TagDefineFontInfo.call(this);
	this.type = 62;
	this.name = "DefineFontInfo2";
	this.version = 6;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagDefineFontInfo2"] = format_swf_tags_TagDefineFontInfo2;
format_swf_tags_TagDefineFontInfo2.__name__ = ["format","swf","tags","TagDefineFontInfo2"];
format_swf_tags_TagDefineFontInfo2.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDefineFontInfo2.__super__ = format_swf_tags_TagDefineFontInfo;
format_swf_tags_TagDefineFontInfo2.prototype = $extend(format_swf_tags_TagDefineFontInfo.prototype,{
	parseLangCode: function(data) {
		this.langCode = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.langCodeLength = 1;
	}
	,publishLangCode: function(data) {
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.langCode);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "FontID: " + this.fontId + ", " + "FontName: " + this.fontName + ", " + "Italic: " + Std.string(this.italic) + ", " + "Bold: " + Std.string(this.bold) + ", " + "LanguageCode: " + this.langCode + ", " + "Codes: " + this.codeTable.length;
	}
	,__class__: format_swf_tags_TagDefineFontInfo2
});
var format_swf_tags_TagDefineFontName = function() {
	this.type = 88;
	this.name = "DefineFontName";
	this.version = 9;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineFontName"] = format_swf_tags_TagDefineFontName;
format_swf_tags_TagDefineFontName.__name__ = ["format","swf","tags","TagDefineFontName"];
format_swf_tags_TagDefineFontName.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDefineFontName.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,fontId: null
	,fontName: null
	,fontCopyright: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.fontId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.fontName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		this.fontCopyright = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.fontId);
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.fontName);
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.fontCopyright);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "FontID: " + this.fontId + ", " + "Name: " + this.fontName + ", " + "Copyright: " + this.fontCopyright;
	}
	,__class__: format_swf_tags_TagDefineFontName
};
var format_swf_tags_TagDefineMorphShape = function() {
	this.type = 46;
	this.name = "DefineMorphShape";
	this.version = 3;
	this.level = 1;
	this.morphFillStyles = [];
	this.morphLineStyles = [];
	this.exportShape = new format_swf_data_SWFShape();
};
$hxClasses["format.swf.tags.TagDefineMorphShape"] = format_swf_tags_TagDefineMorphShape;
format_swf_tags_TagDefineMorphShape.__name__ = ["format","swf","tags","TagDefineMorphShape"];
format_swf_tags_TagDefineMorphShape.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineMorphShape.prototype = {
	startBounds: null
	,endBounds: null
	,startEdges: null
	,endEdges: null
	,type: null
	,name: null
	,version: null
	,level: null
	,characterId: null
	,morphFillStyles: null
	,morphLineStyles: null
	,exportHandler: null
	,exportShape: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.startBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		this.endBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		var offset = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		var i;
		var fillStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		if(fillStyleCount == 255) {
			fillStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		var _g1 = 0;
		var _g = fillStyleCount;
		while(_g1 < _g) {
			var i1 = _g1++;
			this.morphFillStyles.push(format_swf__$SWFData_SWFData_$Impl_$.readMORPHFILLSTYLE(data));
		}
		var lineStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		if(lineStyleCount == 255) {
			lineStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		var _g11 = 0;
		var _g2 = lineStyleCount;
		while(_g11 < _g2) {
			var i2 = _g11++;
			this.morphLineStyles.push(format_swf__$SWFData_SWFData_$Impl_$.readMORPHLINESTYLE(data));
		}
		this.startEdges = format_swf__$SWFData_SWFData_$Impl_$.readSHAPE(data);
		this.endEdges = format_swf__$SWFData_SWFData_$Impl_$.readSHAPE(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.startBounds);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.endBounds);
		var startBytes = format_swf__$SWFData_SWFData_$Impl_$._new();
		var i;
		var fillStyleCount = this.morphFillStyles.length;
		if(fillStyleCount > 254) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,255);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(startBytes,fillStyleCount);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,fillStyleCount);
		}
		var _g1 = 0;
		var _g = fillStyleCount;
		while(_g1 < _g) {
			var i1 = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeMORPHFILLSTYLE(startBytes,this.morphFillStyles[i1]);
		}
		var lineStyleCount = this.morphLineStyles.length;
		if(lineStyleCount > 254) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,255);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(startBytes,lineStyleCount);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,lineStyleCount);
		}
		var _g11 = 0;
		var _g2 = lineStyleCount;
		while(_g11 < _g2) {
			var i2 = _g11++;
			format_swf__$SWFData_SWFData_$Impl_$.writeMORPHLINESTYLE(startBytes,this.morphLineStyles[i2]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeSHAPE(startBytes,this.startEdges);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,format_swf__$SWFData_SWFData_$Impl_$.get_length(startBytes));
		body.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(startBytes));
		format_swf__$SWFData_SWFData_$Impl_$.writeSHAPE(body,this.endEdges);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineMorphShape();
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Not implemented yet."));
	}
	,'export': function(ratio) {
		if(ratio == null) {
			ratio = 0;
		}
		var i;
		var j = 0;
		this.exportShape.records.splice(0,this.exportShape.records.length);
		this.exportShape.fillStyles.splice(0,this.exportShape.fillStyles.length);
		this.exportShape.lineStyles.splice(0,this.exportShape.lineStyles.length);
		var numEdges = this.startEdges.records.length;
		var _g1 = 0;
		var _g = numEdges;
		while(_g1 < _g) {
			var i1 = _g1++;
			var startRecord = this.startEdges.records[i1];
			var endRecord = this.endEdges.records[j++];
			var exportRecord = null;
			if(startRecord.get_type() == 4 && endRecord.get_type() == 3) {
				endRecord = this.convertToCurvedEdge(js_Boot.__cast(endRecord , format_swf_data_SWFShapeRecordStraightEdge));
			} else if(startRecord.get_type() == 3 && endRecord.get_type() == 4) {
				startRecord = this.convertToCurvedEdge(js_Boot.__cast(startRecord , format_swf_data_SWFShapeRecordStraightEdge));
			}
			var _g2 = startRecord.get_type();
			switch(_g2) {
			case 1:
				exportRecord = startRecord.clone();
				break;
			case 2:
				var startStyleChange = startRecord.clone();
				startStyleChange.stateMoveTo = true;
				if(endRecord.get_type() == 2) {
					var endStyleChange = endRecord;
					startStyleChange.moveDeltaX += (endStyleChange.moveDeltaX - startStyleChange.moveDeltaX) * ratio | 0;
					startStyleChange.moveDeltaY += (endStyleChange.moveDeltaY - startStyleChange.moveDeltaY) * ratio | 0;
				} else {
					startStyleChange.moveDeltaX += -startStyleChange.moveDeltaX * ratio | 0;
					startStyleChange.moveDeltaY += -startStyleChange.moveDeltaY * ratio | 0;
					--j;
				}
				exportRecord = startStyleChange;
				break;
			case 3:
				var startStraightEdge = startRecord.clone();
				var endStraightEdge = endRecord;
				startStraightEdge.deltaX += (endStraightEdge.deltaX - startStraightEdge.deltaX) * ratio | 0;
				startStraightEdge.deltaY += (endStraightEdge.deltaY - startStraightEdge.deltaY) * ratio | 0;
				if(startStraightEdge.deltaX != 0 && startStraightEdge.deltaY != 0) {
					startStraightEdge.generalLineFlag = true;
					startStraightEdge.vertLineFlag = false;
				} else {
					startStraightEdge.generalLineFlag = false;
					startStraightEdge.vertLineFlag = startStraightEdge.deltaX == 0;
				}
				exportRecord = startStraightEdge;
				break;
			case 4:
				var startCurvedEdge = startRecord.clone();
				var endCurvedEdge = endRecord;
				startCurvedEdge.controlDeltaX += (endCurvedEdge.controlDeltaX - startCurvedEdge.controlDeltaX) * ratio | 0;
				startCurvedEdge.controlDeltaY += (endCurvedEdge.controlDeltaY - startCurvedEdge.controlDeltaY) * ratio | 0;
				startCurvedEdge.anchorDeltaX += (endCurvedEdge.anchorDeltaX - startCurvedEdge.anchorDeltaX) * ratio | 0;
				startCurvedEdge.anchorDeltaY += (endCurvedEdge.anchorDeltaY - startCurvedEdge.anchorDeltaY) * ratio | 0;
				exportRecord = startCurvedEdge;
				break;
			}
			this.exportShape.records.push(exportRecord);
		}
		var _g11 = 0;
		var _g3 = this.morphFillStyles.length;
		while(_g11 < _g3) {
			var i2 = _g11++;
			this.exportShape.fillStyles.push(this.morphFillStyles[i2].getMorphedFillStyle(ratio));
		}
		var _g12 = 0;
		var _g4 = this.morphLineStyles.length;
		while(_g12 < _g4) {
			var i3 = _g12++;
			this.exportShape.lineStyles.push(this.morphLineStyles[i3].getMorphedLineStyle(ratio));
		}
		this.exportShape["export"](this.exportHandler);
	}
	,convertToCurvedEdge: function(straightEdge) {
		var curvedEdge = new format_swf_data_SWFShapeRecordCurvedEdge();
		curvedEdge.controlDeltaX = straightEdge.deltaX / 2 | 0;
		curvedEdge.controlDeltaY = straightEdge.deltaY / 2 | 0;
		curvedEdge.anchorDeltaX = straightEdge.deltaX / 2 | 0;
		curvedEdge.anchorDeltaY = straightEdge.deltaY / 2 | 0;
		return curvedEdge;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var i;
		var indent2 = format_swf_utils_StringUtils.repeat(indent + 2);
		var indent4 = format_swf_utils_StringUtils.repeat(indent + 4);
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId;
		str += "\n" + indent2 + "Bounds:";
		str += "\n" + indent4 + "StartBounds: " + this.startBounds.toString();
		str += "\n" + indent4 + "EndBounds: " + this.endBounds.toString();
		if(this.morphFillStyles.length > 0) {
			str += "\n" + indent2 + "FillStyles:";
			var _g1 = 0;
			var _g = this.morphFillStyles.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += "\n" + indent4 + "[" + (i1 + 1) + "] " + this.morphFillStyles[i1].toString();
			}
		}
		if(this.morphLineStyles.length > 0) {
			str += "\n" + indent2 + "LineStyles:";
			var _g11 = 0;
			var _g2 = this.morphLineStyles.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += "\n" + indent4 + "[" + (i2 + 1) + "] " + this.morphLineStyles[i2].toString();
			}
		}
		str += this.startEdges.toString(indent + 2);
		str += this.endEdges.toString(indent + 2);
		return str;
	}
	,__class__: format_swf_tags_TagDefineMorphShape
};
var format_swf_tags_TagDefineMorphShape2 = function() {
	format_swf_tags_TagDefineMorphShape.call(this);
	this.type = 84;
	this.name = "DefineMorphShape2";
	this.version = 8;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagDefineMorphShape2"] = format_swf_tags_TagDefineMorphShape2;
format_swf_tags_TagDefineMorphShape2.__name__ = ["format","swf","tags","TagDefineMorphShape2"];
format_swf_tags_TagDefineMorphShape2.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDefineMorphShape2.__super__ = format_swf_tags_TagDefineMorphShape;
format_swf_tags_TagDefineMorphShape2.prototype = $extend(format_swf_tags_TagDefineMorphShape.prototype,{
	startEdgeBounds: null
	,endEdgeBounds: null
	,usesNonScalingStrokes: null
	,usesScalingStrokes: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.startBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		this.endBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		this.startEdgeBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		this.endEdgeBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.usesNonScalingStrokes = (flags & 2) != 0;
		this.usesScalingStrokes = (flags & 1) != 0;
		var offset = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		var i;
		var fillStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		if(fillStyleCount == 255) {
			fillStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		var _g1 = 0;
		var _g = fillStyleCount;
		while(_g1 < _g) {
			var i1 = _g1++;
			this.morphFillStyles.push(format_swf__$SWFData_SWFData_$Impl_$.readMORPHFILLSTYLE(data));
		}
		var lineStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		if(lineStyleCount == 255) {
			lineStyleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		var _g11 = 0;
		var _g2 = lineStyleCount;
		while(_g11 < _g2) {
			var i2 = _g11++;
			this.morphLineStyles.push(format_swf__$SWFData_SWFData_$Impl_$.readMORPHLINESTYLE2(data));
		}
		this.startEdges = format_swf__$SWFData_SWFData_$Impl_$.readSHAPE(data);
		this.endEdges = format_swf__$SWFData_SWFData_$Impl_$.readSHAPE(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.startBounds);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.endBounds);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.startEdgeBounds);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.endEdgeBounds);
		var flags = 0;
		if(this.usesNonScalingStrokes) {
			flags |= 2;
		}
		if(this.usesScalingStrokes) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags);
		var startBytes = format_swf__$SWFData_SWFData_$Impl_$._new();
		var i;
		var fillStyleCount = this.morphFillStyles.length;
		if(fillStyleCount > 254) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,255);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(startBytes,fillStyleCount);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,fillStyleCount);
		}
		var _g1 = 0;
		var _g = fillStyleCount;
		while(_g1 < _g) {
			var i1 = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeMORPHFILLSTYLE(startBytes,this.morphFillStyles[i1]);
		}
		var lineStyleCount = this.morphLineStyles.length;
		if(lineStyleCount > 254) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,255);
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(startBytes,lineStyleCount);
		} else {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(startBytes,lineStyleCount);
		}
		var _g11 = 0;
		var _g2 = lineStyleCount;
		while(_g11 < _g2) {
			var i2 = _g11++;
			format_swf__$SWFData_SWFData_$Impl_$.writeMORPHLINESTYLE2(startBytes,js_Boot.__cast(this.morphLineStyles[i2] , format_swf_data_SWFMorphLineStyle2));
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeSHAPE(startBytes,this.startEdges);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,format_swf__$SWFData_SWFData_$Impl_$.get_length(startBytes));
		body.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(startBytes));
		format_swf__$SWFData_SWFData_$Impl_$.writeSHAPE(body,this.endEdges);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var i;
		var indent2 = format_swf_utils_StringUtils.repeat(indent + 2);
		var indent4 = format_swf_utils_StringUtils.repeat(indent + 4);
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId;
		str += "\n" + indent2 + "Bounds:";
		str += "\n" + indent4 + "StartBounds: " + this.startBounds.toString();
		str += "\n" + indent4 + "EndBounds: " + this.endBounds.toString();
		str += "\n" + indent4 + "StartEdgeBounds: " + this.startEdgeBounds.toString();
		str += "\n" + indent4 + "EndEdgeBounds: " + this.endEdgeBounds.toString();
		if(this.morphFillStyles.length > 0) {
			str += "\n" + indent2 + "FillStyles:";
			var _g1 = 0;
			var _g = this.morphFillStyles.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += "\n" + indent4 + "[" + (i1 + 1) + "] " + this.morphFillStyles[i1].toString();
			}
		}
		if(this.morphLineStyles.length > 0) {
			str += "\n" + indent2 + "LineStyles:";
			var _g11 = 0;
			var _g2 = this.morphLineStyles.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += "\n" + indent4 + "[" + (i2 + 1) + "] " + this.morphLineStyles[i2].toString();
			}
		}
		str += this.startEdges.toString(indent + 2);
		str += this.endEdges.toString(indent + 2);
		return str;
	}
	,__class__: format_swf_tags_TagDefineMorphShape2
});
var format_swf_tags_TagDefineScalingGrid = function() {
	this.type = 78;
	this.name = "DefineScalingGrid";
	this.version = 8;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineScalingGrid"] = format_swf_tags_TagDefineScalingGrid;
format_swf_tags_TagDefineScalingGrid.__name__ = ["format","swf","tags","TagDefineScalingGrid"];
format_swf_tags_TagDefineScalingGrid.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDefineScalingGrid.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,splitter: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.splitter = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.splitter);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineScalingGrid();
		tag.characterId = this.characterId;
		tag.splitter = this.splitter.clone();
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "CharacterID: " + this.characterId + ", " + "Splitter: " + Std.string(this.splitter);
	}
	,__class__: format_swf_tags_TagDefineScalingGrid
};
var format_swf_tags_TagDefineSceneAndFrameLabelData = function() {
	this.type = 86;
	this.name = "DefineSceneAndFrameLabelData";
	this.version = 9;
	this.level = 1;
	this.scenes = [];
	this.frameLabels = [];
};
$hxClasses["format.swf.tags.TagDefineSceneAndFrameLabelData"] = format_swf_tags_TagDefineSceneAndFrameLabelData;
format_swf_tags_TagDefineSceneAndFrameLabelData.__name__ = ["format","swf","tags","TagDefineSceneAndFrameLabelData"];
format_swf_tags_TagDefineSceneAndFrameLabelData.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDefineSceneAndFrameLabelData.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,scenes: null
	,frameLabels: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var i;
		var sceneCount = format_swf__$SWFData_SWFData_$Impl_$.readEncodedU32(data);
		var _g1 = 0;
		var _g = sceneCount;
		while(_g1 < _g) {
			var i1 = _g1++;
			var sceneOffset = format_swf__$SWFData_SWFData_$Impl_$.readEncodedU32(data);
			var sceneName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
			this.scenes.push(new format_swf_data_SWFScene(sceneOffset,sceneName));
		}
		var frameLabelCount = format_swf__$SWFData_SWFData_$Impl_$.readEncodedU32(data);
		var _g11 = 0;
		var _g2 = frameLabelCount;
		while(_g11 < _g2) {
			var i2 = _g11++;
			var frameNumber = format_swf__$SWFData_SWFData_$Impl_$.readEncodedU32(data);
			var frameLabel = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
			this.frameLabels.push(new format_swf_data_SWFFrameLabel(frameNumber,frameLabel));
		}
	}
	,publish: function(data,version) {
		var i;
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeEncodedU32(body,this.scenes.length);
		var _g1 = 0;
		var _g = this.scenes.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			var scene = this.scenes[i1];
			format_swf__$SWFData_SWFData_$Impl_$.writeEncodedU32(body,scene.offset);
			format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,scene.name);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeEncodedU32(body,this.frameLabels.length);
		var _g11 = 0;
		var _g2 = this.frameLabels.length;
		while(_g11 < _g2) {
			var i2 = _g11++;
			var label = this.frameLabels[i2];
			format_swf__$SWFData_SWFData_$Impl_$.writeEncodedU32(body,label.frameNumber);
			format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,label.name);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		var i;
		if(this.scenes.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Scenes:";
			var _g1 = 0;
			var _g = this.scenes.length;
			while(_g1 < _g) {
				var i1 = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i1 + "] " + this.scenes[i1].toString();
			}
		}
		if(this.frameLabels.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "FrameLabels:";
			var _g11 = 0;
			var _g2 = this.frameLabels.length;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i2 + "] " + this.frameLabels[i2].toString();
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineSceneAndFrameLabelData
};
var format_swf_tags_TagDefineShape = function() {
	this.type = 2;
	this.name = "DefineShape";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineShape"] = format_swf_tags_TagDefineShape;
format_swf_tags_TagDefineShape.__name__ = ["format","swf","tags","TagDefineShape"];
format_swf_tags_TagDefineShape.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineShape.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,shapeBounds: null
	,shapes: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.shapeBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		this.shapes = format_swf__$SWFData_SWFData_$Impl_$.readSHAPEWITHSTYLE(data,this.level);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.shapeBounds);
		format_swf__$SWFData_SWFData_$Impl_$.writeSHAPEWITHSTYLE(body,this.shapes,this.level);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineShape();
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Not implemented yet."));
	}
	,'export': function(handler) {
		this.shapes["export"](handler);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Bounds: " + Std.string(this.shapeBounds);
		str += this.shapes.toString(indent + 2);
		return str;
	}
	,__class__: format_swf_tags_TagDefineShape
};
var format_swf_tags_TagDefineShape2 = function() {
	format_swf_tags_TagDefineShape.call(this);
	this.type = 22;
	this.name = "DefineShape2";
	this.version = 2;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagDefineShape2"] = format_swf_tags_TagDefineShape2;
format_swf_tags_TagDefineShape2.__name__ = ["format","swf","tags","TagDefineShape2"];
format_swf_tags_TagDefineShape2.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineShape2.__super__ = format_swf_tags_TagDefineShape;
format_swf_tags_TagDefineShape2.prototype = $extend(format_swf_tags_TagDefineShape.prototype,{
	toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Bounds: " + Std.string(this.shapeBounds);
		str += this.shapes.toString(indent + 2);
		return str;
	}
	,__class__: format_swf_tags_TagDefineShape2
});
var format_swf_tags_TagDefineShape3 = function() {
	format_swf_tags_TagDefineShape2.call(this);
	this.type = 32;
	this.name = "DefineShape3";
	this.version = 3;
	this.level = 3;
};
$hxClasses["format.swf.tags.TagDefineShape3"] = format_swf_tags_TagDefineShape3;
format_swf_tags_TagDefineShape3.__name__ = ["format","swf","tags","TagDefineShape3"];
format_swf_tags_TagDefineShape3.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineShape3.__super__ = format_swf_tags_TagDefineShape2;
format_swf_tags_TagDefineShape3.prototype = $extend(format_swf_tags_TagDefineShape2.prototype,{
	toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Bounds: " + Std.string(this.shapeBounds);
		str += this.shapes.toString(indent + 2);
		return str;
	}
	,__class__: format_swf_tags_TagDefineShape3
});
var format_swf_tags_TagDefineShape4 = function() {
	format_swf_tags_TagDefineShape3.call(this);
	this.type = 83;
	this.name = "DefineShape4";
	this.version = 8;
	this.level = 4;
};
$hxClasses["format.swf.tags.TagDefineShape4"] = format_swf_tags_TagDefineShape4;
format_swf_tags_TagDefineShape4.__name__ = ["format","swf","tags","TagDefineShape4"];
format_swf_tags_TagDefineShape4.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineShape4.__super__ = format_swf_tags_TagDefineShape3;
format_swf_tags_TagDefineShape4.prototype = $extend(format_swf_tags_TagDefineShape3.prototype,{
	edgeBounds: null
	,usesFillWindingRule: null
	,usesNonScalingStrokes: null
	,usesScalingStrokes: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.shapeBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		this.edgeBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.usesFillWindingRule = (flags & 4) != 0;
		this.usesNonScalingStrokes = (flags & 2) != 0;
		this.usesScalingStrokes = (flags & 1) != 0;
		this.shapes = format_swf__$SWFData_SWFData_$Impl_$.readSHAPEWITHSTYLE(data,this.level);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.shapeBounds);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.edgeBounds);
		var flags = 0;
		if(this.usesFillWindingRule) {
			flags |= 4;
		}
		if(this.usesNonScalingStrokes) {
			flags |= 2;
		}
		if(this.usesScalingStrokes) {
			flags |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags);
		format_swf__$SWFData_SWFData_$Impl_$.writeSHAPEWITHSTYLE(body,this.shapes,this.level);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", ";
		if(this.usesFillWindingRule) {
			str += "UsesFillWindingRule, ";
		}
		if(this.usesNonScalingStrokes) {
			str += "UsesNonScalingStrokes, ";
		}
		if(this.usesScalingStrokes) {
			str += "UsesScalingStrokes, ";
		}
		str += "ShapeBounds: " + Std.string(this.shapeBounds) + ", EdgeBounds: " + Std.string(this.edgeBounds);
		str += this.shapes.toString(indent + 2);
		return str;
	}
	,__class__: format_swf_tags_TagDefineShape4
});
var format_swf_tags_TagDefineSound = function() {
	this.type = 14;
	this.name = "DefineSound";
	this.version = 1;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.soundData = this1;
	this.soundData.__endian = 0;
};
$hxClasses["format.swf.tags.TagDefineSound"] = format_swf_tags_TagDefineSound;
format_swf_tags_TagDefineSound.__name__ = ["format","swf","tags","TagDefineSound"];
format_swf_tags_TagDefineSound.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineSound.create = function(id,soundFormat,rate,size,type,sampleCount,aSoundData) {
	if(sampleCount == null) {
		sampleCount = 0;
	}
	if(type == null) {
		type = 1;
	}
	if(size == null) {
		size = 1;
	}
	if(rate == null) {
		rate = 3;
	}
	if(soundFormat == null) {
		soundFormat = 2;
	}
	var defineSound = new format_swf_tags_TagDefineSound();
	defineSound.characterId = id;
	defineSound.soundFormat = soundFormat;
	defineSound.soundRate = rate;
	defineSound.soundSize = size;
	defineSound.soundType = type;
	defineSound.soundSampleCount = sampleCount;
	if(aSoundData != null && openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(aSoundData) > 0) {
		defineSound.soundData.writeBytes(aSoundData);
	}
	return defineSound;
};
format_swf_tags_TagDefineSound.createWithMP3 = function(id,mp3) {
	if(mp3 != null && openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(mp3) > 0) {
		var defineSound = new format_swf_tags_TagDefineSound();
		defineSound.characterId = id;
		defineSound.processMP3(mp3);
		return defineSound;
	} else {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("No MP3 data."));
	}
};
format_swf_tags_TagDefineSound.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,soundFormat: null
	,soundRate: null
	,soundSize: null
	,soundType: null
	,soundSampleCount: null
	,characterId: null
	,soundData: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.soundFormat = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.soundRate = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.soundSize = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1);
		this.soundType = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1);
		this.soundSampleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		data.readBytes(this.soundData,0,length - 7);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,4,this.soundFormat);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,2,this.soundRate);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,1,this.soundSize);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,1,this.soundType);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.soundSampleCount);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.soundData) > 0) {
			body.writeBytes(this.soundData);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineSound();
		tag.characterId = this.characterId;
		tag.soundFormat = this.soundFormat;
		tag.soundRate = this.soundRate;
		tag.soundSize = this.soundSize;
		tag.soundType = this.soundType;
		tag.soundSampleCount = this.soundSampleCount;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.soundData) > 0) {
			tag.soundData.writeBytes(this.soundData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "SoundID: " + this.characterId + ", " + "Format: " + format_swf_data_consts_SoundCompression.toString(this.soundFormat) + ", " + "Rate: " + format_swf_data_consts_SoundRate.toString(this.soundRate) + ", " + "Size: " + format_swf_data_consts_SoundSize.toString(this.soundSize) + ", " + "Type: " + format_swf_data_consts_SoundType.toString(this.soundType) + ", " + "Samples: " + this.soundSampleCount;
		return str;
	}
	,processMP3: function(mp3) {
		var i = 0;
		var beginIdx = 0;
		var endIdx = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(mp3);
		var samples = 0;
		var firstFrame = true;
		var samplingrate = 0;
		var channelmode = 0;
		var frame = new format_swf_data_etc_MPEGFrame();
		var state = "id3v2";
		while(i < (openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(mp3) | 0)) switch(state) {
		case "frame":
			frame.setHeaderByteAt(0,mp3.b[i++]);
			frame.setHeaderByteAt(1,mp3.b[i++]);
			frame.setHeaderByteAt(2,mp3.b[i++]);
			frame.setHeaderByteAt(3,mp3.b[i++]);
			if(frame.hasCRC) {
				frame.setCRCByteAt(0,mp3.b[i++]);
				frame.setCRCByteAt(1,mp3.b[i++]);
			}
			if(firstFrame) {
				firstFrame = false;
				samplingrate = frame.samplingrate;
				channelmode = frame.channelMode;
			}
			samples += frame.samples;
			i += frame.get_size();
			state = "sync";
			break;
		case "id3v2":
			if(mp3.b[i] == 73 && mp3.b[i + 1] == 68 && mp3.b[i + 2] == 51) {
				i += 10 + (mp3.b[i + 6] << 21 | mp3.b[i + 7] << 14 | mp3.b[i + 8] << 7 | mp3.b[i + 9]);
			}
			beginIdx = i;
			state = "sync";
			break;
		case "sync":
			if(mp3.b[i] == 255 && (mp3.b[i + 1] & 224) == 224) {
				state = "frame";
			} else if(mp3.b[i] == 84 && mp3.b[i + 1] == 65 && mp3.b[i + 2] == 71) {
				endIdx = i;
				i = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(mp3);
			} else {
				++i;
			}
			break;
		}
		this.soundSampleCount = samples;
		this.soundFormat = 2;
		this.soundSize = 1;
		this.soundType = channelmode == 3 ? 0 : 1;
		switch(samplingrate) {
		case 11025:
			this.soundRate = 1;
			break;
		case 22050:
			this.soundRate = 2;
			break;
		case 44100:
			this.soundRate = 3;
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_Error("Unsupported sampling rate: " + samplingrate + " Hz"));
		}
		var this1 = new openfl_utils_ByteArrayData(0);
		this.soundData = this1;
		this.soundData.__endian = 0;
		this.soundData.writeShort(0);
		this.soundData.writeBytes(mp3,beginIdx,endIdx - beginIdx);
	}
	,__class__: format_swf_tags_TagDefineSound
};
var format_swf_tags_TagDefineSprite = function() {
	format_swf_SWFTimelineContainer.call(this);
	this.type = 39;
	this.name = "DefineSprite";
	this.version = 3;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineSprite"] = format_swf_tags_TagDefineSprite;
format_swf_tags_TagDefineSprite.__name__ = ["format","swf","tags","TagDefineSprite"];
format_swf_tags_TagDefineSprite.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineSprite.__super__ = format_swf_SWFTimelineContainer;
format_swf_tags_TagDefineSprite.prototype = $extend(format_swf_SWFTimelineContainer.prototype,{
	type: null
	,name: null
	,version: null
	,level: null
	,frameCount: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.frameCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.parseTags(data,version);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.frameCount);
		this.publishTags(body,version);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineSprite();
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Not implemented yet."));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "FrameCount: " + this.frameCount + format_swf_SWFTimelineContainer.prototype.toString.call(this,indent);
	}
	,__class__: format_swf_tags_TagDefineSprite
});
var format_swf_tags_TagDefineText = function() {
	this.type = 11;
	this.name = "DefineText";
	this.version = 1;
	this.level = 1;
	this.records = [];
};
$hxClasses["format.swf.tags.TagDefineText"] = format_swf_tags_TagDefineText;
format_swf_tags_TagDefineText.__name__ = ["format","swf","tags","TagDefineText"];
format_swf_tags_TagDefineText.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineText.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,textBounds: null
	,textMatrix: null
	,characterId: null
	,records: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.textBounds = format_swf__$SWFData_SWFData_$Impl_$.readRECT(data);
		this.textMatrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
		var glyphBits = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var advanceBits = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var record = null;
		while(true) {
			record = format_swf__$SWFData_SWFData_$Impl_$.readTEXTRECORD(data,glyphBits,advanceBits,record,this.level);
			if(!(record != null)) {
				break;
			}
			this.records.push(record);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		var i;
		var j;
		var record;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeRECT(body,this.textBounds);
		format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(body,this.textMatrix);
		var glyphBitsValues = [];
		var advanceBitsValues = [];
		var recordsLen = this.records.length;
		var _g1 = 0;
		var _g = recordsLen;
		while(_g1 < _g) {
			var i1 = _g1++;
			record = this.records[i1];
			var glyphCount = record.glyphEntries.length;
			var _g3 = 0;
			var _g2 = glyphCount;
			while(_g3 < _g2) {
				var j1 = _g3++;
				var glyphEntry = record.glyphEntries[j1];
				glyphBitsValues.push(glyphEntry.index);
				advanceBitsValues.push(glyphEntry.advance);
			}
		}
		var glyphBits = body.calculateMaxBits(false,glyphBitsValues);
		var advanceBits = body.calculateMaxBits(true,advanceBitsValues);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,glyphBits);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,advanceBits);
		record = null;
		var _g11 = 0;
		var _g4 = recordsLen;
		while(_g11 < _g4) {
			var i2 = _g11++;
			format_swf__$SWFData_SWFData_$Impl_$.writeTEXTRECORD(body,this.records[i2],glyphBits,advanceBits,record,this.level);
			record = this.records[i2];
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineText();
		tag.characterId = this.characterId;
		tag.textBounds = this.textBounds.clone();
		tag.textMatrix = this.textMatrix.clone();
		var _g1 = 0;
		var _g = this.records.length;
		while(_g1 < _g) {
			var i = _g1++;
			tag.records.push(this.records[i].clone());
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Bounds: " + Std.string(this.textBounds) + ", " + "Matrix: " + Std.string(this.textMatrix);
		if(this.records.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "TextRecords:";
			var _g1 = 0;
			var _g = this.records.length;
			while(_g1 < _g) {
				var i = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + this.records[i].toString(indent + 4);
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineText
};
var format_swf_tags_TagDefineText2 = function() {
	format_swf_tags_TagDefineText.call(this);
	this.type = 33;
	this.name = "DefineText2";
	this.version = 3;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagDefineText2"] = format_swf_tags_TagDefineText2;
format_swf_tags_TagDefineText2.__name__ = ["format","swf","tags","TagDefineText2"];
format_swf_tags_TagDefineText2.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineText2.__super__ = format_swf_tags_TagDefineText;
format_swf_tags_TagDefineText2.prototype = $extend(format_swf_tags_TagDefineText.prototype,{
	toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Bounds: " + Std.string(this.textBounds) + ", " + "Matrix: " + Std.string(this.textMatrix);
		if(this.records.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "TextRecords:";
			var _g1 = 0;
			var _g = this.records.length;
			while(_g1 < _g) {
				var i = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + this.records[i].toString();
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagDefineText2
});
var format_swf_tags_TagDefineVideoStream = function() {
	this.type = 60;
	this.name = "DefineVideoStream";
	this.version = 6;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDefineVideoStream"] = format_swf_tags_TagDefineVideoStream;
format_swf_tags_TagDefineVideoStream.__name__ = ["format","swf","tags","TagDefineVideoStream"];
format_swf_tags_TagDefineVideoStream.__interfaces__ = [format_swf_tags_IDefinitionTag];
format_swf_tags_TagDefineVideoStream.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,numFrames: null
	,width: null
	,height: null
	,deblocking: null
	,smoothing: null
	,codecId: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.numFrames = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.width = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.height = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.deblocking = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,3);
		this.smoothing = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1) == 1;
		this.codecId = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,10);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.numFrames);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.width);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.height);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,4,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,3,this.deblocking);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(data,1,this.smoothing ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,this.codecId);
	}
	,clone: function() {
		var tag = new format_swf_tags_TagDefineVideoStream();
		tag.characterId = this.characterId;
		tag.numFrames = this.numFrames;
		tag.width = this.width;
		tag.height = this.height;
		tag.deblocking = this.deblocking;
		tag.smoothing = this.smoothing;
		tag.codecId = this.codecId;
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId + ", " + "Frames: " + this.numFrames + ", " + "Width: " + this.width + ", " + "Height: " + this.height + ", " + "Deblocking: " + format_swf_data_consts_VideoDeblockingType.toString(this.deblocking) + ", " + "Smoothing: " + Std.string(this.smoothing) + ", " + "Codec: " + format_swf_data_consts_VideoCodecID.toString(this.codecId);
	}
	,__class__: format_swf_tags_TagDefineVideoStream
};
var format_swf_tags_TagDoABC = function() {
	this.abcName = "";
	this.type = 82;
	this.name = "DoABC";
	this.version = 9;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.bytes = this1;
	this.bytes.__endian = 0;
};
$hxClasses["format.swf.tags.TagDoABC"] = format_swf_tags_TagDoABC;
format_swf_tags_TagDoABC.__name__ = ["format","swf","tags","TagDoABC"];
format_swf_tags_TagDoABC.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDoABC.create = function(abcData,aName,aLazyInitializeFlag) {
	if(aLazyInitializeFlag == null) {
		aLazyInitializeFlag = true;
	}
	if(aName == null) {
		aName = "";
	}
	var doABC = new format_swf_tags_TagDoABC();
	if(abcData != null && openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(abcData) > 0) {
		doABC.bytes.writeBytes(abcData);
	}
	doABC.abcName = aName;
	doABC.lazyInitializeFlag = aLazyInitializeFlag;
	return doABC;
};
format_swf_tags_TagDoABC.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,lazyInitializeFlag: null
	,abcName: null
	,bytes: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var pos = data.position;
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		this.lazyInitializeFlag = (flags & 1) != 0;
		this.abcName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		data.readBytes(this.bytes,0,length - (data.position - pos));
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.lazyInitializeFlag ? 1 : 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.abcName);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bytes) > 0) {
			body.writeBytes(this.bytes);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Lazy: " + Std.string(this.lazyInitializeFlag) + ", " + (this.abcName.length > 0 ? "Name: " + this.abcName + ", " : "") + "Length: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bytes);
	}
	,__class__: format_swf_tags_TagDoABC
};
var format_swf_tags_TagDoABCDeprecated = function() {
	this.type = 72;
	this.name = "DoABCDeprecated";
	this.version = 9;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.bytes = this1;
	this.bytes.__endian = 0;
};
$hxClasses["format.swf.tags.TagDoABCDeprecated"] = format_swf_tags_TagDoABCDeprecated;
format_swf_tags_TagDoABCDeprecated.__name__ = ["format","swf","tags","TagDoABCDeprecated"];
format_swf_tags_TagDoABCDeprecated.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDoABCDeprecated.create = function(abcData) {
	var doABC = new format_swf_tags_TagDoABCDeprecated();
	if(abcData != null && openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(abcData) > 0) {
		doABC.bytes.writeBytes(abcData);
	}
	return doABC;
};
format_swf_tags_TagDoABCDeprecated.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,bytes: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var pos = data.position;
		data.readBytes(this.bytes,0,length - (data.position - pos));
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bytes) > 0) {
			body.writeBytes(this.bytes);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Length: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.bytes);
	}
	,__class__: format_swf_tags_TagDoABCDeprecated
};
var format_swf_tags_TagDoAction = function() {
	this.type = 12;
	this.name = "DoAction";
	this.version = 3;
	this.level = 1;
	this.actions = [];
};
$hxClasses["format.swf.tags.TagDoAction"] = format_swf_tags_TagDoAction;
format_swf_tags_TagDoAction.__name__ = ["format","swf","tags","TagDoAction"];
format_swf_tags_TagDoAction.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDoAction.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,actions: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var action;
		while(true) {
			action = format_swf__$SWFData_SWFData_$Impl_$.readACTIONRECORD(data);
			if(!(action != null)) {
				break;
			}
			this.actions.push(action);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		var _g1 = 0;
		var _g = this.actions.length;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeACTIONRECORD(body,this.actions[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		var _g1 = 0;
		var _g = this.actions.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.actions[i].toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_tags_TagDoAction
};
var format_swf_tags_TagDoInitAction = function() {
	format_swf_tags_TagDoAction.call(this);
	this.type = 59;
	this.name = "DoInitAction";
	this.version = 6;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagDoInitAction"] = format_swf_tags_TagDoInitAction;
format_swf_tags_TagDoInitAction.__name__ = ["format","swf","tags","TagDoInitAction"];
format_swf_tags_TagDoInitAction.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagDoInitAction.__super__ = format_swf_tags_TagDoAction;
format_swf_tags_TagDoInitAction.prototype = $extend(format_swf_tags_TagDoAction.prototype,{
	spriteId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.spriteId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var action;
		while(true) {
			action = format_swf__$SWFData_SWFData_$Impl_$.readACTIONRECORD(data);
			if(!(action != null)) {
				break;
			}
			this.actions.push(action);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.spriteId);
		var _g1 = 0;
		var _g = this.actions.length;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeACTIONRECORD(body,this.actions[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "SpriteID: " + this.spriteId + ", ";
		var _g1 = 0;
		var _g = this.actions.length;
		while(_g1 < _g) {
			var i = _g1++;
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "[" + i + "] " + this.actions[i].toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_tags_TagDoInitAction
});
var format_swf_tags_TagEnableDebugger = function() {
	this.type = 58;
	this.name = "EnableDebugger";
	this.version = 5;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.password = this1;
	this.password.__endian = 0;
};
$hxClasses["format.swf.tags.TagEnableDebugger"] = format_swf_tags_TagEnableDebugger;
format_swf_tags_TagEnableDebugger.__name__ = ["format","swf","tags","TagEnableDebugger"];
format_swf_tags_TagEnableDebugger.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagEnableDebugger.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,password: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		if(length > 0) {
			data.readBytes(this.password,0,length);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password));
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password) > 0) {
			data.writeBytes(this.password);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
	}
	,__class__: format_swf_tags_TagEnableDebugger
};
var format_swf_tags_TagEnableDebugger2 = function() {
	format_swf_tags_TagEnableDebugger.call(this);
	this.reserved = 0;
	this.type = 64;
	this.name = "EnableDebugger2";
	this.version = 6;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagEnableDebugger2"] = format_swf_tags_TagEnableDebugger2;
format_swf_tags_TagEnableDebugger2.__name__ = ["format","swf","tags","TagEnableDebugger2"];
format_swf_tags_TagEnableDebugger2.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagEnableDebugger2.__super__ = format_swf_tags_TagEnableDebugger;
format_swf_tags_TagEnableDebugger2.prototype = $extend(format_swf_tags_TagEnableDebugger.prototype,{
	reserved: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.reserved = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(length > 2) {
			data.readBytes(this.password,0,length - 2);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password) + 2);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.reserved);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password) > 0) {
			data.writeBytes(this.password);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Password: " + (openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password) > 0 ? "null" : this.password.readUTF()) + ", " + "Reserved: 0x" + StringTools.hex(this.reserved);
	}
	,__class__: format_swf_tags_TagEnableDebugger2
});
var format_swf_tags_TagEnableTelemetry = function() {
	this.level = 1;
	this.version = 19;
	this.name = "EnableTelemetry";
	this.type = 93;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.password = this1;
	this.password.__endian = 0;
};
$hxClasses["format.swf.tags.TagEnableTelemetry"] = format_swf_tags_TagEnableTelemetry;
format_swf_tags_TagEnableTelemetry.__name__ = ["format","swf","tags","TagEnableTelemetry"];
format_swf_tags_TagEnableTelemetry.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagEnableTelemetry.prototype = {
	password: null
	,type: null
	,name: null
	,version: null
	,level: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		if(length > 2) {
			data.readByte();
			data.readByte();
			data.readBytes(this.password,0,length - 2);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password) + 2);
		data.writeByte(0);
		data.writeByte(0);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password) > 0) {
			data.writeBytes(this.password);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
	}
	,__class__: format_swf_tags_TagEnableTelemetry
};
var format_swf_tags_TagEnd = function() {
	this.type = 0;
	this.name = "End";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagEnd"] = format_swf_tags_TagEnd;
format_swf_tags_TagEnd.__name__ = ["format","swf","tags","TagEnd"];
format_swf_tags_TagEnd.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagEnd.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,0);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
	}
	,__class__: format_swf_tags_TagEnd
};
var format_swf_tags_TagExportAssets = function() {
	this.type = 56;
	this.name = "ExportAssets";
	this.version = 5;
	this.level = 1;
	this.symbols = [];
};
$hxClasses["format.swf.tags.TagExportAssets"] = format_swf_tags_TagExportAssets;
format_swf_tags_TagExportAssets.__name__ = ["format","swf","tags","TagExportAssets"];
format_swf_tags_TagExportAssets.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagExportAssets.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,symbols: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var numSymbols = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			this.symbols.push(format_swf__$SWFData_SWFData_$Impl_$.readSYMBOL(data));
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		var numSymbols = this.symbols.length;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,numSymbols);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeSYMBOL(body,this.symbols[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		if(this.symbols.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Assets:";
			var _g1 = 0;
			var _g = this.symbols.length;
			while(_g1 < _g) {
				var i = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + this.symbols[i].toString();
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagExportAssets
};
var format_swf_tags_TagFileAttributes = function() {
	this.useNetwork = false;
	this.actionscript3 = true;
	this.hasMetadata = false;
	this.useGPU = false;
	this.useDirectBlit = false;
	this.type = 69;
	this.name = "FileAttributes";
	this.version = 8;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagFileAttributes"] = format_swf_tags_TagFileAttributes;
format_swf_tags_TagFileAttributes.__name__ = ["format","swf","tags","TagFileAttributes"];
format_swf_tags_TagFileAttributes.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagFileAttributes.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,useDirectBlit: null
	,useGPU: null
	,hasMetadata: null
	,actionscript3: null
	,useNetwork: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.useDirectBlit = (flags & 64) != 0;
		this.useGPU = (flags & 32) != 0;
		this.hasMetadata = (flags & 16) != 0;
		this.actionscript3 = (flags & 8) != 0;
		this.useNetwork = (flags & 1) != 0;
		format_swf__$SWFData_SWFData_$Impl_$.skipBytes(data,3);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,4);
		var flags = 0;
		if(this.useNetwork) {
			flags |= 1;
		}
		if(this.actionscript3) {
			flags |= 8;
		}
		if(this.hasMetadata) {
			flags |= 16;
		}
		if(this.useGPU) {
			flags |= 32;
		}
		if(this.useDirectBlit) {
			flags |= 64;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,flags);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,0);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "AS3: " + Std.string(this.actionscript3) + ", " + "HasMetadata: " + Std.string(this.hasMetadata) + ", " + "UseDirectBlit: " + Std.string(this.useDirectBlit) + ", " + "UseGPU: " + Std.string(this.useGPU) + ", " + "UseNetwork: " + Std.string(this.useNetwork);
	}
	,__class__: format_swf_tags_TagFileAttributes
};
var format_swf_tags_TagFrameLabel = function() {
	this.type = 43;
	this.name = "FrameLabel";
	this.version = 3;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagFrameLabel"] = format_swf_tags_TagFrameLabel;
format_swf_tags_TagFrameLabel.__name__ = ["format","swf","tags","TagFrameLabel"];
format_swf_tags_TagFrameLabel.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagFrameLabel.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,frameName: null
	,namedAnchorFlag: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var start = data.position;
		this.frameName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		if((data.position | 0) - start < length) {
			format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
			this.namedAnchorFlag = true;
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.frameName);
		if(this.namedAnchorFlag) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(data,1);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "Name: " + this.frameName;
		if(this.namedAnchorFlag) {
			str += ", NamedAnchor = true";
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + str;
	}
	,__class__: format_swf_tags_TagFrameLabel
};
var format_swf_tags_TagImportAssets = function() {
	this.type = 57;
	this.name = "ImportAssets";
	this.version = 5;
	this.level = 1;
	this.symbols = [];
};
$hxClasses["format.swf.tags.TagImportAssets"] = format_swf_tags_TagImportAssets;
format_swf_tags_TagImportAssets.__name__ = ["format","swf","tags","TagImportAssets"];
format_swf_tags_TagImportAssets.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagImportAssets.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,url: null
	,symbols: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.url = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		var numSymbols = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			this.symbols.push(format_swf__$SWFData_SWFData_$Impl_$.readSYMBOL(data));
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.url);
		var numSymbols = this.symbols.length;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,numSymbols);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeSYMBOL(body,this.symbols[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		if(this.symbols.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Assets:";
			var _g1 = 0;
			var _g = this.symbols.length;
			while(_g1 < _g) {
				var i = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + this.symbols[i].toString();
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagImportAssets
};
var format_swf_tags_TagImportAssets2 = function() {
	format_swf_tags_TagImportAssets.call(this);
	this.type = 71;
	this.name = "ImportAssets2";
	this.version = 8;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagImportAssets2"] = format_swf_tags_TagImportAssets2;
format_swf_tags_TagImportAssets2.__name__ = ["format","swf","tags","TagImportAssets2"];
format_swf_tags_TagImportAssets2.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagImportAssets2.__super__ = format_swf_tags_TagImportAssets;
format_swf_tags_TagImportAssets2.prototype = $extend(format_swf_tags_TagImportAssets.prototype,{
	parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.url = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		var numSymbols = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			this.symbols.push(format_swf__$SWFData_SWFData_$Impl_$.readSYMBOL(data));
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.url);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,1);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,0);
		var numSymbols = this.symbols.length;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,numSymbols);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeSYMBOL(body,this.symbols[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,__class__: format_swf_tags_TagImportAssets2
});
var format_swf_tags_TagJPEGTables = function() {
	this.type = 8;
	this.name = "JPEGTables";
	this.version = 1;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.jpegTables = this1;
	this.jpegTables.__endian = 0;
};
$hxClasses["format.swf.tags.TagJPEGTables"] = format_swf_tags_TagJPEGTables;
format_swf_tags_TagJPEGTables.__name__ = ["format","swf","tags","TagJPEGTables"];
format_swf_tags_TagJPEGTables.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagJPEGTables.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,jpegTables: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		if(length > 0) {
			data.readBytes(this.jpegTables,0,length);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.jpegTables));
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.jpegTables) > 0) {
			data.writeBytes(this.jpegTables);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Length: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.jpegTables);
	}
	,__class__: format_swf_tags_TagJPEGTables
};
var format_swf_tags_TagMetadata = function() {
	this.type = 77;
	this.name = "Metadata";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagMetadata"] = format_swf_tags_TagMetadata;
format_swf_tags_TagMetadata.__name__ = ["format","swf","tags","TagMetadata"];
format_swf_tags_TagMetadata.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagMetadata.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,xmlString: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.xmlString = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.xmlString);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		var xml;
		try {
			xml = Xml.parse(this.xmlString);
			str += " " + haxe_xml_Printer.print(xml);
		} catch( error ) {
			haxe_CallStack.lastException = error;
			if (error instanceof js__$Boot_HaxeError) error = error.val;
			if( js_Boot.__instanceof(error,openfl_errors_Error) ) {
				str += " " + this.xmlString;
			} else throw(error);
		}
		return str;
	}
	,__class__: format_swf_tags_TagMetadata
};
var format_swf_tags_TagNameCharacter = function() {
	this.level = 1;
	this.version = 3;
	this.name = "NameCharacter";
	this.type = 40;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.binaryData = this1;
	this.binaryData.__endian = 0;
};
$hxClasses["format.swf.tags.TagNameCharacter"] = format_swf_tags_TagNameCharacter;
format_swf_tags_TagNameCharacter.__name__ = ["format","swf","tags","TagNameCharacter"];
format_swf_tags_TagNameCharacter.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagNameCharacter.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,binaryData: null
	,characterId: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(length > 2) {
			data.readBytes(this.binaryData,0,length - 2);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.binaryData) > 0) {
			body.writeBytes(this.binaryData);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,clone: function() {
		var tag = new format_swf_tags_TagNameCharacter();
		tag.characterId = this.characterId;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.binaryData) > 0) {
			tag.binaryData.writeBytes(this.binaryData);
		}
		return tag;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ID: " + this.characterId;
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.binaryData) > 0) {
			this.binaryData.position = 0;
			str += ", Name: " + this.binaryData.readUTFBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.binaryData) - 1);
			this.binaryData.position = 0;
		}
		return str;
	}
	,__class__: format_swf_tags_TagNameCharacter
};
var format_swf_tags_TagPlaceObject = function() {
	this.type = 4;
	this.name = "PlaceObject";
	this.version = 1;
	this.level = 1;
	this.surfaceFilterList = [];
};
$hxClasses["format.swf.tags.TagPlaceObject"] = format_swf_tags_TagPlaceObject;
format_swf_tags_TagPlaceObject.__name__ = ["format","swf","tags","TagPlaceObject"];
format_swf_tags_TagPlaceObject.__interfaces__ = [format_swf_tags_IDisplayListTag];
format_swf_tags_TagPlaceObject.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,hasClipActions: null
	,hasClipDepth: null
	,hasName: null
	,hasRatio: null
	,hasColorTransform: null
	,hasMatrix: null
	,hasCharacter: null
	,hasMove: null
	,hasOpaqueBackground: null
	,hasVisible: null
	,hasImage: null
	,hasClassName: null
	,hasCacheAsBitmap: null
	,hasBlendMode: null
	,hasFilterList: null
	,characterId: null
	,depth: null
	,matrix: null
	,colorTransform: null
	,ratio: null
	,instanceName: null
	,clipDepth: null
	,clipActions: null
	,className: null
	,blendMode: null
	,bitmapCache: null
	,bitmapBackgroundColor: null
	,visible: null
	,metaData: null
	,surfaceFilterList: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var pos = data.position;
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.depth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.matrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
		this.hasCharacter = true;
		this.hasMatrix = true;
		if((data.position | 0) - pos < length) {
			this.colorTransform = format_swf__$SWFData_SWFData_$Impl_$.readCXFORM(data);
			this.hasColorTransform = true;
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.depth);
		format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(body,this.matrix);
		if(this.hasColorTransform) {
			format_swf__$SWFData_SWFData_$Impl_$.writeCXFORM(body,this.colorTransform);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Depth: " + this.depth;
		if(this.hasCharacter) {
			str += ", CharacterID: " + this.characterId;
		}
		if(this.hasMatrix) {
			str += ", Matrix: " + Std.string(this.matrix);
		}
		if(this.hasColorTransform) {
			str += ", ColorTransform: " + Std.string(this.colorTransform);
		}
		return str;
	}
	,__class__: format_swf_tags_TagPlaceObject
};
var format_swf_tags_TagPlaceObject2 = function() {
	format_swf_tags_TagPlaceObject.call(this);
	this.type = 26;
	this.name = "PlaceObject2";
	this.version = 3;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagPlaceObject2"] = format_swf_tags_TagPlaceObject2;
format_swf_tags_TagPlaceObject2.__name__ = ["format","swf","tags","TagPlaceObject2"];
format_swf_tags_TagPlaceObject2.__interfaces__ = [format_swf_tags_IDisplayListTag];
format_swf_tags_TagPlaceObject2.__super__ = format_swf_tags_TagPlaceObject;
format_swf_tags_TagPlaceObject2.prototype = $extend(format_swf_tags_TagPlaceObject.prototype,{
	parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var flags = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.hasClipActions = (flags & 128) != 0;
		this.hasClipDepth = (flags & 64) != 0;
		this.hasName = (flags & 32) != 0;
		this.hasRatio = (flags & 16) != 0;
		this.hasColorTransform = (flags & 8) != 0;
		this.hasMatrix = (flags & 4) != 0;
		this.hasCharacter = (flags & 2) != 0;
		this.hasMove = (flags & 1) != 0;
		this.depth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.hasCharacter) {
			this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasMatrix) {
			this.matrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
		}
		if(this.hasColorTransform) {
			this.colorTransform = format_swf__$SWFData_SWFData_$Impl_$.readCXFORMWITHALPHA(data);
		}
		if(this.hasRatio) {
			this.ratio = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasName) {
			this.instanceName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		}
		if(this.hasClipDepth) {
			this.clipDepth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasClipActions) {
			this.clipActions = format_swf__$SWFData_SWFData_$Impl_$.readCLIPACTIONS(data,version);
		}
	}
	,publish: function(data,version) {
		var flags = 0;
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		if(this.hasMove) {
			flags |= 1;
		}
		if(this.hasCharacter) {
			flags |= 2;
		}
		if(this.hasMatrix) {
			flags |= 4;
		}
		if(this.hasColorTransform) {
			flags |= 8;
		}
		if(this.hasRatio) {
			flags |= 16;
		}
		if(this.hasName) {
			flags |= 32;
		}
		if(this.hasClipDepth) {
			flags |= 64;
		}
		if(this.hasClipActions) {
			flags |= 128;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.depth);
		if(this.hasCharacter) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		}
		if(this.hasMatrix) {
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(body,this.matrix);
		}
		if(this.hasColorTransform) {
			format_swf__$SWFData_SWFData_$Impl_$.writeCXFORM(body,this.colorTransform);
		}
		if(this.hasRatio) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.ratio);
		}
		if(this.hasName) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.instanceName);
		}
		if(this.hasClipDepth) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.clipDepth);
		}
		if(this.hasClipActions) {
			format_swf__$SWFData_SWFData_$Impl_$.writeCLIPACTIONS(body,this.clipActions,version);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Depth: " + this.depth;
		if(this.hasCharacter) {
			str += ", CharacterID: " + this.characterId;
		}
		if(this.hasMatrix) {
			str += ", Matrix: " + this.matrix.toString();
		}
		if(this.hasColorTransform) {
			str += ", ColorTransform: " + Std.string(this.colorTransform);
		}
		if(this.hasRatio) {
			str += ", Ratio: " + this.ratio;
		}
		if(this.hasName) {
			str += ", Name: " + this.instanceName;
		}
		if(this.hasClipDepth) {
			str += ", ClipDepth: " + this.clipDepth;
		}
		if(this.hasClipActions && this.clipActions != null) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + this.clipActions.toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_tags_TagPlaceObject2
});
var format_swf_tags_TagPlaceObject3 = function() {
	format_swf_tags_TagPlaceObject2.call(this);
	this.type = 70;
	this.name = "PlaceObject3";
	this.version = 8;
	this.level = 3;
};
$hxClasses["format.swf.tags.TagPlaceObject3"] = format_swf_tags_TagPlaceObject3;
format_swf_tags_TagPlaceObject3.__name__ = ["format","swf","tags","TagPlaceObject3"];
format_swf_tags_TagPlaceObject3.__interfaces__ = [format_swf_tags_IDisplayListTag];
format_swf_tags_TagPlaceObject3.__super__ = format_swf_tags_TagPlaceObject2;
format_swf_tags_TagPlaceObject3.prototype = $extend(format_swf_tags_TagPlaceObject2.prototype,{
	parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var flags1 = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.hasClipActions = (flags1 & 128) != 0;
		this.hasClipDepth = (flags1 & 64) != 0;
		this.hasName = (flags1 & 32) != 0;
		this.hasRatio = (flags1 & 16) != 0;
		this.hasColorTransform = (flags1 & 8) != 0;
		this.hasMatrix = (flags1 & 4) != 0;
		this.hasCharacter = (flags1 & 2) != 0;
		this.hasMove = (flags1 & 1) != 0;
		var flags2 = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.hasOpaqueBackground = (flags2 & 64) != 0;
		this.hasVisible = (flags2 & 32) != 0;
		this.hasImage = (flags2 & 16) != 0;
		this.hasClassName = (flags2 & 8) != 0;
		this.hasCacheAsBitmap = (flags2 & 4) != 0;
		this.hasBlendMode = (flags2 & 2) != 0;
		this.hasFilterList = (flags2 & 1) != 0;
		this.depth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.hasClassName) {
			this.className = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		}
		if(this.hasCharacter) {
			this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasMatrix) {
			this.matrix = format_swf__$SWFData_SWFData_$Impl_$.readMATRIX(data);
		}
		if(this.hasColorTransform) {
			this.colorTransform = format_swf__$SWFData_SWFData_$Impl_$.readCXFORMWITHALPHA(data);
		}
		if(this.hasRatio) {
			this.ratio = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasName) {
			this.instanceName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		}
		if(this.hasClipDepth) {
			this.clipDepth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		}
		if(this.hasFilterList) {
			var numberOfFilters = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
			var _g1 = 0;
			var _g = numberOfFilters;
			while(_g1 < _g) {
				var i = _g1++;
				this.surfaceFilterList.push(format_swf__$SWFData_SWFData_$Impl_$.readFILTER(data));
			}
		}
		if(this.hasBlendMode) {
			this.blendMode = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		}
		if(this.hasCacheAsBitmap) {
			this.bitmapCache = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		}
		if(this.hasVisible) {
			this.visible = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		}
		if(this.hasOpaqueBackground) {
			this.bitmapBackgroundColor = format_swf__$SWFData_SWFData_$Impl_$.readRGBA(data);
		}
		if(this.hasClipActions) {
			this.clipActions = format_swf__$SWFData_SWFData_$Impl_$.readCLIPACTIONS(data,version);
		}
	}
	,prepareBody: function() {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		var flags1 = 0;
		if(this.hasClipActions) {
			flags1 |= 128;
		}
		if(this.hasClipDepth) {
			flags1 |= 64;
		}
		if(this.hasName) {
			flags1 |= 32;
		}
		if(this.hasRatio) {
			flags1 |= 16;
		}
		if(this.hasColorTransform) {
			flags1 |= 8;
		}
		if(this.hasMatrix) {
			flags1 |= 4;
		}
		if(this.hasCharacter) {
			flags1 |= 2;
		}
		if(this.hasMove) {
			flags1 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags1);
		var flags2 = 0;
		if(this.hasOpaqueBackground) {
			flags2 |= 64;
		}
		if(this.hasVisible) {
			flags2 |= 32;
		}
		if(this.hasImage) {
			flags2 |= 16;
		}
		if(this.hasClassName) {
			flags2 |= 8;
		}
		if(this.hasCacheAsBitmap) {
			flags2 |= 4;
		}
		if(this.hasBlendMode) {
			flags2 |= 2;
		}
		if(this.hasFilterList) {
			flags2 |= 1;
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,flags2);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.depth);
		if(this.hasClassName) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.className);
		}
		if(this.hasCharacter) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.characterId);
		}
		if(this.hasMatrix) {
			format_swf__$SWFData_SWFData_$Impl_$.writeMATRIX(body,this.matrix);
		}
		if(this.hasColorTransform) {
			format_swf__$SWFData_SWFData_$Impl_$.writeCXFORM(body,this.colorTransform);
		}
		if(this.hasRatio) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.ratio);
		}
		if(this.hasName) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.instanceName);
		}
		if(this.hasClipDepth) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.clipDepth);
		}
		if(this.hasFilterList) {
			var numberOfFilters = this.surfaceFilterList.length;
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,numberOfFilters);
			var _g1 = 0;
			var _g = numberOfFilters;
			while(_g1 < _g) {
				var i = _g1++;
				format_swf__$SWFData_SWFData_$Impl_$.writeFILTER(body,this.surfaceFilterList[i]);
			}
		}
		if(this.hasBlendMode) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.blendMode);
		}
		if(this.hasCacheAsBitmap) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.bitmapCache);
		}
		if(this.hasVisible) {
			format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.visible);
		}
		if(this.hasOpaqueBackground) {
			format_swf__$SWFData_SWFData_$Impl_$.writeRGBA(body,this.bitmapBackgroundColor);
		}
		if(this.hasClipActions) {
			format_swf__$SWFData_SWFData_$Impl_$.writeCLIPACTIONS(body,this.clipActions,this.version);
		}
		return body;
	}
	,publish: function(data,version) {
		var body = this.prepareBody();
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Depth: " + this.depth;
		if(this.hasClassName) {
			str += ", ClassName: " + this.className;
		}
		if(this.hasCharacter) {
			str += ", CharacterID: " + this.characterId;
		}
		if(this.hasMatrix) {
			str += ", Matrix: " + this.matrix.toString();
		}
		if(this.hasColorTransform) {
			str += ", ColorTransform: " + Std.string(this.colorTransform);
		}
		if(this.hasRatio) {
			str += ", Ratio: " + this.ratio;
		}
		if(this.hasName) {
			str += ", Name: " + this.instanceName;
		}
		if(this.hasClipDepth) {
			str += ", ClipDepth: " + this.clipDepth;
		}
		if(this.hasBlendMode) {
			str += ", BlendMode: " + format_swf_data_consts_BlendMode.toString(this.blendMode);
		}
		if(this.hasCacheAsBitmap) {
			str += ", CacheAsBitmap: " + this.bitmapCache;
		}
		if(this.hasVisible) {
			str += ", Visible: " + this.visible;
		}
		if(this.hasOpaqueBackground) {
			str += ", BackgroundColor: " + format_swf_utils_ColorUtils.rgbaToString(this.bitmapBackgroundColor);
		}
		if(this.hasFilterList) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Filters:";
			var _g1 = 0;
			var _g = this.surfaceFilterList.length;
			while(_g1 < _g) {
				var i = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + this.surfaceFilterList[i].toString(indent + 4);
			}
		}
		if(this.hasClipActions) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + this.clipActions.toString(indent + 2);
		}
		return str;
	}
	,__class__: format_swf_tags_TagPlaceObject3
});
var format_swf_tags_TagPlaceObject4 = function() {
	format_swf_tags_TagPlaceObject3.call(this);
	this.type = 94;
	this.name = "PlaceObject4";
	this.version = 19;
	this.level = 4;
};
$hxClasses["format.swf.tags.TagPlaceObject4"] = format_swf_tags_TagPlaceObject4;
format_swf_tags_TagPlaceObject4.__name__ = ["format","swf","tags","TagPlaceObject4"];
format_swf_tags_TagPlaceObject4.__interfaces__ = [format_swf_tags_IDisplayListTag];
format_swf_tags_TagPlaceObject4.__super__ = format_swf_tags_TagPlaceObject3;
format_swf_tags_TagPlaceObject4.prototype = $extend(format_swf_tags_TagPlaceObject3.prototype,{
	parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		format_swf_tags_TagPlaceObject3.prototype.parse.call(this,data,length,version,async);
		var tmp = _$UInt_UInt_$Impl_$.gt(data.length - data.position,0);
	}
	,publish: function(data,version) {
		var body = this.prepareBody();
		var tmp = this.metaData != null;
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_TagPlaceObject3.prototype.toString.call(this,indent);
		if(this.metaData != null) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "MetaData: yes";
		}
		return str;
	}
	,__class__: format_swf_tags_TagPlaceObject4
});
var format_swf_tags_TagProductInfo = function() {
	this.type = 41;
	this.name = "ProductInfo";
	this.version = 3;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagProductInfo"] = format_swf_tags_TagProductInfo;
format_swf_tags_TagProductInfo.__name__ = ["format","swf","tags","TagProductInfo"];
format_swf_tags_TagProductInfo.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagProductInfo.UINT_MAX_CARRY = function() {
	return format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE + 1;
};
format_swf_tags_TagProductInfo.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,productId: null
	,edition: null
	,majorVersion: null
	,minorVersion: null
	,build: null
	,compileDate: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.productId = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		this.edition = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data);
		this.majorVersion = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.minorVersion = format_swf__$SWFData_SWFData_$Impl_$.readUI8(data);
		this.build = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data) + format_swf__$SWFData_SWFData_$Impl_$.readUI32(data) * (format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE + 1);
		var sec = format_swf__$SWFData_SWFData_$Impl_$.readUI32(data) + format_swf__$SWFData_SWFData_$Impl_$.readUI32(data) * (format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE + 1);
		this.compileDate = new Date(sec);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.productId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.edition);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.majorVersion);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI8(body,this.minorVersion);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.build | 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.build / (format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE + 1) | 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.compileDate.getTime() | 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI32(body,this.compileDate.getTime() / (format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE + 1) | 0);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "ProductID: " + this.productId + ", " + "Edition: " + this.edition + ", " + "Version: " + this.majorVersion + "." + this.minorVersion + " r" + this.build + ", " + "CompileDate: " + HxOverrides.dateStr(this.compileDate);
	}
	,__class__: format_swf_tags_TagProductInfo
};
var format_swf_tags_TagProtect = function() {
	this.type = 24;
	this.name = "Protect";
	this.version = 2;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.password = this1;
	this.password.__endian = 0;
};
$hxClasses["format.swf.tags.TagProtect"] = format_swf_tags_TagProtect;
format_swf_tags_TagProtect.__name__ = ["format","swf","tags","TagProtect"];
format_swf_tags_TagProtect.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagProtect.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,password: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		if(length > 0) {
			data.readBytes(this.password,0,length);
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password));
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.password) > 0) {
			data.writeBytes(this.password);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
	}
	,__class__: format_swf_tags_TagProtect
};
var format_swf_tags_TagRemoveObject = function() {
	this.characterId = 0;
	this.type = 5;
	this.name = "RemoveObject";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagRemoveObject"] = format_swf_tags_TagRemoveObject;
format_swf_tags_TagRemoveObject.__name__ = ["format","swf","tags","TagRemoveObject"];
format_swf_tags_TagRemoveObject.__interfaces__ = [format_swf_tags_IDisplayListTag];
format_swf_tags_TagRemoveObject.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,characterId: null
	,depth: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.characterId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.depth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,4);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.characterId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.depth);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "CharacterID: " + this.characterId + ", " + "Depth: " + this.depth;
	}
	,__class__: format_swf_tags_TagRemoveObject
};
var format_swf_tags_TagRemoveObject2 = function() {
	format_swf_tags_TagRemoveObject.call(this);
	this.type = 28;
	this.name = "RemoveObject2";
	this.version = 3;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagRemoveObject2"] = format_swf_tags_TagRemoveObject2;
format_swf_tags_TagRemoveObject2.__name__ = ["format","swf","tags","TagRemoveObject2"];
format_swf_tags_TagRemoveObject2.__interfaces__ = [format_swf_tags_IDisplayListTag];
format_swf_tags_TagRemoveObject2.__super__ = format_swf_tags_TagRemoveObject;
format_swf_tags_TagRemoveObject2.prototype = $extend(format_swf_tags_TagRemoveObject.prototype,{
	parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.depth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,2);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.depth);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Depth: " + this.depth;
	}
	,__class__: format_swf_tags_TagRemoveObject2
});
var format_swf_tags_TagScriptLimits = function() {
	this.type = 65;
	this.name = "ScriptLimits";
	this.version = 7;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagScriptLimits"] = format_swf_tags_TagScriptLimits;
format_swf_tags_TagScriptLimits.__name__ = ["format","swf","tags","TagScriptLimits"];
format_swf_tags_TagScriptLimits.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagScriptLimits.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,maxRecursionDepth: null
	,scriptTimeoutSeconds: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.maxRecursionDepth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.scriptTimeoutSeconds = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,4);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.maxRecursionDepth);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.scriptTimeoutSeconds);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "MaxRecursionDepth: " + this.maxRecursionDepth + ", " + "ScriptTimeoutSeconds: " + this.scriptTimeoutSeconds;
	}
	,__class__: format_swf_tags_TagScriptLimits
};
var format_swf_tags_TagSetBackgroundColor = function() {
	this.color = 16777215;
	this.type = 9;
	this.name = "SetBackgroundColor";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagSetBackgroundColor"] = format_swf_tags_TagSetBackgroundColor;
format_swf_tags_TagSetBackgroundColor.__name__ = ["format","swf","tags","TagSetBackgroundColor"];
format_swf_tags_TagSetBackgroundColor.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagSetBackgroundColor.create = function(aColor) {
	if(aColor == null) {
		aColor = 16777215;
	}
	var setBackgroundColor = new format_swf_tags_TagSetBackgroundColor();
	setBackgroundColor.color = aColor;
	return setBackgroundColor;
};
format_swf_tags_TagSetBackgroundColor.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,color: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.color = format_swf__$SWFData_SWFData_$Impl_$.readRGB(data);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,3);
		format_swf__$SWFData_SWFData_$Impl_$.writeRGB(data,this.color);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Color: " + format_swf_utils_ColorUtils.rgbToString(this.color);
	}
	,__class__: format_swf_tags_TagSetBackgroundColor
};
var format_swf_tags_TagSetTabIndex = function() {
	this.type = 66;
	this.name = "SetTabIndex";
	this.version = 7;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagSetTabIndex"] = format_swf_tags_TagSetTabIndex;
format_swf_tags_TagSetTabIndex.__name__ = ["format","swf","tags","TagSetTabIndex"];
format_swf_tags_TagSetTabIndex.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagSetTabIndex.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,depth: null
	,tabIndex: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.depth = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.tabIndex = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,4);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.depth);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.tabIndex);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Depth: " + this.depth + ", " + "TabIndex: " + this.tabIndex;
	}
	,__class__: format_swf_tags_TagSetTabIndex
};
var format_swf_tags_TagShowFrame = function() {
	this.type = 1;
	this.name = "ShowFrame";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagShowFrame"] = format_swf_tags_TagShowFrame;
format_swf_tags_TagShowFrame.__name__ = ["format","swf","tags","TagShowFrame"];
format_swf_tags_TagShowFrame.__interfaces__ = [format_swf_tags_IDisplayListTag];
format_swf_tags_TagShowFrame.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,0);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
	}
	,__class__: format_swf_tags_TagShowFrame
};
var format_swf_tags_TagSoundStreamBlock = function() {
	this.type = 19;
	this.name = "SoundStreamBlock";
	this.version = 1;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.soundData = this1;
	this.soundData.__endian = 0;
};
$hxClasses["format.swf.tags.TagSoundStreamBlock"] = format_swf_tags_TagSoundStreamBlock;
format_swf_tags_TagSoundStreamBlock.__name__ = ["format","swf","tags","TagSoundStreamBlock"];
format_swf_tags_TagSoundStreamBlock.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagSoundStreamBlock.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,soundData: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		data.readBytes(this.soundData,0,length);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.soundData),true);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.soundData) > 0) {
			data.writeBytes(this.soundData);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "Length: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.soundData);
	}
	,__class__: format_swf_tags_TagSoundStreamBlock
};
var format_swf_tags_TagSoundStreamHead = function() {
	this.type = 18;
	this.name = "SoundStreamHead";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagSoundStreamHead"] = format_swf_tags_TagSoundStreamHead;
format_swf_tags_TagSoundStreamHead.__name__ = ["format","swf","tags","TagSoundStreamHead"];
format_swf_tags_TagSoundStreamHead.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagSoundStreamHead.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,playbackSoundRate: null
	,playbackSoundSize: null
	,playbackSoundType: null
	,streamSoundCompression: null
	,streamSoundRate: null
	,streamSoundSize: null
	,streamSoundType: null
	,streamSoundSampleCount: null
	,latencySeek: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.playbackSoundRate = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.playbackSoundSize = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1);
		this.playbackSoundType = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1);
		this.streamSoundCompression = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,4);
		this.streamSoundRate = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,2);
		this.streamSoundSize = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1);
		this.streamSoundType = format_swf__$SWFData_SWFData_$Impl_$.readUB(data,1);
		this.streamSoundSampleCount = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		if(this.streamSoundCompression == 2) {
			this.latencySeek = format_swf__$SWFData_SWFData_$Impl_$.readSI16(data);
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,4,0);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,2,this.playbackSoundRate);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,1,this.playbackSoundSize);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,1,this.playbackSoundType);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,4,this.streamSoundCompression);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,2,this.streamSoundRate);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,1,this.streamSoundSize);
		format_swf__$SWFData_SWFData_$Impl_$.writeUB(body,1,this.streamSoundType);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.streamSoundSampleCount);
		if(this.streamSoundCompression == 2) {
			format_swf__$SWFData_SWFData_$Impl_$.writeSI16(body,this.latencySeek);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		if(this.streamSoundSampleCount > 0) {
			str += "Format: " + format_swf_data_consts_SoundCompression.toString(this.streamSoundCompression) + ", " + "Rate: " + format_swf_data_consts_SoundRate.toString(this.streamSoundRate) + ", " + "Size: " + format_swf_data_consts_SoundSize.toString(this.streamSoundSize) + ", " + "Type: " + format_swf_data_consts_SoundType.toString(this.streamSoundType) + ", ";
		}
		str += "Samples: " + this.streamSoundSampleCount + ", ";
		str += "LatencySeek: " + this.latencySeek;
		return str;
	}
	,__class__: format_swf_tags_TagSoundStreamHead
};
var format_swf_tags_TagSoundStreamHead2 = function() {
	format_swf_tags_TagSoundStreamHead.call(this);
	this.type = 45;
	this.name = "SoundStreamHead2";
	this.version = 3;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagSoundStreamHead2"] = format_swf_tags_TagSoundStreamHead2;
format_swf_tags_TagSoundStreamHead2.__name__ = ["format","swf","tags","TagSoundStreamHead2"];
format_swf_tags_TagSoundStreamHead2.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagSoundStreamHead2.__super__ = format_swf_tags_TagSoundStreamHead;
format_swf_tags_TagSoundStreamHead2.prototype = $extend(format_swf_tags_TagSoundStreamHead.prototype,{
	toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		if(this.streamSoundSampleCount > 0) {
			str += "Format: " + format_swf_data_consts_SoundCompression.toString(this.streamSoundCompression) + ", " + "Rate: " + format_swf_data_consts_SoundRate.toString(this.streamSoundRate) + ", " + "Size: " + format_swf_data_consts_SoundSize.toString(this.streamSoundSize) + ", " + "Type: " + format_swf_data_consts_SoundType.toString(this.streamSoundType) + ", ";
		}
		str += "Samples: " + this.streamSoundSampleCount;
		return str;
	}
	,__class__: format_swf_tags_TagSoundStreamHead2
});
var format_swf_tags_TagStartSound = function() {
	this.type = 15;
	this.name = "StartSound";
	this.version = 1;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagStartSound"] = format_swf_tags_TagStartSound;
format_swf_tags_TagStartSound.__name__ = ["format","swf","tags","TagStartSound"];
format_swf_tags_TagStartSound.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagStartSound.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,soundId: null
	,soundInfo: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.soundId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.soundInfo = format_swf__$SWFData_SWFData_$Impl_$.readSOUNDINFO(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,this.soundId);
		format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDINFO(body,this.soundInfo);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "SoundID: " + this.soundId + ", " + "SoundInfo: " + Std.string(this.soundInfo);
		return str;
	}
	,__class__: format_swf_tags_TagStartSound
};
var format_swf_tags_TagStartSound2 = function() {
	this.type = 89;
	this.name = "StartSound2";
	this.version = 9;
	this.level = 2;
};
$hxClasses["format.swf.tags.TagStartSound2"] = format_swf_tags_TagStartSound2;
format_swf_tags_TagStartSound2.__name__ = ["format","swf","tags","TagStartSound2"];
format_swf_tags_TagStartSound2.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagStartSound2.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,soundClassName: null
	,soundInfo: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.soundClassName = format_swf__$SWFData_SWFData_$Impl_$.readSTRING(data);
		this.soundInfo = format_swf__$SWFData_SWFData_$Impl_$.readSOUNDINFO(data);
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		format_swf__$SWFData_SWFData_$Impl_$.writeSTRING(body,this.soundClassName);
		format_swf__$SWFData_SWFData_$Impl_$.writeSOUNDINFO(body,this.soundInfo);
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "SoundClassName: " + this.soundClassName + ", " + "SoundInfo: " + Std.string(this.soundInfo);
		return str;
	}
	,__class__: format_swf_tags_TagStartSound2
};
var format_swf_tags_TagSymbolClass = function() {
	this.type = 76;
	this.name = "SymbolClass";
	this.version = 9;
	this.level = 1;
	this.symbols = [];
};
$hxClasses["format.swf.tags.TagSymbolClass"] = format_swf_tags_TagSymbolClass;
format_swf_tags_TagSymbolClass.__name__ = ["format","swf","tags","TagSymbolClass"];
format_swf_tags_TagSymbolClass.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagSymbolClass.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,symbols: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		var numSymbols = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			this.symbols.push(format_swf__$SWFData_SWFData_$Impl_$.readSYMBOL(data));
		}
	}
	,publish: function(data,version) {
		var body = format_swf__$SWFData_SWFData_$Impl_$._new();
		var numSymbols = this.symbols.length;
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(body,numSymbols);
		var _g1 = 0;
		var _g = numSymbols;
		while(_g1 < _g) {
			var i = _g1++;
			format_swf__$SWFData_SWFData_$Impl_$.writeSYMBOL(body,this.symbols[i]);
		}
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,format_swf__$SWFData_SWFData_$Impl_$.get_length(body));
		data.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(body));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
		if(this.symbols.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Symbols:";
			var _g1 = 0;
			var _g = this.symbols.length;
			while(_g1 < _g) {
				var i = _g1++;
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + this.symbols[i].toString();
			}
		}
		return str;
	}
	,__class__: format_swf_tags_TagSymbolClass
};
var format_swf_tags_TagUnknown = function(type) {
	if(type == null) {
		type = 0;
	}
	this.type = type;
	this.name = "????";
	this.version = 0;
	this.level = 1;
};
$hxClasses["format.swf.tags.TagUnknown"] = format_swf_tags_TagUnknown;
format_swf_tags_TagUnknown.__name__ = ["format","swf","tags","TagUnknown"];
format_swf_tags_TagUnknown.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagUnknown.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		format_swf__$SWFData_SWFData_$Impl_$.skipBytes(data,length);
	}
	,publish: function(data,version) {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("No raw tag data available."));
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent);
	}
	,__class__: format_swf_tags_TagUnknown
};
var format_swf_tags_TagVideoFrame = function() {
	this.type = 61;
	this.name = "VideoFrame";
	this.version = 6;
	this.level = 1;
	var this1 = new openfl_utils_ByteArrayData(0);
	this.videoData = this1;
	this.videoData.__endian = 0;
};
$hxClasses["format.swf.tags.TagVideoFrame"] = format_swf_tags_TagVideoFrame;
format_swf_tags_TagVideoFrame.__name__ = ["format","swf","tags","TagVideoFrame"];
format_swf_tags_TagVideoFrame.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_TagVideoFrame.prototype = {
	type: null
	,name: null
	,version: null
	,level: null
	,streamId: null
	,frameNum: null
	,videoData: null
	,parse: function(data,length,version,async) {
		if(async == null) {
			async = false;
		}
		this.streamId = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		this.frameNum = format_swf__$SWFData_SWFData_$Impl_$.readUI16(data);
		data.readBytes(this.videoData,0,length - 4);
	}
	,publish: function(data,version) {
		format_swf__$SWFData_SWFData_$Impl_$.writeTagHeader(data,this.type,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.videoData) + 4);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.streamId);
		format_swf__$SWFData_SWFData_$Impl_$.writeUI16(data,this.frameNum);
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.videoData) > 0) {
			data.writeBytes(this.videoData);
		}
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_tags_Tag.toStringCommon(this.type,this.name,indent) + "StreamID: " + this.streamId + ", " + "Frame: " + this.frameNum;
	}
	,__class__: format_swf_tags_TagVideoFrame
};
var format_swf_tags_etc_TagSWFEncryptActions = function(type) {
	if(type == null) {
		type = 0;
	}
	format_swf_tags_TagUnknown.call(this);
	this.type = 253;
	this.name = "SWFEncryptActions";
};
$hxClasses["format.swf.tags.etc.TagSWFEncryptActions"] = format_swf_tags_etc_TagSWFEncryptActions;
format_swf_tags_etc_TagSWFEncryptActions.__name__ = ["format","swf","tags","etc","TagSWFEncryptActions"];
format_swf_tags_etc_TagSWFEncryptActions.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_etc_TagSWFEncryptActions.__super__ = format_swf_tags_TagUnknown;
format_swf_tags_etc_TagSWFEncryptActions.prototype = $extend(format_swf_tags_TagUnknown.prototype,{
	__class__: format_swf_tags_etc_TagSWFEncryptActions
});
var format_swf_tags_etc_TagSWFEncryptSignature = function(type) {
	format_swf_tags_TagUnknown.call(this,type);
};
$hxClasses["format.swf.tags.etc.TagSWFEncryptSignature"] = format_swf_tags_etc_TagSWFEncryptSignature;
format_swf_tags_etc_TagSWFEncryptSignature.__name__ = ["format","swf","tags","etc","TagSWFEncryptSignature"];
format_swf_tags_etc_TagSWFEncryptSignature.__interfaces__ = [format_swf_tags_ITag];
format_swf_tags_etc_TagSWFEncryptSignature.__super__ = format_swf_tags_TagUnknown;
format_swf_tags_etc_TagSWFEncryptSignature.prototype = $extend(format_swf_tags_TagUnknown.prototype,{
	TagSWFEncryptSignature: function(type) {
		if(type == null) {
			type = 0;
		}
		this.type = 255;
		this.name = "SWFEncryptSignature";
	}
	,__class__: format_swf_tags_etc_TagSWFEncryptSignature
});
var format_swf_timeline_Frame = function(frameNumber,tagIndexStart) {
	if(tagIndexStart == null) {
		tagIndexStart = 0;
	}
	if(frameNumber == null) {
		frameNumber = 0;
	}
	this.tagIndexEnd = 0;
	this.tagIndexStart = 0;
	this.frameNumber = 0;
	this.frameNumber = frameNumber;
	this.tagIndexStart = tagIndexStart;
	this.objects = new haxe_ds_IntMap();
	this.characters = [];
};
$hxClasses["format.swf.timeline.Frame"] = format_swf_timeline_Frame;
format_swf_timeline_Frame.__name__ = ["format","swf","timeline","Frame"];
format_swf_timeline_Frame.prototype = {
	frameNumber: null
	,tagIndexStart: null
	,tagIndexEnd: null
	,label: null
	,objects: null
	,_objectsSortedByDepth: null
	,characters: null
	,tagCount: null
	,getObjectsSortedByDepth: function() {
		var depths = [];
		if(this._objectsSortedByDepth == null) {
			var depth = this.objects.keys();
			while(depth.hasNext()) {
				var depth1 = depth.next();
				depths.push(depth1);
			}
			depths.sort($bind(this,this.sortNumeric));
			this._objectsSortedByDepth = [];
			var _g1 = 0;
			var _g = depths.length;
			while(_g1 < _g) {
				var i = _g1++;
				this._objectsSortedByDepth.push(this.objects.h[depths[i]]);
			}
		}
		return this._objectsSortedByDepth;
	}
	,sortNumeric: function(a,b) {
		return a - b;
	}
	,get_tagCount: function() {
		return this.tagIndexEnd - this.tagIndexStart + 1;
	}
	,placeObject: function(tagIndex,tag) {
		var frameObject = this.objects.h[tag.depth];
		if(frameObject != null) {
			if(tag.characterId == 0 || tag.characterId == null) {
				frameObject.lastModifiedAtIndex = tagIndex;
				frameObject.isKeyframe = false;
			} else {
				if(tag.hasName || tag.hasMatrix || tag.hasColorTransform || tag.hasFilterList) {
					frameObject.lastModifiedAtIndex = tagIndex;
				}
				frameObject.isKeyframe = true;
				if(tag.characterId != frameObject.characterId) {
					frameObject.lastModifiedAtIndex = 0;
					frameObject.placedAtIndex = tagIndex;
					frameObject.characterId = tag.characterId;
				}
			}
		} else {
			var this1 = this.objects;
			var key = tag.depth;
			var value = new format_swf_timeline_FrameObject(tag.depth,tag.clipDepth,tag.characterId,tag.className,tagIndex,0,true);
			this1.h[key] = value;
		}
		this._objectsSortedByDepth = null;
	}
	,removeObject: function(tag) {
		this.objects.remove(tag.depth);
		this._objectsSortedByDepth = null;
	}
	,clone: function() {
		var frame = new format_swf_timeline_Frame();
		var depth = this.objects.keys();
		while(depth.hasNext()) {
			var depth1 = depth.next();
			var this1 = frame.objects;
			var value = this.objects.h[depth1].clone();
			this1.h[depth1] = value;
		}
		return frame;
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = format_swf_utils_StringUtils.repeat(indent) + "[" + this.frameNumber + "] " + "Start: " + this.tagIndexStart + ", " + "Length: " + this.get_tagCount();
		if(this.label != null && this.label != "") {
			str += ", Label: " + this.label;
		}
		if(this.characters.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Defined CharacterIDs: " + this.characters.join(", ");
		}
		var depth = this.objects.keys();
		while(depth.hasNext()) {
			var depth1 = depth.next();
			str += this.objects.h[depth1].toString();
		}
		return str;
	}
	,__class__: format_swf_timeline_Frame
	,__properties__: {get_tagCount:"get_tagCount"}
};
var format_swf_timeline_FrameObject = function(depth,clipDepth,characterId,className,placedAtIndex,lastModifiedAtIndex,isKeyframe) {
	if(isKeyframe == null) {
		isKeyframe = false;
	}
	if(lastModifiedAtIndex == null) {
		lastModifiedAtIndex = 0;
	}
	this.layer = -1;
	this.depth = depth;
	this.clipDepth = clipDepth;
	this.characterId = characterId;
	this.className = className;
	this.placedAtIndex = placedAtIndex;
	this.lastModifiedAtIndex = lastModifiedAtIndex;
	this.isKeyframe = isKeyframe;
	this.layer = -1;
};
$hxClasses["format.swf.timeline.FrameObject"] = format_swf_timeline_FrameObject;
format_swf_timeline_FrameObject.__name__ = ["format","swf","timeline","FrameObject"];
format_swf_timeline_FrameObject.prototype = {
	clipDepth: null
	,depth: null
	,characterId: null
	,className: null
	,placedAtIndex: null
	,lastModifiedAtIndex: null
	,isKeyframe: null
	,layer: null
	,clone: function() {
		return new format_swf_timeline_FrameObject(this.depth,this.clipDepth,this.characterId,this.className,this.placedAtIndex,this.lastModifiedAtIndex,false);
	}
	,toString: function() {
		var indent = 0;
		var str = format_swf_utils_StringUtils.repeat(indent + 2) + "Depth: " + this.depth + (this.layer > -1 ? " (Layer " + this.layer + ")" : "") + ", " + "CharacterId: " + this.characterId + ", ";
		if(this.className != null) {
			str += "ClassName: " + this.className + ", ";
		}
		str += "PlacedAt: " + this.placedAtIndex;
		if(this.lastModifiedAtIndex > 0) {
			str += ", LastModifiedAt: " + this.lastModifiedAtIndex;
		}
		if(this.isKeyframe) {
			str += ", IsKeyframe";
		}
		return str;
	}
	,__class__: format_swf_timeline_FrameObject
};
var format_swf_timeline_Layer = function(depth,frameCount) {
	this.frameCount = 0;
	this.depth = 0;
	this.depth = depth;
	this.frameCount = frameCount;
	this.frameStripMap = [];
	this.strips = [];
};
$hxClasses["format.swf.timeline.Layer"] = format_swf_timeline_Layer;
format_swf_timeline_Layer.__name__ = ["format","swf","timeline","Layer"];
format_swf_timeline_Layer.prototype = {
	depth: null
	,frameCount: null
	,frameStripMap: null
	,strips: null
	,appendStrip: function(type,start,end) {
		if(type != 0) {
			var i;
			var stripIndex = this.strips.length;
			if(stripIndex == 0 && start > 0) {
				var _g1 = 0;
				var _g = start;
				while(_g1 < _g) {
					var i1 = _g1++;
					this.frameStripMap[i1] = stripIndex;
				}
				this.strips[stripIndex++] = new format_swf_timeline_LayerStrip(1,0,start - 1);
			} else if(stripIndex > 0) {
				var prevStrip = this.strips[stripIndex - 1];
				if(prevStrip.endFrameIndex + 1 < start) {
					var _g11 = prevStrip.endFrameIndex + 1;
					var _g2 = start;
					while(_g11 < _g2) {
						var i2 = _g11++;
						this.frameStripMap[i2] = stripIndex;
					}
					this.strips[stripIndex++] = new format_swf_timeline_LayerStrip(1,prevStrip.endFrameIndex + 1,start - 1);
				}
			}
			var _g12 = start;
			var _g3 = end + 1;
			while(_g12 < _g3) {
				var i3 = _g12++;
				this.frameStripMap[i3] = stripIndex;
			}
			this.strips[stripIndex] = new format_swf_timeline_LayerStrip(type,start,end);
		}
	}
	,getStripsForFrameRegion: function(start,end) {
		if(start >= this.frameStripMap.length || end < start) {
			return [];
		}
		var startStripIndex = this.frameStripMap[start];
		var endStripIndex = end >= this.frameStripMap.length ? this.strips.length - 1 : this.frameStripMap[end];
		return this.strips.slice(startStripIndex,endStripIndex + 1);
	}
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		var str = "Depth: " + this.depth + ", Frames: " + this.frameCount;
		if(this.strips.length > 0) {
			str += "\n" + format_swf_utils_StringUtils.repeat(indent + 2) + "Strips:";
			var _g1 = 0;
			var _g = this.strips.length;
			while(_g1 < _g) {
				var i = _g1++;
				var strip = this.strips[i];
				str += "\n" + format_swf_utils_StringUtils.repeat(indent + 4) + "[" + i + "] " + strip.toString();
			}
		}
		return str;
	}
	,__class__: format_swf_timeline_Layer
};
var format_swf_timeline_LayerStrip = function(type,startFrameIndex,endFrameIndex) {
	this.endFrameIndex = 0;
	this.startFrameIndex = 0;
	this.type = 0;
	this.type = type;
	this.startFrameIndex = startFrameIndex;
	this.endFrameIndex = endFrameIndex;
};
$hxClasses["format.swf.timeline.LayerStrip"] = format_swf_timeline_LayerStrip;
format_swf_timeline_LayerStrip.__name__ = ["format","swf","timeline","LayerStrip"];
format_swf_timeline_LayerStrip.prototype = {
	type: null
	,startFrameIndex: null
	,endFrameIndex: null
	,toString: function() {
		var str;
		if(this.startFrameIndex == this.endFrameIndex) {
			str = "Frame: " + this.startFrameIndex;
		} else {
			str = "Frames: " + this.startFrameIndex + "-" + this.endFrameIndex;
		}
		str += ", Type: ";
		var _g = this.type;
		switch(_g) {
		case 0:
			str += "EMPTY";
			break;
		case 1:
			str += "SPACER";
			break;
		case 2:
			str += "STATIC";
			break;
		case 3:
			str += "MOTIONTWEEN";
			break;
		case 4:
			str += "SHAPETWEEN";
			break;
		default:
			str += "unknown";
		}
		return str;
	}
	,__class__: format_swf_timeline_LayerStrip
};
var format_swf_timeline_Scene = function(frameNumber,name) {
	this.frameNumber = 0;
	this.frameNumber = frameNumber;
	this.name = name;
};
$hxClasses["format.swf.timeline.Scene"] = format_swf_timeline_Scene;
format_swf_timeline_Scene.__name__ = ["format","swf","timeline","Scene"];
format_swf_timeline_Scene.prototype = {
	frameNumber: null
	,name: null
	,toString: function(indent) {
		if(indent == null) {
			indent = 0;
		}
		return format_swf_utils_StringUtils.repeat(indent) + "Name: " + this.name + ", " + "Frame: " + this.frameNumber;
	}
	,__class__: format_swf_timeline_Scene
};
var format_swf_timeline_SoundStream = function() {
	var this1 = new openfl_utils_ByteArrayData(0);
	this.data = this1;
	this.data.__endian = 0;
};
$hxClasses["format.swf.timeline.SoundStream"] = format_swf_timeline_SoundStream;
format_swf_timeline_SoundStream.__name__ = ["format","swf","timeline","SoundStream"];
format_swf_timeline_SoundStream.prototype = {
	startFrame: null
	,numFrames: null
	,numSamples: null
	,compression: null
	,rate: null
	,size: null
	,type: null
	,data: null
	,toString: function() {
		return "[SoundStream] " + "StartFrame: " + this.startFrame + ", " + "Frames: " + this.numFrames + ", " + "Samples: " + this.numSamples + ", " + "Bytes: " + openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.data);
	}
	,__class__: format_swf_timeline_SoundStream
};
var haxe_io_Bytes = function(data) {
	this.length = data.byteLength;
	this.b = new Uint8Array(data);
	this.b.bufferValue = data;
	data.hxBytes = this;
	data.bytes = this.b;
};
$hxClasses["haxe.io.Bytes"] = haxe_io_Bytes;
haxe_io_Bytes.__name__ = ["haxe","io","Bytes"];
haxe_io_Bytes.alloc = function(length) {
	return new haxe_io_Bytes(new ArrayBuffer(length));
};
haxe_io_Bytes.ofString = function(s) {
	var a = [];
	var i = 0;
	while(i < s.length) {
		var c = s.charCodeAt(i++);
		if(55296 <= c && c <= 56319) {
			c = c - 55232 << 10 | s.charCodeAt(i++) & 1023;
		}
		if(c <= 127) {
			a.push(c);
		} else if(c <= 2047) {
			a.push(192 | c >> 6);
			a.push(128 | c & 63);
		} else if(c <= 65535) {
			a.push(224 | c >> 12);
			a.push(128 | c >> 6 & 63);
			a.push(128 | c & 63);
		} else {
			a.push(240 | c >> 18);
			a.push(128 | c >> 12 & 63);
			a.push(128 | c >> 6 & 63);
			a.push(128 | c & 63);
		}
	}
	return new haxe_io_Bytes(new Uint8Array(a).buffer);
};
haxe_io_Bytes.ofData = function(b) {
	var hb = b.hxBytes;
	if(hb != null) {
		return hb;
	}
	return new haxe_io_Bytes(b);
};
haxe_io_Bytes.fastGet = function(b,pos) {
	return b.bytes[pos];
};
haxe_io_Bytes.prototype = {
	length: null
	,b: null
	,data: null
	,get: function(pos) {
		return this.b[pos];
	}
	,set: function(pos,v) {
		this.b[pos] = v & 255;
	}
	,blit: function(pos,src,srcpos,len) {
		if(pos < 0 || srcpos < 0 || len < 0 || pos + len > this.length || srcpos + len > src.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		if(srcpos == 0 && len == src.b.byteLength) {
			this.b.set(src.b,pos);
		} else {
			this.b.set(src.b.subarray(srcpos,srcpos + len),pos);
		}
	}
	,fill: function(pos,len,value) {
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i = _g1++;
			this.b[pos++] = value & 255;
		}
	}
	,sub: function(pos,len) {
		if(pos < 0 || len < 0 || pos + len > this.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		return new haxe_io_Bytes(this.b.buffer.slice(pos + this.b.byteOffset,pos + this.b.byteOffset + len));
	}
	,compare: function(other) {
		var b1 = this.b;
		var b2 = other.b;
		var len = this.length < other.length ? this.length : other.length;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i = _g1++;
			if(b1[i] != b2[i]) {
				return b1[i] - b2[i];
			}
		}
		return this.length - other.length;
	}
	,initData: function() {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
	}
	,getDouble: function(pos) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		return this.data.getFloat64(pos,true);
	}
	,getFloat: function(pos) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		return this.data.getFloat32(pos,true);
	}
	,setDouble: function(pos,v) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		this.data.setFloat64(pos,v,true);
	}
	,setFloat: function(pos,v) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		this.data.setFloat32(pos,v,true);
	}
	,getUInt16: function(pos) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		return this.data.getUint16(pos,true);
	}
	,setUInt16: function(pos,v) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		this.data.setUint16(pos,v,true);
	}
	,getInt32: function(pos) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		return this.data.getInt32(pos,true);
	}
	,setInt32: function(pos,v) {
		if(this.data == null) {
			this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength);
		}
		this.data.setInt32(pos,v,true);
	}
	,getInt64: function(pos) {
		var this1 = new haxe__$Int64__$_$_$Int64(this.getInt32(pos + 4),this.getInt32(pos));
		return this1;
	}
	,setInt64: function(pos,v) {
		this.setInt32(pos,v.low);
		this.setInt32(pos + 4,v.high);
	}
	,getString: function(pos,len) {
		if(pos < 0 || len < 0 || pos + len > this.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		var s = "";
		var b = this.b;
		var fcc = String.fromCharCode;
		var i = pos;
		var max = pos + len;
		while(i < max) {
			var c = b[i++];
			if(c < 128) {
				if(c == 0) {
					break;
				}
				s += fcc(c);
			} else if(c < 224) {
				s += fcc((c & 63) << 6 | b[i++] & 127);
			} else if(c < 240) {
				var c2 = b[i++];
				s += fcc((c & 31) << 12 | (c2 & 127) << 6 | b[i++] & 127);
			} else {
				var c21 = b[i++];
				var c3 = b[i++];
				var u = (c & 15) << 18 | (c21 & 127) << 12 | (c3 & 127) << 6 | b[i++] & 127;
				s += fcc((u >> 10) + 55232);
				s += fcc(u & 1023 | 56320);
			}
		}
		return s;
	}
	,readString: function(pos,len) {
		return this.getString(pos,len);
	}
	,toString: function() {
		return this.getString(0,this.length);
	}
	,toHex: function() {
		var s_b = "";
		var chars = [];
		var str = "0123456789abcdef";
		var _g1 = 0;
		var _g = str.length;
		while(_g1 < _g) {
			var i = _g1++;
			chars.push(HxOverrides.cca(str,i));
		}
		var _g11 = 0;
		var _g2 = this.length;
		while(_g11 < _g2) {
			var i1 = _g11++;
			var c = this.b[i1];
			s_b += String.fromCharCode(chars[c >> 4]);
			s_b += String.fromCharCode(chars[c & 15]);
		}
		return s_b;
	}
	,getData: function() {
		return this.b.bufferValue;
	}
	,__class__: haxe_io_Bytes
};
var openfl_utils_IDataOutput = function() { };
$hxClasses["openfl.utils.IDataOutput"] = openfl_utils_IDataOutput;
openfl_utils_IDataOutput.__name__ = ["openfl","utils","IDataOutput"];
openfl_utils_IDataOutput.prototype = {
	get_endian: null
	,set_endian: null
	,objectEncoding: null
	,writeBoolean: null
	,writeByte: null
	,writeBytes: null
	,writeDouble: null
	,writeFloat: null
	,writeInt: null
	,writeMultiByte: null
	,writeShort: null
	,writeUTF: null
	,writeUTFBytes: null
	,writeUnsignedInt: null
	,__class__: openfl_utils_IDataOutput
	,__properties__: {set_endian:"set_endian",get_endian:"get_endian"}
};
var openfl_utils_IDataInput = function() { };
$hxClasses["openfl.utils.IDataInput"] = openfl_utils_IDataInput;
openfl_utils_IDataInput.__name__ = ["openfl","utils","IDataInput"];
openfl_utils_IDataInput.prototype = {
	get_bytesAvailable: null
	,get_endian: null
	,set_endian: null
	,objectEncoding: null
	,readBoolean: null
	,readByte: null
	,readBytes: null
	,readDouble: null
	,readFloat: null
	,readInt: null
	,readMultiByte: null
	,readShort: null
	,readUnsignedByte: null
	,readUnsignedInt: null
	,readUnsignedShort: null
	,readUTF: null
	,readUTFBytes: null
	,__class__: openfl_utils_IDataInput
	,__properties__: {set_endian:"set_endian",get_endian:"get_endian",get_bytesAvailable:"get_bytesAvailable"}
};
var openfl_utils_ByteArrayData = function(length) {
	if(length == null) {
		length = 0;
	}
	var bytes = new haxe_io_Bytes(new ArrayBuffer(length));
	haxe_io_Bytes.call(this,bytes.b.buffer);
	this.__length = length;
	if(openfl_utils_ByteArrayData.__defaultEndian == null) {
		if(lime_system_System.get_endianness() == lime_system_Endian.LITTLE_ENDIAN) {
			openfl_utils_ByteArrayData.__defaultEndian = 1;
		} else {
			openfl_utils_ByteArrayData.__defaultEndian = 0;
		}
	}
	this.__endian = openfl_utils_ByteArrayData.__defaultEndian;
	this.position = 0;
};
$hxClasses["openfl.utils.ByteArrayData"] = openfl_utils_ByteArrayData;
openfl_utils_ByteArrayData.__name__ = ["openfl","utils","ByteArrayData"];
openfl_utils_ByteArrayData.__interfaces__ = [openfl_utils_IDataOutput,openfl_utils_IDataInput];
openfl_utils_ByteArrayData.fromBytes = function(bytes) {
	var result = new openfl_utils_ByteArrayData();
	result.__fromBytes(bytes);
	return result;
};
openfl_utils_ByteArrayData.__super__ = haxe_io_Bytes;
openfl_utils_ByteArrayData.prototype = $extend(haxe_io_Bytes.prototype,{
	objectEncoding: null
	,position: null
	,__endian: null
	,__length: null
	,clear: function() {
		this.length = 0;
		this.position = 0;
	}
	,compress: function(algorithm) {
		if(algorithm == null) {
			algorithm = 2;
		}
		if(this.__length > this.length) {
			var cacheLength = this.length;
			this.length = this.__length;
			var data = new haxe_io_Bytes(new ArrayBuffer(cacheLength));
			data.blit(0,this,0,cacheLength);
			this.b = data.b;
			this.__length = data.length;
			this.data = data.data;
			this.length = cacheLength;
		}
		var bytes;
		switch(algorithm) {
		case 0:
			bytes = lime_utils_compress_Deflate.compress(this);
			break;
		case 1:
			bytes = lime_utils_compress_LZMA.compress(this);
			break;
		default:
			bytes = lime_utils_compress_Zlib.compress(this);
		}
		if(bytes != null) {
			this.b = bytes.b;
			this.__length = bytes.length;
			this.data = bytes.data;
			this.length = this.__length;
			this.position = this.length;
		}
	}
	,deflate: function() {
		this.compress(0);
	}
	,inflate: function() {
		this.uncompress(0);
	}
	,readBoolean: function() {
		if(this.position < this.length) {
			return this.b[this.position++] != 0;
		} else {
			throw new js__$Boot_HaxeError(new openfl_errors_EOFError());
		}
	}
	,readByte: function() {
		var value = this.readUnsignedByte();
		if((value & 128) != 0) {
			return value - 256;
		} else {
			return value;
		}
	}
	,readBytes: function(bytes,offset,length) {
		if(length == null) {
			length = 0;
		}
		if(offset == null) {
			offset = 0;
		}
		if(length == 0) {
			length = this.length - this.position;
		}
		if(this.position + length > this.length) {
			throw new js__$Boot_HaxeError(new openfl_errors_EOFError());
		}
		if(bytes.length < offset + length) {
			bytes.__resize(offset + length);
		}
		bytes.blit(offset,this,this.position,length);
		this.position += length;
	}
	,readDouble: function() {
		var ch1 = this.readInt();
		var ch2 = this.readInt();
		if(this.__endian == 1) {
			return haxe_io_FPHelper.i64ToDouble(ch1,ch2);
		} else {
			return haxe_io_FPHelper.i64ToDouble(ch2,ch1);
		}
	}
	,readFloat: function() {
		return haxe_io_FPHelper.i32ToFloat(this.readInt());
	}
	,readInt: function() {
		var ch1 = this.readUnsignedByte();
		var ch2 = this.readUnsignedByte();
		var ch3 = this.readUnsignedByte();
		var ch4 = this.readUnsignedByte();
		if(this.__endian == 1) {
			return ch4 << 24 | ch3 << 16 | ch2 << 8 | ch1;
		} else {
			return ch1 << 24 | ch2 << 16 | ch3 << 8 | ch4;
		}
	}
	,readMultiByte: function(length,charSet) {
		return this.readUTFBytes(length);
	}
	,readShort: function() {
		var ch1 = this.readUnsignedByte();
		var ch2 = this.readUnsignedByte();
		var value;
		if(this.__endian == 1) {
			value = ch2 << 8 | ch1;
		} else {
			value = ch1 << 8 | ch2;
		}
		if((value & 32768) != 0) {
			return value - 65536;
		} else {
			return value;
		}
	}
	,readUnsignedByte: function() {
		if(this.position < this.length) {
			return this.b[this.position++];
		} else {
			throw new js__$Boot_HaxeError(new openfl_errors_EOFError());
		}
	}
	,readUnsignedInt: function() {
		var ch1 = this.readUnsignedByte();
		var ch2 = this.readUnsignedByte();
		var ch3 = this.readUnsignedByte();
		var ch4 = this.readUnsignedByte();
		if(this.__endian == 1) {
			return ch4 << 24 | ch3 << 16 | ch2 << 8 | ch1;
		} else {
			return ch1 << 24 | ch2 << 16 | ch3 << 8 | ch4;
		}
	}
	,readUnsignedShort: function() {
		var ch1 = this.readUnsignedByte();
		var ch2 = this.readUnsignedByte();
		if(this.__endian == 1) {
			return (ch2 << 8) + ch1;
		} else {
			return ch1 << 8 | ch2;
		}
	}
	,readUTF: function() {
		var bytesCount = this.readUnsignedShort();
		return this.readUTFBytes(bytesCount);
	}
	,readUTFBytes: function(length) {
		if(this.position + length > this.length) {
			throw new js__$Boot_HaxeError(new openfl_errors_EOFError());
		}
		this.position += length;
		return this.getString(this.position - length,length);
	}
	,uncompress: function(algorithm) {
		if(algorithm == null) {
			algorithm = 2;
		}
		if(this.__length > this.length) {
			var cacheLength = this.length;
			this.length = this.__length;
			var data = new haxe_io_Bytes(new ArrayBuffer(cacheLength));
			data.blit(0,this,0,cacheLength);
			this.b = data.b;
			this.__length = data.length;
			this.data = data.data;
			this.length = cacheLength;
		}
		var bytes;
		switch(algorithm) {
		case 0:
			bytes = lime_utils_compress_Deflate.decompress(this);
			break;
		case 1:
			bytes = lime_utils_compress_LZMA.decompress(this);
			break;
		default:
			bytes = lime_utils_compress_Zlib.decompress(this);
		}
		if(bytes != null) {
			this.b = bytes.b;
			this.__length = bytes.length;
			this.data = bytes.data;
			this.length = this.__length;
		}
		this.position = 0;
	}
	,writeBoolean: function(value) {
		this.writeByte(value ? 1 : 0);
	}
	,writeByte: function(value) {
		this.__resize(this.position + 1);
		this.b[this.position++] = value & 255 & 255;
	}
	,writeBytes: function(bytes,offset,length) {
		if(length == null) {
			length = 0;
		}
		if(offset == null) {
			offset = 0;
		}
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(bytes) == 0) {
			return;
		}
		if(length == 0) {
			length = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(bytes) - offset;
		}
		this.__resize(this.position + length);
		this.blit(this.position,bytes,offset,length);
		this.position = this.position + length;
	}
	,writeDouble: function(value) {
		var int64 = haxe_io_FPHelper.doubleToI64(value);
		if(this.__endian == 1) {
			this.writeInt(int64.low);
			this.writeInt(int64.high);
		} else {
			this.writeInt(int64.high);
			this.writeInt(int64.low);
		}
	}
	,writeFloat: function(value) {
		if(this.__endian == 1) {
			this.__resize(this.position + 4);
			this.setFloat(this.position,value);
			this.position += 4;
		} else {
			var $int = haxe_io_FPHelper.floatToI32(value);
			this.writeInt($int);
		}
	}
	,writeInt: function(value) {
		this.__resize(this.position + 4);
		if(this.__endian == 1) {
			this.b[this.position++] = value & 255 & 255;
			this.b[this.position++] = value >> 8 & 255 & 255;
			this.b[this.position++] = value >> 16 & 255 & 255;
			this.b[this.position++] = value >> 24 & 255 & 255;
		} else {
			this.b[this.position++] = value >> 24 & 255 & 255;
			this.b[this.position++] = value >> 16 & 255 & 255;
			this.b[this.position++] = value >> 8 & 255 & 255;
			this.b[this.position++] = value & 255 & 255;
		}
	}
	,writeMultiByte: function(value,charSet) {
		this.writeUTFBytes(value);
	}
	,writeShort: function(value) {
		this.__resize(this.position + 2);
		if(this.__endian == 1) {
			this.b[this.position++] = value & 255;
			this.b[this.position++] = value >> 8 & 255;
		} else {
			this.b[this.position++] = value >> 8 & 255;
			this.b[this.position++] = value & 255;
		}
	}
	,writeUnsignedInt: function(value) {
		this.writeInt(value);
	}
	,writeUTF: function(value) {
		var bytes = haxe_io_Bytes.ofString(value);
		this.writeShort(bytes.length);
		this.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(bytes));
	}
	,writeUTFBytes: function(value) {
		var bytes = haxe_io_Bytes.ofString(value);
		this.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(haxe_io_Bytes.ofString(value)));
	}
	,__fromBytes: function(bytes) {
		this.b = bytes.b;
		this.__length = bytes.length;
		this.data = bytes.data;
		this.length = bytes.length;
	}
	,__resize: function(size) {
		if(size > this.__length) {
			var bytes = new haxe_io_Bytes(new ArrayBuffer((size + 1) * 3 >> 1));
			if(this.__length > 0) {
				var cacheLength = this.length;
				this.length = this.__length;
				bytes.blit(0,this,0,this.__length);
				this.length = cacheLength;
			}
			this.b = bytes.b;
			this.__length = bytes.length;
			this.data = bytes.data;
		}
		if(this.length < size) {
			this.length = size;
		}
	}
	,__setData: function(bytes) {
		this.b = bytes.b;
		this.__length = bytes.length;
		this.data = bytes.data;
	}
	,get_bytesAvailable: function() {
		return this.length - this.position;
	}
	,get_endian: function() {
		return this.__endian;
	}
	,set_endian: function(value) {
		return this.__endian = value;
	}
	,__class__: openfl_utils_ByteArrayData
	,__properties__: {set_endian:"set_endian",get_endian:"get_endian",get_bytesAvailable:"get_bytesAvailable"}
});
var format_swf_utils_BitArray = function(length) {
	this.bitsPending = 0;
	openfl_utils_ByteArrayData.call(this,length);
};
$hxClasses["format.swf.utils.BitArray"] = format_swf_utils_BitArray;
format_swf_utils_BitArray.__name__ = ["format","swf","utils","BitArray"];
format_swf_utils_BitArray.__super__ = openfl_utils_ByteArrayData;
format_swf_utils_BitArray.prototype = $extend(openfl_utils_ByteArrayData.prototype,{
	bitsPending: null
	,readBits: function(bits,bitBuffer) {
		if(bitBuffer == null) {
			bitBuffer = 0;
		}
		if(bits == 0) {
			return bitBuffer;
		}
		var partial;
		var bitsConsumed;
		if(this.bitsPending > 0) {
			var $byte = this.b[this.position - 1] & 255 >> 8 - this.bitsPending;
			bitsConsumed = Math.min(this.bitsPending,bits) | 0;
			this.bitsPending -= bitsConsumed;
			partial = $byte >> this.bitsPending;
		} else {
			bitsConsumed = Math.min(8,bits) | 0;
			this.bitsPending = 8 - bitsConsumed;
			partial = this.readUnsignedByte() >> this.bitsPending;
		}
		bits -= bitsConsumed;
		bitBuffer = bitBuffer << bitsConsumed | partial;
		if(bits > 0) {
			return this.readBits(bits,bitBuffer);
		} else {
			return bitBuffer;
		}
	}
	,writeBits: function(bits,value) {
		if(bits == 0) {
			return;
		}
		value &= -1 >>> 32 - bits;
		var bitsConsumed;
		if(this.bitsPending > 0) {
			if(this.bitsPending > bits) {
				this.b[this.position - 1] = (this.b[this.position - 1] | value << this.bitsPending - bits) & 255;
				bitsConsumed = bits;
				this.bitsPending -= bits;
			} else if(this.bitsPending == bits) {
				this.b[this.position - 1] = (this.b[this.position - 1] | value) & 255;
				bitsConsumed = bits;
				this.bitsPending = 0;
			} else {
				this.b[this.position - 1] = (this.b[this.position - 1] | value >> bits - this.bitsPending) & 255;
				bitsConsumed = this.bitsPending;
				this.bitsPending = 0;
			}
		} else {
			bitsConsumed = Math.min(8,bits) | 0;
			this.bitsPending = 8 - bitsConsumed;
			this.writeByte(value >> bits - bitsConsumed << this.bitsPending);
		}
		bits -= bitsConsumed;
		if(bits > 0) {
			this.writeBits(bits,value);
		}
	}
	,resetBitsPending: function() {
		this.bitsPending = 0;
	}
	,calculateMaxBits: function(signed,values) {
		var b = 0;
		var vmax = format_swf__$SWFData_SWFData_$Impl_$.MIN_FLOAT_VALUE | 0;
		if(!signed) {
			var _g = 0;
			while(_g < values.length) {
				var usvalue = values[_g];
				++_g;
				b |= usvalue;
			}
		} else {
			var _g1 = 0;
			while(_g1 < values.length) {
				var svalue = values[_g1];
				++_g1;
				if(svalue >= 0) {
					b |= svalue;
				} else {
					b |= ~svalue << 1;
				}
				if(vmax < svalue) {
					vmax = svalue;
				}
			}
		}
		var bits = 0;
		if(b > 0) {
			bits = haxe_crypto_BaseCode.encode(b == null ? "null" : "" + b,"01").length;
			if(signed && vmax > 0 && haxe_crypto_BaseCode.encode(vmax == null ? "null" : "" + vmax,"01").length >= bits) {
				++bits;
			}
		}
		return bits;
	}
	,__class__: format_swf_utils_BitArray
});
var format_swf_utils_ColorUtils = function() { };
$hxClasses["format.swf.utils.ColorUtils"] = format_swf_utils_ColorUtils;
format_swf_utils_ColorUtils.__name__ = ["format","swf","utils","ColorUtils"];
format_swf_utils_ColorUtils.alpha = function(color) {
	return (color >>> 24) / 255;
};
format_swf_utils_ColorUtils.rgb = function(color) {
	return color & 16777215;
};
format_swf_utils_ColorUtils.r = function(color) {
	return (format_swf_utils_ColorUtils.rgb(color) >> 16 & 255) / 255;
};
format_swf_utils_ColorUtils.g = function(color) {
	return (format_swf_utils_ColorUtils.rgb(color) >> 8 & 255) / 255;
};
format_swf_utils_ColorUtils.b = function(color) {
	return (format_swf_utils_ColorUtils.rgb(color) & 255) / 255;
};
format_swf_utils_ColorUtils.interpolate = function(color1,color2,ratio) {
	var r1 = format_swf_utils_ColorUtils.r(color1);
	var g1 = format_swf_utils_ColorUtils.g(color1);
	var b1 = format_swf_utils_ColorUtils.b(color1);
	var alpha1 = format_swf_utils_ColorUtils.alpha(color1);
	var ri = (r1 + (format_swf_utils_ColorUtils.r(color2) - r1) * ratio) * 255 | 0;
	var gi = (g1 + (format_swf_utils_ColorUtils.g(color2) - g1) * ratio) * 255 | 0;
	var bi = (b1 + (format_swf_utils_ColorUtils.b(color2) - b1) * ratio) * 255 | 0;
	var alphai = (alpha1 + (format_swf_utils_ColorUtils.alpha(color2) - alpha1) * ratio) * 255 | 0;
	return bi | gi << 8 | ri << 16 | alphai << 24;
};
format_swf_utils_ColorUtils.rgbToString = function(color) {
	return format_swf_utils_StringUtils.printf("#%06x",[color & 16777215]);
};
format_swf_utils_ColorUtils.rgbaToString = function(color) {
	return format_swf_utils_StringUtils.printf("#%06x(%02x)",[color & 16777215,color >>> 24]);
};
format_swf_utils_ColorUtils.argbToString = function(color) {
	return format_swf_utils_StringUtils.printf("#(%02x)%06x",[color >>> 24,color & 16777215]);
};
var format_swf_utils_HalfPrecisionWriter = function() { };
$hxClasses["format.swf.utils.HalfPrecisionWriter"] = format_swf_utils_HalfPrecisionWriter;
format_swf_utils_HalfPrecisionWriter.__name__ = ["format","swf","utils","HalfPrecisionWriter"];
format_swf_utils_HalfPrecisionWriter.write = function(value,data) {
	data.resetBitsPending();
	var dword;
	var sign;
	var exponent;
	var significand;
	var halfSignificand;
	var signedExponent;
	var result = 0;
	var p = data.position;
	data.writeDouble(value);
	data.position -= 4;
	dword = data.readUnsignedInt();
	data.position = p;
	if((dword & 2147483647) == 0) {
		result = dword >> 16;
	} else {
		sign = dword & -2147483648;
		exponent = dword & 2146435072;
		significand = dword & 1048575;
		if(exponent == 0) {
			result = sign >> 16;
		} else if(exponent == 2146435072) {
			if(significand == 0) {
				result = sign >> 16 | 31744;
			} else {
				result = 65024;
			}
		} else {
			sign >>= 16;
			signedExponent = (exponent >> 20) - 1023 + 15;
			if(signedExponent >= 31) {
				result = significand >> 16 | 31744;
			} else if(signedExponent <= 0) {
				if(10 - signedExponent > 21) {
					halfSignificand = 0;
				} else {
					significand |= 1048576;
					halfSignificand = significand >> 11 - signedExponent;
					if((significand >> 10 - signedExponent & 1) > 0) {
						++halfSignificand;
					}
				}
				result = sign | halfSignificand;
			} else {
				exponent = signedExponent << 10;
				halfSignificand = significand >> 10;
				if((significand & 512) > 0) {
					result = (sign | exponent | halfSignificand) + 1;
				} else {
					result = sign | exponent | halfSignificand;
				}
			}
		}
	}
	data.writeShort(result);
};
var format_swf_utils_MatrixUtils = function() { };
$hxClasses["format.swf.utils.MatrixUtils"] = format_swf_utils_MatrixUtils;
format_swf_utils_MatrixUtils.__name__ = ["format","swf","utils","MatrixUtils"];
format_swf_utils_MatrixUtils.interpolate = function(matrix1,matrix2,ratio) {
	var matrix = new format_swf_data_SWFMatrix();
	matrix.scaleX = matrix1.scaleX + (matrix2.scaleX - matrix1.scaleX) * ratio;
	matrix.scaleY = matrix1.scaleY + (matrix2.scaleY - matrix1.scaleY) * ratio;
	matrix.rotateSkew0 = matrix1.rotateSkew0 + (matrix2.rotateSkew0 - matrix1.rotateSkew0) * ratio;
	matrix.rotateSkew1 = matrix1.rotateSkew1 + (matrix2.rotateSkew1 - matrix1.rotateSkew1) * ratio;
	matrix.translateX = matrix1.translateX + (matrix2.translateX - matrix1.translateX) * ratio | 0;
	matrix.translateY = matrix1.translateY + (matrix2.translateY - matrix1.translateY) * ratio | 0;
	return matrix;
};
var format_swf_utils_NumberUtils = function() { };
$hxClasses["format.swf.utils.NumberUtils"] = format_swf_utils_NumberUtils;
format_swf_utils_NumberUtils.__name__ = ["format","swf","utils","NumberUtils"];
format_swf_utils_NumberUtils.roundPixels20 = function(pixels) {
	return Math.round(pixels * 100) / 100;
};
format_swf_utils_NumberUtils.roundPixels400 = function(pixels) {
	return Math.round(pixels * 10000) / 10000;
};
var format_swf_utils_StringUtils = function() { };
$hxClasses["format.swf.utils.StringUtils"] = format_swf_utils_StringUtils;
format_swf_utils_StringUtils.__name__ = ["format","swf","utils","StringUtils"];
format_swf_utils_StringUtils.trim = function(input) {
	return format_swf_utils_StringUtils.ltrim(format_swf_utils_StringUtils.rtrim(input));
};
format_swf_utils_StringUtils.ltrim = function(input) {
	if(input != null) {
		var size = input.length;
		var _g1 = 0;
		var _g = size;
		while(_g1 < _g) {
			var i = _g1++;
			if(HxOverrides.cca(input,i) > 32) {
				return input.substring(i);
			}
		}
	}
	return "";
};
format_swf_utils_StringUtils.rtrim = function(input) {
	if(input != null) {
		var size = input.length;
		var i = size;
		while(i > 0) {
			if(HxOverrides.cca(input,i - 1) > 32) {
				return input.substring(0,i);
			}
			--i;
		}
	}
	return "";
};
format_swf_utils_StringUtils.simpleEscape = function(input) {
	input = input.split("\n").join("\\n");
	input = input.split("\r").join("\\r");
	input = input.split("\t").join("\\t");
	return input;
};
format_swf_utils_StringUtils.strictEscape = function(input,trim) {
	if(trim == null) {
		trim = true;
	}
	if(input != null && input.length > 0) {
		if(trim) {
			input = format_swf_utils_StringUtils.trim(input);
		}
		input = encodeURIComponent(input);
		var a = input.split("");
		var _g1 = 0;
		var _g = a.length;
		while(_g1 < _g) {
			var i = _g1++;
			var _g2 = a[i];
			switch(_g2) {
			case "!":
				a[i] = "%21";
				break;
			case "'":
				a[i] = "%27";
				break;
			case "(":
				a[i] = "%28";
				break;
			case ")":
				a[i] = "%29";
				break;
			case "*":
				a[i] = "%2A";
				break;
			case "-":
				a[i] = "%2D";
				break;
			case ".":
				a[i] = "%2E";
				break;
			case "_":
				a[i] = "%5F";
				break;
			case "~":
				a[i] = "%7E";
				break;
			}
		}
		return a.join("");
	}
	return "";
};
format_swf_utils_StringUtils.repeat = function(n,str) {
	if(str == null) {
		str = " ";
	}
	var ret = "";
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		ret += str;
	}
	return ret;
};
format_swf_utils_StringUtils.printf = function(format1,args) {
	var result = "";
	var indexValue = 0;
	var isIndexed = -1;
	var typeLookup = "diufFeEgGxXoscpn";
	var i = 0;
	try {
		while(i < format1.length) {
			var c = format1.charAt(i);
			if(c == "%") {
				if(++i < format1.length) {
					c = format1.charAt(i);
					if(c == "%") {
						result += c;
					} else {
						var flagSign = false;
						var flagLeftAlign = false;
						var flagAlternate = false;
						var flagLeftPad = false;
						var flagZeroPad = false;
						var width = -1;
						var precision = -1;
						var type = "";
						var value;
						var j;
						var idx = format_swf_utils_StringUtils.getIndex(format1);
						if(idx < -1 || idx == 0) {
							haxe_Log.trace("ERR parsing index",{ fileName : "StringUtils.hx", lineNumber : 118, className : "format.swf.utils.StringUtils", methodName : "printf"});
							throw "__break__";
						} else if(idx == -1) {
							if(isIndexed == 1) {
								haxe_Log.trace("ERR: indexed placeholder expected",{ fileName : "StringUtils.hx", lineNumber : 121, className : "format.swf.utils.StringUtils", methodName : "printf"});
								throw "__break__";
							}
							if(isIndexed == -1) {
								isIndexed = 0;
							}
							++indexValue;
						} else {
							if(isIndexed == 0) {
								haxe_Log.trace("ERR: non-indexed placeholder expected",{ fileName : "StringUtils.hx", lineNumber : 125, className : "format.swf.utils.StringUtils", methodName : "printf"});
								throw "__break__";
							}
							if(isIndexed == -1) {
								isIndexed = 1;
							}
							indexValue = idx;
						}
						c = format1.charAt(i);
						while(c == "+" || c == "-" || c == "#" || c == " " || c == "0") {
							switch(c) {
							case " ":
								flagLeftPad = true;
								break;
							case "#":
								flagAlternate = true;
								break;
							case "+":
								flagSign = true;
								break;
							case "-":
								flagLeftAlign = true;
								break;
							case "0":
								flagZeroPad = true;
								break;
							}
							if(++i == format1.length) {
								break;
							}
							c = format1.charAt(i);
						}
						if(i == format1.length) {
							throw "__break__";
						}
						if(c == "*") {
							var widthIndex = 0;
							if(++i == format1.length) {
								throw "__break__";
							}
							idx = format_swf_utils_StringUtils.getIndex(format1);
							if(idx < -1 || idx == 0) {
								haxe_Log.trace("ERR parsing index for width",{ fileName : "StringUtils.hx", lineNumber : 155, className : "format.swf.utils.StringUtils", methodName : "printf"});
								throw "__break__";
							} else if(idx == -1) {
								if(isIndexed == 1) {
									haxe_Log.trace("ERR: indexed placeholder expected for width",{ fileName : "StringUtils.hx", lineNumber : 158, className : "format.swf.utils.StringUtils", methodName : "printf"});
									throw "__break__";
								}
								if(isIndexed == -1) {
									isIndexed = 0;
								}
								widthIndex = indexValue++;
							} else {
								if(isIndexed == 0) {
									haxe_Log.trace("ERR: non-indexed placeholder expected for width",{ fileName : "StringUtils.hx", lineNumber : 162, className : "format.swf.utils.StringUtils", methodName : "printf"});
									throw "__break__";
								}
								if(isIndexed == -1) {
									isIndexed = 1;
								}
								widthIndex = idx;
							}
							--widthIndex;
							if(args.length > widthIndex && widthIndex >= 0) {
								width = args[widthIndex] | 0;
								if(isNaN(width)) {
									width = -1;
									haxe_Log.trace("ERR NaN while parsing width",{ fileName : "StringUtils.hx", lineNumber : 171, className : "format.swf.utils.StringUtils", methodName : "printf"});
									throw "__break__";
								}
							} else {
								haxe_Log.trace("ERR index out of bounds while parsing width",{ fileName : "StringUtils.hx", lineNumber : 175, className : "format.swf.utils.StringUtils", methodName : "printf"});
								throw "__break__";
							}
							c = format1.charAt(i);
						} else {
							var hasWidth = false;
							while(c >= "0" && c <= "9") {
								if(width == -1) {
									width = 0;
								}
								width = width * 10 + Std.parseInt(c);
								if(++i == format1.length) {
									break;
								}
								c = format1.charAt(i);
							}
							if(width != -1 && i == format1.length) {
								haxe_Log.trace("ERR eof while parsing width",{ fileName : "StringUtils.hx", lineNumber : 188, className : "format.swf.utils.StringUtils", methodName : "printf"});
								throw "__break__";
							}
						}
						if(c == ".") {
							if(++i == format1.length) {
								throw "__break__";
							}
							c = format1.charAt(i);
							if(c == "*") {
								var precisionIndex = 0;
								if(++i == format1.length) {
									throw "__break__";
								}
								idx = format_swf_utils_StringUtils.getIndex(format1);
								if(idx < -1 || idx == 0) {
									haxe_Log.trace("ERR parsing index for precision",{ fileName : "StringUtils.hx", lineNumber : 204, className : "format.swf.utils.StringUtils", methodName : "printf"});
									throw "__break__";
								} else if(idx == -1) {
									if(isIndexed == 1) {
										haxe_Log.trace("ERR: indexed placeholder expected for precision",{ fileName : "StringUtils.hx", lineNumber : 207, className : "format.swf.utils.StringUtils", methodName : "printf"});
										throw "__break__";
									}
									if(isIndexed == -1) {
										isIndexed = 0;
									}
									precisionIndex = indexValue++;
								} else {
									if(isIndexed == 0) {
										haxe_Log.trace("ERR: non-indexed placeholder expected for precision",{ fileName : "StringUtils.hx", lineNumber : 211, className : "format.swf.utils.StringUtils", methodName : "printf"});
										throw "__break__";
									}
									if(isIndexed == -1) {
										isIndexed = 1;
									}
									precisionIndex = idx;
								}
								--precisionIndex;
								if(args.length > precisionIndex && precisionIndex >= 0) {
									precision = args[precisionIndex] | 0;
									if(isNaN(precision)) {
										precision = -1;
										haxe_Log.trace("ERR NaN while parsing precision",{ fileName : "StringUtils.hx", lineNumber : 220, className : "format.swf.utils.StringUtils", methodName : "printf"});
										throw "__break__";
									}
								} else {
									haxe_Log.trace("ERR index out of bounds while parsing precision",{ fileName : "StringUtils.hx", lineNumber : 224, className : "format.swf.utils.StringUtils", methodName : "printf"});
									throw "__break__";
								}
								c = format1.charAt(i);
							} else {
								while(c >= "0" && c <= "9") {
									if(precision == -1) {
										precision = 0;
									}
									precision = precision * 10 + Std.parseInt(c);
									if(++i == format1.length) {
										break;
									}
									c = format1.charAt(i);
								}
								if(precision != -1 && i == format1.length) {
									haxe_Log.trace("ERR eof while parsing precision",{ fileName : "StringUtils.hx", lineNumber : 236, className : "format.swf.utils.StringUtils", methodName : "printf"});
									throw "__break__";
								}
							}
						}
						switch(c) {
						case "L":
							break;
						case "h":
							break;
						case "j":
							break;
						case "l":
							if(++i == format1.length) {
								haxe_Log.trace("ERR eof after length",{ fileName : "StringUtils.hx", lineNumber : 248, className : "format.swf.utils.StringUtils", methodName : "printf"});
								throw "__break__";
							}
							var c1 = format1.charAt(i);
							if(c == "h" && c1 == "h" || c == "l" && c1 == "l") {
								if(++i == format1.length) {
									haxe_Log.trace("ERR eof after length",{ fileName : "StringUtils.hx", lineNumber : 251, className : "format.swf.utils.StringUtils", methodName : "printf"});
									throw "__break__";
								}
								c = format1.charAt(i);
							} else {
								c = c1;
							}
							throw "__break__";
							break;
						case "t":
							if(++i == format1.length) {
								haxe_Log.trace("ERR eof after length",{ fileName : "StringUtils.hx", lineNumber : 261, className : "format.swf.utils.StringUtils", methodName : "printf"});
								throw "__break__";
							}
							c = format1.charAt(i);
							throw "__break__";
							break;
						case "z":
							break;
						}
						if(typeLookup.indexOf(c) >= 0) {
							type = c;
						} else {
							haxe_Log.trace("ERR unknown type: " + c,{ fileName : "StringUtils.hx", lineNumber : 272, className : "format.swf.utils.StringUtils", methodName : "printf"});
							throw "__break__";
						}
						if(args.length >= indexValue && indexValue > 0) {
							value = args[indexValue - 1];
						} else {
							haxe_Log.trace("ERR value index out of bounds (" + indexValue + ")",{ fileName : "StringUtils.hx", lineNumber : 279, className : "format.swf.utils.StringUtils", methodName : "printf"});
							throw "__break__";
						}
						var valueStr = "";
						var valueFloat;
						var valueInt;
						var sign = 0;
						switch(type) {
						case "E":
							break;
						case "F":
							break;
						case "G":
							if(precision == -1) {
								precision = 6;
							}
							var exp10 = Math.pow(10,precision);
							if(typeof(value) == "number") {
								valueFloat = value;
							} else {
								valueFloat = parseFloat(Std.string(value));
							}
							valueStr = Std.string(Math.round(Math.abs(valueFloat) * exp10) / exp10);
							if(precision > 0) {
								var numZerosToAppend;
								var dotPos = valueStr.indexOf(".");
								if(dotPos == -1) {
									valueStr += ".";
									numZerosToAppend = precision;
								} else {
									numZerosToAppend = precision - (valueStr.length - dotPos - 1);
								}
								var _g1 = 0;
								var _g = numZerosToAppend;
								while(_g1 < _g) {
									var j1 = _g1++;
									valueStr += "0";
								}
							}
							if(valueFloat < 0) {
								sign = 1;
							} else {
								sign = -1;
							}
							throw "__break__";
							break;
						case "X":
							break;
						case "c":
							valueStr = Std.string(value).charAt(0);
							throw "__break__";
							break;
						case "d":
							break;
						case "e":
							break;
						case "f":
							break;
						case "g":
							break;
						case "i":
							if(typeof(value) == "number") {
								valueInt = value;
							} else {
								valueInt = Std.parseInt(Std.string(value));
							}
							valueStr = Std.string(Math.abs(valueInt));
							if(valueInt < 0) {
								sign = 1;
							} else {
								sign = -1;
							}
							throw "__break__";
							break;
						case "o":
							valueStr = haxe_crypto_BaseCode.encode(Std.string(typeof(value) == "number" ? value | 0 : value | 0),"01234567");
							throw "__break__";
							break;
						case "p":
							if(typeof(value) == "number") {
								valueStr = Std.string(value | 0);
							} else {
								valueStr = StringTools.hex(Std.parseInt(value));
							}
							if(type == "X") {
								valueStr = valueStr.toUpperCase();
							}
							throw "__break__";
							break;
						case "s":
							valueStr = Std.string(value);
							if(precision != -1) {
								valueStr = HxOverrides.substr(valueStr,0,precision);
							}
							throw "__break__";
							break;
						case "u":
							valueStr = Std.string(typeof(value) == "number" ? value : Std.parseInt(Std.string(value)));
							throw "__break__";
							break;
						case "x":
							break;
						}
						var hasSign = sign == 1 || flagSign || flagLeftPad;
						if(width > -1) {
							var numFill = width - valueStr.length;
							if(hasSign) {
								--numFill;
							}
							if(numFill > 0) {
								var fillChar = flagZeroPad && !flagLeftAlign ? "0" : " ";
								if(flagLeftAlign) {
									var _g11 = 0;
									var _g2 = numFill;
									while(_g11 < _g2) {
										var j2 = _g11++;
										valueStr += fillChar;
									}
								} else {
									var _g12 = 0;
									var _g3 = numFill;
									while(_g12 < _g3) {
										var j3 = _g12++;
										valueStr = fillChar + valueStr;
									}
								}
							}
						}
						if(hasSign) {
							if(sign == -1) {
								valueStr = (flagLeftPad ? " " : "0") + valueStr;
							} else {
								valueStr = "-" + valueStr;
							}
						}
						result += valueStr;
					}
				} else {
					result += c;
				}
			} else {
				result += c;
			}
			++i;
		}
	} catch( e ) { if( e != "__break__" ) throw e; }
	return result;
};
format_swf_utils_StringUtils.getIndex = function(format1) {
	var result = 0;
	var isIndexed = false;
	var c = "";
	var iTmp = format_swf_utils_StringUtils.i;
	while(true) {
		var tmp;
		c = format1.charAt(format_swf_utils_StringUtils.i);
		if(c >= "0") {
			tmp = c <= "9";
		} else {
			tmp = false;
		}
		if(!tmp) {
			break;
		}
		isIndexed = true;
		result = result * 10 + Std.parseInt(c);
		if(++format_swf_utils_StringUtils.i == format1.length) {
			return -2;
		}
	}
	if(isIndexed) {
		if(c != "$") {
			format_swf_utils_StringUtils.i = iTmp;
			return -1;
		}
		if(++format_swf_utils_StringUtils.i == format1.length) {
			return -2;
		}
		return result;
	} else {
		return -1;
	}
};
var format_tools_Deflate = function() { };
$hxClasses["format.tools.Deflate"] = format_tools_Deflate;
format_tools_Deflate.__name__ = ["format","tools","Deflate"];
format_tools_Deflate.run = function(b,level) {
	if(level == null) {
		level = 9;
	}
	return haxe_zip_Compress.run(b,level);
};
var format_tools_Inflate = function() { };
$hxClasses["format.tools.Inflate"] = format_tools_Inflate;
format_tools_Inflate.__name__ = ["format","tools","Inflate"];
format_tools_Inflate.run = function(bytes) {
	return haxe_zip_Uncompress.run(bytes);
};
var haxe_StackItem = $hxClasses["haxe.StackItem"] = { __ename__ : ["haxe","StackItem"], __constructs__ : ["CFunction","Module","FilePos","Method","LocalFunction"] };
haxe_StackItem.CFunction = ["CFunction",0];
haxe_StackItem.CFunction.toString = $estr;
haxe_StackItem.CFunction.__enum__ = haxe_StackItem;
haxe_StackItem.Module = function(m) { var $x = ["Module",1,m]; $x.__enum__ = haxe_StackItem; $x.toString = $estr; return $x; };
haxe_StackItem.FilePos = function(s,file,line) { var $x = ["FilePos",2,s,file,line]; $x.__enum__ = haxe_StackItem; $x.toString = $estr; return $x; };
haxe_StackItem.Method = function(classname,method) { var $x = ["Method",3,classname,method]; $x.__enum__ = haxe_StackItem; $x.toString = $estr; return $x; };
haxe_StackItem.LocalFunction = function(v) { var $x = ["LocalFunction",4,v]; $x.__enum__ = haxe_StackItem; $x.toString = $estr; return $x; };
var haxe_CallStack = function() { };
$hxClasses["haxe.CallStack"] = haxe_CallStack;
haxe_CallStack.__name__ = ["haxe","CallStack"];
haxe_CallStack.getStack = function(e) {
	if(e == null) {
		return [];
	}
	var oldValue = Error.prepareStackTrace;
	Error.prepareStackTrace = function(error,callsites) {
		var stack = [];
		var _g = 0;
		while(_g < callsites.length) {
			var site = callsites[_g];
			++_g;
			if(haxe_CallStack.wrapCallSite != null) {
				site = haxe_CallStack.wrapCallSite(site);
			}
			var method = null;
			var fullName = site.getFunctionName();
			if(fullName != null) {
				var idx = fullName.lastIndexOf(".");
				if(idx >= 0) {
					var className = HxOverrides.substr(fullName,0,idx);
					var methodName = HxOverrides.substr(fullName,idx + 1,null);
					method = haxe_StackItem.Method(className,methodName);
				}
			}
			stack.push(haxe_StackItem.FilePos(method,site.getFileName(),site.getLineNumber()));
		}
		return stack;
	};
	var a = haxe_CallStack.makeStack(e.stack);
	Error.prepareStackTrace = oldValue;
	return a;
};
haxe_CallStack.callStack = function() {
	try {
		throw new Error();
	} catch( e ) {
		haxe_CallStack.lastException = e;
		if (e instanceof js__$Boot_HaxeError) e = e.val;
		var a = haxe_CallStack.getStack(e);
		a.shift();
		return a;
	}
};
haxe_CallStack.exceptionStack = function() {
	return haxe_CallStack.getStack(haxe_CallStack.lastException);
};
haxe_CallStack.toString = function(stack) {
	var b = new StringBuf();
	var _g = 0;
	while(_g < stack.length) {
		var s = stack[_g];
		++_g;
		b.b += "\nCalled from ";
		haxe_CallStack.itemToString(b,s);
	}
	return b.b;
};
haxe_CallStack.itemToString = function(b,s) {
	switch(s[1]) {
	case 0:
		b.b += "a C function";
		break;
	case 1:
		var m = s[2];
		b.b += "module ";
		b.b += m == null ? "null" : "" + m;
		break;
	case 2:
		var line = s[4];
		var file = s[3];
		var s1 = s[2];
		if(s1 != null) {
			haxe_CallStack.itemToString(b,s1);
			b.b += " (";
		}
		b.b += file == null ? "null" : "" + file;
		b.b += " line ";
		b.b += line == null ? "null" : "" + line;
		if(s1 != null) {
			b.b += ")";
		}
		break;
	case 3:
		var meth = s[3];
		var cname = s[2];
		b.b += cname == null ? "null" : "" + cname;
		b.b += ".";
		b.b += meth == null ? "null" : "" + meth;
		break;
	case 4:
		var n = s[2];
		b.b += "local function #";
		b.b += n == null ? "null" : "" + n;
		break;
	}
};
haxe_CallStack.makeStack = function(s) {
	if(s == null) {
		return [];
	} else if(typeof(s) == "string") {
		var stack = s.split("\n");
		if(stack[0] == "Error") {
			stack.shift();
		}
		var m = [];
		var rie10 = new EReg("^   at ([A-Za-z0-9_. ]+) \\(([^)]+):([0-9]+):([0-9]+)\\)$","");
		var _g = 0;
		while(_g < stack.length) {
			var line = stack[_g];
			++_g;
			if(rie10.match(line)) {
				var path = rie10.matched(1).split(".");
				var meth = path.pop();
				var file = rie10.matched(2);
				var line1 = Std.parseInt(rie10.matched(3));
				m.push(haxe_StackItem.FilePos(meth == "Anonymous function" ? haxe_StackItem.LocalFunction() : meth == "Global code" ? null : haxe_StackItem.Method(path.join("."),meth),file,line1));
			} else {
				m.push(haxe_StackItem.Module(StringTools.trim(line)));
			}
		}
		return m;
	} else {
		return s;
	}
};
var haxe__$Int32_Int32_$Impl_$ = {};
$hxClasses["haxe._Int32.Int32_Impl_"] = haxe__$Int32_Int32_$Impl_$;
haxe__$Int32_Int32_$Impl_$.__name__ = ["haxe","_Int32","Int32_Impl_"];
haxe__$Int32_Int32_$Impl_$.preIncrement = function(this1) {
	this1 = ++this1 | 0;
	return this1;
};
haxe__$Int32_Int32_$Impl_$.postIncrement = function(this1) {
	var ret = this1++;
	this1 |= 0;
	return ret;
};
haxe__$Int32_Int32_$Impl_$.preDecrement = function(this1) {
	this1 = --this1 | 0;
	return this1;
};
haxe__$Int32_Int32_$Impl_$.postDecrement = function(this1) {
	var ret = this1--;
	this1 |= 0;
	return ret;
};
haxe__$Int32_Int32_$Impl_$.add = function(a,b) {
	return a + b | 0;
};
haxe__$Int32_Int32_$Impl_$.addInt = function(a,b) {
	return a + b | 0;
};
haxe__$Int32_Int32_$Impl_$.sub = function(a,b) {
	return a - b | 0;
};
haxe__$Int32_Int32_$Impl_$.subInt = function(a,b) {
	return a - b | 0;
};
haxe__$Int32_Int32_$Impl_$.intSub = function(a,b) {
	return a - b | 0;
};
haxe__$Int32_Int32_$Impl_$.mul = function(a,b) {
	return a * (b & 65535) + (a * (b >>> 16) << 16 | 0) | 0;
};
haxe__$Int32_Int32_$Impl_$.mulInt = function(a,b) {
	return haxe__$Int32_Int32_$Impl_$.mul(a,b);
};
haxe__$Int32_Int32_$Impl_$.toFloat = function(this1) {
	return this1;
};
haxe__$Int32_Int32_$Impl_$.ucompare = function(a,b) {
	if(a < 0) {
		if(b < 0) {
			return ~b - ~a | 0;
		} else {
			return 1;
		}
	}
	if(b < 0) {
		return -1;
	} else {
		return a - b | 0;
	}
};
haxe__$Int32_Int32_$Impl_$.clamp = function(x) {
	return x | 0;
};
var haxe__$Int64__$_$_$Int64 = function(high,low) {
	this.high = high;
	this.low = low;
};
$hxClasses["haxe._Int64.___Int64"] = haxe__$Int64__$_$_$Int64;
haxe__$Int64__$_$_$Int64.__name__ = ["haxe","_Int64","___Int64"];
haxe__$Int64__$_$_$Int64.prototype = {
	high: null
	,low: null
	,__class__: haxe__$Int64__$_$_$Int64
};
var haxe_Log = function() { };
$hxClasses["haxe.Log"] = haxe_Log;
haxe_Log.__name__ = ["haxe","Log"];
haxe_Log.trace = function(v,infos) {
	js_Boot.__trace(v,infos);
};
var haxe_Resource = function() { };
$hxClasses["haxe.Resource"] = haxe_Resource;
haxe_Resource.__name__ = ["haxe","Resource"];
haxe_Resource.getBytes = function(name) {
	var _g = 0;
	var _g1 = haxe_Resource.content;
	while(_g < _g1.length) {
		var x = _g1[_g];
		++_g;
		if(x.name == name) {
			if(x.str != null) {
				return haxe_io_Bytes.ofString(x.str);
			}
			return haxe_crypto_Base64.decode(x.data);
		}
	}
	return null;
};
var haxe_Serializer = function() {
	this.buf = new StringBuf();
	this.cache = [];
	this.useCache = haxe_Serializer.USE_CACHE;
	this.useEnumIndex = haxe_Serializer.USE_ENUM_INDEX;
	this.shash = new haxe_ds_StringMap();
	this.scount = 0;
};
$hxClasses["haxe.Serializer"] = haxe_Serializer;
haxe_Serializer.__name__ = ["haxe","Serializer"];
haxe_Serializer.run = function(v) {
	var s = new haxe_Serializer();
	s.serialize(v);
	return s.toString();
};
haxe_Serializer.prototype = {
	buf: null
	,cache: null
	,shash: null
	,scount: null
	,useCache: null
	,useEnumIndex: null
	,toString: function() {
		return this.buf.b;
	}
	,serializeString: function(s) {
		var _this = this.shash;
		var x = __map_reserved[s] != null ? _this.getReserved(s) : _this.h[s];
		if(x != null) {
			this.buf.b += "R";
			this.buf.b += x == null ? "null" : "" + x;
			return;
		}
		var _this1 = this.shash;
		var value = this.scount++;
		if(__map_reserved[s] != null) {
			_this1.setReserved(s,value);
		} else {
			_this1.h[s] = value;
		}
		this.buf.b += "y";
		s = encodeURIComponent(s);
		this.buf.b += Std.string(s.length);
		this.buf.b += ":";
		this.buf.b += s == null ? "null" : "" + s;
	}
	,serializeRef: function(v) {
		var vt = typeof(v);
		var _g1 = 0;
		var _g = this.cache.length;
		while(_g1 < _g) {
			var i = _g1++;
			var ci = this.cache[i];
			if(typeof(ci) == vt && ci == v) {
				this.buf.b += "r";
				this.buf.b += i == null ? "null" : "" + i;
				return true;
			}
		}
		this.cache.push(v);
		return false;
	}
	,serializeFields: function(v) {
		var _g = 0;
		var _g1 = Reflect.fields(v);
		while(_g < _g1.length) {
			var f = _g1[_g];
			++_g;
			this.serializeString(f);
			this.serialize(Reflect.field(v,f));
		}
		this.buf.b += "g";
	}
	,serialize: function(v) {
		var _g = Type["typeof"](v);
		switch(_g[1]) {
		case 0:
			this.buf.b += "n";
			break;
		case 1:
			var v1 = v;
			if(v1 == 0) {
				this.buf.b += "z";
				return;
			}
			this.buf.b += "i";
			this.buf.b += v1 == null ? "null" : "" + v1;
			break;
		case 2:
			var v2 = v;
			if(isNaN(v2)) {
				this.buf.b += "k";
			} else if(!isFinite(v2)) {
				this.buf.b += v2 < 0 ? "m" : "p";
			} else {
				this.buf.b += "d";
				this.buf.b += v2 == null ? "null" : "" + v2;
			}
			break;
		case 3:
			this.buf.b += v ? "t" : "f";
			break;
		case 4:
			if(js_Boot.__instanceof(v,Class)) {
				var className = Type.getClassName(v);
				this.buf.b += "A";
				this.serializeString(className);
			} else if(js_Boot.__instanceof(v,Enum)) {
				this.buf.b += "B";
				this.serializeString(Type.getEnumName(v));
			} else {
				if(this.useCache && this.serializeRef(v)) {
					return;
				}
				this.buf.b += "o";
				this.serializeFields(v);
			}
			break;
		case 5:
			throw new js__$Boot_HaxeError("Cannot serialize function");
			break;
		case 6:
			var c = _g[2];
			if(c == String) {
				this.serializeString(v);
				return;
			}
			if(this.useCache && this.serializeRef(v)) {
				return;
			}
			switch(c) {
			case Array:
				var ucount = 0;
				this.buf.b += "a";
				var l = v["length"];
				var _g1 = 0;
				var _g2 = l;
				while(_g1 < _g2) {
					var i = _g1++;
					if(v[i] == null) {
						++ucount;
					} else {
						if(ucount > 0) {
							if(ucount == 1) {
								this.buf.b += "n";
							} else {
								this.buf.b += "u";
								this.buf.b += ucount == null ? "null" : "" + ucount;
							}
							ucount = 0;
						}
						this.serialize(v[i]);
					}
				}
				if(ucount > 0) {
					if(ucount == 1) {
						this.buf.b += "n";
					} else {
						this.buf.b += "u";
						this.buf.b += ucount == null ? "null" : "" + ucount;
					}
				}
				this.buf.b += "h";
				break;
			case Date:
				var d = v;
				this.buf.b += "v";
				this.buf.b += Std.string(d.getTime());
				break;
			case List:
				this.buf.b += "l";
				var v3 = v;
				var _g_head = v3.h;
				while(_g_head != null) {
					var val = _g_head.item;
					_g_head = _g_head.next;
					var i1 = val;
					this.serialize(i1);
				}
				this.buf.b += "h";
				break;
			case haxe_ds_IntMap:
				this.buf.b += "q";
				var v4 = v;
				var k = v4.keys();
				while(k.hasNext()) {
					var k1 = k.next();
					this.buf.b += ":";
					this.buf.b += k1 == null ? "null" : "" + k1;
					this.serialize(v4.h[k1]);
				}
				this.buf.b += "h";
				break;
			case haxe_ds_ObjectMap:
				this.buf.b += "M";
				var v5 = v;
				var k2 = v5.keys();
				while(k2.hasNext()) {
					var k3 = k2.next();
					var id = Reflect.field(k3,"__id__");
					Reflect.deleteField(k3,"__id__");
					this.serialize(k3);
					k3["__id__"] = id;
					this.serialize(v5.h[k3.__id__]);
				}
				this.buf.b += "h";
				break;
			case haxe_ds_StringMap:
				this.buf.b += "b";
				var v6 = v;
				var k4 = v6.keys();
				while(k4.hasNext()) {
					var k5 = k4.next();
					this.serializeString(k5);
					this.serialize(__map_reserved[k5] != null ? v6.getReserved(k5) : v6.h[k5]);
				}
				this.buf.b += "h";
				break;
			case haxe_io_Bytes:
				var v7 = v;
				this.buf.b += "s";
				this.buf.b += Std.string(Math.ceil(v7.length * 8 / 6));
				this.buf.b += ":";
				var i2 = 0;
				var max = v7.length - 2;
				var b64 = haxe_Serializer.BASE64_CODES;
				if(b64 == null) {
					var length = haxe_Serializer.BASE64.length;
					var this1 = new Array(length);
					b64 = this1;
					var _g11 = 0;
					var _g3 = haxe_Serializer.BASE64.length;
					while(_g11 < _g3) {
						var i3 = _g11++;
						b64[i3] = HxOverrides.cca(haxe_Serializer.BASE64,i3);
					}
					haxe_Serializer.BASE64_CODES = b64;
				}
				while(i2 < max) {
					var b1 = v7.b[i2++];
					var b2 = v7.b[i2++];
					var b3 = v7.b[i2++];
					this.buf.b += String.fromCharCode(b64[b1 >> 2]);
					this.buf.b += String.fromCharCode(b64[(b1 << 4 | b2 >> 4) & 63]);
					this.buf.b += String.fromCharCode(b64[(b2 << 2 | b3 >> 6) & 63]);
					this.buf.b += String.fromCharCode(b64[b3 & 63]);
				}
				if(i2 == max) {
					var b11 = v7.b[i2++];
					var b21 = v7.b[i2++];
					this.buf.b += String.fromCharCode(b64[b11 >> 2]);
					this.buf.b += String.fromCharCode(b64[(b11 << 4 | b21 >> 4) & 63]);
					this.buf.b += String.fromCharCode(b64[b21 << 2 & 63]);
				} else if(i2 == max + 1) {
					var b12 = v7.b[i2++];
					this.buf.b += String.fromCharCode(b64[b12 >> 2]);
					this.buf.b += String.fromCharCode(b64[b12 << 4 & 63]);
				}
				break;
			default:
				if(this.useCache) {
					this.cache.pop();
				}
				if(v.hxSerialize != null) {
					this.buf.b += "C";
					this.serializeString(Type.getClassName(c));
					if(this.useCache) {
						this.cache.push(v);
					}
					v.hxSerialize(this);
					this.buf.b += "g";
				} else {
					this.buf.b += "c";
					this.serializeString(Type.getClassName(c));
					if(this.useCache) {
						this.cache.push(v);
					}
					this.serializeFields(v);
				}
			}
			break;
		case 7:
			var e = _g[2];
			if(this.useCache) {
				if(this.serializeRef(v)) {
					return;
				}
				this.cache.pop();
			}
			this.buf.b += Std.string(this.useEnumIndex ? "j" : "w");
			this.serializeString(Type.getEnumName(e));
			if(this.useEnumIndex) {
				this.buf.b += ":";
				this.buf.b += Std.string(v[1]);
			} else {
				this.serializeString(v[0]);
			}
			this.buf.b += ":";
			var l1 = v["length"];
			this.buf.b += Std.string(l1 - 2);
			var _g12 = 2;
			var _g4 = l1;
			while(_g12 < _g4) {
				var i4 = _g12++;
				this.serialize(v[i4]);
			}
			if(this.useCache) {
				this.cache.push(v);
			}
			break;
		default:
			throw new js__$Boot_HaxeError("Cannot serialize " + Std.string(v));
		}
	}
	,__class__: haxe_Serializer
};
var haxe__$Template_TemplateExpr = $hxClasses["haxe._Template.TemplateExpr"] = { __ename__ : ["haxe","_Template","TemplateExpr"], __constructs__ : ["OpVar","OpExpr","OpIf","OpStr","OpBlock","OpForeach","OpMacro"] };
haxe__$Template_TemplateExpr.OpVar = function(v) { var $x = ["OpVar",0,v]; $x.__enum__ = haxe__$Template_TemplateExpr; $x.toString = $estr; return $x; };
haxe__$Template_TemplateExpr.OpExpr = function(expr) { var $x = ["OpExpr",1,expr]; $x.__enum__ = haxe__$Template_TemplateExpr; $x.toString = $estr; return $x; };
haxe__$Template_TemplateExpr.OpIf = function(expr,eif,eelse) { var $x = ["OpIf",2,expr,eif,eelse]; $x.__enum__ = haxe__$Template_TemplateExpr; $x.toString = $estr; return $x; };
haxe__$Template_TemplateExpr.OpStr = function(str) { var $x = ["OpStr",3,str]; $x.__enum__ = haxe__$Template_TemplateExpr; $x.toString = $estr; return $x; };
haxe__$Template_TemplateExpr.OpBlock = function(l) { var $x = ["OpBlock",4,l]; $x.__enum__ = haxe__$Template_TemplateExpr; $x.toString = $estr; return $x; };
haxe__$Template_TemplateExpr.OpForeach = function(expr,loop) { var $x = ["OpForeach",5,expr,loop]; $x.__enum__ = haxe__$Template_TemplateExpr; $x.toString = $estr; return $x; };
haxe__$Template_TemplateExpr.OpMacro = function(name,params) { var $x = ["OpMacro",6,name,params]; $x.__enum__ = haxe__$Template_TemplateExpr; $x.toString = $estr; return $x; };
var haxe_Template = function(str) {
	var tokens = this.parseTokens(str);
	this.expr = this.parseBlock(tokens);
	if(!tokens.isEmpty()) {
		throw new js__$Boot_HaxeError("Unexpected '" + Std.string(tokens.first().s) + "'");
	}
};
$hxClasses["haxe.Template"] = haxe_Template;
haxe_Template.__name__ = ["haxe","Template"];
haxe_Template.prototype = {
	expr: null
	,context: null
	,macros: null
	,stack: null
	,buf: null
	,execute: function(context,macros) {
		this.macros = macros == null ? { } : macros;
		this.context = context;
		this.stack = new List();
		this.buf = new StringBuf();
		this.run(this.expr);
		return this.buf.b;
	}
	,resolve: function(v) {
		if(v == "__current__") {
			return this.context;
		}
		var value = Reflect.getProperty(this.context,v);
		if(value != null || Object.prototype.hasOwnProperty.call(this.context,v)) {
			return value;
		}
		var _g_head = this.stack.h;
		while(_g_head != null) {
			var val = _g_head.item;
			_g_head = _g_head.next;
			var ctx = val;
			value = Reflect.getProperty(ctx,v);
			if(value != null || Object.prototype.hasOwnProperty.call(ctx,v)) {
				return value;
			}
		}
		return Reflect.field(haxe_Template.globals,v);
	}
	,parseTokens: function(data) {
		var tokens = new List();
		while(haxe_Template.splitter.match(data)) {
			var p = haxe_Template.splitter.matchedPos();
			if(p.pos > 0) {
				tokens.add({ p : HxOverrides.substr(data,0,p.pos), s : true, l : null});
			}
			if(HxOverrides.cca(data,p.pos) == 58) {
				tokens.add({ p : HxOverrides.substr(data,p.pos + 2,p.len - 4), s : false, l : null});
				data = haxe_Template.splitter.matchedRight();
				continue;
			}
			var parp = p.pos + p.len;
			var npar = 1;
			var params = [];
			var part = "";
			while(true) {
				var c = HxOverrides.cca(data,parp);
				++parp;
				if(c == 40) {
					++npar;
				} else if(c == 41) {
					--npar;
					if(npar <= 0) {
						break;
					}
				} else if(c == null) {
					throw new js__$Boot_HaxeError("Unclosed macro parenthesis");
				}
				if(c == 44 && npar == 1) {
					params.push(part);
					part = "";
				} else {
					part += String.fromCharCode(c);
				}
			}
			params.push(part);
			tokens.add({ p : haxe_Template.splitter.matched(2), s : false, l : params});
			data = HxOverrides.substr(data,parp,data.length - parp);
		}
		if(data.length > 0) {
			tokens.add({ p : data, s : true, l : null});
		}
		return tokens;
	}
	,parseBlock: function(tokens) {
		var l = new List();
		while(true) {
			var t = tokens.first();
			if(t == null) {
				break;
			}
			if(!t.s && (t.p == "end" || t.p == "else" || HxOverrides.substr(t.p,0,7) == "elseif ")) {
				break;
			}
			l.add(this.parse(tokens));
		}
		if(l.length == 1) {
			return l.first();
		}
		return haxe__$Template_TemplateExpr.OpBlock(l);
	}
	,parse: function(tokens) {
		var t = tokens.pop();
		var p = t.p;
		if(t.s) {
			return haxe__$Template_TemplateExpr.OpStr(p);
		}
		if(t.l != null) {
			var pe = new List();
			var _g = 0;
			var _g1 = t.l;
			while(_g < _g1.length) {
				var p1 = _g1[_g];
				++_g;
				pe.add(this.parseBlock(this.parseTokens(p1)));
			}
			return haxe__$Template_TemplateExpr.OpMacro(p,pe);
		}
		if(HxOverrides.substr(p,0,3) == "if ") {
			p = HxOverrides.substr(p,3,p.length - 3);
			var e = this.parseExpr(p);
			var eif = this.parseBlock(tokens);
			var t1 = tokens.first();
			var eelse;
			if(t1 == null) {
				throw new js__$Boot_HaxeError("Unclosed 'if'");
			}
			if(t1.p == "end") {
				tokens.pop();
				eelse = null;
			} else if(t1.p == "else") {
				tokens.pop();
				eelse = this.parseBlock(tokens);
				t1 = tokens.pop();
				if(t1 == null || t1.p != "end") {
					throw new js__$Boot_HaxeError("Unclosed 'else'");
				}
			} else {
				t1.p = HxOverrides.substr(t1.p,4,t1.p.length - 4);
				eelse = this.parse(tokens);
			}
			return haxe__$Template_TemplateExpr.OpIf(e,eif,eelse);
		}
		if(HxOverrides.substr(p,0,8) == "foreach ") {
			p = HxOverrides.substr(p,8,p.length - 8);
			var e1 = this.parseExpr(p);
			var efor = this.parseBlock(tokens);
			var t2 = tokens.pop();
			if(t2 == null || t2.p != "end") {
				throw new js__$Boot_HaxeError("Unclosed 'foreach'");
			}
			return haxe__$Template_TemplateExpr.OpForeach(e1,efor);
		}
		if(haxe_Template.expr_splitter.match(p)) {
			return haxe__$Template_TemplateExpr.OpExpr(this.parseExpr(p));
		}
		return haxe__$Template_TemplateExpr.OpVar(p);
	}
	,parseExpr: function(data) {
		var l = new List();
		var expr = data;
		while(haxe_Template.expr_splitter.match(data)) {
			var p = haxe_Template.expr_splitter.matchedPos();
			var k = p.pos + p.len;
			if(p.pos != 0) {
				l.add({ p : HxOverrides.substr(data,0,p.pos), s : true});
			}
			var p1 = haxe_Template.expr_splitter.matched(0);
			l.add({ p : p1, s : p1.indexOf("\"") >= 0});
			data = haxe_Template.expr_splitter.matchedRight();
		}
		if(data.length != 0) {
			l.add({ p : data, s : true});
		}
		var e;
		try {
			e = this.makeExpr(l);
			if(!l.isEmpty()) {
				throw new js__$Boot_HaxeError(l.first().p);
			}
		} catch( s ) {
			haxe_CallStack.lastException = s;
			if (s instanceof js__$Boot_HaxeError) s = s.val;
			if( js_Boot.__instanceof(s,String) ) {
				throw new js__$Boot_HaxeError("Unexpected '" + s + "' in " + expr);
			} else throw(s);
		}
		return function() {
			try {
				return e();
			} catch( exc ) {
				haxe_CallStack.lastException = exc;
				if (exc instanceof js__$Boot_HaxeError) exc = exc.val;
				throw new js__$Boot_HaxeError("Error : " + Std.string(exc) + " in " + expr);
			}
		};
	}
	,makeConst: function(v) {
		haxe_Template.expr_trim.match(v);
		v = haxe_Template.expr_trim.matched(1);
		if(HxOverrides.cca(v,0) == 34) {
			var str = HxOverrides.substr(v,1,v.length - 2);
			return function() {
				return str;
			};
		}
		if(haxe_Template.expr_int.match(v)) {
			var i = Std.parseInt(v);
			return function() {
				return i;
			};
		}
		if(haxe_Template.expr_float.match(v)) {
			var f = parseFloat(v);
			return function() {
				return f;
			};
		}
		var me = this;
		return function() {
			return me.resolve(v);
		};
	}
	,makePath: function(e,l) {
		var p = l.first();
		if(p == null || p.p != ".") {
			return e;
		}
		l.pop();
		var field = l.pop();
		if(field == null || !field.s) {
			throw new js__$Boot_HaxeError(field.p);
		}
		var f = field.p;
		haxe_Template.expr_trim.match(f);
		f = haxe_Template.expr_trim.matched(1);
		return this.makePath(function() {
			return Reflect.field(e(),f);
		},l);
	}
	,makeExpr: function(l) {
		return this.makePath(this.makeExpr2(l),l);
	}
	,makeExpr2: function(l) {
		var p = l.pop();
		if(p == null) {
			throw new js__$Boot_HaxeError("<eof>");
		}
		if(p.s) {
			return this.makeConst(p.p);
		}
		var _g = p.p;
		switch(_g) {
		case "!":
			var e = this.makeExpr(l);
			return function() {
				var v = e();
				if(v != null) {
					return v == false;
				} else {
					return true;
				}
			};
		case "(":
			var e1 = this.makeExpr(l);
			var p1 = l.pop();
			if(p1 == null || p1.s) {
				throw new js__$Boot_HaxeError(p1);
			}
			if(p1.p == ")") {
				return e1;
			}
			var e2 = this.makeExpr(l);
			var p2 = l.pop();
			if(p2 == null || p2.p != ")") {
				throw new js__$Boot_HaxeError(p2);
			}
			var _g1 = p1.p;
			switch(_g1) {
			case "!=":
				return function() {
					return e1() != e2();
				};
			case "&&":
				return function() {
					return e1() && e2();
				};
			case "*":
				return function() {
					return e1() * e2();
				};
			case "+":
				return function() {
					return e1() + e2();
				};
			case "-":
				return function() {
					return e1() - e2();
				};
			case "/":
				return function() {
					return e1() / e2();
				};
			case "<":
				return function() {
					return e1() < e2();
				};
			case "<=":
				return function() {
					return e1() <= e2();
				};
			case "==":
				return function() {
					return e1() == e2();
				};
			case ">":
				return function() {
					return e1() > e2();
				};
			case ">=":
				return function() {
					return e1() >= e2();
				};
			case "||":
				return function() {
					return e1() || e2();
				};
			default:
				throw new js__$Boot_HaxeError("Unknown operation " + p1.p);
			}
			break;
		case "-":
			var e3 = this.makeExpr(l);
			return function() {
				return -e3();
			};
		}
		throw new js__$Boot_HaxeError(p.p);
	}
	,run: function(e) {
		switch(e[1]) {
		case 0:
			var v = e[2];
			var _this = this.buf;
			var x = Std.string(this.resolve(v));
			_this.b += Std.string(x);
			break;
		case 1:
			var e1 = e[2];
			var _this1 = this.buf;
			var x1 = Std.string(e1());
			_this1.b += Std.string(x1);
			break;
		case 2:
			var eelse = e[4];
			var eif = e[3];
			var e2 = e[2];
			var v1 = e2();
			if(v1 == null || v1 == false) {
				if(eelse != null) {
					this.run(eelse);
				}
			} else {
				this.run(eif);
			}
			break;
		case 3:
			var str = e[2];
			this.buf.b += str == null ? "null" : "" + str;
			break;
		case 4:
			var l = e[2];
			var _g_head = l.h;
			while(_g_head != null) {
				var val = _g_head.item;
				_g_head = _g_head.next;
				var e3 = val;
				this.run(e3);
			}
			break;
		case 5:
			var loop = e[3];
			var e4 = e[2];
			var v2 = e4();
			try {
				var x2 = $iterator(v2)();
				if(x2.hasNext == null) {
					throw new js__$Boot_HaxeError(null);
				}
				v2 = x2;
			} catch( e5 ) {
				haxe_CallStack.lastException = e5;
				try {
					if(v2.hasNext == null) {
						throw new js__$Boot_HaxeError(null);
					}
				} catch( e6 ) {
					haxe_CallStack.lastException = e6;
					throw new js__$Boot_HaxeError("Cannot iter on " + Std.string(v2));
				}
			}
			this.stack.push(this.context);
			var v3 = v2;
			var ctx = v3;
			while(ctx.hasNext()) {
				var ctx1 = ctx.next();
				this.context = ctx1;
				this.run(loop);
			}
			this.context = this.stack.pop();
			break;
		case 6:
			var params = e[3];
			var m = e[2];
			var v4 = Reflect.field(this.macros,m);
			var pl = [];
			var old = this.buf;
			pl.push($bind(this,this.resolve));
			var _g_head1 = params.h;
			while(_g_head1 != null) {
				var val1 = _g_head1.item;
				_g_head1 = _g_head1.next;
				var p = val1;
				if(p[1] == 0) {
					var v5 = p[2];
					pl.push(this.resolve(v5));
				} else {
					this.buf = new StringBuf();
					this.run(p);
					pl.push(this.buf.b);
				}
			}
			this.buf = old;
			try {
				var _this2 = this.buf;
				var x3 = Std.string(v4.apply(this.macros,pl));
				_this2.b += Std.string(x3);
			} catch( e7 ) {
				haxe_CallStack.lastException = e7;
				if (e7 instanceof js__$Boot_HaxeError) e7 = e7.val;
				var plstr;
				try {
					plstr = pl.join(",");
				} catch( e8 ) {
					haxe_CallStack.lastException = e8;
					plstr = "???";
				}
				var msg = "Macro call " + m + "(" + plstr + ") failed (" + Std.string(e7) + ")";
				throw new js__$Boot_HaxeError(msg);
			}
			break;
		}
	}
	,__class__: haxe_Template
};
var haxe_Timer = function(time_ms) {
	var me = this;
	this.id = setInterval(function() {
		me.run();
	},time_ms);
};
$hxClasses["haxe.Timer"] = haxe_Timer;
haxe_Timer.__name__ = ["haxe","Timer"];
haxe_Timer.delay = function(f,time_ms) {
	var t = new haxe_Timer(time_ms);
	t.run = function() {
		t.stop();
		f();
	};
	return t;
};
haxe_Timer.measure = function(f,pos) {
	var t0 = window.performance.now() / 1000;
	var r = f();
	haxe_Log.trace(window.performance.now() / 1000 - t0 + "s",pos);
	return r;
};
haxe_Timer.stamp = function() {
	return window.performance.now() / 1000;
};
haxe_Timer.prototype = {
	id: null
	,stop: function() {
		if(this.id == null) {
			return;
		}
		clearInterval(this.id);
		this.id = null;
	}
	,run: function() {
	}
	,__class__: haxe_Timer
};
var haxe__$Unserializer_DefaultResolver = function() {
};
$hxClasses["haxe._Unserializer.DefaultResolver"] = haxe__$Unserializer_DefaultResolver;
haxe__$Unserializer_DefaultResolver.__name__ = ["haxe","_Unserializer","DefaultResolver"];
haxe__$Unserializer_DefaultResolver.prototype = {
	resolveClass: function(name) {
		return Type.resolveClass(name);
	}
	,resolveEnum: function(name) {
		return Type.resolveEnum(name);
	}
	,__class__: haxe__$Unserializer_DefaultResolver
};
var haxe_Unserializer = function(buf) {
	this.buf = buf;
	this.length = buf.length;
	this.pos = 0;
	this.scache = [];
	this.cache = [];
	var r = haxe_Unserializer.DEFAULT_RESOLVER;
	if(r == null) {
		r = new haxe__$Unserializer_DefaultResolver();
		haxe_Unserializer.DEFAULT_RESOLVER = r;
	}
	this.resolver = r;
};
$hxClasses["haxe.Unserializer"] = haxe_Unserializer;
haxe_Unserializer.__name__ = ["haxe","Unserializer"];
haxe_Unserializer.initCodes = function() {
	var codes = [];
	var _g1 = 0;
	var _g = haxe_Unserializer.BASE64.length;
	while(_g1 < _g) {
		var i = _g1++;
		codes[haxe_Unserializer.BASE64.charCodeAt(i)] = i;
	}
	return codes;
};
haxe_Unserializer.run = function(v) {
	return new haxe_Unserializer(v).unserialize();
};
haxe_Unserializer.prototype = {
	buf: null
	,pos: null
	,length: null
	,cache: null
	,scache: null
	,resolver: null
	,setResolver: function(r) {
		if(r == null) {
			if(haxe__$Unserializer_NullResolver.instance == null) {
				haxe__$Unserializer_NullResolver.instance = new haxe__$Unserializer_NullResolver();
			}
			this.resolver = haxe__$Unserializer_NullResolver.instance;
		} else {
			this.resolver = r;
		}
	}
	,readDigits: function() {
		var k = 0;
		var s = false;
		var fpos = this.pos;
		while(true) {
			var c = this.buf.charCodeAt(this.pos);
			if(c != c) {
				break;
			}
			if(c == 45) {
				if(this.pos != fpos) {
					break;
				}
				s = true;
				this.pos++;
				continue;
			}
			if(c < 48 || c > 57) {
				break;
			}
			k = k * 10 + (c - 48);
			this.pos++;
		}
		if(s) {
			k *= -1;
		}
		return k;
	}
	,readFloat: function() {
		var p1 = this.pos;
		while(true) {
			var c = this.buf.charCodeAt(this.pos);
			if(c != c) {
				break;
			}
			if(c >= 43 && c < 58 || c == 101 || c == 69) {
				this.pos++;
			} else {
				break;
			}
		}
		return parseFloat(HxOverrides.substr(this.buf,p1,this.pos - p1));
	}
	,unserializeObject: function(o) {
		while(true) {
			if(this.pos >= this.length) {
				throw new js__$Boot_HaxeError("Invalid object");
			}
			if(this.buf.charCodeAt(this.pos) == 103) {
				break;
			}
			var k = this.unserialize();
			if(typeof(k) != "string") {
				throw new js__$Boot_HaxeError("Invalid object key");
			}
			var v = this.unserialize();
			o[k] = v;
		}
		this.pos++;
	}
	,unserializeEnum: function(edecl,tag) {
		if(this.buf.charCodeAt(this.pos++) != 58) {
			throw new js__$Boot_HaxeError("Invalid enum format");
		}
		var nargs = this.readDigits();
		if(nargs == 0) {
			return Type.createEnum(edecl,tag);
		}
		var args = [];
		while(nargs-- > 0) args.push(this.unserialize());
		return Type.createEnum(edecl,tag,args);
	}
	,unserialize: function() {
		var _g = this.buf.charCodeAt(this.pos++);
		switch(_g) {
		case 65:
			var name = this.unserialize();
			var cl = this.resolver.resolveClass(name);
			if(cl == null) {
				throw new js__$Boot_HaxeError("Class not found " + name);
			}
			return cl;
		case 66:
			var name1 = this.unserialize();
			var e = this.resolver.resolveEnum(name1);
			if(e == null) {
				throw new js__$Boot_HaxeError("Enum not found " + name1);
			}
			return e;
		case 67:
			var name2 = this.unserialize();
			var cl1 = this.resolver.resolveClass(name2);
			if(cl1 == null) {
				throw new js__$Boot_HaxeError("Class not found " + name2);
			}
			var o = Type.createEmptyInstance(cl1);
			this.cache.push(o);
			o.hxUnserialize(this);
			if(this.buf.charCodeAt(this.pos++) != 103) {
				throw new js__$Boot_HaxeError("Invalid custom data");
			}
			return o;
		case 77:
			var h = new haxe_ds_ObjectMap();
			this.cache.push(h);
			var buf = this.buf;
			while(this.buf.charCodeAt(this.pos) != 104) {
				var s = this.unserialize();
				h.set(s,this.unserialize());
			}
			this.pos++;
			return h;
		case 82:
			var n = this.readDigits();
			if(n < 0 || n >= this.scache.length) {
				throw new js__$Boot_HaxeError("Invalid string reference");
			}
			return this.scache[n];
		case 97:
			var buf1 = this.buf;
			var a = [];
			this.cache.push(a);
			while(true) {
				var c = this.buf.charCodeAt(this.pos);
				if(c == 104) {
					this.pos++;
					break;
				}
				if(c == 117) {
					this.pos++;
					var n1 = this.readDigits();
					a[a.length + n1 - 1] = null;
				} else {
					a.push(this.unserialize());
				}
			}
			return a;
		case 98:
			var h1 = new haxe_ds_StringMap();
			this.cache.push(h1);
			var buf2 = this.buf;
			while(this.buf.charCodeAt(this.pos) != 104) {
				var s1 = this.unserialize();
				var value = this.unserialize();
				if(__map_reserved[s1] != null) {
					h1.setReserved(s1,value);
				} else {
					h1.h[s1] = value;
				}
			}
			this.pos++;
			return h1;
		case 99:
			var name3 = this.unserialize();
			var cl2 = this.resolver.resolveClass(name3);
			if(cl2 == null) {
				throw new js__$Boot_HaxeError("Class not found " + name3);
			}
			var o1 = Type.createEmptyInstance(cl2);
			this.cache.push(o1);
			this.unserializeObject(o1);
			return o1;
		case 100:
			return this.readFloat();
		case 102:
			return false;
		case 105:
			return this.readDigits();
		case 106:
			var name4 = this.unserialize();
			var edecl = this.resolver.resolveEnum(name4);
			if(edecl == null) {
				throw new js__$Boot_HaxeError("Enum not found " + name4);
			}
			this.pos++;
			var index = this.readDigits();
			var tag = edecl.__constructs__.slice()[index];
			if(tag == null) {
				throw new js__$Boot_HaxeError("Unknown enum index " + name4 + "@" + index);
			}
			var e1 = this.unserializeEnum(edecl,tag);
			this.cache.push(e1);
			return e1;
		case 107:
			return NaN;
		case 108:
			var l = new List();
			this.cache.push(l);
			var buf3 = this.buf;
			while(this.buf.charCodeAt(this.pos) != 104) l.add(this.unserialize());
			this.pos++;
			return l;
		case 109:
			return -Infinity;
		case 110:
			return null;
		case 111:
			var o2 = { };
			this.cache.push(o2);
			this.unserializeObject(o2);
			return o2;
		case 112:
			return Infinity;
		case 113:
			var h2 = new haxe_ds_IntMap();
			this.cache.push(h2);
			var buf4 = this.buf;
			var c1 = this.buf.charCodeAt(this.pos++);
			while(c1 == 58) {
				var i = this.readDigits();
				var value1 = this.unserialize();
				h2.h[i] = value1;
				c1 = this.buf.charCodeAt(this.pos++);
			}
			if(c1 != 104) {
				throw new js__$Boot_HaxeError("Invalid IntMap format");
			}
			return h2;
		case 114:
			var n2 = this.readDigits();
			if(n2 < 0 || n2 >= this.cache.length) {
				throw new js__$Boot_HaxeError("Invalid reference");
			}
			return this.cache[n2];
		case 115:
			var len = this.readDigits();
			var buf5 = this.buf;
			if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len) {
				throw new js__$Boot_HaxeError("Invalid bytes length");
			}
			var codes = haxe_Unserializer.CODES;
			if(codes == null) {
				codes = haxe_Unserializer.initCodes();
				haxe_Unserializer.CODES = codes;
			}
			var i1 = this.pos;
			var rest = len & 3;
			var size = (len >> 2) * 3 + (rest >= 2 ? rest - 1 : 0);
			var max = i1 + (len - rest);
			var bytes = new haxe_io_Bytes(new ArrayBuffer(size));
			var bpos = 0;
			while(i1 < max) {
				var c11 = codes[buf5.charCodeAt(i1++)];
				var c2 = codes[buf5.charCodeAt(i1++)];
				bytes.b[bpos++] = (c11 << 2 | c2 >> 4) & 255;
				var c3 = codes[buf5.charCodeAt(i1++)];
				bytes.b[bpos++] = (c2 << 4 | c3 >> 2) & 255;
				var c4 = codes[buf5.charCodeAt(i1++)];
				bytes.b[bpos++] = (c3 << 6 | c4) & 255;
			}
			if(rest >= 2) {
				var c12 = codes[buf5.charCodeAt(i1++)];
				var c21 = codes[buf5.charCodeAt(i1++)];
				bytes.b[bpos++] = (c12 << 2 | c21 >> 4) & 255;
				if(rest == 3) {
					var c31 = codes[buf5.charCodeAt(i1++)];
					bytes.b[bpos++] = (c21 << 4 | c31 >> 2) & 255;
				}
			}
			this.pos += len;
			this.cache.push(bytes);
			return bytes;
		case 116:
			return true;
		case 118:
			var d;
			if(this.buf.charCodeAt(this.pos) >= 48 && this.buf.charCodeAt(this.pos) <= 57 && this.buf.charCodeAt(this.pos + 1) >= 48 && this.buf.charCodeAt(this.pos + 1) <= 57 && this.buf.charCodeAt(this.pos + 2) >= 48 && this.buf.charCodeAt(this.pos + 2) <= 57 && this.buf.charCodeAt(this.pos + 3) >= 48 && this.buf.charCodeAt(this.pos + 3) <= 57 && this.buf.charCodeAt(this.pos + 4) == 45) {
				d = HxOverrides.strDate(HxOverrides.substr(this.buf,this.pos,19));
				this.pos += 19;
			} else {
				var t = this.readFloat();
				d = new Date(t);
			}
			this.cache.push(d);
			return d;
		case 119:
			var name5 = this.unserialize();
			var edecl1 = this.resolver.resolveEnum(name5);
			if(edecl1 == null) {
				throw new js__$Boot_HaxeError("Enum not found " + name5);
			}
			var e2 = this.unserializeEnum(edecl1,this.unserialize());
			this.cache.push(e2);
			return e2;
		case 120:
			throw js__$Boot_HaxeError.wrap(this.unserialize());
			break;
		case 121:
			var len1 = this.readDigits();
			if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len1) {
				throw new js__$Boot_HaxeError("Invalid string length");
			}
			var s2 = HxOverrides.substr(this.buf,this.pos,len1);
			this.pos += len1;
			s2 = decodeURIComponent(s2.split("+").join(" "));
			this.scache.push(s2);
			return s2;
		case 122:
			return 0;
		default:
		}
		this.pos--;
		throw new js__$Boot_HaxeError("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos);
	}
	,__class__: haxe_Unserializer
};
var haxe__$Unserializer_NullResolver = function() {
};
$hxClasses["haxe._Unserializer.NullResolver"] = haxe__$Unserializer_NullResolver;
haxe__$Unserializer_NullResolver.__name__ = ["haxe","_Unserializer","NullResolver"];
haxe__$Unserializer_NullResolver.prototype = {
	resolveClass: function(name) {
		return null;
	}
	,resolveEnum: function(name) {
		return null;
	}
	,__class__: haxe__$Unserializer_NullResolver
};
var haxe_crypto_Adler32 = function() {
	this.a1 = 1;
	this.a2 = 0;
};
$hxClasses["haxe.crypto.Adler32"] = haxe_crypto_Adler32;
haxe_crypto_Adler32.__name__ = ["haxe","crypto","Adler32"];
haxe_crypto_Adler32.read = function(i) {
	var a = new haxe_crypto_Adler32();
	var a2a = i.readByte();
	var a2b = i.readByte();
	var a1a = i.readByte();
	var a1b = i.readByte();
	a.a1 = a1a << 8 | a1b;
	a.a2 = a2a << 8 | a2b;
	return a;
};
haxe_crypto_Adler32.prototype = {
	a1: null
	,a2: null
	,update: function(b,pos,len) {
		var a1 = this.a1;
		var a2 = this.a2;
		var _g1 = pos;
		var _g = pos + len;
		while(_g1 < _g) {
			var p = _g1++;
			var c = b.b[p];
			a1 = (a1 + c) % 65521;
			a2 = (a2 + a1) % 65521;
		}
		this.a1 = a1;
		this.a2 = a2;
	}
	,equals: function(a) {
		if(a.a1 == this.a1) {
			return a.a2 == this.a2;
		} else {
			return false;
		}
	}
	,__class__: haxe_crypto_Adler32
};
var haxe_crypto_Base64 = function() { };
$hxClasses["haxe.crypto.Base64"] = haxe_crypto_Base64;
haxe_crypto_Base64.__name__ = ["haxe","crypto","Base64"];
haxe_crypto_Base64.decode = function(str,complement) {
	if(complement == null) {
		complement = true;
	}
	if(complement) {
		while(HxOverrides.cca(str,str.length - 1) == 61) str = HxOverrides.substr(str,0,-1);
	}
	return new haxe_crypto_BaseCode(haxe_crypto_Base64.BYTES).decodeBytes(haxe_io_Bytes.ofString(str));
};
var haxe_crypto_BaseCode = function(base) {
	var len = base.length;
	var nbits = 1;
	while(len > 1 << nbits) ++nbits;
	if(nbits > 8 || len != 1 << nbits) {
		throw new js__$Boot_HaxeError("BaseCode : base length must be a power of two.");
	}
	this.base = base;
	this.nbits = nbits;
};
$hxClasses["haxe.crypto.BaseCode"] = haxe_crypto_BaseCode;
haxe_crypto_BaseCode.__name__ = ["haxe","crypto","BaseCode"];
haxe_crypto_BaseCode.encode = function(s,base) {
	var b = new haxe_crypto_BaseCode(haxe_io_Bytes.ofString(base));
	return b.encodeString(s);
};
haxe_crypto_BaseCode.prototype = {
	base: null
	,nbits: null
	,tbl: null
	,encodeBytes: function(b) {
		var nbits = this.nbits;
		var base = this.base;
		var size = b.length * 8 / nbits | 0;
		var out = new haxe_io_Bytes(new ArrayBuffer(size + (b.length * 8 % nbits == 0 ? 0 : 1)));
		var buf = 0;
		var curbits = 0;
		var mask = (1 << nbits) - 1;
		var pin = 0;
		var pout = 0;
		while(pout < size) {
			while(curbits < nbits) {
				curbits += 8;
				buf <<= 8;
				buf |= b.b[pin++];
			}
			curbits -= nbits;
			out.b[pout++] = base.b[buf >> curbits & mask] & 255;
		}
		if(curbits > 0) {
			out.b[pout++] = base.b[buf << nbits - curbits & mask] & 255;
		}
		return out;
	}
	,initTable: function() {
		var tbl = [];
		var _g = 0;
		while(_g < 256) {
			var i = _g++;
			tbl[i] = -1;
		}
		var _g1 = 0;
		var _g2 = this.base.length;
		while(_g1 < _g2) {
			var i1 = _g1++;
			tbl[this.base.b[i1]] = i1;
		}
		this.tbl = tbl;
	}
	,decodeBytes: function(b) {
		var nbits = this.nbits;
		var base = this.base;
		if(this.tbl == null) {
			this.initTable();
		}
		var tbl = this.tbl;
		var size = b.length * nbits >> 3;
		var out = new haxe_io_Bytes(new ArrayBuffer(size));
		var buf = 0;
		var curbits = 0;
		var pin = 0;
		var pout = 0;
		while(pout < size) {
			while(curbits < 8) {
				curbits += nbits;
				buf <<= nbits;
				var i = tbl[b.b[pin++]];
				if(i == -1) {
					throw new js__$Boot_HaxeError("BaseCode : invalid encoded char");
				}
				buf |= i;
			}
			curbits -= 8;
			out.b[pout++] = buf >> curbits & 255 & 255;
		}
		return out;
	}
	,encodeString: function(s) {
		return this.encodeBytes(haxe_io_Bytes.ofString(s)).toString();
	}
	,__class__: haxe_crypto_BaseCode
};
var haxe_crypto_Crc32 = function() {
	this.crc = -1;
};
$hxClasses["haxe.crypto.Crc32"] = haxe_crypto_Crc32;
haxe_crypto_Crc32.__name__ = ["haxe","crypto","Crc32"];
haxe_crypto_Crc32.prototype = {
	crc: null
	,'byte': function(b) {
		var tmp = (this.crc ^ b) & 255;
		var _g = 0;
		while(_g < 8) {
			var j = _g++;
			if((tmp & 1) == 1) {
				tmp = tmp >>> 1 ^ -306674912;
			} else {
				tmp >>>= 1;
			}
		}
		this.crc = this.crc >>> 8 ^ tmp;
	}
	,update: function(b,pos,len) {
		var b1 = b.b.bufferValue;
		var _g1 = pos;
		var _g = pos + len;
		while(_g1 < _g) {
			var i = _g1++;
			var tmp = (this.crc ^ b1.bytes[i]) & 255;
			var _g2 = 0;
			while(_g2 < 8) {
				var j = _g2++;
				if((tmp & 1) == 1) {
					tmp = tmp >>> 1 ^ -306674912;
				} else {
					tmp >>>= 1;
				}
			}
			this.crc = this.crc >>> 8 ^ tmp;
		}
	}
	,get: function() {
		return this.crc ^ -1;
	}
	,__class__: haxe_crypto_Crc32
};
var haxe_ds_ArraySort = function() { };
$hxClasses["haxe.ds.ArraySort"] = haxe_ds_ArraySort;
haxe_ds_ArraySort.__name__ = ["haxe","ds","ArraySort"];
haxe_ds_ArraySort.sort = function(a,cmp) {
	haxe_ds_ArraySort.rec(a,cmp,0,a.length);
};
haxe_ds_ArraySort.rec = function(a,cmp,from,to) {
	var middle = from + to >> 1;
	if(to - from < 12) {
		if(to <= from) {
			return;
		}
		var _g1 = from + 1;
		var _g = to;
		while(_g1 < _g) {
			var i = _g1++;
			var j = i;
			while(j > from) {
				if(cmp(a[j],a[j - 1]) < 0) {
					haxe_ds_ArraySort.swap(a,j - 1,j);
				} else {
					break;
				}
				--j;
			}
		}
		return;
	}
	haxe_ds_ArraySort.rec(a,cmp,from,middle);
	haxe_ds_ArraySort.rec(a,cmp,middle,to);
	haxe_ds_ArraySort.doMerge(a,cmp,from,middle,to,middle - from,to - middle);
};
haxe_ds_ArraySort.doMerge = function(a,cmp,from,pivot,to,len1,len2) {
	var first_cut;
	var second_cut;
	var len11;
	var len22;
	var new_mid;
	if(len1 == 0 || len2 == 0) {
		return;
	}
	if(len1 + len2 == 2) {
		if(cmp(a[pivot],a[from]) < 0) {
			haxe_ds_ArraySort.swap(a,pivot,from);
		}
		return;
	}
	if(len1 > len2) {
		len11 = len1 >> 1;
		first_cut = from + len11;
		second_cut = haxe_ds_ArraySort.lower(a,cmp,pivot,to,first_cut);
		len22 = second_cut - pivot;
	} else {
		len22 = len2 >> 1;
		second_cut = pivot + len22;
		first_cut = haxe_ds_ArraySort.upper(a,cmp,from,pivot,second_cut);
		len11 = first_cut - from;
	}
	haxe_ds_ArraySort.rotate(a,cmp,first_cut,pivot,second_cut);
	new_mid = first_cut + len22;
	haxe_ds_ArraySort.doMerge(a,cmp,from,first_cut,new_mid,len11,len22);
	haxe_ds_ArraySort.doMerge(a,cmp,new_mid,second_cut,to,len1 - len11,len2 - len22);
};
haxe_ds_ArraySort.rotate = function(a,cmp,from,mid,to) {
	var n;
	if(from == mid || mid == to) {
		return;
	}
	n = haxe_ds_ArraySort.gcd(to - from,mid - from);
	while(n-- != 0) {
		var val = a[from + n];
		var shift = mid - from;
		var p1 = from + n;
		var p2 = from + n + shift;
		while(p2 != from + n) {
			a[p1] = a[p2];
			p1 = p2;
			if(to - p2 > shift) {
				p2 += shift;
			} else {
				p2 = from + (shift - (to - p2));
			}
		}
		a[p1] = val;
	}
};
haxe_ds_ArraySort.gcd = function(m,n) {
	while(n != 0) {
		var t = m % n;
		m = n;
		n = t;
	}
	return m;
};
haxe_ds_ArraySort.upper = function(a,cmp,from,to,val) {
	var len = to - from;
	var half;
	var mid;
	while(len > 0) {
		half = len >> 1;
		mid = from + half;
		if(cmp(a[val],a[mid]) < 0) {
			len = half;
		} else {
			from = mid + 1;
			len = len - half - 1;
		}
	}
	return from;
};
haxe_ds_ArraySort.lower = function(a,cmp,from,to,val) {
	var len = to - from;
	var half;
	var mid;
	while(len > 0) {
		half = len >> 1;
		mid = from + half;
		if(cmp(a[mid],a[val]) < 0) {
			from = mid + 1;
			len = len - half - 1;
		} else {
			len = half;
		}
	}
	return from;
};
haxe_ds_ArraySort.swap = function(a,i,j) {
	var tmp = a[i];
	a[i] = a[j];
	a[j] = tmp;
};
var haxe_ds_IntMap = function() {
	this.h = { };
};
$hxClasses["haxe.ds.IntMap"] = haxe_ds_IntMap;
haxe_ds_IntMap.__name__ = ["haxe","ds","IntMap"];
haxe_ds_IntMap.__interfaces__ = [haxe_IMap];
haxe_ds_IntMap.prototype = {
	h: null
	,set: function(key,value) {
		this.h[key] = value;
	}
	,get: function(key) {
		return this.h[key];
	}
	,exists: function(key) {
		return this.h.hasOwnProperty(key);
	}
	,remove: function(key) {
		if(!this.h.hasOwnProperty(key)) {
			return false;
		}
		delete(this.h[key]);
		return true;
	}
	,keys: function() {
		var a = [];
		for( var key in this.h ) if(this.h.hasOwnProperty(key)) {
			a.push(key | 0);
		}
		return HxOverrides.iter(a);
	}
	,iterator: function() {
		return { ref : this.h, it : this.keys(), hasNext : function() {
			return this.it.hasNext();
		}, next : function() {
			var i = this.it.next();
			return this.ref[i];
		}};
	}
	,__class__: haxe_ds_IntMap
};
var haxe_ds_Option = $hxClasses["haxe.ds.Option"] = { __ename__ : ["haxe","ds","Option"], __constructs__ : ["Some","None"] };
haxe_ds_Option.Some = function(v) { var $x = ["Some",0,v]; $x.__enum__ = haxe_ds_Option; $x.toString = $estr; return $x; };
haxe_ds_Option.None = ["None",1];
haxe_ds_Option.None.toString = $estr;
haxe_ds_Option.None.__enum__ = haxe_ds_Option;
var haxe_ds__$StringMap_StringMapIterator = function(map,keys) {
	this.map = map;
	this.keys = keys;
	this.index = 0;
	this.count = keys.length;
};
$hxClasses["haxe.ds._StringMap.StringMapIterator"] = haxe_ds__$StringMap_StringMapIterator;
haxe_ds__$StringMap_StringMapIterator.__name__ = ["haxe","ds","_StringMap","StringMapIterator"];
haxe_ds__$StringMap_StringMapIterator.prototype = {
	map: null
	,keys: null
	,index: null
	,count: null
	,hasNext: function() {
		return this.index < this.count;
	}
	,next: function() {
		var _this = this.map;
		var key = this.keys[this.index++];
		if(__map_reserved[key] != null) {
			return _this.getReserved(key);
		} else {
			return _this.h[key];
		}
	}
	,__class__: haxe_ds__$StringMap_StringMapIterator
};
var haxe_ds_StringMap = function() {
	this.h = { };
};
$hxClasses["haxe.ds.StringMap"] = haxe_ds_StringMap;
haxe_ds_StringMap.__name__ = ["haxe","ds","StringMap"];
haxe_ds_StringMap.__interfaces__ = [haxe_IMap];
haxe_ds_StringMap.prototype = {
	h: null
	,rh: null
	,set: function(key,value) {
		if(__map_reserved[key] != null) {
			this.setReserved(key,value);
		} else {
			this.h[key] = value;
		}
	}
	,get: function(key) {
		if(__map_reserved[key] != null) {
			return this.getReserved(key);
		}
		return this.h[key];
	}
	,exists: function(key) {
		if(__map_reserved[key] != null) {
			return this.existsReserved(key);
		}
		return this.h.hasOwnProperty(key);
	}
	,setReserved: function(key,value) {
		if(this.rh == null) {
			this.rh = { };
		}
		this.rh["$" + key] = value;
	}
	,getReserved: function(key) {
		if(this.rh == null) {
			return null;
		} else {
			return this.rh["$" + key];
		}
	}
	,existsReserved: function(key) {
		if(this.rh == null) {
			return false;
		}
		return this.rh.hasOwnProperty("$" + key);
	}
	,remove: function(key) {
		if(__map_reserved[key] != null) {
			key = "$" + key;
			if(this.rh == null || !this.rh.hasOwnProperty(key)) {
				return false;
			}
			delete(this.rh[key]);
			return true;
		} else {
			if(!this.h.hasOwnProperty(key)) {
				return false;
			}
			delete(this.h[key]);
			return true;
		}
	}
	,keys: function() {
		return HxOverrides.iter(this.arrayKeys());
	}
	,arrayKeys: function() {
		var out = [];
		for( var key in this.h ) {
		if(this.h.hasOwnProperty(key)) {
			out.push(key);
		}
		}
		if(this.rh != null) {
			for( var key in this.rh ) {
			if(key.charCodeAt(0) == 36) {
				out.push(key.substr(1));
			}
			}
		}
		return out;
	}
	,__class__: haxe_ds_StringMap
};
var haxe_io_BytesBuffer = function() {
	this.b = [];
};
$hxClasses["haxe.io.BytesBuffer"] = haxe_io_BytesBuffer;
haxe_io_BytesBuffer.__name__ = ["haxe","io","BytesBuffer"];
haxe_io_BytesBuffer.prototype = {
	b: null
	,getBytes: function() {
		var bytes = new haxe_io_Bytes(new Uint8Array(this.b).buffer);
		this.b = null;
		return bytes;
	}
	,__class__: haxe_io_BytesBuffer
};
var haxe_io_BytesInput = function(b,pos,len) {
	if(pos == null) {
		pos = 0;
	}
	if(len == null) {
		len = b.length - pos;
	}
	if(pos < 0 || len < 0 || pos + len > b.length) {
		throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
	}
	this.b = b.b;
	this.pos = pos;
	this.len = len;
	this.totlen = len;
};
$hxClasses["haxe.io.BytesInput"] = haxe_io_BytesInput;
haxe_io_BytesInput.__name__ = ["haxe","io","BytesInput"];
haxe_io_BytesInput.__super__ = haxe_io_Input;
haxe_io_BytesInput.prototype = $extend(haxe_io_Input.prototype,{
	b: null
	,pos: null
	,len: null
	,totlen: null
	,readByte: function() {
		if(this.len == 0) {
			throw new js__$Boot_HaxeError(new haxe_io_Eof());
		}
		this.len--;
		return this.b[this.pos++];
	}
	,readBytes: function(buf,pos,len) {
		if(pos < 0 || len < 0 || pos + len > buf.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		if(this.len == 0 && len > 0) {
			throw new js__$Boot_HaxeError(new haxe_io_Eof());
		}
		if(this.len < len) {
			len = this.len;
		}
		var b1 = this.b;
		var b2 = buf.b;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i = _g1++;
			b2[pos + i] = b1[this.pos + i];
		}
		this.pos += len;
		this.len -= len;
		return len;
	}
	,__class__: haxe_io_BytesInput
});
var haxe_io_BytesOutput = function() {
	this.b = new haxe_io_BytesBuffer();
};
$hxClasses["haxe.io.BytesOutput"] = haxe_io_BytesOutput;
haxe_io_BytesOutput.__name__ = ["haxe","io","BytesOutput"];
haxe_io_BytesOutput.__super__ = haxe_io_Output;
haxe_io_BytesOutput.prototype = $extend(haxe_io_Output.prototype,{
	b: null
	,writeByte: function(c) {
		this.b.b.push(c);
	}
	,writeBytes: function(buf,pos,len) {
		var _this = this.b;
		if(pos < 0 || len < 0 || pos + len > buf.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		var b1 = _this.b;
		var b2 = buf.b;
		var _g1 = pos;
		var _g = pos + len;
		while(_g1 < _g) {
			var i = _g1++;
			_this.b.push(b2[i]);
		}
		return len;
	}
	,getBytes: function() {
		return this.b.getBytes();
	}
	,__class__: haxe_io_BytesOutput
});
var haxe_io_Eof = function() {
};
$hxClasses["haxe.io.Eof"] = haxe_io_Eof;
haxe_io_Eof.__name__ = ["haxe","io","Eof"];
haxe_io_Eof.prototype = {
	toString: function() {
		return "Eof";
	}
	,__class__: haxe_io_Eof
};
var haxe_io_Error = $hxClasses["haxe.io.Error"] = { __ename__ : ["haxe","io","Error"], __constructs__ : ["Blocked","Overflow","OutsideBounds","Custom"] };
haxe_io_Error.Blocked = ["Blocked",0];
haxe_io_Error.Blocked.toString = $estr;
haxe_io_Error.Blocked.__enum__ = haxe_io_Error;
haxe_io_Error.Overflow = ["Overflow",1];
haxe_io_Error.Overflow.toString = $estr;
haxe_io_Error.Overflow.__enum__ = haxe_io_Error;
haxe_io_Error.OutsideBounds = ["OutsideBounds",2];
haxe_io_Error.OutsideBounds.toString = $estr;
haxe_io_Error.OutsideBounds.__enum__ = haxe_io_Error;
haxe_io_Error.Custom = function(e) { var $x = ["Custom",3,e]; $x.__enum__ = haxe_io_Error; $x.toString = $estr; return $x; };
var haxe_io_FPHelper = function() { };
$hxClasses["haxe.io.FPHelper"] = haxe_io_FPHelper;
haxe_io_FPHelper.__name__ = ["haxe","io","FPHelper"];
haxe_io_FPHelper.i32ToFloat = function(i) {
	var sign = 1 - (i >>> 31 << 1);
	var exp = i >>> 23 & 255;
	var sig = i & 8388607;
	if(sig == 0 && exp == 0) {
		return 0.0;
	}
	return sign * (1 + Math.pow(2,-23) * sig) * Math.pow(2,exp - 127);
};
haxe_io_FPHelper.floatToI32 = function(f) {
	if(f == 0) {
		return 0;
	}
	var af = f < 0 ? -f : f;
	var exp = Math.floor(Math.log(af) / 0.6931471805599453);
	if(exp < -127) {
		exp = -127;
	} else if(exp > 128) {
		exp = 128;
	}
	var sig = Math.round((af / Math.pow(2,exp) - 1) * 8388608);
	if(sig == 8388608 && exp < 128) {
		sig = 0;
		++exp;
	}
	return (f < 0 ? -2147483648 : 0) | exp + 127 << 23 | sig;
};
haxe_io_FPHelper.i64ToDouble = function(low,high) {
	var sign = 1 - (high >>> 31 << 1);
	var exp = (high >> 20 & 2047) - 1023;
	var sig = (high & 1048575) * 4294967296. + (low >>> 31) * 2147483648. + (low & 2147483647);
	if(sig == 0 && exp == -1023) {
		return 0.0;
	}
	return sign * (1.0 + Math.pow(2,-52) * sig) * Math.pow(2,exp);
};
haxe_io_FPHelper.doubleToI64 = function(v) {
	var i64 = haxe_io_FPHelper.i64tmp;
	if(v == 0) {
		i64.low = 0;
		i64.high = 0;
	} else if(!isFinite(v)) {
		if(v > 0) {
			i64.low = 0;
			i64.high = 2146435072;
		} else {
			i64.low = 0;
			i64.high = -1048576;
		}
	} else {
		var av = v < 0 ? -v : v;
		var exp = Math.floor(Math.log(av) / 0.6931471805599453);
		var sig = Math.round((av / Math.pow(2,exp) - 1) * 4503599627370496.);
		var sig_l = sig | 0;
		var sig_h = sig / 4294967296.0 | 0;
		i64.low = sig_l;
		i64.high = (v < 0 ? -2147483648 : 0) | exp + 1023 << 20 | sig_h;
	}
	return i64;
};
var haxe_io_Path = function(path) {
	switch(path) {
	case ".":case "..":
		this.dir = path;
		this.file = "";
		return;
	}
	var c1 = path.lastIndexOf("/");
	var c2 = path.lastIndexOf("\\");
	if(c1 < c2) {
		this.dir = HxOverrides.substr(path,0,c2);
		path = HxOverrides.substr(path,c2 + 1,null);
		this.backslash = true;
	} else if(c2 < c1) {
		this.dir = HxOverrides.substr(path,0,c1);
		path = HxOverrides.substr(path,c1 + 1,null);
	} else {
		this.dir = null;
	}
	var cp = path.lastIndexOf(".");
	if(cp != -1) {
		this.ext = HxOverrides.substr(path,cp + 1,null);
		this.file = HxOverrides.substr(path,0,cp);
	} else {
		this.ext = null;
		this.file = path;
	}
};
$hxClasses["haxe.io.Path"] = haxe_io_Path;
haxe_io_Path.__name__ = ["haxe","io","Path"];
haxe_io_Path.withoutExtension = function(path) {
	var s = new haxe_io_Path(path);
	s.ext = null;
	return s.toString();
};
haxe_io_Path.withoutDirectory = function(path) {
	var s = new haxe_io_Path(path);
	s.dir = null;
	return s.toString();
};
haxe_io_Path.directory = function(path) {
	var s = new haxe_io_Path(path);
	if(s.dir == null) {
		return "";
	}
	return s.dir;
};
haxe_io_Path.extension = function(path) {
	var s = new haxe_io_Path(path);
	if(s.ext == null) {
		return "";
	}
	return s.ext;
};
haxe_io_Path.prototype = {
	dir: null
	,file: null
	,ext: null
	,backslash: null
	,toString: function() {
		return (this.dir == null ? "" : this.dir + (this.backslash ? "\\" : "/")) + this.file + (this.ext == null ? "" : "." + this.ext);
	}
	,__class__: haxe_io_Path
};
var haxe_xml__$Fast_NodeAccess = function(x) {
	this.__x = x;
};
$hxClasses["haxe.xml._Fast.NodeAccess"] = haxe_xml__$Fast_NodeAccess;
haxe_xml__$Fast_NodeAccess.__name__ = ["haxe","xml","_Fast","NodeAccess"];
haxe_xml__$Fast_NodeAccess.prototype = {
	__x: null
	,__class__: haxe_xml__$Fast_NodeAccess
};
var haxe_xml__$Fast_AttribAccess = function(x) {
	this.__x = x;
};
$hxClasses["haxe.xml._Fast.AttribAccess"] = haxe_xml__$Fast_AttribAccess;
haxe_xml__$Fast_AttribAccess.__name__ = ["haxe","xml","_Fast","AttribAccess"];
haxe_xml__$Fast_AttribAccess.prototype = {
	__x: null
	,resolve: function(name) {
		if(this.__x.nodeType == Xml.Document) {
			throw new js__$Boot_HaxeError("Cannot access document attribute " + name);
		}
		var v = this.__x.get(name);
		if(v == null) {
			var _this = this.__x;
			if(_this.nodeType != Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + _this.nodeType);
			}
			throw new js__$Boot_HaxeError(_this.nodeName + " is missing attribute " + name);
		}
		return v;
	}
	,__class__: haxe_xml__$Fast_AttribAccess
};
var haxe_xml__$Fast_HasAttribAccess = function(x) {
	this.__x = x;
};
$hxClasses["haxe.xml._Fast.HasAttribAccess"] = haxe_xml__$Fast_HasAttribAccess;
haxe_xml__$Fast_HasAttribAccess.__name__ = ["haxe","xml","_Fast","HasAttribAccess"];
haxe_xml__$Fast_HasAttribAccess.prototype = {
	__x: null
	,resolve: function(name) {
		if(this.__x.nodeType == Xml.Document) {
			throw new js__$Boot_HaxeError("Cannot access document attribute " + name);
		}
		return this.__x.exists(name);
	}
	,__class__: haxe_xml__$Fast_HasAttribAccess
};
var haxe_xml__$Fast_HasNodeAccess = function(x) {
	this.__x = x;
};
$hxClasses["haxe.xml._Fast.HasNodeAccess"] = haxe_xml__$Fast_HasNodeAccess;
haxe_xml__$Fast_HasNodeAccess.__name__ = ["haxe","xml","_Fast","HasNodeAccess"];
haxe_xml__$Fast_HasNodeAccess.prototype = {
	__x: null
	,__class__: haxe_xml__$Fast_HasNodeAccess
};
var haxe_xml__$Fast_NodeListAccess = function(x) {
	this.__x = x;
};
$hxClasses["haxe.xml._Fast.NodeListAccess"] = haxe_xml__$Fast_NodeListAccess;
haxe_xml__$Fast_NodeListAccess.__name__ = ["haxe","xml","_Fast","NodeListAccess"];
haxe_xml__$Fast_NodeListAccess.prototype = {
	__x: null
	,__class__: haxe_xml__$Fast_NodeListAccess
};
var haxe_xml_Fast = function(x) {
	if(x.nodeType != Xml.Document && x.nodeType != Xml.Element) {
		throw new js__$Boot_HaxeError("Invalid nodeType " + x.nodeType);
	}
	this.x = x;
	this.node = new haxe_xml__$Fast_NodeAccess(x);
	this.nodes = new haxe_xml__$Fast_NodeListAccess(x);
	this.att = new haxe_xml__$Fast_AttribAccess(x);
	this.has = new haxe_xml__$Fast_HasAttribAccess(x);
	this.hasNode = new haxe_xml__$Fast_HasNodeAccess(x);
};
$hxClasses["haxe.xml.Fast"] = haxe_xml_Fast;
haxe_xml_Fast.__name__ = ["haxe","xml","Fast"];
haxe_xml_Fast.prototype = {
	x: null
	,node: null
	,nodes: null
	,att: null
	,has: null
	,hasNode: null
	,get_name: function() {
		if(this.x.nodeType == Xml.Document) {
			return "Document";
		} else {
			var _this = this.x;
			if(_this.nodeType != Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + _this.nodeType);
			}
			return _this.nodeName;
		}
	}
	,get_innerData: function() {
		var _this = this.x;
		if(_this.nodeType != Xml.Document && _this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + _this.nodeType);
		}
		var it = HxOverrides.iter(_this.children);
		if(!it.hasNext()) {
			throw new js__$Boot_HaxeError(this.get_name() + " does not have data");
		}
		var v = it.next();
		if(it.hasNext()) {
			var n = it.next();
			var tmp;
			if(v.nodeType == Xml.PCData && n.nodeType == Xml.CData) {
				if(v.nodeType == Xml.Document || v.nodeType == Xml.Element) {
					throw new js__$Boot_HaxeError("Bad node type, unexpected " + v.nodeType);
				}
				tmp = StringTools.trim(v.nodeValue) == "";
			} else {
				tmp = false;
			}
			if(tmp) {
				if(!it.hasNext()) {
					if(n.nodeType == Xml.Document || n.nodeType == Xml.Element) {
						throw new js__$Boot_HaxeError("Bad node type, unexpected " + n.nodeType);
					}
					return n.nodeValue;
				}
				var n2 = it.next();
				var tmp1;
				var tmp2;
				if(n2.nodeType == Xml.PCData) {
					if(n2.nodeType == Xml.Document || n2.nodeType == Xml.Element) {
						throw new js__$Boot_HaxeError("Bad node type, unexpected " + n2.nodeType);
					}
					tmp2 = StringTools.trim(n2.nodeValue) == "";
				} else {
					tmp2 = false;
				}
				if(tmp2) {
					tmp1 = !it.hasNext();
				} else {
					tmp1 = false;
				}
				if(tmp1) {
					if(n.nodeType == Xml.Document || n.nodeType == Xml.Element) {
						throw new js__$Boot_HaxeError("Bad node type, unexpected " + n.nodeType);
					}
					return n.nodeValue;
				}
			}
			throw new js__$Boot_HaxeError(this.get_name() + " does not only have data");
		}
		if(v.nodeType != Xml.PCData && v.nodeType != Xml.CData) {
			throw new js__$Boot_HaxeError(this.get_name() + " does not have data");
		}
		if(v.nodeType == Xml.Document || v.nodeType == Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, unexpected " + v.nodeType);
		}
		return v.nodeValue;
	}
	,get_innerHTML: function() {
		var s_b = "";
		var _this = this.x;
		if(_this.nodeType != Xml.Document && _this.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + _this.nodeType);
		}
		var x = HxOverrides.iter(_this.children);
		while(x.hasNext()) {
			var x1 = x.next();
			s_b += Std.string(haxe_xml_Printer.print(x1));
		}
		return s_b;
	}
	,get_elements: function() {
		var it = this.x.elements();
		return { hasNext : $bind(it,it.hasNext), next : function() {
			var x = it.next();
			if(x == null) {
				return null;
			}
			return new haxe_xml_Fast(x);
		}};
	}
	,__class__: haxe_xml_Fast
	,__properties__: {get_elements:"get_elements",get_innerHTML:"get_innerHTML",get_innerData:"get_innerData",get_name:"get_name"}
};
var haxe_xml_XmlParserException = function(message,xml,position) {
	this.xml = xml;
	this.message = message;
	this.position = position;
	this.lineNumber = 1;
	this.positionAtLine = 0;
	var _g1 = 0;
	var _g = position;
	while(_g1 < _g) {
		var i = _g1++;
		var c = xml.charCodeAt(i);
		if(c == 10) {
			this.lineNumber++;
			this.positionAtLine = 0;
		} else if(c != 13) {
			this.positionAtLine++;
		}
	}
};
$hxClasses["haxe.xml.XmlParserException"] = haxe_xml_XmlParserException;
haxe_xml_XmlParserException.__name__ = ["haxe","xml","XmlParserException"];
haxe_xml_XmlParserException.prototype = {
	message: null
	,lineNumber: null
	,positionAtLine: null
	,position: null
	,xml: null
	,toString: function() {
		return Type.getClassName(js_Boot.getClass(this)) + ": " + this.message + " at line " + this.lineNumber + " char " + this.positionAtLine;
	}
	,__class__: haxe_xml_XmlParserException
};
var haxe_xml_Parser = function() { };
$hxClasses["haxe.xml.Parser"] = haxe_xml_Parser;
haxe_xml_Parser.__name__ = ["haxe","xml","Parser"];
haxe_xml_Parser.parse = function(str,strict) {
	if(strict == null) {
		strict = false;
	}
	var doc = Xml.createDocument();
	haxe_xml_Parser.doParse(str,strict,0,doc);
	return doc;
};
haxe_xml_Parser.doParse = function(str,strict,p,parent) {
	if(p == null) {
		p = 0;
	}
	var xml = null;
	var state = 1;
	var next = 1;
	var aname = null;
	var start = 0;
	var nsubs = 0;
	var nbrackets = 0;
	var c = str.charCodeAt(p);
	var buf = new StringBuf();
	var escapeNext = 1;
	var attrValQuote = -1;
	while(c == c) {
		switch(state) {
		case 0:
			switch(c) {
			case 9:case 10:case 13:case 32:
				break;
			default:
				state = next;
				continue;
			}
			break;
		case 1:
			if(c == 60) {
				state = 0;
				next = 2;
			} else {
				start = p;
				state = 13;
				continue;
			}
			break;
		case 2:
			switch(c) {
			case 33:
				if(str.charCodeAt(p + 1) == 91) {
					p += 2;
					if(HxOverrides.substr(str,p,6).toUpperCase() != "CDATA[") {
						throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected <![CDATA[",str,p));
					}
					p += 5;
					state = 17;
					start = p + 1;
				} else if(str.charCodeAt(p + 1) == 68 || str.charCodeAt(p + 1) == 100) {
					if(HxOverrides.substr(str,p + 2,6).toUpperCase() != "OCTYPE") {
						throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected <!DOCTYPE",str,p));
					}
					p += 8;
					state = 16;
					start = p + 1;
				} else if(str.charCodeAt(p + 1) != 45 || str.charCodeAt(p + 2) != 45) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected <!--",str,p));
				} else {
					p += 2;
					state = 15;
					start = p + 1;
				}
				break;
			case 47:
				if(parent == null) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected node name",str,p));
				}
				start = p + 1;
				state = 0;
				next = 10;
				break;
			case 63:
				state = 14;
				start = p;
				break;
			default:
				state = 3;
				start = p;
				continue;
			}
			break;
		case 3:
			if(!(c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45)) {
				if(p == start) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected node name",str,p));
				}
				xml = Xml.createElement(HxOverrides.substr(str,start,p - start));
				parent.addChild(xml);
				++nsubs;
				state = 0;
				next = 4;
				continue;
			}
			break;
		case 4:
			switch(c) {
			case 47:
				state = 11;
				break;
			case 62:
				state = 9;
				break;
			default:
				state = 5;
				start = p;
				continue;
			}
			break;
		case 5:
			if(!(c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45)) {
				var tmp;
				if(start == p) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected attribute name",str,p));
				}
				tmp = HxOverrides.substr(str,start,p - start);
				aname = tmp;
				if(xml.exists(aname)) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Duplicate attribute [" + aname + "]",str,p));
				}
				state = 0;
				next = 6;
				continue;
			}
			break;
		case 6:
			if(c == 61) {
				state = 0;
				next = 7;
			} else {
				throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected =",str,p));
			}
			break;
		case 7:
			switch(c) {
			case 34:case 39:
				buf = new StringBuf();
				state = 8;
				start = p + 1;
				attrValQuote = c;
				break;
			default:
				throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected \"",str,p));
			}
			break;
		case 8:
			switch(c) {
			case 38:
				var len = p - start;
				buf.b += len == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len);
				state = 18;
				escapeNext = 8;
				start = p + 1;
				break;
			case 60:case 62:
				if(strict) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Invalid unescaped " + String.fromCharCode(c) + " in attribute value",str,p));
				} else if(c == attrValQuote) {
					var len1 = p - start;
					buf.b += len1 == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len1);
					var val = buf.b;
					buf = new StringBuf();
					xml.set(aname,val);
					state = 0;
					next = 4;
				}
				break;
			default:
				if(c == attrValQuote) {
					var len2 = p - start;
					buf.b += len2 == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len2);
					var val1 = buf.b;
					buf = new StringBuf();
					xml.set(aname,val1);
					state = 0;
					next = 4;
				}
			}
			break;
		case 9:
			p = haxe_xml_Parser.doParse(str,strict,p,xml);
			start = p;
			state = 1;
			break;
		case 10:
			if(!(c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45)) {
				if(start == p) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected node name",str,p));
				}
				var v = HxOverrides.substr(str,start,p - start);
				if(parent.nodeType != Xml.Element) {
					throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + parent.nodeType);
				}
				if(v != parent.nodeName) {
					if(parent.nodeType != Xml.Element) {
						throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + parent.nodeType);
					}
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected </" + parent.nodeName + ">",str,p));
				}
				state = 0;
				next = 12;
				continue;
			}
			break;
		case 11:
			if(c == 62) {
				state = 1;
			} else {
				throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected >",str,p));
			}
			break;
		case 12:
			if(c == 62) {
				if(nsubs == 0) {
					parent.addChild(Xml.createPCData(""));
				}
				return p;
			} else {
				throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Expected >",str,p));
			}
			break;
		case 13:
			if(c == 60) {
				var len3 = p - start;
				buf.b += len3 == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len3);
				var child = Xml.createPCData(buf.b);
				buf = new StringBuf();
				parent.addChild(child);
				++nsubs;
				state = 0;
				next = 2;
			} else if(c == 38) {
				var len4 = p - start;
				buf.b += len4 == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len4);
				state = 18;
				escapeNext = 13;
				start = p + 1;
			}
			break;
		case 14:
			if(c == 63 && str.charCodeAt(p + 1) == 62) {
				++p;
				var str1 = HxOverrides.substr(str,start + 1,p - start - 2);
				parent.addChild(Xml.createProcessingInstruction(str1));
				++nsubs;
				state = 1;
			}
			break;
		case 15:
			if(c == 45 && str.charCodeAt(p + 1) == 45 && str.charCodeAt(p + 2) == 62) {
				parent.addChild(Xml.createComment(HxOverrides.substr(str,start,p - start)));
				++nsubs;
				p += 2;
				state = 1;
			}
			break;
		case 16:
			if(c == 91) {
				++nbrackets;
			} else if(c == 93) {
				--nbrackets;
			} else if(c == 62 && nbrackets == 0) {
				parent.addChild(Xml.createDocType(HxOverrides.substr(str,start,p - start)));
				++nsubs;
				state = 1;
			}
			break;
		case 17:
			if(c == 93 && str.charCodeAt(p + 1) == 93 && str.charCodeAt(p + 2) == 62) {
				var child1 = Xml.createCData(HxOverrides.substr(str,start,p - start));
				parent.addChild(child1);
				++nsubs;
				p += 2;
				state = 1;
			}
			break;
		case 18:
			if(c == 59) {
				var s = HxOverrides.substr(str,start,p - start);
				if(s.charCodeAt(0) == 35) {
					var c1 = s.charCodeAt(1) == 120 ? Std.parseInt("0" + HxOverrides.substr(s,1,s.length - 1)) : Std.parseInt(HxOverrides.substr(s,1,s.length - 1));
					buf.b += String.fromCharCode(c1);
				} else {
					var _this = haxe_xml_Parser.escapes;
					if(!(__map_reserved[s] != null ? _this.existsReserved(s) : _this.h.hasOwnProperty(s))) {
						if(strict) {
							throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Undefined entity: " + s,str,p));
						}
						buf.b += Std.string("&" + s + ";");
					} else {
						var _this1 = haxe_xml_Parser.escapes;
						var x = __map_reserved[s] != null ? _this1.getReserved(s) : _this1.h[s];
						buf.b += Std.string(x);
					}
				}
				start = p + 1;
				state = escapeNext;
			} else if(!(c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45) && c != 35) {
				if(strict) {
					throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Invalid character in entity: " + String.fromCharCode(c),str,p));
				}
				buf.b += "&";
				var len5 = p - start;
				buf.b += len5 == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len5);
				start = p--;
				state = escapeNext;
			}
			break;
		}
		c = str.charCodeAt(++p);
	}
	if(state == 1) {
		start = p;
		state = 13;
	}
	if(state == 13) {
		if(p != start || nsubs == 0) {
			var len6 = p - start;
			buf.b += len6 == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len6);
			parent.addChild(Xml.createPCData(buf.b));
			++nsubs;
		}
		return p;
	}
	if(!strict && state == 18 && escapeNext == 13) {
		buf.b += "&";
		var len7 = p - start;
		buf.b += len7 == null ? HxOverrides.substr(str,start,null) : HxOverrides.substr(str,start,len7);
		parent.addChild(Xml.createPCData(buf.b));
		++nsubs;
		return p;
	}
	throw new js__$Boot_HaxeError(new haxe_xml_XmlParserException("Unexpected end",str,p));
};
var haxe_xml_Printer = function(pretty) {
	this.output = new StringBuf();
	this.pretty = pretty;
};
$hxClasses["haxe.xml.Printer"] = haxe_xml_Printer;
haxe_xml_Printer.__name__ = ["haxe","xml","Printer"];
haxe_xml_Printer.print = function(xml,pretty) {
	if(pretty == null) {
		pretty = false;
	}
	var printer = new haxe_xml_Printer(pretty);
	printer.writeNode(xml,"");
	return printer.output.b;
};
haxe_xml_Printer.prototype = {
	output: null
	,pretty: null
	,writeNode: function(value,tabs) {
		var _g = value.nodeType;
		switch(_g) {
		case 0:
			this.output.b += Std.string(tabs + "<");
			if(value.nodeType != Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + value.nodeType);
			}
			this.output.b += Std.string(value.nodeName);
			var attribute = value.attributes();
			while(attribute.hasNext()) {
				var attribute1 = attribute.next();
				this.output.b += Std.string(" " + attribute1 + "=\"");
				var input = StringTools.htmlEscape(value.get(attribute1),true);
				this.output.b += Std.string(input);
				this.output.b += "\"";
			}
			if(this.hasChildren(value)) {
				this.output.b += ">";
				if(this.pretty) {
					this.output.b += "\n";
				}
				if(value.nodeType != Xml.Document && value.nodeType != Xml.Element) {
					throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + value.nodeType);
				}
				var child = HxOverrides.iter(value.children);
				while(child.hasNext()) {
					var child1 = child.next();
					this.writeNode(child1,this.pretty ? tabs + "\t" : tabs);
				}
				this.output.b += Std.string(tabs + "</");
				if(value.nodeType != Xml.Element) {
					throw new js__$Boot_HaxeError("Bad node type, expected Element but found " + value.nodeType);
				}
				this.output.b += Std.string(value.nodeName);
				this.output.b += ">";
				if(this.pretty) {
					this.output.b += "\n";
				}
			} else {
				this.output.b += "/>";
				if(this.pretty) {
					this.output.b += "\n";
				}
			}
			break;
		case 1:
			if(value.nodeType == Xml.Document || value.nodeType == Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, unexpected " + value.nodeType);
			}
			var nodeValue = value.nodeValue;
			if(nodeValue.length != 0) {
				var input1 = tabs + StringTools.htmlEscape(nodeValue);
				this.output.b += Std.string(input1);
				if(this.pretty) {
					this.output.b += "\n";
				}
			}
			break;
		case 2:
			this.output.b += Std.string(tabs + "<![CDATA[");
			if(value.nodeType == Xml.Document || value.nodeType == Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, unexpected " + value.nodeType);
			}
			var input2 = StringTools.trim(value.nodeValue);
			this.output.b += Std.string(input2);
			this.output.b += "]]>";
			if(this.pretty) {
				this.output.b += "\n";
			}
			break;
		case 3:
			if(value.nodeType == Xml.Document || value.nodeType == Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, unexpected " + value.nodeType);
			}
			var commentContent = value.nodeValue;
			var _this_r = new RegExp("[\n\r\t]+","g".split("u").join(""));
			commentContent = commentContent.replace(_this_r,"");
			commentContent = "<!--" + commentContent + "-->";
			this.output.b += tabs == null ? "null" : "" + tabs;
			var input3 = StringTools.trim(commentContent);
			this.output.b += Std.string(input3);
			if(this.pretty) {
				this.output.b += "\n";
			}
			break;
		case 4:
			if(value.nodeType == Xml.Document || value.nodeType == Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, unexpected " + value.nodeType);
			}
			this.output.b += Std.string("<!DOCTYPE " + value.nodeValue + ">");
			if(this.pretty) {
				this.output.b += "\n";
			}
			break;
		case 5:
			if(value.nodeType == Xml.Document || value.nodeType == Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, unexpected " + value.nodeType);
			}
			this.output.b += Std.string("<?" + value.nodeValue + "?>");
			if(this.pretty) {
				this.output.b += "\n";
			}
			break;
		case 6:
			if(value.nodeType != Xml.Document && value.nodeType != Xml.Element) {
				throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + value.nodeType);
			}
			var child2 = HxOverrides.iter(value.children);
			while(child2.hasNext()) {
				var child3 = child2.next();
				this.writeNode(child3,tabs);
			}
			break;
		}
	}
	,hasChildren: function(value) {
		if(value.nodeType != Xml.Document && value.nodeType != Xml.Element) {
			throw new js__$Boot_HaxeError("Bad node type, expected Element or Document but found " + value.nodeType);
		}
		var child = HxOverrides.iter(value.children);
		while(child.hasNext()) {
			var child1 = child.next();
			var _g = child1.nodeType;
			switch(_g) {
			case 0:case 1:
				return true;
			case 2:case 3:
				if(child1.nodeType == Xml.Document || child1.nodeType == Xml.Element) {
					throw new js__$Boot_HaxeError("Bad node type, unexpected " + child1.nodeType);
				}
				if(StringTools.ltrim(child1.nodeValue).length != 0) {
					return true;
				}
				break;
			default:
			}
		}
		return false;
	}
	,__class__: haxe_xml_Printer
};
var haxe_zip_Compress = function() { };
$hxClasses["haxe.zip.Compress"] = haxe_zip_Compress;
haxe_zip_Compress.__name__ = ["haxe","zip","Compress"];
haxe_zip_Compress.run = function(s,level) {
	throw new js__$Boot_HaxeError("Not implemented for this platform");
};
var haxe_zip_Huffman = $hxClasses["haxe.zip.Huffman"] = { __ename__ : ["haxe","zip","Huffman"], __constructs__ : ["Found","NeedBit","NeedBits"] };
haxe_zip_Huffman.Found = function(i) { var $x = ["Found",0,i]; $x.__enum__ = haxe_zip_Huffman; $x.toString = $estr; return $x; };
haxe_zip_Huffman.NeedBit = function(left,right) { var $x = ["NeedBit",1,left,right]; $x.__enum__ = haxe_zip_Huffman; $x.toString = $estr; return $x; };
haxe_zip_Huffman.NeedBits = function(n,table) { var $x = ["NeedBits",2,n,table]; $x.__enum__ = haxe_zip_Huffman; $x.toString = $estr; return $x; };
var haxe_zip_HuffTools = function() {
};
$hxClasses["haxe.zip.HuffTools"] = haxe_zip_HuffTools;
haxe_zip_HuffTools.__name__ = ["haxe","zip","HuffTools"];
haxe_zip_HuffTools.prototype = {
	treeDepth: function(t) {
		switch(t[1]) {
		case 0:
			return 0;
		case 1:
			var b = t[3];
			var a = t[2];
			var da = this.treeDepth(a);
			var db = this.treeDepth(b);
			return 1 + (da < db ? da : db);
		case 2:
			throw new js__$Boot_HaxeError("assert");
			break;
		}
	}
	,treeCompress: function(t) {
		var d = this.treeDepth(t);
		if(d == 0) {
			return t;
		}
		if(d == 1) {
			if(t[1] == 1) {
				var b = t[3];
				var a = t[2];
				return haxe_zip_Huffman.NeedBit(this.treeCompress(a),this.treeCompress(b));
			} else {
				throw new js__$Boot_HaxeError("assert");
			}
		}
		var size = 1 << d;
		var table = [];
		var _g1 = 0;
		var _g = size;
		while(_g1 < _g) {
			var i = _g1++;
			table.push(haxe_zip_Huffman.Found(-1));
		}
		this.treeWalk(table,0,0,d,t);
		return haxe_zip_Huffman.NeedBits(d,table);
	}
	,treeWalk: function(table,p,cd,d,t) {
		if(t[1] == 1) {
			var b = t[3];
			var a = t[2];
			if(d > 0) {
				this.treeWalk(table,p,cd + 1,d - 1,a);
				this.treeWalk(table,p | 1 << cd,cd + 1,d - 1,b);
			} else {
				table[p] = this.treeCompress(t);
			}
		} else {
			table[p] = this.treeCompress(t);
		}
	}
	,treeMake: function(bits,maxbits,v,len) {
		if(len > maxbits) {
			throw new js__$Boot_HaxeError("Invalid huffman");
		}
		var idx = v << 5 | len;
		if(bits.h.hasOwnProperty(idx)) {
			return haxe_zip_Huffman.Found(bits.h[idx]);
		}
		v <<= 1;
		++len;
		return haxe_zip_Huffman.NeedBit(this.treeMake(bits,maxbits,v,len),this.treeMake(bits,maxbits,v | 1,len));
	}
	,make: function(lengths,pos,nlengths,maxbits) {
		var counts = [];
		var tmp = [];
		if(maxbits > 32) {
			throw new js__$Boot_HaxeError("Invalid huffman");
		}
		var _g1 = 0;
		var _g = maxbits;
		while(_g1 < _g) {
			var i = _g1++;
			counts.push(0);
			tmp.push(0);
		}
		var _g11 = 0;
		var _g2 = nlengths;
		while(_g11 < _g2) {
			var i1 = _g11++;
			var p = lengths[i1 + pos];
			if(p >= maxbits) {
				throw new js__$Boot_HaxeError("Invalid huffman");
			}
			counts[p]++;
		}
		var code = 0;
		var _g12 = 1;
		var _g3 = maxbits - 1;
		while(_g12 < _g3) {
			var i2 = _g12++;
			code = code + counts[i2] << 1;
			tmp[i2] = code;
		}
		var bits = new haxe_ds_IntMap();
		var _g13 = 0;
		var _g4 = nlengths;
		while(_g13 < _g4) {
			var i3 = _g13++;
			var l = lengths[i3 + pos];
			if(l != 0) {
				var n = tmp[l - 1];
				tmp[l - 1] = n + 1;
				bits.h[n << 5 | l] = i3;
			}
		}
		return this.treeCompress(haxe_zip_Huffman.NeedBit(this.treeMake(bits,maxbits,0,1),this.treeMake(bits,maxbits,1,1)));
	}
	,__class__: haxe_zip_HuffTools
};
var haxe_zip__$InflateImpl_Window = function(hasCrc) {
	this.buffer = new haxe_io_Bytes(new ArrayBuffer(65536));
	this.pos = 0;
	if(hasCrc) {
		this.crc = new haxe_crypto_Adler32();
	}
};
$hxClasses["haxe.zip._InflateImpl.Window"] = haxe_zip__$InflateImpl_Window;
haxe_zip__$InflateImpl_Window.__name__ = ["haxe","zip","_InflateImpl","Window"];
haxe_zip__$InflateImpl_Window.prototype = {
	buffer: null
	,pos: null
	,crc: null
	,slide: function() {
		if(this.crc != null) {
			this.crc.update(this.buffer,0,32768);
		}
		var b = new haxe_io_Bytes(new ArrayBuffer(65536));
		this.pos -= 32768;
		b.blit(0,this.buffer,32768,this.pos);
		this.buffer = b;
	}
	,addBytes: function(b,p,len) {
		if(this.pos + len > 65536) {
			this.slide();
		}
		this.buffer.blit(this.pos,b,p,len);
		this.pos += len;
	}
	,addByte: function(c) {
		if(this.pos == 65536) {
			this.slide();
		}
		this.buffer.b[this.pos] = c & 255;
		this.pos++;
	}
	,getLastChar: function() {
		return this.buffer.b[this.pos - 1];
	}
	,available: function() {
		return this.pos;
	}
	,checksum: function() {
		if(this.crc != null) {
			this.crc.update(this.buffer,0,this.pos);
		}
		return this.crc;
	}
	,__class__: haxe_zip__$InflateImpl_Window
};
var haxe_zip__$InflateImpl_State = $hxClasses["haxe.zip._InflateImpl.State"] = { __ename__ : ["haxe","zip","_InflateImpl","State"], __constructs__ : ["Head","Block","CData","Flat","Crc","Dist","DistOne","Done"] };
haxe_zip__$InflateImpl_State.Head = ["Head",0];
haxe_zip__$InflateImpl_State.Head.toString = $estr;
haxe_zip__$InflateImpl_State.Head.__enum__ = haxe_zip__$InflateImpl_State;
haxe_zip__$InflateImpl_State.Block = ["Block",1];
haxe_zip__$InflateImpl_State.Block.toString = $estr;
haxe_zip__$InflateImpl_State.Block.__enum__ = haxe_zip__$InflateImpl_State;
haxe_zip__$InflateImpl_State.CData = ["CData",2];
haxe_zip__$InflateImpl_State.CData.toString = $estr;
haxe_zip__$InflateImpl_State.CData.__enum__ = haxe_zip__$InflateImpl_State;
haxe_zip__$InflateImpl_State.Flat = ["Flat",3];
haxe_zip__$InflateImpl_State.Flat.toString = $estr;
haxe_zip__$InflateImpl_State.Flat.__enum__ = haxe_zip__$InflateImpl_State;
haxe_zip__$InflateImpl_State.Crc = ["Crc",4];
haxe_zip__$InflateImpl_State.Crc.toString = $estr;
haxe_zip__$InflateImpl_State.Crc.__enum__ = haxe_zip__$InflateImpl_State;
haxe_zip__$InflateImpl_State.Dist = ["Dist",5];
haxe_zip__$InflateImpl_State.Dist.toString = $estr;
haxe_zip__$InflateImpl_State.Dist.__enum__ = haxe_zip__$InflateImpl_State;
haxe_zip__$InflateImpl_State.DistOne = ["DistOne",6];
haxe_zip__$InflateImpl_State.DistOne.toString = $estr;
haxe_zip__$InflateImpl_State.DistOne.__enum__ = haxe_zip__$InflateImpl_State;
haxe_zip__$InflateImpl_State.Done = ["Done",7];
haxe_zip__$InflateImpl_State.Done.toString = $estr;
haxe_zip__$InflateImpl_State.Done.__enum__ = haxe_zip__$InflateImpl_State;
var haxe_zip_InflateImpl = function(i,header,crc) {
	if(crc == null) {
		crc = true;
	}
	if(header == null) {
		header = true;
	}
	this["final"] = false;
	this.htools = new haxe_zip_HuffTools();
	this.huffman = this.buildFixedHuffman();
	this.huffdist = null;
	this.len = 0;
	this.dist = 0;
	this.state = header ? haxe_zip__$InflateImpl_State.Head : haxe_zip__$InflateImpl_State.Block;
	this.input = i;
	this.bits = 0;
	this.nbits = 0;
	this.needed = 0;
	this.output = null;
	this.outpos = 0;
	this.lengths = [];
	var _g = 0;
	while(_g < 19) {
		var i1 = _g++;
		this.lengths.push(-1);
	}
	this.window = new haxe_zip__$InflateImpl_Window(crc);
};
$hxClasses["haxe.zip.InflateImpl"] = haxe_zip_InflateImpl;
haxe_zip_InflateImpl.__name__ = ["haxe","zip","InflateImpl"];
haxe_zip_InflateImpl.run = function(i,bufsize) {
	if(bufsize == null) {
		bufsize = 65536;
	}
	var buf = new haxe_io_Bytes(new ArrayBuffer(bufsize));
	var output = new haxe_io_BytesBuffer();
	var inflate = new haxe_zip_InflateImpl(i);
	while(true) {
		var len = inflate.readBytes(buf,0,bufsize);
		if(len < 0 || len > buf.length) {
			throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);
		}
		var b1 = output.b;
		var b2 = buf.b;
		var _g1 = 0;
		var _g = len;
		while(_g1 < _g) {
			var i1 = _g1++;
			output.b.push(b2[i1]);
		}
		if(len < bufsize) {
			break;
		}
	}
	return output.getBytes();
};
haxe_zip_InflateImpl.prototype = {
	nbits: null
	,bits: null
	,state: null
	,'final': null
	,huffman: null
	,huffdist: null
	,htools: null
	,len: null
	,dist: null
	,needed: null
	,output: null
	,outpos: null
	,input: null
	,lengths: null
	,window: null
	,buildFixedHuffman: function() {
		if(haxe_zip_InflateImpl.FIXED_HUFFMAN != null) {
			return haxe_zip_InflateImpl.FIXED_HUFFMAN;
		}
		var a = [];
		var _g = 0;
		while(_g < 288) {
			var n = _g++;
			a.push(n <= 143 ? 8 : n <= 255 ? 9 : n <= 279 ? 7 : 8);
		}
		haxe_zip_InflateImpl.FIXED_HUFFMAN = this.htools.make(a,0,288,10);
		return haxe_zip_InflateImpl.FIXED_HUFFMAN;
	}
	,readBytes: function(b,pos,len) {
		this.needed = len;
		this.outpos = pos;
		this.output = b;
		if(len > 0) {
			while(this.inflateLoop()) {
			}
		}
		return len - this.needed;
	}
	,getBits: function(n) {
		while(this.nbits < n) {
			this.bits |= this.input.readByte() << this.nbits;
			this.nbits += 8;
		}
		var b = this.bits & (1 << n) - 1;
		this.nbits -= n;
		this.bits >>= n;
		return b;
	}
	,getBit: function() {
		if(this.nbits == 0) {
			this.nbits = 8;
			this.bits = this.input.readByte();
		}
		var b = (this.bits & 1) == 1;
		this.nbits--;
		this.bits >>= 1;
		return b;
	}
	,getRevBits: function(n) {
		if(n == 0) {
			return 0;
		} else if(this.getBit()) {
			return 1 << n - 1 | this.getRevBits(n - 1);
		} else {
			return this.getRevBits(n - 1);
		}
	}
	,resetBits: function() {
		this.bits = 0;
		this.nbits = 0;
	}
	,addBytes: function(b,p,len) {
		this.window.addBytes(b,p,len);
		this.output.blit(this.outpos,b,p,len);
		this.needed -= len;
		this.outpos += len;
	}
	,addByte: function(b) {
		this.window.addByte(b);
		this.output.b[this.outpos] = b & 255;
		this.needed--;
		this.outpos++;
	}
	,addDistOne: function(n) {
		var c = this.window.getLastChar();
		var _g1 = 0;
		var _g = n;
		while(_g1 < _g) {
			var i = _g1++;
			this.addByte(c);
		}
	}
	,addDist: function(d,len) {
		this.addBytes(this.window.buffer,this.window.pos - d,len);
	}
	,applyHuffman: function(h) {
		switch(h[1]) {
		case 0:
			var n = h[2];
			return n;
		case 1:
			var b = h[3];
			var a = h[2];
			return this.applyHuffman(this.getBit() ? b : a);
		case 2:
			var tbl = h[3];
			var n1 = h[2];
			return this.applyHuffman(tbl[this.getBits(n1)]);
		}
	}
	,inflateLengths: function(a,max) {
		var i = 0;
		var prev = 0;
		while(i < max) {
			var n = this.applyHuffman(this.huffman);
			switch(n) {
			case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:
				prev = n;
				a[i] = n;
				++i;
				break;
			case 16:
				var end = i + 3 + this.getBits(2);
				if(end > max) {
					throw new js__$Boot_HaxeError("Invalid data");
				}
				while(i < end) {
					a[i] = prev;
					++i;
				}
				break;
			case 17:
				i += 3 + this.getBits(3);
				if(i > max) {
					throw new js__$Boot_HaxeError("Invalid data");
				}
				break;
			case 18:
				i += 11 + this.getBits(7);
				if(i > max) {
					throw new js__$Boot_HaxeError("Invalid data");
				}
				break;
			default:
				throw new js__$Boot_HaxeError("Invalid data");
			}
		}
	}
	,inflateLoop: function() {
		var _g = this.state;
		switch(_g[1]) {
		case 0:
			var cmf = this.input.readByte();
			var cm = cmf & 15;
			var cinfo = cmf >> 4;
			if(cm != 8) {
				throw new js__$Boot_HaxeError("Invalid data");
			}
			var flg = this.input.readByte();
			var fdict = (flg & 32) != 0;
			if(((cmf << 8) + flg) % 31 != 0) {
				throw new js__$Boot_HaxeError("Invalid data");
			}
			if(fdict) {
				throw new js__$Boot_HaxeError("Unsupported dictionary");
			}
			this.state = haxe_zip__$InflateImpl_State.Block;
			return true;
		case 1:
			this["final"] = this.getBit();
			var _g1 = this.getBits(2);
			switch(_g1) {
			case 0:
				this.len = this.input.readUInt16();
				var nlen = this.input.readUInt16();
				if(nlen != 65535 - this.len) {
					throw new js__$Boot_HaxeError("Invalid data");
				}
				this.state = haxe_zip__$InflateImpl_State.Flat;
				var r = this.inflateLoop();
				this.resetBits();
				return r;
			case 1:
				this.huffman = this.buildFixedHuffman();
				this.huffdist = null;
				this.state = haxe_zip__$InflateImpl_State.CData;
				return true;
			case 2:
				var hlit = this.getBits(5) + 257;
				var hdist = this.getBits(5) + 1;
				var hclen = this.getBits(4) + 4;
				var _g11 = 0;
				var _g2 = hclen;
				while(_g11 < _g2) {
					var i = _g11++;
					this.lengths[haxe_zip_InflateImpl.CODE_LENGTHS_POS[i]] = this.getBits(3);
				}
				var _g3 = hclen;
				while(_g3 < 19) {
					var i1 = _g3++;
					this.lengths[haxe_zip_InflateImpl.CODE_LENGTHS_POS[i1]] = 0;
				}
				this.huffman = this.htools.make(this.lengths,0,19,8);
				var lengths = [];
				var _g12 = 0;
				var _g4 = hlit + hdist;
				while(_g12 < _g4) {
					var i2 = _g12++;
					lengths.push(0);
				}
				this.inflateLengths(lengths,hlit + hdist);
				this.huffdist = this.htools.make(lengths,hlit,hdist,16);
				this.huffman = this.htools.make(lengths,0,hlit,16);
				this.state = haxe_zip__$InflateImpl_State.CData;
				return true;
			default:
				throw new js__$Boot_HaxeError("Invalid data");
			}
			break;
		case 2:
			var n = this.applyHuffman(this.huffman);
			if(n < 256) {
				this.addByte(n);
				return this.needed > 0;
			} else if(n == 256) {
				this.state = this["final"] ? haxe_zip__$InflateImpl_State.Crc : haxe_zip__$InflateImpl_State.Block;
				return true;
			} else {
				n -= 257;
				var extra_bits = haxe_zip_InflateImpl.LEN_EXTRA_BITS_TBL[n];
				if(extra_bits == -1) {
					throw new js__$Boot_HaxeError("Invalid data");
				}
				this.len = haxe_zip_InflateImpl.LEN_BASE_VAL_TBL[n] + this.getBits(extra_bits);
				var dist_code = this.huffdist == null ? this.getRevBits(5) : this.applyHuffman(this.huffdist);
				extra_bits = haxe_zip_InflateImpl.DIST_EXTRA_BITS_TBL[dist_code];
				if(extra_bits == -1) {
					throw new js__$Boot_HaxeError("Invalid data");
				}
				this.dist = haxe_zip_InflateImpl.DIST_BASE_VAL_TBL[dist_code] + this.getBits(extra_bits);
				if(this.dist > this.window.available()) {
					throw new js__$Boot_HaxeError("Invalid data");
				}
				this.state = this.dist == 1 ? haxe_zip__$InflateImpl_State.DistOne : haxe_zip__$InflateImpl_State.Dist;
				return true;
			}
			break;
		case 3:
			var rlen = this.len < this.needed ? this.len : this.needed;
			var bytes = this.input.read(rlen);
			this.len -= rlen;
			this.addBytes(bytes,0,rlen);
			if(this.len == 0) {
				this.state = this["final"] ? haxe_zip__$InflateImpl_State.Crc : haxe_zip__$InflateImpl_State.Block;
			}
			return this.needed > 0;
		case 4:
			var calc = this.window.checksum();
			if(calc == null) {
				this.state = haxe_zip__$InflateImpl_State.Done;
				return true;
			}
			var crc = haxe_crypto_Adler32.read(this.input);
			if(!calc.equals(crc)) {
				throw new js__$Boot_HaxeError("Invalid CRC");
			}
			this.state = haxe_zip__$InflateImpl_State.Done;
			return true;
		case 5:
			while(this.len > 0 && this.needed > 0) {
				var rdist = this.len < this.dist ? this.len : this.dist;
				var rlen1 = this.needed < rdist ? this.needed : rdist;
				this.addDist(this.dist,rlen1);
				this.len -= rlen1;
			}
			if(this.len == 0) {
				this.state = haxe_zip__$InflateImpl_State.CData;
			}
			return this.needed > 0;
		case 6:
			var rlen2 = this.len < this.needed ? this.len : this.needed;
			this.addDistOne(rlen2);
			this.len -= rlen2;
			if(this.len == 0) {
				this.state = haxe_zip__$InflateImpl_State.CData;
			}
			return this.needed > 0;
		case 7:
			return false;
		}
	}
	,__class__: haxe_zip_InflateImpl
};
var haxe_zip_Uncompress = function() { };
$hxClasses["haxe.zip.Uncompress"] = haxe_zip_Uncompress;
haxe_zip_Uncompress.__name__ = ["haxe","zip","Uncompress"];
haxe_zip_Uncompress.run = function(src,bufsize) {
	return haxe_zip_InflateImpl.run(new haxe_io_BytesInput(src),bufsize);
};
var js__$Boot_HaxeError = function(val) {
	Error.call(this);
	this.val = val;
	this.message = String(val);
	if(Error.captureStackTrace) {
		Error.captureStackTrace(this,js__$Boot_HaxeError);
	}
};
$hxClasses["js._Boot.HaxeError"] = js__$Boot_HaxeError;
js__$Boot_HaxeError.__name__ = ["js","_Boot","HaxeError"];
js__$Boot_HaxeError.wrap = function(val) {
	if((val instanceof Error)) {
		return val;
	} else {
		return new js__$Boot_HaxeError(val);
	}
};
js__$Boot_HaxeError.__super__ = Error;
js__$Boot_HaxeError.prototype = $extend(Error.prototype,{
	val: null
	,__class__: js__$Boot_HaxeError
});
var js_Boot = function() { };
$hxClasses["js.Boot"] = js_Boot;
js_Boot.__name__ = ["js","Boot"];
js_Boot.__unhtml = function(s) {
	return s.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;");
};
js_Boot.__trace = function(v,i) {
	var msg = i != null ? i.fileName + ":" + i.lineNumber + ": " : "";
	msg += js_Boot.__string_rec(v,"");
	if(i != null && i.customParams != null) {
		var _g = 0;
		var _g1 = i.customParams;
		while(_g < _g1.length) {
			var v1 = _g1[_g];
			++_g;
			msg += "," + js_Boot.__string_rec(v1,"");
		}
	}
	var d;
	var tmp;
	if(typeof(document) != "undefined") {
		d = document.getElementById("haxe:trace");
		tmp = d != null;
	} else {
		tmp = false;
	}
	if(tmp) {
		d.innerHTML += js_Boot.__unhtml(msg) + "<br/>";
	} else if(typeof console != "undefined" && console.log != null) {
		console.log(msg);
	}
};
js_Boot.getClass = function(o) {
	if((o instanceof Array) && o.__enum__ == null) {
		return Array;
	} else {
		var cl = o.__class__;
		if(cl != null) {
			return cl;
		}
		var name = js_Boot.__nativeClassName(o);
		if(name != null) {
			return js_Boot.__resolveNativeClass(name);
		}
		return null;
	}
};
js_Boot.__string_rec = function(o,s) {
	if(o == null) {
		return "null";
	}
	if(s.length >= 5) {
		return "<...>";
	}
	var t = typeof(o);
	if(t == "function" && (o.__name__ || o.__ename__)) {
		t = "object";
	}
	switch(t) {
	case "function":
		return "<function>";
	case "object":
		if(o instanceof Array) {
			if(o.__enum__) {
				if(o.length == 2) {
					return o[0];
				}
				var str = o[0] + "(";
				s += "\t";
				var _g1 = 2;
				var _g = o.length;
				while(_g1 < _g) {
					var i = _g1++;
					if(i != 2) {
						str += "," + js_Boot.__string_rec(o[i],s);
					} else {
						str += js_Boot.__string_rec(o[i],s);
					}
				}
				return str + ")";
			}
			var l = o.length;
			var i1;
			var str1 = "[";
			s += "\t";
			var _g11 = 0;
			var _g2 = l;
			while(_g11 < _g2) {
				var i2 = _g11++;
				str1 += (i2 > 0 ? "," : "") + js_Boot.__string_rec(o[i2],s);
			}
			str1 += "]";
			return str1;
		}
		var tostr;
		try {
			tostr = o.toString;
		} catch( e ) {
			haxe_CallStack.lastException = e;
			return "???";
		}
		if(tostr != null && tostr != Object.toString && typeof(tostr) == "function") {
			var s2 = o.toString();
			if(s2 != "[object Object]") {
				return s2;
			}
		}
		var k = null;
		var str2 = "{\n";
		s += "\t";
		var hasp = o.hasOwnProperty != null;
		for( var k in o ) {
		if(hasp && !o.hasOwnProperty(k)) {
			continue;
		}
		if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") {
			continue;
		}
		if(str2.length != 2) {
			str2 += ", \n";
		}
		str2 += s + k + " : " + js_Boot.__string_rec(o[k],s);
		}
		s = s.substring(1);
		str2 += "\n" + s + "}";
		return str2;
	case "string":
		return o;
	default:
		return String(o);
	}
};
js_Boot.__interfLoop = function(cc,cl) {
	if(cc == null) {
		return false;
	}
	if(cc == cl) {
		return true;
	}
	var intf = cc.__interfaces__;
	if(intf != null) {
		var _g1 = 0;
		var _g = intf.length;
		while(_g1 < _g) {
			var i = _g1++;
			var i1 = intf[i];
			if(i1 == cl || js_Boot.__interfLoop(i1,cl)) {
				return true;
			}
		}
	}
	return js_Boot.__interfLoop(cc.__super__,cl);
};
js_Boot.__instanceof = function(o,cl) {
	if(cl == null) {
		return false;
	}
	switch(cl) {
	case Array:
		if((o instanceof Array)) {
			return o.__enum__ == null;
		} else {
			return false;
		}
		break;
	case Bool:
		return typeof(o) == "boolean";
	case Dynamic:
		return true;
	case Float:
		return typeof(o) == "number";
	case Int:
		if(typeof(o) == "number") {
			return (o|0) === o;
		} else {
			return false;
		}
		break;
	case String:
		return typeof(o) == "string";
	default:
		if(o != null) {
			if(typeof(cl) == "function") {
				if(o instanceof cl) {
					return true;
				}
				if(js_Boot.__interfLoop(js_Boot.getClass(o),cl)) {
					return true;
				}
			} else if(typeof(cl) == "object" && js_Boot.__isNativeObj(cl)) {
				if(o instanceof cl) {
					return true;
				}
			}
		} else {
			return false;
		}
		if(cl == Class ? o.__name__ != null : false) {
			return true;
		}
		if(cl == Enum ? o.__ename__ != null : false) {
			return true;
		}
		return o.__enum__ == cl;
	}
};
js_Boot.__cast = function(o,t) {
	if(js_Boot.__instanceof(o,t)) {
		return o;
	} else {
		throw new js__$Boot_HaxeError("Cannot cast " + Std.string(o) + " to " + Std.string(t));
	}
};
js_Boot.__nativeClassName = function(o) {
	var name = js_Boot.__toStr.call(o).slice(8,-1);
	if(name == "Object" || name == "Function" || name == "Math" || name == "JSON") {
		return null;
	}
	return name;
};
js_Boot.__isNativeObj = function(o) {
	return js_Boot.__nativeClassName(o) != null;
};
js_Boot.__resolveNativeClass = function(name) {
	return $global[name];
};
var js_Browser = function() { };
$hxClasses["js.Browser"] = js_Browser;
js_Browser.__name__ = ["js","Browser"];
js_Browser.__properties__ = {get_supported:"get_supported",get_console:"get_console",get_navigator:"get_navigator",get_location:"get_location",get_document:"get_document",get_window:"get_window"};
js_Browser.get_window = function() {
	return window;
};
js_Browser.get_document = function() {
	return window.document;
};
js_Browser.get_location = function() {
	return window.location;
};
js_Browser.get_navigator = function() {
	return window.navigator;
};
js_Browser.get_console = function() {
	return window.console;
};
js_Browser.get_supported = function() {
	return typeof window != "undefined";
};
js_Browser.getLocalStorage = function() {
	try {
		var s = window.localStorage;
		s.getItem("");
		return s;
	} catch( e ) {
		haxe_CallStack.lastException = e;
		return null;
	}
};
js_Browser.getSessionStorage = function() {
	try {
		var s = window.sessionStorage;
		s.getItem("");
		return s;
	} catch( e ) {
		haxe_CallStack.lastException = e;
		return null;
	}
};
js_Browser.createXMLHttpRequest = function() {
	if(typeof XMLHttpRequest != "undefined") {
		return new XMLHttpRequest();
	}
	if(typeof ActiveXObject != "undefined") {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	throw new js__$Boot_HaxeError("Unable to create XMLHttpRequest object.");
};
js_Browser.alert = function(v) {
	window.alert(js_Boot.__string_rec(v,""));
};
var js_node_ChildProcess = require("child_process");
var js_node_Fs = require("fs");
var js_node_Path = require("path");
var js_node_buffer_Buffer = require("buffer").Buffer;
var js_node_buffer__$Buffer_Helper = function() { };
$hxClasses["js.node.buffer._Buffer.Helper"] = js_node_buffer__$Buffer_Helper;
js_node_buffer__$Buffer_Helper.__name__ = ["js","node","buffer","_Buffer","Helper"];
js_node_buffer__$Buffer_Helper.bytesOfBuffer = function(b) {
	var o = Object.create(haxe_io_Bytes.prototype);
	o.length = b.byteLength;
	o.b = b;
	b.bufferValue = b;
	b.hxBytes = o;
	b.bytes = b;
	return o;
};
var lime__$backend_native_NativeApplication = function(parent) {
	this.windowEventInfo = new lime__$backend_native__$NativeApplication_WindowEventInfo();
	this.unusedTouchesPool = new List();
	this.touchEventInfo = new lime__$backend_native__$NativeApplication_TouchEventInfo();
	this.textEventInfo = new lime__$backend_native__$NativeApplication_TextEventInfo();
	this.sensorEventInfo = new lime__$backend_native__$NativeApplication_SensorEventInfo();
	this.renderEventInfo = new lime__$backend_native__$NativeApplication_RenderEventInfo(0);
	this.mouseEventInfo = new lime__$backend_native__$NativeApplication_MouseEventInfo();
	this.keyEventInfo = new lime__$backend_native__$NativeApplication_KeyEventInfo();
	this.joystickEventInfo = new lime__$backend_native__$NativeApplication_JoystickEventInfo();
	this.gamepadEventInfo = new lime__$backend_native__$NativeApplication_GamepadEventInfo();
	this.dropEventInfo = new lime__$backend_native__$NativeApplication_DropEventInfo();
	this.currentTouches = new haxe_ds_IntMap();
	this.clipboardEventInfo = new lime__$backend_native__$NativeApplication_ClipboardEventInfo();
	this.applicationEventInfo = new lime__$backend_native__$NativeApplication_ApplicationEventInfo(0);
	this.parent = parent;
	this.frameRate = 60;
	this.toggleFullscreen = true;
	lime_media_AudioManager.init();
};
$hxClasses["lime._backend.native.NativeApplication"] = lime__$backend_native_NativeApplication;
lime__$backend_native_NativeApplication.__name__ = ["lime","_backend","native","NativeApplication"];
lime__$backend_native_NativeApplication.prototype = {
	applicationEventInfo: null
	,clipboardEventInfo: null
	,currentTouches: null
	,dropEventInfo: null
	,gamepadEventInfo: null
	,joystickEventInfo: null
	,keyEventInfo: null
	,mouseEventInfo: null
	,renderEventInfo: null
	,sensorEventInfo: null
	,textEventInfo: null
	,touchEventInfo: null
	,unusedTouchesPool: null
	,windowEventInfo: null
	,handle: null
	,frameRate: null
	,parent: null
	,toggleFullscreen: null
	,create: function(config) {
	}
	,exec: function() {
		return 0;
	}
	,exit: function() {
		lime_media_AudioManager.shutdown();
	}
	,getFrameRate: function() {
		return this.frameRate;
	}
	,handleApplicationEvent: function() {
		var _g = this.applicationEventInfo.type;
		switch(_g) {
		case 0:
			this.updateTimer();
			this.parent.onUpdate.dispatch(this.applicationEventInfo.deltaTime);
			break;
		case 1:
			break;
		}
	}
	,handleClipboardEvent: function() {
		lime_system_Clipboard.__update();
	}
	,handleDropEvent: function() {
		var _g = 0;
		var _g1 = this.parent.__windows;
		while(_g < _g1.length) {
			var $window = _g1[_g];
			++_g;
			$window.onDropFile.dispatch(this.dropEventInfo.file);
		}
	}
	,handleGamepadEvent: function() {
		var _g = this.gamepadEventInfo.type;
		switch(_g) {
		case 0:
			var gamepad = lime_ui_Gamepad.devices.get(this.gamepadEventInfo.id);
			if(gamepad != null) {
				gamepad.onAxisMove.dispatch(this.gamepadEventInfo.axis,this.gamepadEventInfo.value);
			}
			break;
		case 1:
			var gamepad1 = lime_ui_Gamepad.devices.get(this.gamepadEventInfo.id);
			if(gamepad1 != null) {
				gamepad1.onButtonDown.dispatch(this.gamepadEventInfo.button);
			}
			break;
		case 2:
			var gamepad2 = lime_ui_Gamepad.devices.get(this.gamepadEventInfo.id);
			if(gamepad2 != null) {
				gamepad2.onButtonUp.dispatch(this.gamepadEventInfo.button);
			}
			break;
		case 3:
			lime_ui_Gamepad.__connect(this.gamepadEventInfo.id);
			break;
		case 4:
			lime_ui_Gamepad.__disconnect(this.gamepadEventInfo.id);
			break;
		}
	}
	,handleJoystickEvent: function() {
		var _g = this.joystickEventInfo.type;
		switch(_g) {
		case 0:
			var joystick = lime_ui_Joystick.devices.get(this.joystickEventInfo.id);
			if(joystick != null) {
				joystick.onAxisMove.dispatch(this.joystickEventInfo.index,this.joystickEventInfo.x);
			}
			break;
		case 1:
			var joystick1 = lime_ui_Joystick.devices.get(this.joystickEventInfo.id);
			if(joystick1 != null) {
				joystick1.onHatMove.dispatch(this.joystickEventInfo.index,this.joystickEventInfo.value);
			}
			break;
		case 2:
			var joystick2 = lime_ui_Joystick.devices.get(this.joystickEventInfo.id);
			if(joystick2 != null) {
				joystick2.onTrackballMove.dispatch(this.joystickEventInfo.index,this.joystickEventInfo.x,this.joystickEventInfo.y);
			}
			break;
		case 3:
			var joystick3 = lime_ui_Joystick.devices.get(this.joystickEventInfo.id);
			if(joystick3 != null) {
				joystick3.onButtonDown.dispatch(this.joystickEventInfo.index);
			}
			break;
		case 4:
			var joystick4 = lime_ui_Joystick.devices.get(this.joystickEventInfo.id);
			if(joystick4 != null) {
				joystick4.onButtonUp.dispatch(this.joystickEventInfo.index);
			}
			break;
		case 5:
			lime_ui_Joystick.__connect(this.joystickEventInfo.id);
			break;
		case 6:
			lime_ui_Joystick.__disconnect(this.joystickEventInfo.id);
			break;
		}
	}
	,handleKeyEvent: function() {
		var $window = this.parent.windowByID.h[this.keyEventInfo.windowID];
		if($window != null) {
			var type = this.keyEventInfo.type;
			var keyCode = this.keyEventInfo.keyCode;
			var modifier = this.keyEventInfo.modifier;
			switch(type) {
			case 0:
				$window.onKeyDown.dispatch(keyCode,modifier);
				break;
			case 1:
				$window.onKeyUp.dispatch(keyCode,modifier);
				break;
			}
		}
	}
	,handleMouseEvent: function() {
		var $window = this.parent.windowByID.h[this.mouseEventInfo.windowID];
		if($window != null) {
			var _g = this.mouseEventInfo.type;
			switch(_g) {
			case 0:
				$window.onMouseDown.dispatch(this.mouseEventInfo.x,this.mouseEventInfo.y,this.mouseEventInfo.button);
				break;
			case 1:
				$window.onMouseUp.dispatch(this.mouseEventInfo.x,this.mouseEventInfo.y,this.mouseEventInfo.button);
				break;
			case 2:
				$window.onMouseMove.dispatch(this.mouseEventInfo.x,this.mouseEventInfo.y);
				$window.onMouseMoveRelative.dispatch(this.mouseEventInfo.movementX,this.mouseEventInfo.movementY);
				break;
			case 3:
				$window.onMouseWheel.dispatch(this.mouseEventInfo.x,this.mouseEventInfo.y);
				break;
			default:
			}
		}
	}
	,handleRenderEvent: function() {
		var _g = 0;
		var _g1 = this.parent.__renderers;
		while(_g < _g1.length) {
			var renderer = _g1[_g];
			++_g;
			if(renderer == null) {
				continue;
			}
			this.parent.renderer = renderer;
			var _g2 = this.renderEventInfo.type;
			switch(_g2) {
			case 0:
				if(renderer.context != null) {
					renderer.render();
					renderer.onRender.dispatch();
					if(!renderer.onRender.canceled) {
						renderer.flip();
					}
				}
				break;
			case 1:
				if(renderer.backend.useHardware && renderer.context != null) {
					var _g21 = renderer.context;
					if(_g21[1] == 0) {
						var gl = _g21[2];
					}
					renderer.context = null;
					renderer.onContextLost.dispatch();
				}
				break;
			case 2:
				if(renderer.backend.useHardware) {
					lime_graphics_opengl_GL.context = new lime_graphics_GLRenderContext();
					renderer.context = lime_graphics_RenderContext.OPENGL(lime_graphics_opengl_GL.context);
					renderer.onContextRestored.dispatch(renderer.context);
				}
				break;
			}
		}
	}
	,handleSensorEvent: function() {
		var sensor = lime_system_Sensor.sensorByID.h[this.sensorEventInfo.id];
		if(sensor != null) {
			sensor.onUpdate.dispatch(this.sensorEventInfo.x,this.sensorEventInfo.y,this.sensorEventInfo.z);
		}
	}
	,handleTextEvent: function() {
		var $window = this.parent.windowByID.h[this.textEventInfo.windowID];
		if($window != null) {
			var _g = this.textEventInfo.type;
			switch(_g) {
			case 0:
				$window.onTextInput.dispatch(this.textEventInfo.text);
				break;
			case 1:
				$window.onTextEdit.dispatch(this.textEventInfo.text,this.textEventInfo.start,this.textEventInfo.length);
				break;
			default:
			}
		}
	}
	,handleTouchEvent: function() {
		var _g = this.touchEventInfo.type;
		switch(_g) {
		case 0:
			var touch = this.unusedTouchesPool.pop();
			if(touch == null) {
				touch = new lime_ui_Touch(this.touchEventInfo.x,this.touchEventInfo.y,this.touchEventInfo.id,this.touchEventInfo.dx,this.touchEventInfo.dy,this.touchEventInfo.pressure,this.touchEventInfo.device);
			} else {
				touch.x = this.touchEventInfo.x;
				touch.y = this.touchEventInfo.y;
				touch.id = this.touchEventInfo.id;
				touch.dx = this.touchEventInfo.dx;
				touch.dy = this.touchEventInfo.dy;
				touch.pressure = this.touchEventInfo.pressure;
				touch.device = this.touchEventInfo.device;
			}
			this.currentTouches.set(touch.id,touch);
			lime_ui_Touch.onStart.dispatch(touch);
			break;
		case 1:
			var touch1 = this.currentTouches.get(this.touchEventInfo.id);
			if(touch1 != null) {
				touch1.x = this.touchEventInfo.x;
				touch1.y = this.touchEventInfo.y;
				touch1.dx = this.touchEventInfo.dx;
				touch1.dy = this.touchEventInfo.dy;
				touch1.pressure = this.touchEventInfo.pressure;
				lime_ui_Touch.onEnd.dispatch(touch1);
				this.currentTouches.remove(this.touchEventInfo.id);
				this.unusedTouchesPool.add(touch1);
			}
			break;
		case 2:
			var touch2 = this.currentTouches.get(this.touchEventInfo.id);
			if(touch2 != null) {
				touch2.x = this.touchEventInfo.x;
				touch2.y = this.touchEventInfo.y;
				touch2.dx = this.touchEventInfo.dx;
				touch2.dy = this.touchEventInfo.dy;
				touch2.pressure = this.touchEventInfo.pressure;
				lime_ui_Touch.onMove.dispatch(touch2);
			}
			break;
		default:
		}
	}
	,handleWindowEvent: function() {
		var $window = this.parent.windowByID.h[this.windowEventInfo.windowID];
		if($window != null) {
			var _g = this.windowEventInfo.type;
			switch(_g) {
			case 0:
				$window.onActivate.dispatch();
				lime_media_AudioManager.resume();
				break;
			case 1:
				$window.close();
				break;
			case 2:
				$window.onDeactivate.dispatch();
				lime_media_AudioManager.suspend();
				break;
			case 3:
				$window.onEnter.dispatch();
				break;
			case 4:
				$window.onFocusIn.dispatch();
				break;
			case 5:
				$window.onFocusOut.dispatch();
				break;
			case 6:
				$window.onLeave.dispatch();
				break;
			case 7:
				$window.__minimized = true;
				$window.onMinimize.dispatch();
				break;
			case 8:
				$window.__x = this.windowEventInfo.x;
				$window.__y = this.windowEventInfo.y;
				$window.onMove.dispatch(this.windowEventInfo.x,this.windowEventInfo.y);
				break;
			case 9:
				$window.__width = this.windowEventInfo.width;
				$window.__height = this.windowEventInfo.height;
				$window.onResize.dispatch(this.windowEventInfo.width,this.windowEventInfo.height);
				break;
			case 10:
				$window.__fullscreen = false;
				$window.__minimized = false;
				$window.onRestore.dispatch();
				break;
			}
		}
	}
	,setFrameRate: function(value) {
		return this.frameRate = value;
	}
	,updateTimer: function() {
	}
	,__class__: lime__$backend_native_NativeApplication
};
var lime__$backend_native__$NativeApplication_ApplicationEventInfo = function(type,deltaTime) {
	if(deltaTime == null) {
		deltaTime = 0;
	}
	this.type = type;
	this.deltaTime = deltaTime;
};
$hxClasses["lime._backend.native._NativeApplication.ApplicationEventInfo"] = lime__$backend_native__$NativeApplication_ApplicationEventInfo;
lime__$backend_native__$NativeApplication_ApplicationEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","ApplicationEventInfo"];
lime__$backend_native__$NativeApplication_ApplicationEventInfo.prototype = {
	deltaTime: null
	,type: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_ApplicationEventInfo(this.type,this.deltaTime);
	}
	,__class__: lime__$backend_native__$NativeApplication_ApplicationEventInfo
};
var lime__$backend_native__$NativeApplication_ClipboardEventInfo = function(type) {
	this.type = type;
};
$hxClasses["lime._backend.native._NativeApplication.ClipboardEventInfo"] = lime__$backend_native__$NativeApplication_ClipboardEventInfo;
lime__$backend_native__$NativeApplication_ClipboardEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","ClipboardEventInfo"];
lime__$backend_native__$NativeApplication_ClipboardEventInfo.prototype = {
	type: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_ClipboardEventInfo(this.type);
	}
	,__class__: lime__$backend_native__$NativeApplication_ClipboardEventInfo
};
var lime__$backend_native__$NativeApplication_DropEventInfo = function(type,file) {
	this.type = type;
	this.file = file;
};
$hxClasses["lime._backend.native._NativeApplication.DropEventInfo"] = lime__$backend_native__$NativeApplication_DropEventInfo;
lime__$backend_native__$NativeApplication_DropEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","DropEventInfo"];
lime__$backend_native__$NativeApplication_DropEventInfo.prototype = {
	file: null
	,type: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_DropEventInfo(this.type,this.file);
	}
	,__class__: lime__$backend_native__$NativeApplication_DropEventInfo
};
var lime__$backend_native__$NativeApplication_GamepadEventInfo = function(type,id,button,axis,value) {
	if(value == null) {
		value = 0;
	}
	if(axis == null) {
		axis = 0;
	}
	if(button == null) {
		button = 0;
	}
	if(id == null) {
		id = 0;
	}
	this.type = type;
	this.id = id;
	this.button = button;
	this.axis = axis;
	this.value = value;
};
$hxClasses["lime._backend.native._NativeApplication.GamepadEventInfo"] = lime__$backend_native__$NativeApplication_GamepadEventInfo;
lime__$backend_native__$NativeApplication_GamepadEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","GamepadEventInfo"];
lime__$backend_native__$NativeApplication_GamepadEventInfo.prototype = {
	axis: null
	,button: null
	,id: null
	,type: null
	,value: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_GamepadEventInfo(this.type,this.id,this.button,this.axis,this.value);
	}
	,__class__: lime__$backend_native__$NativeApplication_GamepadEventInfo
};
var lime__$backend_native__$NativeApplication_JoystickEventInfo = function(type,id,index,value,x,y) {
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	if(value == null) {
		value = 0;
	}
	if(index == null) {
		index = 0;
	}
	if(id == null) {
		id = 0;
	}
	this.type = type;
	this.id = id;
	this.index = index;
	this.value = value;
	this.x = x;
	this.y = y;
};
$hxClasses["lime._backend.native._NativeApplication.JoystickEventInfo"] = lime__$backend_native__$NativeApplication_JoystickEventInfo;
lime__$backend_native__$NativeApplication_JoystickEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","JoystickEventInfo"];
lime__$backend_native__$NativeApplication_JoystickEventInfo.prototype = {
	id: null
	,index: null
	,type: null
	,value: null
	,x: null
	,y: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_JoystickEventInfo(this.type,this.id,this.index,this.value,this.x,this.y);
	}
	,__class__: lime__$backend_native__$NativeApplication_JoystickEventInfo
};
var lime__$backend_native__$NativeApplication_KeyEventInfo = function(type,windowID,keyCode,modifier) {
	if(modifier == null) {
		modifier = 0;
	}
	if(keyCode == null) {
		keyCode = 0;
	}
	if(windowID == null) {
		windowID = 0;
	}
	this.type = type;
	this.windowID = windowID;
	this.keyCode = keyCode;
	this.modifier = modifier;
};
$hxClasses["lime._backend.native._NativeApplication.KeyEventInfo"] = lime__$backend_native__$NativeApplication_KeyEventInfo;
lime__$backend_native__$NativeApplication_KeyEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","KeyEventInfo"];
lime__$backend_native__$NativeApplication_KeyEventInfo.prototype = {
	keyCode: null
	,modifier: null
	,type: null
	,windowID: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_KeyEventInfo(this.type,this.windowID,this.keyCode,this.modifier);
	}
	,__class__: lime__$backend_native__$NativeApplication_KeyEventInfo
};
var lime__$backend_native__$NativeApplication_MouseEventInfo = function(type,windowID,x,y,button,movementX,movementY) {
	if(movementY == null) {
		movementY = 0;
	}
	if(movementX == null) {
		movementX = 0;
	}
	if(button == null) {
		button = 0;
	}
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	if(windowID == null) {
		windowID = 0;
	}
	this.type = type;
	this.windowID = 0;
	this.x = x;
	this.y = y;
	this.button = button;
	this.movementX = movementX;
	this.movementY = movementY;
};
$hxClasses["lime._backend.native._NativeApplication.MouseEventInfo"] = lime__$backend_native__$NativeApplication_MouseEventInfo;
lime__$backend_native__$NativeApplication_MouseEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","MouseEventInfo"];
lime__$backend_native__$NativeApplication_MouseEventInfo.prototype = {
	button: null
	,movementX: null
	,movementY: null
	,type: null
	,windowID: null
	,x: null
	,y: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_MouseEventInfo(this.type,this.windowID,this.x,this.y,this.button,this.movementX,this.movementY);
	}
	,__class__: lime__$backend_native__$NativeApplication_MouseEventInfo
};
var lime__$backend_native__$NativeApplication_RenderEventInfo = function(type,context) {
	this.type = type;
	this.context = context;
};
$hxClasses["lime._backend.native._NativeApplication.RenderEventInfo"] = lime__$backend_native__$NativeApplication_RenderEventInfo;
lime__$backend_native__$NativeApplication_RenderEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","RenderEventInfo"];
lime__$backend_native__$NativeApplication_RenderEventInfo.prototype = {
	context: null
	,type: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_RenderEventInfo(this.type,this.context);
	}
	,__class__: lime__$backend_native__$NativeApplication_RenderEventInfo
};
var lime__$backend_native__$NativeApplication_SensorEventInfo = function(type,id,x,y,z) {
	if(z == null) {
		z = 0;
	}
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	if(id == null) {
		id = 0;
	}
	this.type = type;
	this.id = id;
	this.x = x;
	this.y = y;
	this.z = z;
};
$hxClasses["lime._backend.native._NativeApplication.SensorEventInfo"] = lime__$backend_native__$NativeApplication_SensorEventInfo;
lime__$backend_native__$NativeApplication_SensorEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","SensorEventInfo"];
lime__$backend_native__$NativeApplication_SensorEventInfo.prototype = {
	id: null
	,x: null
	,y: null
	,z: null
	,type: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_SensorEventInfo(this.type,this.id,this.x,this.y,this.z);
	}
	,__class__: lime__$backend_native__$NativeApplication_SensorEventInfo
};
var lime__$backend_native__$NativeApplication_TextEventInfo = function(type,windowID,text,start,length) {
	if(length == null) {
		length = 0;
	}
	if(start == null) {
		start = 0;
	}
	if(text == null) {
		text = "";
	}
	if(windowID == null) {
		windowID = 0;
	}
	this.type = type;
	this.windowID = windowID;
	this.text = text;
	this.start = start;
	this.length = length;
};
$hxClasses["lime._backend.native._NativeApplication.TextEventInfo"] = lime__$backend_native__$NativeApplication_TextEventInfo;
lime__$backend_native__$NativeApplication_TextEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","TextEventInfo"];
lime__$backend_native__$NativeApplication_TextEventInfo.prototype = {
	id: null
	,length: null
	,start: null
	,text: null
	,type: null
	,windowID: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_TextEventInfo(this.type,this.windowID,this.text,this.start,this.length);
	}
	,__class__: lime__$backend_native__$NativeApplication_TextEventInfo
};
var lime__$backend_native__$NativeApplication_TouchEventInfo = function(type,x,y,id,dx,dy,pressure,device) {
	if(device == null) {
		device = 0;
	}
	if(pressure == null) {
		pressure = 0;
	}
	if(dy == null) {
		dy = 0;
	}
	if(dx == null) {
		dx = 0;
	}
	if(id == null) {
		id = 0;
	}
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	this.type = type;
	this.x = x;
	this.y = y;
	this.id = id;
	this.dx = dx;
	this.dy = dy;
	this.pressure = pressure;
	this.device = device;
};
$hxClasses["lime._backend.native._NativeApplication.TouchEventInfo"] = lime__$backend_native__$NativeApplication_TouchEventInfo;
lime__$backend_native__$NativeApplication_TouchEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","TouchEventInfo"];
lime__$backend_native__$NativeApplication_TouchEventInfo.prototype = {
	device: null
	,dx: null
	,dy: null
	,id: null
	,pressure: null
	,type: null
	,x: null
	,y: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_TouchEventInfo(this.type,this.x,this.y,this.id,this.dx,this.dy,this.pressure,this.device);
	}
	,__class__: lime__$backend_native__$NativeApplication_TouchEventInfo
};
var lime__$backend_native__$NativeApplication_WindowEventInfo = function(type,windowID,width,height,x,y) {
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	if(height == null) {
		height = 0;
	}
	if(width == null) {
		width = 0;
	}
	if(windowID == null) {
		windowID = 0;
	}
	this.type = type;
	this.windowID = windowID;
	this.width = width;
	this.height = height;
	this.x = x;
	this.y = y;
};
$hxClasses["lime._backend.native._NativeApplication.WindowEventInfo"] = lime__$backend_native__$NativeApplication_WindowEventInfo;
lime__$backend_native__$NativeApplication_WindowEventInfo.__name__ = ["lime","_backend","native","_NativeApplication","WindowEventInfo"];
lime__$backend_native__$NativeApplication_WindowEventInfo.prototype = {
	height: null
	,type: null
	,width: null
	,windowID: null
	,x: null
	,y: null
	,clone: function() {
		return new lime__$backend_native__$NativeApplication_WindowEventInfo(this.type,this.windowID,this.width,this.height,this.x,this.y);
	}
	,__class__: lime__$backend_native__$NativeApplication_WindowEventInfo
};
var lime__$backend_native_NativeAudioSource = function(parent) {
	this.parent = parent;
	this.position = new lime_math_Vector4();
};
$hxClasses["lime._backend.native.NativeAudioSource"] = lime__$backend_native_NativeAudioSource;
lime__$backend_native_NativeAudioSource.__name__ = ["lime","_backend","native","NativeAudioSource"];
lime__$backend_native_NativeAudioSource.prototype = {
	buffers: null
	,completed: null
	,dataLength: null
	,format: null
	,handle: null
	,length: null
	,loops: null
	,parent: null
	,playing: null
	,position: null
	,samples: null
	,stream: null
	,streamTimer: null
	,timer: null
	,dispose: function() {
		if(this.handle != null) {
			lime_media_openal_AL.deleteSource(this.handle);
		}
	}
	,init: function() {
		this.dataLength = 0;
		this.format = 0;
		if(this.parent.buffer.channels == 1) {
			if(this.parent.buffer.bitsPerSample == 8) {
				this.format = 4352;
			} else if(this.parent.buffer.bitsPerSample == 16) {
				this.format = 4353;
			}
		} else if(this.parent.buffer.channels == 2) {
			if(this.parent.buffer.bitsPerSample == 8) {
				this.format = 4354;
			} else if(this.parent.buffer.bitsPerSample == 16) {
				this.format = 4355;
			}
		}
		if(this.parent.buffer.__srcVorbisFile != null) {
			this.stream = true;
			var vorbisFile = this.parent.buffer.__srcVorbisFile;
			var x = vorbisFile.pcmTotal();
			if(x.high != x.low >> 31) {
				throw new js__$Boot_HaxeError("Overflow");
			}
			this.dataLength = x.low * this.parent.buffer.channels * (this.parent.buffer.bitsPerSample / 8) | 0;
			this.buffers = [];
			var _g1 = 0;
			var _g = lime__$backend_native_NativeAudioSource.STREAM_NUM_BUFFERS;
			while(_g1 < _g) {
				var i = _g1++;
				this.buffers.push(lime_media_openal_AL.createBuffer());
			}
			this.handle = lime_media_openal_AL.createSource();
		} else {
			if(this.parent.buffer.__srcBuffer == null) {
				this.parent.buffer.__srcBuffer = lime_media_openal_AL.createBuffer();
				lime_media_openal_AL.bufferData(this.parent.buffer.__srcBuffer,this.format,this.parent.buffer.data,this.parent.buffer.data.length,this.parent.buffer.sampleRate);
			}
			this.dataLength = this.parent.buffer.data.length;
			this.handle = lime_media_openal_AL.createSource();
			lime_media_openal_AL.sourcei(this.handle,4105,this.parent.buffer.__srcBuffer);
		}
		this.samples = this.dataLength * 8 / (this.parent.buffer.channels * this.parent.buffer.bitsPerSample) | 0;
	}
	,play: function() {
		if(this.playing || this.handle == null) {
			return;
		}
		this.playing = true;
		if(this.stream) {
			this.setCurrentTime(this.getCurrentTime());
			this.streamTimer = new haxe_Timer(lime__$backend_native_NativeAudioSource.STREAM_TIMER_FREQUENCY);
			this.streamTimer.run = $bind(this,this.streamTimer_onRun);
		} else {
			var time = this.getCurrentTime();
			lime_media_openal_AL.sourcePlay(this.handle);
			this.setCurrentTime(time);
		}
	}
	,pause: function() {
		this.playing = false;
		lime_media_openal_AL.sourcePause(this.handle);
		if(this.streamTimer != null) {
			this.streamTimer.stop();
		}
		if(this.timer != null) {
			this.timer.stop();
		}
	}
	,readVorbisFileBuffer: function(vorbisFile,length) {
		return null;
	}
	,refillBuffers: function(buffers) {
	}
	,stop: function() {
		this.playing = false;
		lime_media_openal_AL.sourceStop(this.handle);
		if(this.streamTimer != null) {
			this.streamTimer.stop();
		}
		if(this.timer != null) {
			this.timer.stop();
		}
	}
	,streamTimer_onRun: function() {
		this.refillBuffers();
	}
	,timer_onRun: function() {
		this.playing = false;
		if(this.loops > 0) {
			this.loops--;
			this.setCurrentTime(0);
			this.play();
			return;
		} else {
			lime_media_openal_AL.sourceStop(this.handle);
			this.timer.stop();
		}
		this.completed = true;
		this.parent.onComplete.dispatch();
	}
	,getCurrentTime: function() {
		if(this.completed) {
			return this.getLength();
		} else if(this.stream) {
			var time = (this.parent.buffer.__srcVorbisFile.timeTell() * 1000 | 0) + (lime_media_openal_AL.getSourcef(this.handle,4132) * 1000 | 0) - this.parent.offset;
			if(time < 0) {
				return 0;
			}
			return time;
		} else {
			var offset = lime_media_openal_AL.getSourcei(this.handle,4134);
			var ratio = offset / this.dataLength;
			var totalSeconds = this.samples / this.parent.buffer.sampleRate;
			var time1 = (totalSeconds * ratio * 1000 | 0) - this.parent.offset;
			if(time1 < 0) {
				return 0;
			}
			return time1;
		}
	}
	,setCurrentTime: function(value) {
		if(this.stream) {
			lime_media_openal_AL.sourceStop(this.handle);
			this.parent.buffer.__srcVorbisFile.timeSeek((value + this.parent.offset) / 1000);
			lime_media_openal_AL.sourceUnqueueBuffers(this.handle,lime__$backend_native_NativeAudioSource.STREAM_NUM_BUFFERS);
			this.refillBuffers(this.buffers);
			if(this.playing) {
				lime_media_openal_AL.sourcePlay(this.handle);
			}
		} else if(this.parent.buffer != null) {
			lime_media_openal_AL.sourceRewind(this.handle);
			if(this.playing) {
				lime_media_openal_AL.sourcePlay(this.handle);
			}
			var secondOffset = (value + this.parent.offset) / 1000;
			var totalSeconds = this.samples / this.parent.buffer.sampleRate;
			if(secondOffset < 0) {
				secondOffset = 0;
			}
			if(secondOffset > totalSeconds) {
				secondOffset = totalSeconds;
			}
			var ratio = secondOffset / totalSeconds;
			var totalOffset = this.dataLength * ratio | 0;
			lime_media_openal_AL.sourcei(this.handle,4134,totalOffset);
		}
		if(this.playing) {
			if(this.timer != null) {
				this.timer.stop();
			}
			var timeRemaining = this.getLength() - value;
			if(timeRemaining > 0) {
				this.completed = false;
				this.timer = new haxe_Timer(timeRemaining);
				this.timer.run = $bind(this,this.timer_onRun);
			} else {
				this.completed = true;
			}
		}
		return value;
	}
	,getGain: function() {
		return lime_media_openal_AL.getSourcef(this.handle,4106);
	}
	,setGain: function(value) {
		lime_media_openal_AL.sourcef(this.handle,4106,value);
		return value;
	}
	,getLength: function() {
		if(this.length != null) {
			return this.length;
		}
		return (this.samples / this.parent.buffer.sampleRate * 1000 | 0) - this.parent.offset;
	}
	,setLength: function(value) {
		if(this.playing && this.length != value) {
			if(this.timer != null) {
				this.timer.stop();
			}
			var timeRemaining = value - this.getCurrentTime();
			if(timeRemaining > 0) {
				this.timer = new haxe_Timer(timeRemaining);
				this.timer.run = $bind(this,this.timer_onRun);
			}
		}
		return this.length = value;
	}
	,getLoops: function() {
		return this.loops;
	}
	,setLoops: function(value) {
		return this.loops = value;
	}
	,getPosition: function() {
		var value = lime_media_openal_AL.getSource3f(this.handle,4100);
		this.position.x = value[0];
		this.position.y = value[1];
		this.position.z = value[2];
		return this.position;
	}
	,setPosition: function(value) {
		this.position.x = value.x;
		this.position.y = value.y;
		this.position.z = value.z;
		this.position.w = value.w;
		lime_media_openal_AL.distanceModel(0);
		lime_media_openal_AL.source3f(this.handle,4100,this.position.x,this.position.y,this.position.z);
		return this.position;
	}
	,__class__: lime__$backend_native_NativeAudioSource
};
var lime__$backend_native_NativeCFFI = function() { };
$hxClasses["lime._backend.native.NativeCFFI"] = lime__$backend_native_NativeCFFI;
lime__$backend_native_NativeCFFI.__name__ = ["lime","_backend","native","NativeCFFI"];
var lime__$backend_native_NativeHTTPRequest = function() {
	this.curl = null;
	this.timeout = null;
};
$hxClasses["lime._backend.native.NativeHTTPRequest"] = lime__$backend_native_NativeHTTPRequest;
lime__$backend_native_NativeHTTPRequest.__name__ = ["lime","_backend","native","NativeHTTPRequest"];
lime__$backend_native_NativeHTTPRequest.threadPool_doWork = function(state) {
	var instance = state.instance;
	var uri = state.uri;
	var binary = state.binary;
	if(uri.indexOf("http://") == -1 && uri.indexOf("https://") == -1) {
		instance.doWork_loadFile(uri);
	} else {
		instance.doWork_loadURL(uri,binary);
	}
};
lime__$backend_native_NativeHTTPRequest.threadPool_onComplete = function(state) {
	var promise = state.promise;
	if(promise.get_isError()) {
		return;
	}
	promise.complete(state.result);
	var instance = state.instance;
	if(instance.timeout != null) {
		instance.timeout.stop();
		instance.timeout = null;
	}
	instance.bytes = null;
	instance.promise = null;
};
lime__$backend_native_NativeHTTPRequest.threadPool_onError = function(state) {
	var promise = state.promise;
	promise.error(state.error);
	var instance = state.instance;
	if(instance.timeout != null) {
		instance.timeout.stop();
		instance.timeout = null;
	}
	instance.bytes = null;
	instance.promise = null;
};
lime__$backend_native_NativeHTTPRequest.threadPool_onProgress = function(state) {
	var promise = state.promise;
	if(promise.get_isComplete() || promise.get_isError()) {
		return;
	}
	promise.progress(state.bytesLoaded,state.bytesTotal);
};
lime__$backend_native_NativeHTTPRequest.threadPool_onRun = function(state) {
	if(state.timeout > 0) {
		state.instance.timeout = haxe_Timer.delay(function() {
			if(state.promise != null && state.instance.bytesLoaded == 0 && state.instance.bytesTotal == 0 && !state.promise.isComplete && !state.promise.isError) {
				state.promise.error(lime_net_curl_CURL.strerror(28));
			}
		},state.timeout);
	}
};
lime__$backend_native_NativeHTTPRequest.prototype = {
	bytes: null
	,bytesLoaded: null
	,bytesTotal: null
	,canceled: null
	,curl: null
	,parent: null
	,promise: null
	,readPosition: null
	,writePosition: null
	,timeout: null
	,cancel: function() {
		this.canceled = true;
		var tmp = this.curl != null;
		if(this.timeout != null) {
			this.timeout.stop();
			this.timeout = null;
		}
	}
	,doWork_loadFile: function(path) {
		var index = path.indexOf("?");
		if(index > -1) {
			path = path.substring(0,index);
		}
		if(path == null) {
			lime__$backend_native_NativeHTTPRequest.threadPool.sendError({ instance : this, promise : this.promise, error : "Cannot load file: " + path});
		} else {
			this.bytes = lime_utils__$Bytes_Bytes_$Impl_$.fromFile(path);
			if(this.bytes != null) {
				lime__$backend_native_NativeHTTPRequest.threadPool.sendComplete({ instance : this, promise : this.promise, result : this.bytes});
			} else {
				lime__$backend_native_NativeHTTPRequest.threadPool.sendError({ instance : this, promise : this.promise, error : "Cannot load file: " + path});
			}
		}
	}
	,doWork_loadURL: function(uri,binary) {
		if(uri == null) {
			lime__$backend_native_NativeHTTPRequest.threadPool.sendError({ instance : this, promise : this.promise, error : "The URI must not be null"});
			return;
		}
		this.bytes = new haxe_io_Bytes(new ArrayBuffer(0));
		this.bytesLoaded = 0;
		this.bytesTotal = 0;
		this.readPosition = 0;
		this.writePosition = 0;
		if(this.curl == null) {
			this.curl = new lime_net_curl_CURL();
		} else {
			this.curl.reset();
		}
		var data = this.parent.data;
		var query = "";
		if(data == null) {
			var key = this.parent.formData.keys();
			while(key.hasNext()) {
				var key1 = key.next();
				if(query.length > 0) {
					query += "&";
				}
				var query1 = encodeURIComponent(key1) + "=";
				var _this = this.parent.formData;
				var s = Std.string(__map_reserved[key1] != null ? _this.getReserved(key1) : _this.h[key1]);
				query += query1 + encodeURIComponent(s);
			}
			if(query != "") {
				if(this.parent.method == "GET") {
					if(uri.indexOf("?") > -1) {
						uri += "&" + query;
					} else {
						uri += "?" + query;
					}
					query = "";
				} else {
					data = haxe_io_Bytes.ofString(query);
				}
			} else {
				data = new haxe_io_Bytes(new ArrayBuffer(0));
			}
		}
		this.curl.setOption(10002,uri);
		var _g = this.parent.method;
		switch(_g) {
		case "GET":
			this.curl.setOption(80,true);
			break;
		case "HEAD":
			this.curl.setOption(44,true);
			break;
		case "POST":
			this.curl.setOption(47,true);
			var f = $bind(this,this.curl_onRead);
			var a2 = data;
			var tmp = function(a1) {
				return f(a1,a2);
			};
			this.curl.setOption(20012,tmp);
			this.curl.setOption(60,data.length);
			this.curl.setOption(14,data.length);
			break;
		case "PUT":
			this.curl.setOption(46,true);
			var f1 = $bind(this,this.curl_onRead);
			var a21 = data;
			var tmp1 = function(a11) {
				return f1(a11,a21);
			};
			this.curl.setOption(20012,tmp1);
			this.curl.setOption(14,data.length);
			break;
		default:
			this.curl.setOption(10036,Std.string(this.parent.method));
			var f2 = $bind(this,this.curl_onRead);
			var a22 = data;
			var tmp2 = function(a12) {
				return f2(a12,a22);
			};
			this.curl.setOption(20012,tmp2);
			this.curl.setOption(14,data.length);
		}
		this.curl.setOption(52,this.parent.followRedirects);
		this.curl.setOption(58,true);
		var headers = [];
		headers.push("Expect: ");
		var contentType = null;
		var _g1 = 0;
		var _g2 = js_Boot.__cast(this.parent.headers , Array);
		while(_g1 < _g2.length) {
			var header = _g2[_g1];
			++_g1;
			if(header.name == "Content-Type") {
				contentType = header.value;
			} else {
				headers.push("" + Std.string(header.name) + ": " + Std.string(header.value));
			}
		}
		if(this.parent.contentType != null) {
			contentType = this.parent.contentType;
		}
		if(contentType == null) {
			if(this.parent.data != null) {
				contentType = "application/octet-stream";
			} else if(query != "") {
				contentType = "application/x-www-form-urlencoded";
			}
		}
		if(contentType != null) {
			headers.push("Content-Type: " + contentType);
		}
		this.curl.setOption(10023,headers);
		this.curl.setOption(20056,$bind(this,this.curl_onProgress));
		this.curl.setOption(20011,$bind(this,this.curl_onWrite));
		if(this.parent.enableResponseHeaders) {
			this.parent.responseHeaders = [];
		}
		this.curl.setOption(20079,$bind(this,this.curl_onHeader));
		var tmp3 = this.parent.withCredentials;
		this.curl.setOption(64,false);
		this.curl.setOption(81,0);
		this.curl.setOption(10018,this.parent.userAgent == null ? "libcurl-agent/1.0" : this.parent.userAgent);
		this.curl.setOption(99,true);
		this.curl.setOption(53,!binary);
		var result = this.curl.perform();
		this.parent.responseStatus = this.curl.getInfo(2097154);
		this.curl.cleanup();
		this.curl = null;
		if(result == 0) {
			if(this.parent.responseStatus >= 200 && this.parent.responseStatus < 400 || this.parent.responseStatus == 0) {
				lime__$backend_native_NativeHTTPRequest.threadPool.sendComplete({ instance : this, promise : this.promise, result : this.bytes});
			} else if(this.bytes != null) {
				lime__$backend_native_NativeHTTPRequest.threadPool.sendError({ instance : this, promise : this.promise, error : this.bytes.getString(0,this.bytes.length)});
			} else {
				lime__$backend_native_NativeHTTPRequest.threadPool.sendError({ instance : this, promise : this.promise, error : "Status " + this.parent.responseStatus});
			}
		} else {
			lime__$backend_native_NativeHTTPRequest.threadPool.sendError({ instance : this, promise : this.promise, error : lime_net_curl_CURL.strerror(result)});
		}
	}
	,init: function(parent) {
		this.parent = parent;
	}
	,loadData: function(uri,binary) {
		if(binary == null) {
			binary = true;
		}
		var promise = new lime_app_Promise();
		this.promise = promise;
		if(lime__$backend_native_NativeHTTPRequest.threadPool == null) {
			lime_net_curl_CURL.globalInit(3);
			lime__$backend_native_NativeHTTPRequest.threadPool = new lime_system_ThreadPool(1,4);
			lime__$backend_native_NativeHTTPRequest.threadPool.doWork.add(lime__$backend_native_NativeHTTPRequest.threadPool_doWork);
			lime__$backend_native_NativeHTTPRequest.threadPool.onRun.add(lime__$backend_native_NativeHTTPRequest.threadPool_onRun);
			lime__$backend_native_NativeHTTPRequest.threadPool.onProgress.add(lime__$backend_native_NativeHTTPRequest.threadPool_onProgress);
			lime__$backend_native_NativeHTTPRequest.threadPool.onComplete.add(lime__$backend_native_NativeHTTPRequest.threadPool_onComplete);
			lime__$backend_native_NativeHTTPRequest.threadPool.onError.add(lime__$backend_native_NativeHTTPRequest.threadPool_onError);
		}
		this.canceled = false;
		lime__$backend_native_NativeHTTPRequest.threadPool.queue({ instance : this, uri : uri, binary : binary, timeout : this.parent.timeout});
		return promise.future;
	}
	,loadText: function(uri) {
		var promise = new lime_app_Promise();
		var future = this.loadData(uri,false);
		future.onProgress($bind(promise,promise.progress));
		future.onError($bind(promise,promise.error));
		future.onComplete(function(bytes) {
			if(bytes == null) {
				promise.complete(null);
			} else {
				var tmp = bytes.getString(0,bytes.length);
				promise.complete(tmp);
			}
		});
		return promise.future;
	}
	,growBuffer: function(length) {
		if(length > this.bytes.length) {
			var cacheBytes = this.bytes;
			this.bytes = new haxe_io_Bytes(new ArrayBuffer(length));
			this.bytes.blit(0,cacheBytes,0,cacheBytes.length);
		}
	}
	,curl_onHeader: function(output,size,nmemb) {
		var parts = Std.string(output).split(": ");
		if(parts.length == 2) {
			if(this.parent.enableResponseHeaders) {
				this.parent.responseHeaders.push(new lime_net_HTTPRequestHeader(parts[0],parts[1]));
			}
			var _g = parts[0];
			if(_g == "Content-Length") {
				this.growBuffer(Std.parseInt(parts[1]));
			}
		}
		return size * nmemb;
	}
	,curl_onProgress: function(dltotal,dlnow,uptotal,upnow) {
		if(upnow > this.bytesLoaded || dlnow > this.bytesLoaded || uptotal > this.bytesTotal || dltotal > this.bytesTotal) {
			if(upnow > this.bytesLoaded) {
				this.bytesLoaded = upnow | 0;
			}
			if(dlnow > this.bytesLoaded) {
				this.bytesLoaded = dlnow | 0;
			}
			if(uptotal > this.bytesTotal) {
				this.bytesTotal = uptotal | 0;
			}
			if(dltotal > this.bytesTotal) {
				this.bytesTotal = dltotal | 0;
			}
			lime__$backend_native_NativeHTTPRequest.threadPool.sendProgress({ instance : this, promise : this.promise, bytesLoaded : this.bytesLoaded, bytesTotal : this.bytesTotal});
		}
		return 0;
	}
	,curl_onRead: function(max,input) {
		if(this.readPosition == 0 && max >= input.length) {
			return input;
		} else if(this.readPosition >= input.length) {
			return new haxe_io_Bytes(new ArrayBuffer(0));
		} else {
			var length = max;
			if(this.readPosition + length > input.length) {
				length = input.length - this.readPosition;
			}
			var data = input.sub(this.readPosition,length);
			this.readPosition += length;
			return data;
		}
	}
	,curl_onWrite: function(output,size,nmemb) {
		this.growBuffer(this.writePosition + output.length);
		this.bytes.blit(this.writePosition,output,0,output.length);
		this.writePosition += output.length;
		return size * nmemb;
	}
	,__class__: lime__$backend_native_NativeHTTPRequest
};
var lime__$backend_native_NativeMouse = function() { };
$hxClasses["lime._backend.native.NativeMouse"] = lime__$backend_native_NativeMouse;
lime__$backend_native_NativeMouse.__name__ = ["lime","_backend","native","NativeMouse"];
lime__$backend_native_NativeMouse.hide = function() {
	if(!lime__$backend_native_NativeMouse.__hidden) {
		lime__$backend_native_NativeMouse.__hidden = true;
	}
};
lime__$backend_native_NativeMouse.show = function() {
	if(lime__$backend_native_NativeMouse.__hidden) {
		lime__$backend_native_NativeMouse.__hidden = false;
	}
};
lime__$backend_native_NativeMouse.warp = function(x,y,window) {
};
lime__$backend_native_NativeMouse.get_cursor = function() {
	if(lime__$backend_native_NativeMouse.__cursor == null) {
		return lime_ui_MouseCursor.DEFAULT;
	}
	return lime__$backend_native_NativeMouse.__cursor;
};
lime__$backend_native_NativeMouse.set_cursor = function(value) {
	if(lime__$backend_native_NativeMouse.__cursor != value) {
		if(!lime__$backend_native_NativeMouse.__hidden) {
			var type;
			switch(value[1]) {
			case 0:
				type = 0;
				break;
			case 1:
				type = 1;
				break;
			case 3:
				type = 3;
				break;
			case 4:
				type = 4;
				break;
			case 5:
				type = 5;
				break;
			case 6:
				type = 6;
				break;
			case 7:
				type = 7;
				break;
			case 8:
				type = 8;
				break;
			case 9:
				type = 9;
				break;
			case 10:
				type = 10;
				break;
			case 11:
				type = 11;
				break;
			default:
				type = 2;
			}
		}
		lime__$backend_native_NativeMouse.__cursor = value;
	}
	return lime__$backend_native_NativeMouse.__cursor;
};
lime__$backend_native_NativeMouse.get_lock = function() {
	return lime__$backend_native_NativeMouse.__lock;
};
lime__$backend_native_NativeMouse.set_lock = function(value) {
	if(lime__$backend_native_NativeMouse.__lock != value) {
		lime__$backend_native_NativeMouse.__hidden = value;
		lime__$backend_native_NativeMouse.__lock = value;
	}
	return lime__$backend_native_NativeMouse.__lock;
};
var lime__$backend_native_NativeRenderer = function(parent) {
	this.parent = parent;
};
$hxClasses["lime._backend.native.NativeRenderer"] = lime__$backend_native_NativeRenderer;
lime__$backend_native_NativeRenderer.__name__ = ["lime","_backend","native","NativeRenderer"];
lime__$backend_native_NativeRenderer.prototype = {
	handle: null
	,parent: null
	,useHardware: null
	,create: function() {
	}
	,dispatch: function() {
	}
	,flip: function() {
	}
	,readPixels: function(rect) {
		var imageBuffer = null;
		var _g = this.parent.context;
		if(_g[1] == 0) {
			var gl = _g[2];
			var windowWidth = this.parent.window.__width * this.parent.window.__scale | 0;
			var windowHeight = this.parent.window.__height * this.parent.window.__scale | 0;
			var x;
			var y;
			var width;
			var height;
			if(rect != null) {
				x = rect.x | 0;
				y = windowHeight - rect.y - rect.height | 0;
				width = rect.width | 0;
				height = rect.height | 0;
			} else {
				x = 0;
				y = 0;
				width = windowWidth;
				height = windowHeight;
			}
			var elements = width * height * 4;
			var this1;
			if(elements != null) {
				this1 = new Uint8Array(elements);
			} else {
				this1 = null;
			}
			var data = this1;
			gl.readPixels(x,y,width,height,gl.RGBA,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data));
			imageBuffer = new lime_graphics_ImageBuffer(data,width,height,32,0);
		} else if(imageBuffer != null) {
			imageBuffer.format = 0;
		}
		if(imageBuffer != null) {
			return new lime_graphics_Image(imageBuffer);
		}
		return null;
	}
	,render: function() {
	}
	,__class__: lime__$backend_native_NativeRenderer
};
var lime__$backend_native_NativeWindow = function(parent) {
	this.parent = parent;
	this.displayMode = new lime_system_DisplayMode(0,0,0,0);
};
$hxClasses["lime._backend.native.NativeWindow"] = lime__$backend_native_NativeWindow;
lime__$backend_native_NativeWindow.__name__ = ["lime","_backend","native","NativeWindow"];
lime__$backend_native_NativeWindow.prototype = {
	handle: null
	,closing: null
	,displayMode: null
	,parent: null
	,alert: function(message,title) {
		var tmp = this.handle != null;
	}
	,close: function() {
		if(!this.closing) {
			this.closing = true;
			this.parent.onClose.dispatch();
			if(!this.parent.onClose.canceled) {
				if(this.handle != null) {
					this.handle = null;
				}
			} else {
				this.closing = false;
			}
		}
	}
	,create: function(application) {
		var title = this.parent.__title != null && this.parent.__title != "" ? this.parent.__title : "Lime Application";
		var flags = 0;
		if(this.parent.config != null) {
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"antialiasing")) {
				if(this.parent.config.antialiasing >= 4) {
					flags |= 96;
				} else if(this.parent.config.antialiasing >= 2) {
					flags |= 32;
				}
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"allowHighDPI") && this.parent.config.allowHighDPI) {
				flags |= 2048;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"alwaysOnTop") && this.parent.config.alwaysOnTop) {
				flags |= 32768;
			}
			if(this.parent.__borderless) {
				flags |= 2;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"depthBuffer") && this.parent.config.depthBuffer) {
				flags |= 512;
			}
			if(this.parent.__fullscreen) {
				flags |= 1;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"hardware") && this.parent.config.hardware) {
				flags |= 8;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"hidden") && this.parent.config.hidden) {
				flags |= 4096;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"maximized") && this.parent.config.maximized) {
				flags |= 16384;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"minimized") && this.parent.config.minimized) {
				flags |= 8192;
			}
			if(this.parent.__resizable) {
				flags |= 4;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"stencilBuffer") && this.parent.config.stencilBuffer) {
				flags |= 1024;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"vsync") && this.parent.config.vsync) {
				flags |= 16;
			}
			if(Object.prototype.hasOwnProperty.call(this.parent.config,"colorDepth") && this.parent.config.colorDepth == 32) {
				flags |= 65536;
			}
		}
	}
	,focus: function() {
		var tmp = this.handle != null;
	}
	,getDisplay: function() {
		var tmp = this.handle != null;
		return null;
	}
	,getDisplayMode: function() {
		var tmp = this.handle != null;
		return this.displayMode;
	}
	,setDisplayMode: function(value) {
		var tmp = this.handle != null;
		return this.displayMode;
	}
	,getEnableTextEvents: function() {
		var tmp = this.handle != null;
		return false;
	}
	,move: function(x,y) {
		var tmp = this.handle != null;
	}
	,resize: function(width,height) {
		var tmp = this.handle != null;
	}
	,setBorderless: function(value) {
		var tmp = this.handle != null;
		return value;
	}
	,setEnableTextEvents: function(value) {
		var tmp = this.handle != null;
		return value;
	}
	,setFullscreen: function(value) {
		if(this.handle != null) {
			if(value) {
				this.parent.onFullscreen.dispatch();
			}
		}
		return value;
	}
	,setIcon: function(image) {
		var tmp = this.handle != null;
	}
	,setMaximized: function(value) {
		var tmp = this.handle != null;
		return value;
	}
	,setMinimized: function(value) {
		var tmp = this.handle != null;
		return value;
	}
	,setResizable: function(value) {
		var tmp = this.handle != null;
		return value;
	}
	,setTitle: function(value) {
		var tmp = this.handle != null;
		return value;
	}
	,__class__: lime__$backend_native_NativeWindow
};
var lime_app_IModule = function() { };
$hxClasses["lime.app.IModule"] = lime_app_IModule;
lime_app_IModule.__name__ = ["lime","app","IModule"];
lime_app_IModule.prototype = {
	addRenderer: null
	,addWindow: null
	,registerModule: null
	,removeRenderer: null
	,removeWindow: null
	,setPreloader: null
	,unregisterModule: null
	,__class__: lime_app_IModule
};
var lime_app_Module = function() {
	this.onExit = new lime_app__$Event_$Int_$Void();
	this.__renderers = [];
	this.__windows = [];
};
$hxClasses["lime.app.Module"] = lime_app_Module;
lime_app_Module.__name__ = ["lime","app","Module"];
lime_app_Module.__interfaces__ = [lime_app_IModule];
lime_app_Module.prototype = {
	onExit: null
	,__application: null
	,__preloader: null
	,__renderers: null
	,__windows: null
	,addRenderer: function(renderer) {
		var f = $bind(this,this.render);
		var a1 = renderer;
		var tmp = function() {
			f(a1);
		};
		renderer.onRender.add(tmp);
		var f1 = $bind(this,this.onRenderContextLost);
		var a11 = renderer;
		var tmp1 = function() {
			f1(a11);
		};
		renderer.onContextLost.add(tmp1);
		var f2 = $bind(this,this.onRenderContextRestored);
		var a12 = renderer;
		var tmp2 = function(a2) {
			f2(a12,a2);
		};
		renderer.onContextRestored.add(tmp2);
		this.__renderers.push(renderer);
	}
	,addWindow: function(window) {
		var f = $bind(this,this.onWindowActivate);
		var a1 = window;
		var tmp = function() {
			f(a1);
		};
		window.onActivate.add(tmp);
		var f1 = $bind(this,this.__onWindowClose);
		var a11 = window;
		var tmp1 = function() {
			f1(a11);
		};
		window.onClose.add(tmp1,false,-10000);
		var f2 = $bind(this,this.onWindowCreate);
		var a12 = window;
		var tmp2 = function() {
			f2(a12);
		};
		window.onCreate.add(tmp2);
		var f3 = $bind(this,this.onWindowDeactivate);
		var a13 = window;
		var tmp3 = function() {
			f3(a13);
		};
		window.onDeactivate.add(tmp3);
		var f4 = $bind(this,this.onWindowDropFile);
		var a14 = window;
		var tmp4 = function(a2) {
			f4(a14,a2);
		};
		window.onDropFile.add(tmp4);
		var f5 = $bind(this,this.onWindowEnter);
		var a15 = window;
		var tmp5 = function() {
			f5(a15);
		};
		window.onEnter.add(tmp5);
		var f6 = $bind(this,this.onWindowFocusIn);
		var a16 = window;
		var tmp6 = function() {
			f6(a16);
		};
		window.onFocusIn.add(tmp6);
		var f7 = $bind(this,this.onWindowFocusOut);
		var a17 = window;
		var tmp7 = function() {
			f7(a17);
		};
		window.onFocusOut.add(tmp7);
		var f8 = $bind(this,this.onWindowFullscreen);
		var a18 = window;
		var tmp8 = function() {
			f8(a18);
		};
		window.onFullscreen.add(tmp8);
		var f9 = $bind(this,this.onKeyDown);
		var a19 = window;
		var tmp9 = function(a21,a3) {
			f9(a19,a21,a3);
		};
		window.onKeyDown.add(tmp9);
		var f10 = $bind(this,this.onKeyUp);
		var a110 = window;
		var tmp10 = function(a22,a31) {
			f10(a110,a22,a31);
		};
		window.onKeyUp.add(tmp10);
		var f11 = $bind(this,this.onWindowLeave);
		var a111 = window;
		var tmp11 = function() {
			f11(a111);
		};
		window.onLeave.add(tmp11);
		var f12 = $bind(this,this.onWindowMinimize);
		var a112 = window;
		var tmp12 = function() {
			f12(a112);
		};
		window.onMinimize.add(tmp12);
		var f13 = $bind(this,this.onMouseDown);
		var a113 = window;
		var tmp13 = function(x,y,a23) {
			f13(a113,x,y,a23);
		};
		window.onMouseDown.add(tmp13);
		var f14 = $bind(this,this.onMouseMove);
		var a114 = window;
		var tmp14 = function(x1,y1) {
			f14(a114,x1,y1);
		};
		window.onMouseMove.add(tmp14);
		var f15 = $bind(this,this.onMouseMoveRelative);
		var a115 = window;
		var tmp15 = function(x2,y2) {
			f15(a115,x2,y2);
		};
		window.onMouseMoveRelative.add(tmp15);
		var f16 = $bind(this,this.onMouseUp);
		var a116 = window;
		var tmp16 = function(x3,y3,a24) {
			f16(a116,x3,y3,a24);
		};
		window.onMouseUp.add(tmp16);
		var f17 = $bind(this,this.onMouseWheel);
		var a117 = window;
		var tmp17 = function(a25,a32) {
			f17(a117,a25,a32);
		};
		window.onMouseWheel.add(tmp17);
		var f18 = $bind(this,this.onWindowMove);
		var a118 = window;
		var tmp18 = function(x4,y4) {
			f18(a118,x4,y4);
		};
		window.onMove.add(tmp18);
		var f19 = $bind(this,this.onWindowResize);
		var a119 = window;
		var tmp19 = function(a26,a33) {
			f19(a119,a26,a33);
		};
		window.onResize.add(tmp19);
		var f20 = $bind(this,this.onWindowRestore);
		var a120 = window;
		var tmp20 = function() {
			f20(a120);
		};
		window.onRestore.add(tmp20);
		var f21 = $bind(this,this.onTextEdit);
		var a121 = window;
		var tmp21 = function(a27,a34,a4) {
			f21(a121,a27,a34,a4);
		};
		window.onTextEdit.add(tmp21);
		var f22 = $bind(this,this.onTextInput);
		var a122 = window;
		var tmp22 = function(a28) {
			f22(a122,a28);
		};
		window.onTextInput.add(tmp22);
		if(window.id > -1) {
			this.onWindowCreate(window);
		}
		this.__windows.push(window);
	}
	,registerModule: function(application) {
		this.__application = application;
		application.onExit.add($bind(this,this.onModuleExit),false,0);
		application.onUpdate.add($bind(this,this.update));
		var gamepad = lime_ui_Gamepad.devices.iterator();
		while(gamepad.hasNext()) {
			var gamepad1 = gamepad.next();
			this.__onGamepadConnect(gamepad1);
		}
		lime_ui_Gamepad.onConnect.add($bind(this,this.__onGamepadConnect));
		var joystick = lime_ui_Joystick.devices.iterator();
		while(joystick.hasNext()) {
			var joystick1 = joystick.next();
			this.__onJoystickConnect(joystick1);
		}
		lime_ui_Joystick.onConnect.add($bind(this,this.__onJoystickConnect));
		lime_ui_Touch.onCancel.add($bind(this,this.onTouchCancel));
		lime_ui_Touch.onStart.add($bind(this,this.onTouchStart));
		lime_ui_Touch.onMove.add($bind(this,this.onTouchMove));
		lime_ui_Touch.onEnd.add($bind(this,this.onTouchEnd));
	}
	,removeRenderer: function(renderer) {
		if(renderer != null && this.__renderers.indexOf(renderer) > -1) {
			HxOverrides.remove(this.__renderers,renderer);
		}
	}
	,removeWindow: function(window) {
		if(window != null && this.__windows.indexOf(window) > -1) {
			HxOverrides.remove(this.__windows,window);
		}
	}
	,setPreloader: function(preloader) {
		if(this.__preloader != null) {
			this.__preloader.onProgress.remove($bind(this,this.onPreloadProgress));
			this.__preloader.onComplete.remove($bind(this,this.onPreloadComplete));
		}
		this.__preloader = preloader;
		if(preloader == null || preloader.complete) {
			this.onPreloadComplete();
		} else {
			preloader.onProgress.add($bind(this,this.onPreloadProgress));
			preloader.onComplete.add($bind(this,this.onPreloadComplete));
		}
	}
	,unregisterModule: function(application) {
		this.__application.onExit.remove($bind(this,this.onModuleExit));
		this.__application.onUpdate.remove($bind(this,this.update));
		lime_ui_Gamepad.onConnect.remove($bind(this,this.__onGamepadConnect));
		lime_ui_Joystick.onConnect.remove($bind(this,this.__onJoystickConnect));
		lime_ui_Touch.onCancel.remove($bind(this,this.onTouchCancel));
		lime_ui_Touch.onStart.remove($bind(this,this.onTouchStart));
		lime_ui_Touch.onMove.remove($bind(this,this.onTouchMove));
		lime_ui_Touch.onEnd.remove($bind(this,this.onTouchEnd));
		this.onModuleExit(0);
	}
	,onGamepadAxisMove: function(gamepad,axis,value) {
	}
	,onGamepadButtonDown: function(gamepad,button) {
	}
	,onGamepadButtonUp: function(gamepad,button) {
	}
	,onGamepadConnect: function(gamepad) {
	}
	,onGamepadDisconnect: function(gamepad) {
	}
	,onJoystickAxisMove: function(joystick,axis,value) {
	}
	,onJoystickButtonDown: function(joystick,button) {
	}
	,onJoystickButtonUp: function(joystick,button) {
	}
	,onJoystickConnect: function(joystick) {
	}
	,onJoystickDisconnect: function(joystick) {
	}
	,onJoystickHatMove: function(joystick,hat,position) {
	}
	,onJoystickTrackballMove: function(joystick,trackball,x,y) {
	}
	,onKeyDown: function(window,keyCode,modifier) {
	}
	,onKeyUp: function(window,keyCode,modifier) {
	}
	,onModuleExit: function(code) {
	}
	,onMouseDown: function(window,x,y,button) {
	}
	,onMouseMove: function(window,x,y) {
	}
	,onMouseMoveRelative: function(window,x,y) {
	}
	,onMouseUp: function(window,x,y,button) {
	}
	,onMouseWheel: function(window,deltaX,deltaY) {
	}
	,onPreloadComplete: function() {
	}
	,onPreloadProgress: function(loaded,total) {
	}
	,onRenderContextLost: function(renderer) {
	}
	,onRenderContextRestored: function(renderer,context) {
	}
	,onTextEdit: function(window,text,start,length) {
	}
	,onTextInput: function(window,text) {
	}
	,onTouchCancel: function(touch) {
	}
	,onTouchEnd: function(touch) {
	}
	,onTouchMove: function(touch) {
	}
	,onTouchStart: function(touch) {
	}
	,onWindowActivate: function(window) {
	}
	,onWindowClose: function(window) {
	}
	,onWindowCreate: function(window) {
	}
	,onWindowDeactivate: function(window) {
	}
	,onWindowDropFile: function(window,file) {
	}
	,onWindowEnter: function(window) {
	}
	,onWindowFocusIn: function(window) {
	}
	,onWindowFocusOut: function(window) {
	}
	,onWindowFullscreen: function(window) {
	}
	,onWindowLeave: function(window) {
	}
	,onWindowMove: function(window,x,y) {
	}
	,onWindowMinimize: function(window) {
	}
	,onWindowResize: function(window,width,height) {
	}
	,onWindowRestore: function(window) {
	}
	,render: function(renderer) {
	}
	,update: function(deltaTime) {
	}
	,__onGamepadConnect: function(gamepad) {
		this.onGamepadConnect(gamepad);
		var f = $bind(this,this.onGamepadAxisMove);
		var a1 = gamepad;
		var tmp = function(a2,a3) {
			f(a1,a2,a3);
		};
		gamepad.onAxisMove.add(tmp);
		var f1 = $bind(this,this.onGamepadButtonDown);
		var a11 = gamepad;
		var tmp1 = function(a21) {
			f1(a11,a21);
		};
		gamepad.onButtonDown.add(tmp1);
		var f2 = $bind(this,this.onGamepadButtonUp);
		var a12 = gamepad;
		var tmp2 = function(a22) {
			f2(a12,a22);
		};
		gamepad.onButtonUp.add(tmp2);
		var f3 = $bind(this,this.onGamepadDisconnect);
		var a13 = gamepad;
		var tmp3 = function() {
			f3(a13);
		};
		gamepad.onDisconnect.add(tmp3);
	}
	,__onJoystickConnect: function(joystick) {
		this.onJoystickConnect(joystick);
		var f = $bind(this,this.onJoystickAxisMove);
		var a1 = joystick;
		var tmp = function(a2,a3) {
			f(a1,a2,a3);
		};
		joystick.onAxisMove.add(tmp);
		var f1 = $bind(this,this.onJoystickButtonDown);
		var a11 = joystick;
		var tmp1 = function(a21) {
			f1(a11,a21);
		};
		joystick.onButtonDown.add(tmp1);
		var f2 = $bind(this,this.onJoystickButtonUp);
		var a12 = joystick;
		var tmp2 = function(a22) {
			f2(a12,a22);
		};
		joystick.onButtonUp.add(tmp2);
		var f3 = $bind(this,this.onJoystickDisconnect);
		var a13 = joystick;
		var tmp3 = function() {
			f3(a13);
		};
		joystick.onDisconnect.add(tmp3);
		var f4 = $bind(this,this.onJoystickHatMove);
		var a14 = joystick;
		var tmp4 = function(a23,a31) {
			f4(a14,a23,a31);
		};
		joystick.onHatMove.add(tmp4);
		var f5 = $bind(this,this.onJoystickTrackballMove);
		var a15 = joystick;
		var tmp5 = function(a24,x,y) {
			f5(a15,a24,x,y);
		};
		joystick.onTrackballMove.add(tmp5);
	}
	,__onWindowClose: function(window) {
		this.onWindowClose(window);
		HxOverrides.remove(this.__windows,window);
	}
	,__class__: lime_app_Module
};
var lime_app_Application = function() {
	this.onUpdate = new lime_app__$Event_$Int_$Void();
	lime_app_Module.call(this);
	if(lime_app_Application.current == null) {
		lime_app_Application.current = this;
	}
	this.modules = [];
	this.windowByID = new haxe_ds_IntMap();
	this.backend = new lime__$backend_native_NativeApplication(this);
	this.registerModule(this);
};
$hxClasses["lime.app.Application"] = lime_app_Application;
lime_app_Application.__name__ = ["lime","app","Application"];
lime_app_Application.__super__ = lime_app_Module;
lime_app_Application.prototype = $extend(lime_app_Module.prototype,{
	config: null
	,modules: null
	,preloader: null
	,onUpdate: null
	,renderer: null
	,renderers: null
	,window: null
	,windows: null
	,backend: null
	,windowByID: null
	,addModule: function(module) {
		module.registerModule(this);
		this.modules.push(module);
		if(this.__renderers.length > 0) {
			var _g = 0;
			var _g1 = this.__renderers;
			while(_g < _g1.length) {
				var renderer = _g1[_g];
				++_g;
				module.addRenderer(renderer);
			}
		}
		if(this.__windows.length > 0) {
			var _g2 = 0;
			var _g11 = this.__windows;
			while(_g2 < _g11.length) {
				var $window = _g11[_g2];
				++_g2;
				module.addWindow($window);
			}
		}
		module.setPreloader(this.__preloader);
	}
	,addRenderer: function(renderer) {
		lime_app_Module.prototype.addRenderer.call(this,renderer);
		var _g = 0;
		var _g1 = this.modules;
		while(_g < _g1.length) {
			var $module = _g1[_g];
			++_g;
			$module.addRenderer(renderer);
		}
	}
	,create: function(config) {
		this.config = config;
		this.backend.create(config);
		if(config != null) {
			if(Object.prototype.hasOwnProperty.call(config,"fps")) {
				this.backend.setFrameRate(config.fps);
			}
			if(Object.prototype.hasOwnProperty.call(config,"windows")) {
				var _g = 0;
				var _g1 = config.windows;
				while(_g < _g1.length) {
					var windowConfig = _g1[_g];
					++_g;
					var $window = new lime_ui_Window(windowConfig);
					this.createWindow($window);
				}
			}
			if(this.__preloader == null || this.__preloader.complete) {
				this.setPreloader(this.__preloader);
				var _g2 = 0;
				var _g11 = this.modules;
				while(_g2 < _g11.length) {
					var $module = _g11[_g2];
					++_g2;
					this.setPreloader(this.__preloader);
				}
			}
		}
	}
	,createWindow: function(window) {
		lime_app_Module.prototype.addWindow.call(this,window);
		var _g = 0;
		var _g1 = this.modules;
		while(_g < _g1.length) {
			var $module = _g1[_g];
			++_g;
			$module.addWindow(window);
		}
		if(window.renderer == null) {
			var renderer = new lime_graphics_Renderer(window);
			this.addRenderer(renderer);
		}
		window.create(this);
		this.windowByID.h[window.id] = window;
		window.onCreate.dispatch();
	}
	,exec: function() {
		lime_app_Application.current = this;
		return this.backend.exec();
	}
	,onModuleExit: function(code) {
		this.backend.exit();
	}
	,onWindowClose: function(window) {
		this.removeWindow(window);
	}
	,removeModule: function(module) {
		if(module != null) {
			module.unregisterModule(this);
			HxOverrides.remove(this.modules,module);
		}
	}
	,removeWindow: function(window) {
		if(window != null && this.windowByID.h.hasOwnProperty(window.id)) {
			HxOverrides.remove(this.__windows,window);
			this.windowByID.remove(window.id);
			window.close();
			if(window.renderer != null) {
				this.removeRenderer(window.renderer);
			}
			if(this.__windows[0] == window) {
				this.window = null;
			}
			if(this.__windows.length == 0) {
				lime_system_System.exit(0);
			}
		}
	}
	,setPreloader: function(preloader) {
		lime_app_Module.prototype.setPreloader.call(this,preloader);
		var _g = 0;
		var _g1 = this.modules;
		while(_g < _g1.length) {
			var $module = _g1[_g];
			++_g;
			$module.setPreloader(preloader);
		}
	}
	,get_frameRate: function() {
		return this.backend.getFrameRate();
	}
	,set_frameRate: function(value) {
		return this.backend.setFrameRate(value);
	}
	,get_preloader: function() {
		return this.__preloader;
	}
	,get_renderer: function() {
		return this.__renderers[0];
	}
	,get_renderers: function() {
		return this.__renderers;
	}
	,get_window: function() {
		return this.__windows[0];
	}
	,get_windows: function() {
		return this.__windows;
	}
	,__class__: lime_app_Application
	,__properties__: {get_windows:"get_windows",get_window:"get_window",get_renderers:"get_renderers",get_renderer:"get_renderer",get_preloader:"get_preloader",set_frameRate:"set_frameRate",get_frameRate:"get_frameRate"}
});
var lime_app_Event = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app.Event"] = lime_app_Event;
lime_app_Event.__name__ = ["lime","app","Event"];
lime_app_Event.prototype = {
	canceled: null
	,__listeners: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,dispatch: null
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__class__: lime_app_Event
};
var lime_app_Future = function(work,async) {
	if(async == null) {
		async = false;
	}
	if(work != null) {
		if(async) {
			var promise = new lime_app_Promise();
			promise.future = this;
			lime_app__$Future_FutureWork.queue({ promise : promise, work : work});
		} else {
			try {
				this.value = work();
				this.isComplete = true;
			} catch( e ) {
				haxe_CallStack.lastException = e;
				if (e instanceof js__$Boot_HaxeError) e = e.val;
				this.error = e;
				this.isError = true;
			}
		}
	}
};
$hxClasses["lime.app.Future"] = lime_app_Future;
lime_app_Future.__name__ = ["lime","app","Future"];
lime_app_Future.ofEvents = function(onComplete,onError,onProgress) {
	var promise = new lime_app_Promise();
	onComplete.add(function(data) {
		promise.complete(data);
	},true);
	if(onError != null) {
		onError.add(function(error) {
			promise.error(error);
		},true);
	}
	if(onProgress != null) {
		onProgress.add(function(progress,total) {
			promise.progress(progress,total);
		},true);
	}
	return promise.future;
};
lime_app_Future.withError = function(error) {
	var future = new lime_app_Future();
	future.isError = true;
	future.error = error;
	return future;
};
lime_app_Future.withValue = function(value) {
	var future = new lime_app_Future();
	future.isComplete = true;
	future.value = value;
	return future;
};
lime_app_Future.prototype = {
	error: null
	,isComplete: null
	,isError: null
	,value: null
	,__completeListeners: null
	,__errorListeners: null
	,__progressListeners: null
	,onComplete: function(listener) {
		if(listener != null) {
			if(this.isComplete) {
				listener(this.value);
			} else if(!this.isError) {
				if(this.__completeListeners == null) {
					this.__completeListeners = [];
				}
				this.__completeListeners.push(listener);
			}
		}
		return this;
	}
	,onError: function(listener) {
		if(listener != null) {
			if(this.isError) {
				listener(this.error);
			} else if(!this.isComplete) {
				if(this.__errorListeners == null) {
					this.__errorListeners = [];
				}
				this.__errorListeners.push(listener);
			}
		}
		return this;
	}
	,onProgress: function(listener) {
		if(listener != null) {
			if(this.__progressListeners == null) {
				this.__progressListeners = [];
			}
			this.__progressListeners.push(listener);
		}
		return this;
	}
	,ready: function(waitTime) {
		if(waitTime == null) {
			waitTime = -1;
		}
		if(this.isComplete || this.isError) {
			return this;
		} else {
			lime_utils_Log.warn("Cannot block thread in JavaScript",{ fileName : "Future.hx", lineNumber : 157, className : "lime.app.Future", methodName : "ready"});
			return this;
		}
	}
	,result: function(waitTime) {
		if(waitTime == null) {
			waitTime = -1;
		}
		this.ready(waitTime);
		if(this.isComplete) {
			return this.value;
		} else {
			return null;
		}
	}
	,then: function(next) {
		if(this.isComplete) {
			return next(this.value);
		} else if(this.isError) {
			var future = new lime_app_Future();
			future.onError(this.error);
			return future;
		} else {
			var promise = new lime_app_Promise();
			this.onError($bind(promise,promise.error));
			this.onProgress($bind(promise,promise.progress));
			this.onComplete(function(val) {
				var future1 = next(val);
				future1.onError($bind(promise,promise.error));
				future1.onComplete($bind(promise,promise.complete));
			});
			return promise.future;
		}
	}
	,__class__: lime_app_Future
};
var lime_app__$Future_FutureWork = function() { };
$hxClasses["lime.app._Future.FutureWork"] = lime_app__$Future_FutureWork;
lime_app__$Future_FutureWork.__name__ = ["lime","app","_Future","FutureWork"];
lime_app__$Future_FutureWork.queue = function(state) {
	if(lime_app__$Future_FutureWork.threadPool == null) {
		lime_app__$Future_FutureWork.threadPool = new lime_system_ThreadPool();
		lime_app__$Future_FutureWork.threadPool.doWork.add(lime_app__$Future_FutureWork.threadPool_doWork);
		lime_app__$Future_FutureWork.threadPool.onComplete.add(lime_app__$Future_FutureWork.threadPool_onComplete);
		lime_app__$Future_FutureWork.threadPool.onError.add(lime_app__$Future_FutureWork.threadPool_onError);
	}
	lime_app__$Future_FutureWork.threadPool.queue(state);
};
lime_app__$Future_FutureWork.threadPool_doWork = function(state) {
	try {
		var result = state.work();
		lime_app__$Future_FutureWork.threadPool.sendComplete({ promise : state.promise, result : result});
	} catch( e ) {
		haxe_CallStack.lastException = e;
		if (e instanceof js__$Boot_HaxeError) e = e.val;
		lime_app__$Future_FutureWork.threadPool.sendError({ promise : state.promise, error : e});
	}
};
lime_app__$Future_FutureWork.threadPool_onComplete = function(state) {
	state.promise.complete(state.result);
};
lime_app__$Future_FutureWork.threadPool_onError = function(state) {
	state.promise.error(state.error);
};
var lime_app_Preloader = function() {
	this.bytesTotalCache = new haxe_ds_StringMap();
	this.bytesLoadedCache2 = new haxe_ds_StringMap();
	this.bytesLoadedCache = new haxe_ds_ObjectMap();
	this.onProgress = new lime_app__$Event_$Int_$Int_$Void();
	this.onComplete = new lime_app__$Event_$Void_$Void();
	this.bytesLoaded = 0;
	this.bytesTotal = 0;
	this.libraries = [];
	this.libraryNames = [];
	this.onProgress.add($bind(this,this.update));
};
$hxClasses["lime.app.Preloader"] = lime_app_Preloader;
lime_app_Preloader.__name__ = ["lime","app","Preloader"];
lime_app_Preloader.prototype = {
	complete: null
	,onComplete: null
	,onProgress: null
	,bytesLoaded: null
	,bytesLoadedCache: null
	,bytesLoadedCache2: null
	,bytesTotal: null
	,bytesTotalCache: null
	,initLibraryNames: null
	,libraries: null
	,libraryNames: null
	,loadedLibraries: null
	,loadedStage: null
	,preloadComplete: null
	,preloadStarted: null
	,simulateProgress: null
	,addLibrary: function(library) {
		this.libraries.push(library);
	}
	,addLibraryName: function(name) {
		if(this.libraryNames.indexOf(name) == -1) {
			this.libraryNames.push(name);
		}
	}
	,create: function(config) {
	}
	,load: function() {
		var _gthis = this;
		var _g = 0;
		var _g1 = this.libraries;
		while(_g < _g1.length) {
			var library = _g1[_g];
			++_g;
			this.bytesTotal += library.bytesTotal;
		}
		this.loadedLibraries = -1;
		this.preloadStarted = false;
		var _g2 = 0;
		var _g11 = this.libraries;
		while(_g2 < _g11.length) {
			var library1 = [_g11[_g2]];
			++_g2;
			lime_utils_Log.verbose("Preloading asset library",{ fileName : "Preloader.hx", lineNumber : 153, className : "lime.app.Preloader", methodName : "load"});
			library1[0].load().onProgress((function(library2) {
				return function(loaded,total) {
					if(_gthis.bytesLoadedCache.h.__keys__[library2[0].__id__] == null) {
						_gthis.bytesLoaded += loaded;
					} else {
						_gthis.bytesLoaded += loaded - _gthis.bytesLoadedCache.h[library2[0].__id__];
					}
					_gthis.bytesLoadedCache.set(library2[0],loaded);
					if(!_gthis.simulateProgress) {
						_gthis.onProgress.dispatch(_gthis.bytesLoaded,_gthis.bytesTotal);
					}
				};
			})(library1)).onComplete((function(library3) {
				return function(_) {
					if(_gthis.bytesLoadedCache.h.__keys__[library3[0].__id__] == null) {
						_gthis.bytesLoaded += library3[0].bytesTotal;
					} else {
						_gthis.bytesLoaded += library3[0].bytesTotal - _gthis.bytesLoadedCache.h[library3[0].__id__];
					}
					_gthis.loadedAssetLibrary();
				};
			})(library1)).onError((function() {
				return function(e) {
					lime_utils_Log.error(e,{ fileName : "Preloader.hx", lineNumber : 191, className : "lime.app.Preloader", methodName : "load"});
				};
			})());
		}
		var _g3 = 0;
		var _g12 = this.libraryNames;
		while(_g3 < _g12.length) {
			var name = _g12[_g3];
			++_g3;
			this.bytesTotal += 200;
		}
		this.loadedLibraries++;
		this.preloadStarted = true;
		this.updateProgress();
	}
	,loadedAssetLibrary: function(name) {
		this.loadedLibraries++;
		var current = this.loadedLibraries;
		if(!this.preloadStarted) {
			++current;
		}
		var totalLibraries = this.libraries.length + this.libraryNames.length;
		if(name != null) {
			lime_utils_Log.verbose("Loaded asset library: " + name + " [" + current + "/" + totalLibraries + "]",{ fileName : "Preloader.hx", lineNumber : 223, className : "lime.app.Preloader", methodName : "loadedAssetLibrary"});
		} else {
			lime_utils_Log.verbose("Loaded asset library [" + current + "/" + totalLibraries + "]",{ fileName : "Preloader.hx", lineNumber : 227, className : "lime.app.Preloader", methodName : "loadedAssetLibrary"});
		}
		this.updateProgress();
	}
	,start: function() {
		if(this.complete) {
			return;
		}
		this.complete = true;
		this.onComplete.dispatch();
	}
	,update: function(loaded,total) {
	}
	,updateProgress: function() {
		var _gthis = this;
		if(!this.simulateProgress) {
			this.onProgress.dispatch(this.bytesLoaded,this.bytesTotal);
		}
		if(this.loadedLibraries == this.libraries.length && !this.initLibraryNames) {
			this.initLibraryNames = true;
			var _g = 0;
			var _g1 = this.libraryNames;
			while(_g < _g1.length) {
				var name = [_g1[_g]];
				++_g;
				lime_utils_Log.verbose("Preloading asset library: " + name[0],{ fileName : "Preloader.hx", lineNumber : 276, className : "lime.app.Preloader", methodName : "updateProgress"});
				lime_utils_Assets.loadLibrary(name[0]).onProgress((function(name1) {
					return function(loaded,total) {
						if(total > 0) {
							var _this = _gthis.bytesTotalCache;
							if(!(__map_reserved[name1[0]] != null ? _this.existsReserved(name1[0]) : _this.h.hasOwnProperty(name1[0]))) {
								var _this1 = _gthis.bytesTotalCache;
								if(__map_reserved[name1[0]] != null) {
									_this1.setReserved(name1[0],total);
								} else {
									_this1.h[name1[0]] = total;
								}
								_gthis.bytesTotal += total - 200;
							}
							if(loaded > total) {
								loaded = total;
							}
							var _this2 = _gthis.bytesLoadedCache2;
							if(!(__map_reserved[name1[0]] != null ? _this2.existsReserved(name1[0]) : _this2.h.hasOwnProperty(name1[0]))) {
								_gthis.bytesLoaded += loaded;
							} else {
								var _this3 = _gthis.bytesLoadedCache2;
								_gthis.bytesLoaded += loaded - (__map_reserved[name1[0]] != null ? _this3.getReserved(name1[0]) : _this3.h[name1[0]]);
							}
							var _this4 = _gthis.bytesLoadedCache2;
							if(__map_reserved[name1[0]] != null) {
								_this4.setReserved(name1[0],loaded);
							} else {
								_this4.h[name1[0]] = loaded;
							}
							if(!_gthis.simulateProgress) {
								_gthis.onProgress.dispatch(_gthis.bytesLoaded,_gthis.bytesTotal);
							}
						}
					};
				})(name)).onComplete((function(name2) {
					return function(library) {
						var total1 = 200;
						var _this5 = _gthis.bytesTotalCache;
						if(__map_reserved[name2[0]] != null ? _this5.existsReserved(name2[0]) : _this5.h.hasOwnProperty(name2[0])) {
							var _this6 = _gthis.bytesTotalCache;
							if(__map_reserved[name2[0]] != null) {
								total1 = _this6.getReserved(name2[0]);
							} else {
								total1 = _this6.h[name2[0]];
							}
						}
						var _this7 = _gthis.bytesLoadedCache2;
						if(!(__map_reserved[name2[0]] != null ? _this7.existsReserved(name2[0]) : _this7.h.hasOwnProperty(name2[0]))) {
							_gthis.bytesLoaded += total1;
						} else {
							var _this8 = _gthis.bytesLoadedCache2;
							_gthis.bytesLoaded += total1 - (__map_reserved[name2[0]] != null ? _this8.getReserved(name2[0]) : _this8.h[name2[0]]);
						}
						_gthis.loadedAssetLibrary(name2[0]);
					};
				})(name)).onError((function() {
					return function(e) {
						lime_utils_Log.error(e,{ fileName : "Preloader.hx", lineNumber : 335, className : "lime.app.Preloader", methodName : "updateProgress"});
					};
				})());
			}
		}
		if(!this.simulateProgress && this.loadedLibraries == this.libraries.length + this.libraryNames.length) {
			if(!this.preloadComplete) {
				this.preloadComplete = true;
				lime_utils_Log.verbose("Preload complete",{ fileName : "Preloader.hx", lineNumber : 349, className : "lime.app.Preloader", methodName : "updateProgress"});
			}
			this.start();
		}
	}
	,__class__: lime_app_Preloader
};
var lime_app_Promise = function() {
	this.future = new lime_app_Future();
};
$hxClasses["lime.app.Promise"] = lime_app_Promise;
lime_app_Promise.__name__ = ["lime","app","Promise"];
lime_app_Promise.prototype = {
	future: null
	,isComplete: null
	,isError: null
	,complete: function(data) {
		if(!this.future.isError) {
			this.future.isComplete = true;
			this.future.value = data;
			if(this.future.__completeListeners != null) {
				var _g = 0;
				var _g1 = this.future.__completeListeners;
				while(_g < _g1.length) {
					var listener = _g1[_g];
					++_g;
					listener(data);
				}
				this.future.__completeListeners = null;
			}
		}
		return this;
	}
	,completeWith: function(future) {
		future.onComplete($bind(this,this.complete));
		future.onError($bind(this,this.error));
		future.onProgress($bind(this,this.progress));
		return this;
	}
	,error: function(msg) {
		if(!this.future.isComplete) {
			this.future.isError = true;
			this.future.error = msg;
			if(this.future.__errorListeners != null) {
				var _g = 0;
				var _g1 = this.future.__errorListeners;
				while(_g < _g1.length) {
					var listener = _g1[_g];
					++_g;
					listener(msg);
				}
				this.future.__errorListeners = null;
			}
		}
		return this;
	}
	,progress: function(progress,total) {
		if(!this.future.isError && !this.future.isComplete) {
			if(this.future.__progressListeners != null) {
				var _g = 0;
				var _g1 = this.future.__progressListeners;
				while(_g < _g1.length) {
					var listener = _g1[_g];
					++_g;
					listener(progress,total);
				}
			}
		}
		return this;
	}
	,get_isComplete: function() {
		return this.future.isComplete;
	}
	,get_isError: function() {
		return this.future.isError;
	}
	,__class__: lime_app_Promise
	,__properties__: {get_isError:"get_isError",get_isComplete:"get_isComplete"}
};
var lime_app__$Event_$Dynamic_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Dynamic_Void"] = lime_app__$Event_$Dynamic_$Void;
lime_app__$Event_$Dynamic_$Void.__name__ = ["lime","app","_Event_Dynamic_Void"];
lime_app__$Event_$Dynamic_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Dynamic_$Void
};
var lime_app__$Event_$Float_$Float_$Float_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Float_Float_Float_Void"] = lime_app__$Event_$Float_$Float_$Float_$Void;
lime_app__$Event_$Float_$Float_$Float_$Void.__name__ = ["lime","app","_Event_Float_Float_Float_Void"];
lime_app__$Event_$Float_$Float_$Float_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1,a2) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1,a2);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Float_$Float_$Float_$Void
};
var lime_app__$Event_$Float_$Float_$Int_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Float_Float_Int_Void"] = lime_app__$Event_$Float_$Float_$Int_$Void;
lime_app__$Event_$Float_$Float_$Int_$Void.__name__ = ["lime","app","_Event_Float_Float_Int_Void"];
lime_app__$Event_$Float_$Float_$Int_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1,a2) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1,a2);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Float_$Float_$Int_$Void
};
var lime_app__$Event_$Float_$Float_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Float_Float_Void"] = lime_app__$Event_$Float_$Float_$Void;
lime_app__$Event_$Float_$Float_$Void.__name__ = ["lime","app","_Event_Float_Float_Void"];
lime_app__$Event_$Float_$Float_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Float_$Float_$Void
};
var lime_app__$Event_$Int_$Float_$Float_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Int_Float_Float_Void"] = lime_app__$Event_$Int_$Float_$Float_$Void;
lime_app__$Event_$Int_$Float_$Float_$Void.__name__ = ["lime","app","_Event_Int_Float_Float_Void"];
lime_app__$Event_$Int_$Float_$Float_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1,a2) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1,a2);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Int_$Float_$Float_$Void
};
var lime_app__$Event_$Int_$Float_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Int_Float_Void"] = lime_app__$Event_$Int_$Float_$Void;
lime_app__$Event_$Int_$Float_$Void.__name__ = ["lime","app","_Event_Int_Float_Void"];
lime_app__$Event_$Int_$Float_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Int_$Float_$Void
};
var lime_app__$Event_$Int_$Int_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Int_Int_Void"] = lime_app__$Event_$Int_$Int_$Void;
lime_app__$Event_$Int_$Int_$Void.__name__ = ["lime","app","_Event_Int_Int_Void"];
lime_app__$Event_$Int_$Int_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Int_$Int_$Void
};
var lime_app__$Event_$Int_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Int_Void"] = lime_app__$Event_$Int_$Void;
lime_app__$Event_$Int_$Void.__name__ = ["lime","app","_Event_Int_Void"];
lime_app__$Event_$Int_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Int_$Void
};
var lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Int_lime_ui_JoystickHatPosition_Void"] = lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void;
lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void.__name__ = ["lime","app","_Event_Int_lime_ui_JoystickHatPosition_Void"];
lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void
};
var lime_app__$Event_$String_$Int_$Int_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_String_Int_Int_Void"] = lime_app__$Event_$String_$Int_$Int_$Void;
lime_app__$Event_$String_$Int_$Int_$Void.__name__ = ["lime","app","_Event_String_Int_Int_Void"];
lime_app__$Event_$String_$Int_$Int_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1,a2) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1,a2);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$String_$Int_$Int_$Void
};
var lime_app__$Event_$String_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_String_Void"] = lime_app__$Event_$String_$Void;
lime_app__$Event_$String_$Void.__name__ = ["lime","app","_Event_String_Void"];
lime_app__$Event_$String_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$String_$Void
};
var lime_app__$Event_$Void_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_Void_Void"] = lime_app__$Event_$Void_$Void;
lime_app__$Event_$Void_$Void.__name__ = ["lime","app","_Event_Void_Void"];
lime_app__$Event_$Void_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function() {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i]();
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$Void_$Void
};
var lime_app__$Event_$haxe_$Function_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_haxe_Function_Void"] = lime_app__$Event_$haxe_$Function_$Void;
lime_app__$Event_$haxe_$Function_$Void.__name__ = ["lime","app","_Event_haxe_Function_Void"];
lime_app__$Event_$haxe_$Function_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$haxe_$Function_$Void
};
var lime_app__$Event_$lime_$graphics_$RenderContext_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_lime_graphics_RenderContext_Void"] = lime_app__$Event_$lime_$graphics_$RenderContext_$Void;
lime_app__$Event_$lime_$graphics_$RenderContext_$Void.__name__ = ["lime","app","_Event_lime_graphics_RenderContext_Void"];
lime_app__$Event_$lime_$graphics_$RenderContext_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$lime_$graphics_$RenderContext_$Void
};
var lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_lime_ui_GamepadAxis_Float_Void"] = lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void;
lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void.__name__ = ["lime","app","_Event_lime_ui_GamepadAxis_Float_Void"];
lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void
};
var lime_app__$Event_$lime_$ui_$GamepadButton_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_lime_ui_GamepadButton_Void"] = lime_app__$Event_$lime_$ui_$GamepadButton_$Void;
lime_app__$Event_$lime_$ui_$GamepadButton_$Void.__name__ = ["lime","app","_Event_lime_ui_GamepadButton_Void"];
lime_app__$Event_$lime_$ui_$GamepadButton_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$lime_$ui_$GamepadButton_$Void
};
var lime_app__$Event_$lime_$ui_$Gamepad_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_lime_ui_Gamepad_Void"] = lime_app__$Event_$lime_$ui_$Gamepad_$Void;
lime_app__$Event_$lime_$ui_$Gamepad_$Void.__name__ = ["lime","app","_Event_lime_ui_Gamepad_Void"];
lime_app__$Event_$lime_$ui_$Gamepad_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$lime_$ui_$Gamepad_$Void
};
var lime_app__$Event_$lime_$ui_$Joystick_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_lime_ui_Joystick_Void"] = lime_app__$Event_$lime_$ui_$Joystick_$Void;
lime_app__$Event_$lime_$ui_$Joystick_$Void.__name__ = ["lime","app","_Event_lime_ui_Joystick_Void"];
lime_app__$Event_$lime_$ui_$Joystick_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$lime_$ui_$Joystick_$Void
};
var lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_lime_ui_KeyCode_lime_ui_KeyModifier_Void"] = lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void;
lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void.__name__ = ["lime","app","_Event_lime_ui_KeyCode_lime_ui_KeyModifier_Void"];
lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a,a1) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a,a1);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void
};
var lime_app__$Event_$lime_$ui_$Touch_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_lime_ui_Touch_Void"] = lime_app__$Event_$lime_$ui_$Touch_$Void;
lime_app__$Event_$lime_$ui_$Touch_$Void.__name__ = ["lime","app","_Event_lime_ui_Touch_Void"];
lime_app__$Event_$lime_$ui_$Touch_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$lime_$ui_$Touch_$Void
};
var lime_app__$Event_$ofEvents_$T_$Void = function() {
	this.canceled = false;
	this.__listeners = [];
	this.__priorities = [];
	this.__repeat = [];
};
$hxClasses["lime.app._Event_ofEvents_T_Void"] = lime_app__$Event_$ofEvents_$T_$Void;
lime_app__$Event_$ofEvents_$T_$Void.__name__ = ["lime","app","_Event_ofEvents_T_Void"];
lime_app__$Event_$ofEvents_$T_$Void.prototype = {
	canceled: null
	,__repeat: null
	,__priorities: null
	,add: function(listener,once,priority) {
		if(priority == null) {
			priority = 0;
		}
		if(once == null) {
			once = false;
		}
		var _g1 = 0;
		var _g = this.__priorities.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(priority > this.__priorities[i]) {
				this.__listeners.splice(i,0,listener);
				this.__priorities.splice(i,0,priority);
				this.__repeat.splice(i,0,!once);
				return;
			}
		}
		this.__listeners.push(listener);
		this.__priorities.push(priority);
		this.__repeat.push(!once);
	}
	,cancel: function() {
		this.canceled = true;
	}
	,has: function(listener) {
		var _g = 0;
		var _g1 = this.__listeners;
		while(_g < _g1.length) {
			var l = _g1[_g];
			++_g;
			if(Reflect.compareMethods(l,listener)) {
				return true;
			}
		}
		return false;
	}
	,remove: function(listener) {
		var i = this.__listeners.length;
		while(--i >= 0) if(Reflect.compareMethods(this.__listeners[i],listener)) {
			this.__listeners.splice(i,1);
			this.__priorities.splice(i,1);
			this.__repeat.splice(i,1);
		}
	}
	,__listeners: null
	,dispatch: function(a) {
		this.canceled = false;
		var listeners = this.__listeners;
		var repeat = this.__repeat;
		var i = 0;
		while(i < listeners.length) {
			listeners[i](a);
			if(!repeat[i]) {
				this.remove(listeners[i]);
			} else {
				++i;
			}
			if(this.canceled) {
				break;
			}
		}
	}
	,__class__: lime_app__$Event_$ofEvents_$T_$Void
};
var lime_graphics_CanvasRenderContext = function() {
};
$hxClasses["lime.graphics.CanvasRenderContext"] = lime_graphics_CanvasRenderContext;
lime_graphics_CanvasRenderContext.__name__ = ["lime","graphics","CanvasRenderContext"];
lime_graphics_CanvasRenderContext.prototype = {
	backingStorePixelRatio: null
	,canvas: null
	,fillStyle: null
	,font: null
	,globalAlpha: null
	,globalCompositeOperation: null
	,imageSmoothingEnabled: null
	,lineCap: null
	,lineDash: null
	,lineDashOffset: null
	,lineJoin: null
	,lineWidth: null
	,miterLimit: null
	,shadowBlur: null
	,shadowColor: null
	,shadowOffsetX: null
	,shadowOffsetY: null
	,strokeStyle: null
	,textAlign: null
	,textBaseline: null
	,arc: function(x,y,radius,startAngle,endAngle,anticlockwise) {
	}
	,arcTo: function(x1,y1,x2,y2,radius) {
	}
	,beginPath: function() {
	}
	,bezierCurveTo: function(cp1x,cp1y,cp2x,cp2y,x,y) {
	}
	,clearRect: function(x,y,width,height) {
	}
	,clearShadow: function() {
	}
	,clip: function() {
	}
	,closePath: function() {
	}
	,createDynamicImageData: function(sw,sh) {
		return null;
	}
	,createLinearGradient: function(x0,y0,x1,y1) {
		return null;
	}
	,createPattern: function(image,repetitionType) {
		return null;
	}
	,createRadialGradient: function(x0,y0,r0,x1,y1,r1) {
		return null;
	}
	,drawImage: function(element,sx,sy,sw,sh,dx,dy,dw,dh) {
	}
	,drawImageFromRect: function(image,sx,sy,sw,sh,dx,dy,dw,dh,compositeOperation) {
	}
	,fill: function() {
	}
	,fillRect: function(x,y,width,height) {
	}
	,fillText: function(text,x,y,maxWidth) {
	}
	,getDynamicImageData: function(sx,sy,sw,sh) {
		return null;
	}
	,getDynamicImageDataHD: function(sx,sy,sw,sh) {
		return null;
	}
	,getLineDash: function() {
		return null;
	}
	,isPointInPath: function(x,y) {
		return false;
	}
	,lineTo: function(x,y) {
	}
	,measureText: function(text) {
		return null;
	}
	,moveTo: function(x,y) {
	}
	,putDynamicImageData: function(dynamicImageData,dx,dy,dirtyX,dirtyY,dirtyWidth,dirtyHeight) {
	}
	,putDynamicImageDataHD: function(dynamicImageData,dx,dy,dirtyX,dirtyY,dirtyWidth,dirtyHeight) {
	}
	,quadraticCurveTo: function(cpx,cpy,x,y) {
	}
	,rect: function(x,y,width,height) {
	}
	,restore: function() {
	}
	,rotate: function(angle) {
	}
	,save: function() {
	}
	,scale: function(sx,sy) {
	}
	,setAlpha: function(alpha) {
	}
	,setCompositeOperation: function(compositeOperation) {
	}
	,setFillColor: function(c,m,y,k,a) {
	}
	,setLineCap: function(cap) {
	}
	,setLineDash: function(dash) {
	}
	,setLineJoin: function(join) {
	}
	,setLineWidth: function(width) {
	}
	,setMiterLimit: function(limit) {
	}
	,setShadow: function(width,height,blur,c,m,y,k,a) {
	}
	,setStrokeColor: function(c,m,y,k,a) {
	}
	,setTransform: function(m11,m12,m21,m22,dx,dy) {
	}
	,stroke: function() {
	}
	,strokeRect: function(x,y,width,height,lineWidth) {
	}
	,strokeText: function(text,x,y,maxWidth) {
	}
	,transform: function(m11,m12,m21,m22,dx,dy) {
	}
	,translate: function(tx,ty) {
	}
	,__class__: lime_graphics_CanvasRenderContext
};
var lime_graphics_ConsoleRenderContext = function() {
};
$hxClasses["lime.graphics.ConsoleRenderContext"] = lime_graphics_ConsoleRenderContext;
lime_graphics_ConsoleRenderContext.__name__ = ["lime","graphics","ConsoleRenderContext"];
lime_graphics_ConsoleRenderContext.prototype = {
	createIndexBuffer: function(indices,count) {
		return new lime_graphics_console_IndexBuffer();
	}
	,createVertexBuffer: function(decl,count) {
		return new lime_graphics_console_VertexBuffer();
	}
	,lookupShader: function(name) {
		return new lime_graphics_console_Shader();
	}
	,clear: function(r,g,b,a,depth,stencil) {
		if(stencil == null) {
			stencil = 0;
		}
		if(depth == null) {
			depth = 1.0;
		}
	}
	,bindShader: function(shader) {
	}
	,setViewport: function(x,y,width,height,nearPlane,farPlane) {
		if(farPlane == null) {
			farPlane = 1.0;
		}
		if(nearPlane == null) {
			nearPlane = 0.0;
		}
	}
	,setVertexShaderConstantF: function(startRegister,vec4,vec4count) {
	}
	,setVertexSource: function(vb) {
	}
	,setIndexSource: function(ib) {
	}
	,draw: function(primitive,startVertex,primitiveCount) {
	}
	,drawIndexed: function(primitive,vertexCount,startIndex,primitiveCount) {
	}
	,get_width: function() {
		return 0;
	}
	,get_height: function() {
		return 0;
	}
	,__class__: lime_graphics_ConsoleRenderContext
	,__properties__: {get_height:"get_height",get_width:"get_width"}
};
var lime_graphics_DOMRenderContext = function() {
};
$hxClasses["lime.graphics.DOMRenderContext"] = lime_graphics_DOMRenderContext;
lime_graphics_DOMRenderContext.__name__ = ["lime","graphics","DOMRenderContext"];
lime_graphics_DOMRenderContext.prototype = {
	accessKey: null
	,align: null
	,attributes: null
	,baseURI: null
	,childElementCount: null
	,childNodes: null
	,children: null
	,classList: null
	,className: null
	,clientHeight: null
	,clientLeft: null
	,clientTop: null
	,clientWidth: null
	,contentEditable: null
	,dataset: null
	,dir: null
	,draggable: null
	,dropzone: null
	,firstChild: null
	,firstElementChild: null
	,hidden: null
	,id: null
	,innerHTML: null
	,innerText: null
	,isContentEditable: null
	,lang: null
	,lastChild: null
	,lastElementChild: null
	,localName: null
	,namespaceURI: null
	,nextElementSibling: null
	,nextSibling: null
	,nodeName: null
	,nodeType: null
	,nodeValue: null
	,offsetHeight: null
	,offsetLeft: null
	,offsetParent: null
	,offsetTop: null
	,offsetWidth: null
	,onabort: null
	,onbeforecopy: null
	,onbeforecut: null
	,onbeforepaste: null
	,onblur: null
	,onchange: null
	,onclick: null
	,oncontextmenu: null
	,oncopy: null
	,oncut: null
	,ondblclick: null
	,ondrag: null
	,ondragend: null
	,ondragenter: null
	,ondragleave: null
	,ondragover: null
	,ondragstart: null
	,ondrop: null
	,onerror: null
	,onfocus: null
	,onfullscreenchange: null
	,onfullscreenerror: null
	,oninput: null
	,oninvalid: null
	,onkeydown: null
	,onkeypress: null
	,onkeyup: null
	,onload: null
	,onmousedown: null
	,onmousemove: null
	,onmouseout: null
	,onmouseover: null
	,onmouseup: null
	,onmousewheel: null
	,onpaste: null
	,onreset: null
	,onscroll: null
	,onsearch: null
	,onselect: null
	,onselectstart: null
	,onsubmit: null
	,ontouchcancel: null
	,ontouchend: null
	,ontouchmove: null
	,ontouchstart: null
	,outerHTML: null
	,outerText: null
	,ownerDocument: null
	,parentElement: null
	,parentNode: null
	,prefix: null
	,previousElementSibling: null
	,previousSibling: null
	,pseudo: null
	,scrollHeight: null
	,scrollLeft: null
	,scrollTop: null
	,scrollWidth: null
	,spellcheck: null
	,style: null
	,tabIndex: null
	,tagName: null
	,textContent: null
	,title: null
	,translate: null
	,addEventListener: function(type,listener,useCapture) {
	}
	,appendChild: function(newChild) {
		return null;
	}
	,blur: function() {
	}
	,click: function() {
	}
	,cloneNode: function(deep) {
		return null;
	}
	,compareDocumentPosition: function(other) {
		return -1;
	}
	,contains: function(other) {
		return false;
	}
	,dispatchEvent: function(event) {
		return false;
	}
	,focus: function() {
	}
	,getAttribute: function(name) {
		return null;
	}
	,getAttributeNS: function(namespaceURI,localName) {
		return null;
	}
	,getAttributeNode: function(name) {
		return null;
	}
	,getAttributeNodeNS: function(namespaceURI,localName) {
		return null;
	}
	,getBoundingClientRect: function() {
		return null;
	}
	,getClientRects: function() {
		return null;
	}
	,getElementsByClassName: function(name) {
		return null;
	}
	,getElementsByTagName: function(name) {
		return null;
	}
	,getElementsByTagNameNS: function(namespaceURI,localName) {
		return null;
	}
	,hasAttribute: function(name) {
		return false;
	}
	,hasAttributeNS: function(namespaceURI,localName) {
		return false;
	}
	,hasAttributes: function() {
		return false;
	}
	,hasChildNodes: function() {
		return false;
	}
	,insertAdjacentElement: function(where,element) {
		return null;
	}
	,insertAdjacentHTML: function(where,html) {
	}
	,insertAdjacentText: function(where,text) {
	}
	,insertBefore: function(newChild,refChild) {
		return null;
	}
	,isDefaultNamespace: function(namespaceURI) {
		return false;
	}
	,isEqualNode: function(other) {
		return false;
	}
	,isSameNode: function(other) {
		return false;
	}
	,isSupported: function(feature,version) {
		return false;
	}
	,lookupNamespaceURI: function(prefix) {
		return null;
	}
	,lookupPrefix: function(namespaceURI) {
		return null;
	}
	,matchesSelector: function(selectors) {
		return false;
	}
	,normalize: function() {
	}
	,querySelector: function(selectors) {
		return null;
	}
	,querySelectorAll: function(selectors) {
		return null;
	}
	,remove: function() {
	}
	,removeAttribute: function(name) {
	}
	,removeAttributeNS: function(namespaceURI,localName) {
	}
	,removeAttributeNode: function(oldAttr) {
		return null;
	}
	,removeChild: function(oldChild) {
		return null;
	}
	,removeEventListener: function(type,listener,useCapture) {
	}
	,replaceChild: function(newChild,oldChild) {
		return null;
	}
	,requestFullScreen: function(flags) {
	}
	,requestFullscreen: function() {
	}
	,requestPointerLock: function() {
	}
	,scrollByLines: function(lines) {
	}
	,scrollByPages: function(pages) {
	}
	,scrollIntoView: function(alignWithTop) {
	}
	,scrollIntoViewIfNeeded: function(centerIfNeeded) {
	}
	,setAttribute: function(name,value) {
	}
	,setAttributeNS: function(namespaceURI,qualifiedName,value) {
	}
	,setAttributeNode: function(newAttr) {
		return null;
	}
	,setAttributeNodeNS: function(newAttr) {
		return null;
	}
	,__class__: lime_graphics_DOMRenderContext
};
var lime_graphics_FlashRenderContext = function() {
};
$hxClasses["lime.graphics.FlashRenderContext"] = lime_graphics_FlashRenderContext;
lime_graphics_FlashRenderContext.__name__ = ["lime","graphics","FlashRenderContext"];
lime_graphics_FlashRenderContext.prototype = {
	accessibilityImplementation: null
	,accessibilityProperties: null
	,alpha: null
	,blendMode: null
	,blendShader: null
	,buttonMode: null
	,cacheAsBitmap: null
	,contextMenu: null
	,doubleClickEnabled: null
	,dropTarget: null
	,filters: null
	,focusRect: null
	,graphics: null
	,height: null
	,hitArea: null
	,loaderInfo: null
	,mask: null
	,mouseChildren: null
	,mouseEnabled: null
	,mouseX: null
	,mouseY: null
	,name: null
	,needsSoftKeyboard: null
	,numChildren: null
	,opaqueBackground: null
	,parent: null
	,root: null
	,rotation: null
	,rotationX: null
	,rotationY: null
	,rotationZ: null
	,scale9Grid: null
	,scaleX: null
	,scaleY: null
	,scaleZ: null
	,scrollRect: null
	,softKeyboardInputAreaOfInterest: null
	,soundTransform: null
	,stage: null
	,tabChildren: null
	,tabEnabled: null
	,tabIndex: null
	,textSnapshot: null
	,transform: null
	,useHandCursor: null
	,visible: null
	,width: null
	,x: null
	,y: null
	,z: null
	,addChild: function(child) {
		return null;
	}
	,addChildAt: function(child,index) {
		return null;
	}
	,addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
		if(useWeakReference == null) {
			useWeakReference = false;
		}
		if(priority == null) {
			priority = 0;
		}
		if(useCapture == null) {
			useCapture = false;
		}
	}
	,areInaccessibleObjectsUnderPoint: function(point) {
		return false;
	}
	,contains: function(child) {
		return false;
	}
	,dispatchEvent: function(event) {
		return false;
	}
	,getBounds: function(targetCoordinateSpace) {
		return null;
	}
	,getChildAt: function(index) {
		return null;
	}
	,getChildByName: function(name) {
		return null;
	}
	,getChildIndex: function(child) {
		return 0;
	}
	,getObjectsUnderPoint: function(point) {
		return null;
	}
	,getRect: function(targetCoordinateSpace) {
		return null;
	}
	,globalToLocal: function(point) {
		return null;
	}
	,globalToLocal3D: function(point) {
		return null;
	}
	,hasEventListener: function(type) {
		return false;
	}
	,hitTestObject: function(obj) {
		return false;
	}
	,hitTestPoint: function(x,y,shapeFlag) {
		if(shapeFlag == null) {
			shapeFlag = false;
		}
		return false;
	}
	,local3DToGlobal: function(point3d) {
		return null;
	}
	,localToGlobal: function(point) {
		return null;
	}
	,removeChild: function(child) {
		return null;
	}
	,removeChildAt: function(index) {
		return null;
	}
	,removeChildren: function(beginIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 2147483647;
		}
		if(beginIndex == null) {
			beginIndex = 0;
		}
	}
	,removeEventListener: function(type,listener,useCapture) {
		if(useCapture == null) {
			useCapture = false;
		}
	}
	,requestSoftKeyboard: function() {
		return false;
	}
	,setChildIndex: function(child,index) {
	}
	,startDrag: function(lockCenter,bounds) {
		if(lockCenter == null) {
			lockCenter = false;
		}
	}
	,startTouchDrag: function(touchPointID,lockCenter,bounds) {
		if(lockCenter == null) {
			lockCenter = false;
		}
	}
	,stopAllMovieClips: function() {
	}
	,stopDrag: function() {
	}
	,stopTouchDrag: function(touchPointID) {
	}
	,swapChildren: function(child1,child2) {
	}
	,swapChildrenAt: function(index1,index2) {
	}
	,toString: function() {
		return null;
	}
	,willTrigger: function(type) {
		return false;
	}
	,__class__: lime_graphics_FlashRenderContext
};
var lime_graphics_GLRenderContext = function() {
};
$hxClasses["lime.graphics.GLRenderContext"] = lime_graphics_GLRenderContext;
lime_graphics_GLRenderContext.__name__ = ["lime","graphics","GLRenderContext"];
lime_graphics_GLRenderContext.prototype = {
	ACTIVE_ATTRIBUTES: null
	,ACTIVE_TEXTURE: null
	,ACTIVE_UNIFORMS: null
	,ALIASED_LINE_WIDTH_RANGE: null
	,ALIASED_POINT_SIZE_RANGE: null
	,ALPHA: null
	,ALPHA_BITS: null
	,ALWAYS: null
	,ARRAY_BUFFER: null
	,ARRAY_BUFFER_BINDING: null
	,ATTACHED_SHADERS: null
	,BACK: null
	,BLEND: null
	,BLEND_COLOR: null
	,BLEND_DST_ALPHA: null
	,BLEND_DST_RGB: null
	,BLEND_EQUATION: null
	,BLEND_EQUATION_ALPHA: null
	,BLEND_EQUATION_RGB: null
	,BLEND_SRC_ALPHA: null
	,BLEND_SRC_RGB: null
	,BLUE_BITS: null
	,BOOL: null
	,BOOL_VEC2: null
	,BOOL_VEC3: null
	,BOOL_VEC4: null
	,BROWSER_DEFAULT_WEBGL: null
	,BUFFER_SIZE: null
	,BUFFER_USAGE: null
	,BYTE: null
	,CCW: null
	,CLAMP_TO_EDGE: null
	,COLOR_ATTACHMENT0: null
	,COLOR_BUFFER_BIT: null
	,COLOR_CLEAR_VALUE: null
	,COLOR_WRITEMASK: null
	,COMPILE_STATUS: null
	,COMPRESSED_TEXTURE_FORMATS: null
	,CONSTANT_ALPHA: null
	,CONSTANT_COLOR: null
	,CONTEXT_LOST_WEBGL: null
	,CULL_FACE: null
	,CULL_FACE_MODE: null
	,CURRENT_PROGRAM: null
	,CURRENT_VERTEX_ATTRIB: null
	,CW: null
	,DECR: null
	,DECR_WRAP: null
	,DELETE_STATUS: null
	,DEPTH_ATTACHMENT: null
	,DEPTH_BITS: null
	,DEPTH_BUFFER_BIT: null
	,DEPTH_CLEAR_VALUE: null
	,DEPTH_COMPONENT: null
	,DEPTH_COMPONENT16: null
	,DEPTH_FUNC: null
	,DEPTH_RANGE: null
	,DEPTH_STENCIL: null
	,DEPTH_STENCIL_ATTACHMENT: null
	,DEPTH_TEST: null
	,DEPTH_WRITEMASK: null
	,DITHER: null
	,DONT_CARE: null
	,DST_ALPHA: null
	,DST_COLOR: null
	,DYNAMIC_DRAW: null
	,ELEMENT_ARRAY_BUFFER: null
	,ELEMENT_ARRAY_BUFFER_BINDING: null
	,EQUAL: null
	,FASTEST: null
	,FLOAT: null
	,FLOAT_MAT2: null
	,FLOAT_MAT3: null
	,FLOAT_MAT4: null
	,FLOAT_VEC2: null
	,FLOAT_VEC3: null
	,FLOAT_VEC4: null
	,FRAGMENT_SHADER: null
	,FRAMEBUFFER: null
	,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: null
	,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: null
	,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: null
	,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: null
	,FRAMEBUFFER_BINDING: null
	,FRAMEBUFFER_COMPLETE: null
	,FRAMEBUFFER_INCOMPLETE_ATTACHMENT: null
	,FRAMEBUFFER_INCOMPLETE_DIMENSIONS: null
	,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: null
	,FRAMEBUFFER_UNSUPPORTED: null
	,FRONT: null
	,FRONT_AND_BACK: null
	,FRONT_FACE: null
	,FUNC_ADD: null
	,FUNC_REVERSE_SUBTRACT: null
	,FUNC_SUBTRACT: null
	,GENERATE_MIPMAP_HINT: null
	,GEQUAL: null
	,GREATER: null
	,GREEN_BITS: null
	,HIGH_FLOAT: null
	,HIGH_INT: null
	,INCR: null
	,INCR_WRAP: null
	,INT: null
	,INT_VEC2: null
	,INT_VEC3: null
	,INT_VEC4: null
	,INVALID_ENUM: null
	,INVALID_FRAMEBUFFER_OPERATION: null
	,INVALID_OPERATION: null
	,INVALID_VALUE: null
	,INVERT: null
	,KEEP: null
	,LEQUAL: null
	,LESS: null
	,LINEAR: null
	,LINEAR_MIPMAP_LINEAR: null
	,LINEAR_MIPMAP_NEAREST: null
	,LINES: null
	,LINE_LOOP: null
	,LINE_STRIP: null
	,LINE_WIDTH: null
	,LINK_STATUS: null
	,LOW_FLOAT: null
	,LOW_INT: null
	,LUMINANCE: null
	,LUMINANCE_ALPHA: null
	,MAX_COMBINED_TEXTURE_IMAGE_UNITS: null
	,MAX_CUBE_MAP_TEXTURE_SIZE: null
	,MAX_FRAGMENT_UNIFORM_VECTORS: null
	,MAX_RENDERBUFFER_SIZE: null
	,MAX_TEXTURE_IMAGE_UNITS: null
	,MAX_TEXTURE_SIZE: null
	,MAX_VARYING_VECTORS: null
	,MAX_VERTEX_ATTRIBS: null
	,MAX_VERTEX_TEXTURE_IMAGE_UNITS: null
	,MAX_VERTEX_UNIFORM_VECTORS: null
	,MAX_VIEWPORT_DIMS: null
	,MEDIUM_FLOAT: null
	,MEDIUM_INT: null
	,MIRRORED_REPEAT: null
	,NEAREST: null
	,NEAREST_MIPMAP_LINEAR: null
	,NEAREST_MIPMAP_NEAREST: null
	,NEVER: null
	,NICEST: null
	,NONE: null
	,NOTEQUAL: null
	,NO_ERROR: null
	,ONE: null
	,ONE_MINUS_CONSTANT_ALPHA: null
	,ONE_MINUS_CONSTANT_COLOR: null
	,ONE_MINUS_DST_ALPHA: null
	,ONE_MINUS_DST_COLOR: null
	,ONE_MINUS_SRC_ALPHA: null
	,ONE_MINUS_SRC_COLOR: null
	,OUT_OF_MEMORY: null
	,PACK_ALIGNMENT: null
	,POINTS: null
	,POLYGON_OFFSET_FACTOR: null
	,POLYGON_OFFSET_FILL: null
	,POLYGON_OFFSET_UNITS: null
	,RED_BITS: null
	,RENDERBUFFER: null
	,RENDERBUFFER_ALPHA_SIZE: null
	,RENDERBUFFER_BINDING: null
	,RENDERBUFFER_BLUE_SIZE: null
	,RENDERBUFFER_DEPTH_SIZE: null
	,RENDERBUFFER_GREEN_SIZE: null
	,RENDERBUFFER_HEIGHT: null
	,RENDERBUFFER_INTERNAL_FORMAT: null
	,RENDERBUFFER_RED_SIZE: null
	,RENDERBUFFER_STENCIL_SIZE: null
	,RENDERBUFFER_WIDTH: null
	,RENDERER: null
	,REPEAT: null
	,REPLACE: null
	,RGB: null
	,RGB565: null
	,RGB5_A1: null
	,RGBA: null
	,RGBA4: null
	,SAMPLER_2D: null
	,SAMPLER_CUBE: null
	,SAMPLES: null
	,SAMPLE_ALPHA_TO_COVERAGE: null
	,SAMPLE_BUFFERS: null
	,SAMPLE_COVERAGE: null
	,SAMPLE_COVERAGE_INVERT: null
	,SAMPLE_COVERAGE_VALUE: null
	,SCISSOR_BOX: null
	,SCISSOR_TEST: null
	,SHADER_TYPE: null
	,SHADING_LANGUAGE_VERSION: null
	,SHORT: null
	,SRC_ALPHA: null
	,SRC_ALPHA_SATURATE: null
	,SRC_COLOR: null
	,STATIC_DRAW: null
	,STENCIL_ATTACHMENT: null
	,STENCIL_BACK_FAIL: null
	,STENCIL_BACK_FUNC: null
	,STENCIL_BACK_PASS_DEPTH_FAIL: null
	,STENCIL_BACK_PASS_DEPTH_PASS: null
	,STENCIL_BACK_REF: null
	,STENCIL_BACK_VALUE_MASK: null
	,STENCIL_BACK_WRITEMASK: null
	,STENCIL_BITS: null
	,STENCIL_BUFFER_BIT: null
	,STENCIL_CLEAR_VALUE: null
	,STENCIL_FAIL: null
	,STENCIL_FUNC: null
	,STENCIL_INDEX: null
	,STENCIL_INDEX8: null
	,STENCIL_PASS_DEPTH_FAIL: null
	,STENCIL_PASS_DEPTH_PASS: null
	,STENCIL_REF: null
	,STENCIL_TEST: null
	,STENCIL_VALUE_MASK: null
	,STENCIL_WRITEMASK: null
	,STREAM_DRAW: null
	,SUBPIXEL_BITS: null
	,TEXTURE: null
	,TEXTURE0: null
	,TEXTURE1: null
	,TEXTURE10: null
	,TEXTURE11: null
	,TEXTURE12: null
	,TEXTURE13: null
	,TEXTURE14: null
	,TEXTURE15: null
	,TEXTURE16: null
	,TEXTURE17: null
	,TEXTURE18: null
	,TEXTURE19: null
	,TEXTURE2: null
	,TEXTURE20: null
	,TEXTURE21: null
	,TEXTURE22: null
	,TEXTURE23: null
	,TEXTURE24: null
	,TEXTURE25: null
	,TEXTURE26: null
	,TEXTURE27: null
	,TEXTURE28: null
	,TEXTURE29: null
	,TEXTURE3: null
	,TEXTURE30: null
	,TEXTURE31: null
	,TEXTURE4: null
	,TEXTURE5: null
	,TEXTURE6: null
	,TEXTURE7: null
	,TEXTURE8: null
	,TEXTURE9: null
	,TEXTURE_2D: null
	,TEXTURE_BINDING_2D: null
	,TEXTURE_BINDING_CUBE_MAP: null
	,TEXTURE_CUBE_MAP: null
	,TEXTURE_CUBE_MAP_NEGATIVE_X: null
	,TEXTURE_CUBE_MAP_NEGATIVE_Y: null
	,TEXTURE_CUBE_MAP_NEGATIVE_Z: null
	,TEXTURE_CUBE_MAP_POSITIVE_X: null
	,TEXTURE_CUBE_MAP_POSITIVE_Y: null
	,TEXTURE_CUBE_MAP_POSITIVE_Z: null
	,TEXTURE_MAG_FILTER: null
	,TEXTURE_MIN_FILTER: null
	,TEXTURE_WRAP_S: null
	,TEXTURE_WRAP_T: null
	,TRIANGLES: null
	,TRIANGLE_FAN: null
	,TRIANGLE_STRIP: null
	,UNPACK_ALIGNMENT: null
	,UNPACK_COLORSPACE_CONVERSION_WEBGL: null
	,UNPACK_FLIP_Y_WEBGL: null
	,UNPACK_PREMULTIPLY_ALPHA_WEBGL: null
	,UNSIGNED_BYTE: null
	,UNSIGNED_INT: null
	,UNSIGNED_SHORT: null
	,UNSIGNED_SHORT_4_4_4_4: null
	,UNSIGNED_SHORT_5_5_5_1: null
	,UNSIGNED_SHORT_5_6_5: null
	,VALIDATE_STATUS: null
	,VENDOR: null
	,VERSION: null
	,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: null
	,VERTEX_ATTRIB_ARRAY_ENABLED: null
	,VERTEX_ATTRIB_ARRAY_NORMALIZED: null
	,VERTEX_ATTRIB_ARRAY_POINTER: null
	,VERTEX_ATTRIB_ARRAY_SIZE: null
	,VERTEX_ATTRIB_ARRAY_STRIDE: null
	,VERTEX_ATTRIB_ARRAY_TYPE: null
	,VERTEX_SHADER: null
	,VIEWPORT: null
	,ZERO: null
	,POINT_SPRITE: null
	,VERTEX_PROGRAM_POINT_SIZE: null
	,READ_BUFFER: null
	,UNPACK_ROW_LENGTH: null
	,UNPACK_SKIP_ROWS: null
	,UNPACK_SKIP_PIXELS: null
	,PACK_ROW_LENGTH: null
	,PACK_SKIP_ROWS: null
	,PACK_SKIP_PIXELS: null
	,TEXTURE_BINDING_3D: null
	,UNPACK_SKIP_IMAGES: null
	,UNPACK_IMAGE_HEIGHT: null
	,MAX_3D_TEXTURE_SIZE: null
	,MAX_ELEMENTS_VERTICES: null
	,MAX_ELEMENTS_INDICES: null
	,MAX_TEXTURE_LOD_BIAS: null
	,MAX_FRAGMENT_UNIFORM_COMPONENTS: null
	,MAX_VERTEX_UNIFORM_COMPONENTS: null
	,MAX_ARRAY_TEXTURE_LAYERS: null
	,MIN_PROGRAM_TEXEL_OFFSET: null
	,MAX_PROGRAM_TEXEL_OFFSET: null
	,MAX_VARYING_COMPONENTS: null
	,FRAGMENT_SHADER_DERIVATIVE_HINT: null
	,RASTERIZER_DISCARD: null
	,VERTEX_ARRAY_BINDING: null
	,MAX_VERTEX_OUTPUT_COMPONENTS: null
	,MAX_FRAGMENT_INPUT_COMPONENTS: null
	,MAX_SERVER_WAIT_TIMEOUT: null
	,MAX_ELEMENT_INDEX: null
	,RED: null
	,RGB8: null
	,RGBA8: null
	,RGB10_A2: null
	,TEXTURE_3D: null
	,TEXTURE_WRAP_R: null
	,TEXTURE_MIN_LOD: null
	,TEXTURE_MAX_LOD: null
	,TEXTURE_BASE_LEVEL: null
	,TEXTURE_MAX_LEVEL: null
	,TEXTURE_COMPARE_MODE: null
	,TEXTURE_COMPARE_FUNC: null
	,SRGB: null
	,SRGB8: null
	,SRGB8_ALPHA8: null
	,COMPARE_REF_TO_TEXTURE: null
	,RGBA32F: null
	,RGB32F: null
	,RGBA16F: null
	,RGB16F: null
	,TEXTURE_2D_ARRAY: null
	,TEXTURE_BINDING_2D_ARRAY: null
	,R11F_G11F_B10F: null
	,RGB9_E5: null
	,RGBA32UI: null
	,RGB32UI: null
	,RGBA16UI: null
	,RGB16UI: null
	,RGBA8UI: null
	,RGB8UI: null
	,RGBA32I: null
	,RGB32I: null
	,RGBA16I: null
	,RGB16I: null
	,RGBA8I: null
	,RGB8I: null
	,RED_INTEGER: null
	,RGB_INTEGER: null
	,RGBA_INTEGER: null
	,R8: null
	,RG8: null
	,R16F: null
	,R32F: null
	,RG16F: null
	,RG32F: null
	,R8I: null
	,R8UI: null
	,R16I: null
	,R16UI: null
	,R32I: null
	,R32UI: null
	,RG8I: null
	,RG8UI: null
	,RG16I: null
	,RG16UI: null
	,RG32I: null
	,RG32UI: null
	,R8_SNORM: null
	,RG8_SNORM: null
	,RGB8_SNORM: null
	,RGBA8_SNORM: null
	,RGB10_A2UI: null
	,TEXTURE_IMMUTABLE_FORMAT: null
	,TEXTURE_IMMUTABLE_LEVELS: null
	,UNSIGNED_INT_2_10_10_10_REV: null
	,UNSIGNED_INT_10F_11F_11F_REV: null
	,UNSIGNED_INT_5_9_9_9_REV: null
	,FLOAT_32_UNSIGNED_INT_24_8_REV: null
	,UNSIGNED_INT_24_8: null
	,HALF_FLOAT: null
	,RG: null
	,RG_INTEGER: null
	,INT_2_10_10_10_REV: null
	,CURRENT_QUERY: null
	,QUERY_RESULT: null
	,QUERY_RESULT_AVAILABLE: null
	,ANY_SAMPLES_PASSED: null
	,ANY_SAMPLES_PASSED_CONSERVATIVE: null
	,MAX_DRAW_BUFFERS: null
	,DRAW_BUFFER0: null
	,DRAW_BUFFER1: null
	,DRAW_BUFFER2: null
	,DRAW_BUFFER3: null
	,DRAW_BUFFER4: null
	,DRAW_BUFFER5: null
	,DRAW_BUFFER6: null
	,DRAW_BUFFER7: null
	,DRAW_BUFFER8: null
	,DRAW_BUFFER9: null
	,DRAW_BUFFER10: null
	,DRAW_BUFFER11: null
	,DRAW_BUFFER12: null
	,DRAW_BUFFER13: null
	,DRAW_BUFFER14: null
	,DRAW_BUFFER15: null
	,MAX_COLOR_ATTACHMENTS: null
	,COLOR_ATTACHMENT1: null
	,COLOR_ATTACHMENT2: null
	,COLOR_ATTACHMENT3: null
	,COLOR_ATTACHMENT4: null
	,COLOR_ATTACHMENT5: null
	,COLOR_ATTACHMENT6: null
	,COLOR_ATTACHMENT7: null
	,COLOR_ATTACHMENT8: null
	,COLOR_ATTACHMENT9: null
	,COLOR_ATTACHMENT10: null
	,COLOR_ATTACHMENT11: null
	,COLOR_ATTACHMENT12: null
	,COLOR_ATTACHMENT13: null
	,COLOR_ATTACHMENT14: null
	,COLOR_ATTACHMENT15: null
	,SAMPLER_3D: null
	,SAMPLER_2D_SHADOW: null
	,SAMPLER_2D_ARRAY: null
	,SAMPLER_2D_ARRAY_SHADOW: null
	,SAMPLER_CUBE_SHADOW: null
	,INT_SAMPLER_2D: null
	,INT_SAMPLER_3D: null
	,INT_SAMPLER_CUBE: null
	,INT_SAMPLER_2D_ARRAY: null
	,UNSIGNED_INT_SAMPLER_2D: null
	,UNSIGNED_INT_SAMPLER_3D: null
	,UNSIGNED_INT_SAMPLER_CUBE: null
	,UNSIGNED_INT_SAMPLER_2D_ARRAY: null
	,MAX_SAMPLES: null
	,SAMPLER_BINDING: null
	,PIXEL_PACK_BUFFER: null
	,PIXEL_UNPACK_BUFFER: null
	,PIXEL_PACK_BUFFER_BINDING: null
	,PIXEL_UNPACK_BUFFER_BINDING: null
	,COPY_READ_BUFFER: null
	,COPY_WRITE_BUFFER: null
	,COPY_READ_BUFFER_BINDING: null
	,COPY_WRITE_BUFFER_BINDING: null
	,FLOAT_MAT2x3: null
	,FLOAT_MAT2x4: null
	,FLOAT_MAT3x2: null
	,FLOAT_MAT3x4: null
	,FLOAT_MAT4x2: null
	,FLOAT_MAT4x3: null
	,UNSIGNED_INT_VEC2: null
	,UNSIGNED_INT_VEC3: null
	,UNSIGNED_INT_VEC4: null
	,UNSIGNED_NORMALIZED: null
	,SIGNED_NORMALIZED: null
	,VERTEX_ATTRIB_ARRAY_INTEGER: null
	,VERTEX_ATTRIB_ARRAY_DIVISOR: null
	,TRANSFORM_FEEDBACK_BUFFER_MODE: null
	,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: null
	,TRANSFORM_FEEDBACK_VARYINGS: null
	,TRANSFORM_FEEDBACK_BUFFER_START: null
	,TRANSFORM_FEEDBACK_BUFFER_SIZE: null
	,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: null
	,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: null
	,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: null
	,INTERLEAVED_ATTRIBS: null
	,SEPARATE_ATTRIBS: null
	,TRANSFORM_FEEDBACK_BUFFER: null
	,TRANSFORM_FEEDBACK_BUFFER_BINDING: null
	,TRANSFORM_FEEDBACK: null
	,TRANSFORM_FEEDBACK_PAUSED: null
	,TRANSFORM_FEEDBACK_ACTIVE: null
	,TRANSFORM_FEEDBACK_BINDING: null
	,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: null
	,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: null
	,FRAMEBUFFER_ATTACHMENT_RED_SIZE: null
	,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: null
	,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: null
	,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: null
	,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: null
	,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: null
	,FRAMEBUFFER_DEFAULT: null
	,DEPTH24_STENCIL8: null
	,DRAW_FRAMEBUFFER_BINDING: null
	,READ_FRAMEBUFFER: null
	,DRAW_FRAMEBUFFER: null
	,READ_FRAMEBUFFER_BINDING: null
	,RENDERBUFFER_SAMPLES: null
	,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: null
	,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: null
	,UNIFORM_BUFFER: null
	,UNIFORM_BUFFER_BINDING: null
	,UNIFORM_BUFFER_START: null
	,UNIFORM_BUFFER_SIZE: null
	,MAX_VERTEX_UNIFORM_BLOCKS: null
	,MAX_FRAGMENT_UNIFORM_BLOCKS: null
	,MAX_COMBINED_UNIFORM_BLOCKS: null
	,MAX_UNIFORM_BUFFER_BINDINGS: null
	,MAX_UNIFORM_BLOCK_SIZE: null
	,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: null
	,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: null
	,UNIFORM_BUFFER_OFFSET_ALIGNMENT: null
	,ACTIVE_UNIFORM_BLOCKS: null
	,UNIFORM_TYPE: null
	,UNIFORM_SIZE: null
	,UNIFORM_BLOCK_INDEX: null
	,UNIFORM_OFFSET: null
	,UNIFORM_ARRAY_STRIDE: null
	,UNIFORM_MATRIX_STRIDE: null
	,UNIFORM_IS_ROW_MAJOR: null
	,UNIFORM_BLOCK_BINDING: null
	,UNIFORM_BLOCK_DATA_SIZE: null
	,UNIFORM_BLOCK_ACTIVE_UNIFORMS: null
	,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: null
	,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: null
	,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: null
	,OBJECT_TYPE: null
	,SYNC_CONDITION: null
	,SYNC_STATUS: null
	,SYNC_FLAGS: null
	,SYNC_FENCE: null
	,SYNC_GPU_COMMANDS_COMPLETE: null
	,UNSIGNALED: null
	,SIGNALED: null
	,ALREADY_SIGNALED: null
	,TIMEOUT_EXPIRED: null
	,CONDITION_SATISFIED: null
	,WAIT_FAILED: null
	,SYNC_FLUSH_COMMANDS_BIT: null
	,COLOR: null
	,DEPTH: null
	,STENCIL: null
	,MIN: null
	,MAX: null
	,DEPTH_COMPONENT24: null
	,STREAM_READ: null
	,STREAM_COPY: null
	,STATIC_READ: null
	,STATIC_COPY: null
	,DYNAMIC_READ: null
	,DYNAMIC_COPY: null
	,DEPTH_COMPONENT32F: null
	,DEPTH32F_STENCIL8: null
	,INVALID_INDEX: null
	,TIMEOUT_IGNORED: null
	,MAX_CLIENT_WAIT_TIMEOUT_WEBGL: null
	,type: null
	,version: null
	,activeTexture: function(texture) {
	}
	,attachShader: function(program,shader) {
	}
	,beginQuery: function(target,query) {
	}
	,beginTransformFeedback: function(primitiveNode) {
	}
	,bindAttribLocation: function(program,index,name) {
	}
	,bindBuffer: function(target,buffer) {
	}
	,bindBufferBase: function(target,index,buffer) {
	}
	,bindBufferRange: function(target,index,buffer,offset,size) {
	}
	,bindFramebuffer: function(target,framebuffer) {
	}
	,bindRenderbuffer: function(target,renderbuffer) {
	}
	,bindSampler: function(unit,sampler) {
	}
	,bindTexture: function(target,texture) {
	}
	,bindTransformFeedback: function(target,transformFeedback) {
	}
	,bindVertexArray: function(vertexArray) {
	}
	,blitFramebuffer: function(srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter) {
	}
	,blendColor: function(red,green,blue,alpha) {
	}
	,blendEquation: function(mode) {
	}
	,blendEquationSeparate: function(modeRGB,modeAlpha) {
	}
	,blendFunc: function(sfactor,dfactor) {
	}
	,blendFuncSeparate: function(srcRGB,dstRGB,srcAlpha,dstAlpha) {
	}
	,bufferData: function(target,size,data,usage) {
	}
	,bufferSubData: function(target,dstByteOffset,size,data) {
	}
	,checkFramebufferStatus: function(target) {
		return 0;
	}
	,clear: function(mask) {
	}
	,clearBufferfi: function(buffer,drawbuffer,depth,stencil) {
	}
	,clearBufferfv: function(buffer,drawbuffer,value) {
	}
	,clearBufferiv: function(buffer,drawbuffer,value) {
	}
	,clearBufferuiv: function(buffer,drawbuffer,value) {
	}
	,clearColor: function(red,green,blue,alpha) {
	}
	,clearDepthf: function(depth) {
	}
	,clearStencil: function(s) {
	}
	,clientWaitSync: function(sync,flags,timeout) {
		return 0;
	}
	,colorMask: function(red,green,blue,alpha) {
	}
	,compileShader: function(shader) {
	}
	,compressedTexImage2D: function(target,level,internalformat,width,height,border,imageSize,data) {
	}
	,compressedTexImage3D: function(target,level,internalformat,width,height,depth,border,imageSize,data) {
	}
	,compressedTexSubImage2D: function(target,level,xoffset,yoffset,width,height,format,imageSize,data) {
	}
	,compressedTexSubImage3D: function(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data) {
	}
	,copyBufferSubData: function(readTarget,writeTarget,readOffset,writeOffset,size) {
	}
	,copyTexImage2D: function(target,level,internalformat,x,y,width,height,border) {
	}
	,copyTexSubImage2D: function(target,level,xoffset,yoffset,x,y,width,height) {
	}
	,copyTexSubImage3D: function(target,level,xoffset,yoffset,zoffset,x,y,width,height) {
	}
	,createBuffer: function() {
		return null;
	}
	,createFramebuffer: function() {
		return null;
	}
	,createProgram: function() {
		return null;
	}
	,createQuery: function() {
		return null;
	}
	,createRenderbuffer: function() {
		return null;
	}
	,createSampler: function() {
		return null;
	}
	,createShader: function(type) {
		return null;
	}
	,createTexture: function() {
		return null;
	}
	,createTransformFeedback: function() {
		return null;
	}
	,createVertexArray: function() {
		return null;
	}
	,cullFace: function(mode) {
	}
	,deleteBuffer: function(buffer) {
	}
	,deleteFramebuffer: function(framebuffer) {
	}
	,deleteProgram: function(program) {
	}
	,deleteQuery: function(query) {
	}
	,deleteRenderbuffer: function(renderbuffer) {
	}
	,deleteSampler: function(sampler) {
	}
	,deleteShader: function(shader) {
	}
	,deleteSync: function(sync) {
	}
	,deleteTexture: function(texture) {
	}
	,deleteTransformFeedback: function(transformFeedback) {
	}
	,deleteVertexArray: function(vertexArray) {
	}
	,depthFunc: function(func) {
	}
	,depthMask: function(flag) {
	}
	,depthRangef: function(zNear,zFar) {
	}
	,detachShader: function(program,shader) {
	}
	,disable: function(cap) {
	}
	,disableVertexAttribArray: function(index) {
	}
	,drawArrays: function(mode,first,count) {
	}
	,drawArraysInstanced: function(mode,first,count,instanceCount) {
	}
	,drawBuffers: function(buffers) {
	}
	,drawElements: function(mode,count,type,offset) {
	}
	,drawElementsInstanced: function(mode,count,type,offset,instanceCount) {
	}
	,drawRangeElements: function(mode,start,end,count,type,offset) {
	}
	,enable: function(cap) {
	}
	,enableVertexAttribArray: function(index) {
	}
	,endQuery: function(target) {
	}
	,endTransformFeedback: function() {
	}
	,fenceSync: function(condition,flags) {
		return null;
	}
	,finish: function() {
	}
	,flush: function() {
	}
	,framebufferRenderbuffer: function(target,attachment,renderbuffertarget,renderbuffer) {
	}
	,framebufferTexture2D: function(target,attachment,textarget,texture,level) {
	}
	,framebufferTextureLayer: function(target,attachment,texture,level,layer) {
	}
	,frontFace: function(mode) {
	}
	,generateMipmap: function(target) {
	}
	,getActiveAttrib: function(program,index) {
		return null;
	}
	,getActiveUniform: function(program,index) {
		return null;
	}
	,getActiveUniformBlocki: function(program,uniformBlockIndex,pname) {
		return 0;
	}
	,getActiveUniformBlockiv: function(program,uniformBlockIndex,pname,params) {
	}
	,getActiveUniformBlockName: function(program,uniformBlockIndex) {
		return null;
	}
	,getActiveUniformBlockParameter: function(program,uniformBlockIndex,pname) {
		return null;
	}
	,getActiveUniforms: function(program,uniformIndices,pname) {
		return null;
	}
	,getActiveUniformsiv: function(program,uniformIndices,pname,params) {
	}
	,getAttachedShaders: function(program) {
		return null;
	}
	,getAttribLocation: function(program,name) {
		return 0;
	}
	,getBoolean: function(pname) {
		return false;
	}
	,getBooleanv: function(pname,params) {
	}
	,getBufferParameter: function(target,pname) {
		return null;
	}
	,getBufferParameteri: function(target,pname) {
		return 0;
	}
	,getBufferParameteri64v: function(target,pname,params) {
	}
	,getBufferParameteriv: function(target,pname,data) {
	}
	,getBufferPointerv: function(target,pname) {
		return lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0);
	}
	,getBufferSubData: function(target,offset,size,data) {
	}
	,getContextAttributes: function() {
		return null;
	}
	,getError: function() {
		return 0;
	}
	,getExtension: function(name) {
		return null;
	}
	,getFloat: function(pname) {
		return 0;
	}
	,getFloatv: function(pname,params) {
	}
	,getFragDataLocation: function(program,name) {
		return 0;
	}
	,getFramebufferAttachmentParameter: function(target,attachment,pname) {
		return null;
	}
	,getFramebufferAttachmentParameteri: function(target,attachment,pname) {
		return 0;
	}
	,getFramebufferAttachmentParameteriv: function(target,attachment,pname,params) {
	}
	,getIndexedParameter: function(target,index) {
		return null;
	}
	,getInteger: function(pname) {
		return 0;
	}
	,getInteger64: function(pname) {
		var this1 = new haxe__$Int64__$_$_$Int64(0,0);
		return this1;
	}
	,getInteger64i: function(pname) {
		var this1 = new haxe__$Int64__$_$_$Int64(0,0);
		return this1;
	}
	,getInteger64i_v: function(pname,index,params) {
	}
	,getInteger64v: function(pname,params) {
	}
	,getIntegeri: function(pname) {
		return 0;
	}
	,getIntegeri_v: function(pname,index,params) {
	}
	,getIntegerv: function(pname,params) {
	}
	,getInternalformati: function(target,internalformat,pname) {
		return 0;
	}
	,getInternalformativ: function(target,internalformat,pname,bufSize,params) {
	}
	,getInternalformatParameter: function(target,internalformat,pname) {
		return null;
	}
	,getParameter: function(pname) {
		return null;
	}
	,getProgrami: function(program,pname) {
		return 0;
	}
	,getProgramiv: function(program,pname,params) {
	}
	,getProgramBinary: function(program,binaryFormat) {
		return null;
	}
	,getProgramInfoLog: function(program) {
		return null;
	}
	,getProgramParameter: function(program,pname) {
		return null;
	}
	,getQuery: function(target,pname) {
		return null;
	}
	,getQueryi: function(target,pname) {
		return 0;
	}
	,getQueryiv: function(target,pname,params) {
	}
	,getQueryObjectui: function(query,pname) {
		return 0;
	}
	,getQueryObjectuiv: function(query,pname,params) {
	}
	,getQueryParameter: function(query,pname) {
		return null;
	}
	,getRenderbufferParameter: function(target,pname) {
		return null;
	}
	,getRenderbufferParameteri: function(target,pname) {
		return 0;
	}
	,getRenderbufferParameteriv: function(target,pname,params) {
	}
	,getSamplerParameter: function(sampler,pname) {
		return null;
	}
	,getSamplerParameterf: function(sampler,pname) {
		return 0;
	}
	,getSamplerParameterfv: function(sampler,pname,params) {
	}
	,getSamplerParameteri: function(sampler,pname) {
		return 0;
	}
	,getSamplerParameteriv: function(sampler,pname,params) {
	}
	,getShaderi: function(shader,pname) {
		return 0;
	}
	,getShaderiv: function(shader,pname,params) {
	}
	,getShaderInfoLog: function(shader) {
		return null;
	}
	,getShaderParameter: function(shader,pname) {
		return null;
	}
	,getShaderPrecisionFormat: function(shadertype,precisiontype) {
		return null;
	}
	,getShaderSource: function(shader) {
		return null;
	}
	,getString: function(pname) {
		return null;
	}
	,getStringi: function(name,index) {
		return null;
	}
	,getSupportedExtensions: function() {
		return null;
	}
	,getSyncParameter: function(sync,pname) {
		return null;
	}
	,getSyncParameteri: function(sync,pname) {
		return 0;
	}
	,getSyncParameteriv: function(sync,pname,params) {
	}
	,getTexParameter: function(target,pname) {
		return null;
	}
	,getTexParameterf: function(target,pname) {
		return 0;
	}
	,getTexParameterfv: function(target,pname,params) {
	}
	,getTexParameteri: function(target,pname) {
		return 0;
	}
	,getTexParameteriv: function(target,pname,params) {
	}
	,getTransformFeedbackVarying: function(program,index) {
		return null;
	}
	,getUniform: function(program,location) {
		return null;
	}
	,getUniformf: function(program,location) {
		return 0;
	}
	,getUniformfv: function(program,location,params) {
	}
	,getUniformi: function(program,location) {
		return 0;
	}
	,getUniformiv: function(program,location,params) {
	}
	,getUniformui: function(program,location) {
		return 0;
	}
	,getUniformuiv: function(program,location,params) {
	}
	,getUniformBlockIndex: function(program,uniformBlockName) {
		return 0;
	}
	,getUniformIndices: function(program,uniformNames) {
		return null;
	}
	,getUniformLocation: function(program,name) {
		return 0;
	}
	,getVertexAttrib: function(index,pname) {
		return null;
	}
	,getVertexAttribf: function(index,pname) {
		return 0;
	}
	,getVertexAttribfv: function(index,pname,params) {
	}
	,getVertexAttribi: function(index,pname) {
		return 0;
	}
	,getVertexAttribIi: function(index,pname) {
		return 0;
	}
	,getVertexAttribIiv: function(index,pname,params) {
	}
	,getVertexAttribIui: function(index,pname) {
		return 0;
	}
	,getVertexAttribIuiv: function(index,pname,params) {
	}
	,getVertexAttribiv: function(index,pname,params) {
	}
	,getVertexAttribPointerv: function(index,pname) {
		return 0;
	}
	,hint: function(target,mode) {
	}
	,invalidateFramebuffer: function(target,attachments) {
	}
	,invalidateSubFramebuffer: function(target,attachments,x,y,width,height) {
	}
	,isBuffer: function(buffer) {
		return false;
	}
	,isContextLost: function() {
		return false;
	}
	,isEnabled: function(cap) {
		return false;
	}
	,isFramebuffer: function(framebuffer) {
		return false;
	}
	,isProgram: function(program) {
		return false;
	}
	,isQuery: function(query) {
		return false;
	}
	,isRenderbuffer: function(renderbuffer) {
		return false;
	}
	,isSampler: function(sampler) {
		return false;
	}
	,isShader: function(shader) {
		return false;
	}
	,isSync: function(sync) {
		return false;
	}
	,isTexture: function(texture) {
		return false;
	}
	,isTransformFeedback: function(transformFeedback) {
		return false;
	}
	,isVertexArray: function(vertexArray) {
		return false;
	}
	,lineWidth: function(width) {
	}
	,linkProgram: function(program) {
	}
	,mapBufferRange: function(target,offset,length,access) {
		return lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0);
	}
	,pauseTransformFeedback: function() {
	}
	,pixelStorei: function(pname,param) {
	}
	,polygonOffset: function(factor,units) {
	}
	,programBinary: function(program,binaryFormat,binary,length) {
	}
	,programParameteri: function(program,pname,value) {
	}
	,readBuffer: function(src) {
	}
	,readPixels: function(x,y,width,height,format,type,pixels) {
	}
	,releaseShaderCompiler: function() {
	}
	,renderbufferStorage: function(target,internalformat,width,height) {
	}
	,renderbufferStorageMultisample: function(target,samples,internalFormat,width,height) {
	}
	,resumeTransformFeedback: function() {
	}
	,sampleCoverage: function(value,invert) {
	}
	,samplerParameterf: function(sampler,pname,param) {
	}
	,samplerParameteri: function(sampler,pname,param) {
	}
	,scissor: function(x,y,width,height) {
	}
	,shaderBinary: function(shaders,binaryformat,binary,length) {
	}
	,shaderSource: function(shader,string) {
	}
	,stencilFunc: function(func,ref,mask) {
	}
	,stencilFuncSeparate: function(face,func,ref,mask) {
	}
	,stencilMask: function(mask) {
	}
	,stencilMaskSeparate: function(face,mask) {
	}
	,stencilOp: function(fail,zfail,zpass) {
	}
	,stencilOpSeparate: function(face,fail,zfail,zpass) {
	}
	,texImage2D: function(target,level,internalformat,width,height,border,format,type,data) {
	}
	,texImage3D: function(target,level,internalformat,width,height,depth,border,format,type,data) {
	}
	,texStorage2D: function(target,level,internalformat,width,height) {
	}
	,texStorage3D: function(target,level,internalformat,width,height,depth) {
	}
	,texParameterf: function(target,pname,param) {
	}
	,texParameteri: function(target,pname,param) {
	}
	,texSubImage2D: function(target,level,xoffset,yoffset,width,height,format,type,data) {
	}
	,texSubImage3D: function(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,data) {
	}
	,transformFeedbackVaryings: function(program,varyings,bufferMode) {
	}
	,uniform1f: function(location,v0) {
	}
	,uniform1fv: function(location,count,v) {
	}
	,uniform1i: function(location,v0) {
	}
	,uniform1iv: function(location,count,v) {
	}
	,uniform1ui: function(location,v0) {
	}
	,uniform1uiv: function(location,count,v) {
	}
	,uniform2f: function(location,v0,v1) {
	}
	,uniform2fv: function(location,count,v) {
	}
	,uniform2i: function(location,v0,v1) {
	}
	,uniform2iv: function(location,count,v) {
	}
	,uniform2ui: function(location,v0,v1) {
	}
	,uniform2uiv: function(location,count,v) {
	}
	,uniform3f: function(location,v0,v1,v2) {
	}
	,uniform3fv: function(location,count,v) {
	}
	,uniform3i: function(location,v0,v1,v2) {
	}
	,uniform3iv: function(location,count,v) {
	}
	,uniform3ui: function(location,v0,v1,v2) {
	}
	,uniform3uiv: function(location,count,v) {
	}
	,uniform4f: function(location,v0,v1,v2,v3) {
	}
	,uniform4fv: function(location,count,v) {
	}
	,uniform4i: function(location,v0,v1,v2,v3) {
	}
	,uniform4iv: function(location,count,v) {
	}
	,uniform4ui: function(location,v0,v1,v2,v3) {
	}
	,uniform4uiv: function(location,count,v) {
	}
	,uniformBlockBinding: function(program,uniformBlockIndex,uniformBlockBinding) {
	}
	,uniformMatrix2fv: function(location,count,transpose,v) {
	}
	,uniformMatrix2x3fv: function(location,count,transpose,v) {
	}
	,uniformMatrix2x4fv: function(location,count,transpose,v) {
	}
	,uniformMatrix3fv: function(location,count,transpose,v) {
	}
	,uniformMatrix3x2fv: function(location,count,transpose,v) {
	}
	,uniformMatrix3x4fv: function(location,count,transpose,v) {
	}
	,uniformMatrix4fv: function(location,count,transpose,v) {
	}
	,uniformMatrix4x2fv: function(location,count,transpose,v) {
	}
	,uniformMatrix4x3fv: function(location,count,transpose,v) {
	}
	,unmapBuffer: function(target) {
		return false;
	}
	,useProgram: function(program) {
	}
	,validateProgram: function(program) {
	}
	,vertexAttrib1f: function(indx,v0) {
	}
	,vertexAttrib1fv: function(indx,v) {
	}
	,vertexAttrib2f: function(indx,v0,v1) {
	}
	,vertexAttrib2fv: function(indx,v) {
	}
	,vertexAttrib3f: function(indx,v0,v1,v2) {
	}
	,vertexAttrib3fv: function(indx,v) {
	}
	,vertexAttrib4f: function(indx,v0,v1,v2,v3) {
	}
	,vertexAttrib4fv: function(indx,v) {
	}
	,vertexAttribDivisor: function(index,divisor) {
	}
	,vertexAttribI4i: function(index,v0,v1,v2,v3) {
	}
	,vertexAttribI4iv: function(index,value) {
	}
	,vertexAttribI4ui: function(index,v0,v1,v2,v3) {
	}
	,vertexAttribI4uiv: function(index,value) {
	}
	,vertexAttribIPointer: function(index,size,type,stride,offset) {
	}
	,vertexAttribPointer: function(index,size,type,normalized,stride,offset) {
	}
	,viewport: function(x,y,width,height) {
	}
	,waitSync: function(sync,flags,timeout) {
	}
	,__class__: lime_graphics_GLRenderContext
};
var lime_graphics_Image = function(buffer,offsetX,offsetY,width,height,color,type) {
	if(height == null) {
		height = -1;
	}
	if(width == null) {
		width = -1;
	}
	if(offsetY == null) {
		offsetY = 0;
	}
	if(offsetX == null) {
		offsetX = 0;
	}
	this.offsetX = offsetX;
	this.offsetY = offsetY;
	this.width = width;
	this.height = height;
	this.version = 0;
	if(type == null) {
		type = lime_graphics_ImageType.DATA;
	}
	this.type = type;
	if(buffer == null) {
		if(width > 0 && height > 0) {
			var _g = this.type;
			switch(_g[1]) {
			case 0:
				this.buffer = new lime_graphics_ImageBuffer(null,width,height);
				lime_graphics_utils_ImageCanvasUtil.createCanvas(this,width,height);
				if(color != null && color != 0) {
					this.fillRect(new lime_math_Rectangle(0,0,width,height),color);
				}
				break;
			case 1:
				var elements = width * height * 4;
				var this1;
				if(elements != null) {
					this1 = new Uint8Array(elements);
				} else {
					this1 = null;
				}
				this.buffer = new lime_graphics_ImageBuffer(this1,width,height);
				if(color != null && color != 0) {
					this.fillRect(new lime_math_Rectangle(0,0,width,height),color);
				}
				break;
			case 2:
				break;
			default:
			}
		}
	} else {
		this.__fromImageBuffer(buffer);
	}
};
$hxClasses["lime.graphics.Image"] = lime_graphics_Image;
lime_graphics_Image.__name__ = ["lime","graphics","Image"];
lime_graphics_Image.fromBase64 = function(base64,type) {
	if(base64 == null) {
		return null;
	}
	var image = new lime_graphics_Image();
	image.__fromBase64(base64,type);
	return image;
};
lime_graphics_Image.fromBitmapData = function(bitmapData) {
	if(bitmapData == null) {
		return null;
	}
	return bitmapData.image;
};
lime_graphics_Image.fromBytes = function(bytes) {
	if(bytes == null) {
		return null;
	}
	var image = new lime_graphics_Image();
	image.__fromBytes(bytes);
	return image;
};
lime_graphics_Image.fromCanvas = function(canvas) {
	if(canvas == null) {
		return null;
	}
	var buffer = new lime_graphics_ImageBuffer(null,canvas.width,canvas.height);
	buffer.set_src(canvas);
	var image = new lime_graphics_Image(buffer);
	image.type = lime_graphics_ImageType.CANVAS;
	return image;
};
lime_graphics_Image.fromFile = function(path) {
	if(path == null) {
		return null;
	}
	var image = new lime_graphics_Image();
	image.__fromFile(path);
	return image;
};
lime_graphics_Image.fromImageElement = function(image) {
	if(image == null) {
		return null;
	}
	var buffer = new lime_graphics_ImageBuffer(null,image.width,image.height);
	buffer.set_src(image);
	var _image = new lime_graphics_Image(buffer);
	_image.type = lime_graphics_ImageType.CANVAS;
	return _image;
};
lime_graphics_Image.loadFromBase64 = function(base64,type) {
	if(base64 == null || type == null) {
		return lime_app_Future.withValue(null);
	}
	return lime_app_Future.withError("");
};
lime_graphics_Image.loadFromBytes = function(bytes) {
	if(bytes == null) {
		return lime_app_Future.withValue(null);
	}
	return new lime_app_Future(function() {
		return lime_graphics_Image.fromBytes(bytes);
	},true);
};
lime_graphics_Image.loadFromFile = function(path) {
	if(path == null) {
		return lime_app_Future.withValue(null);
	}
	var request = new lime_net__$HTTPRequest_$lime_$graphics_$Image();
	return request.load(path).then(function(image) {
		if(image != null) {
			return lime_app_Future.withValue(image);
		} else {
			return lime_app_Future.withError("");
		}
	});
};
lime_graphics_Image.__base64Encode = function(bytes) {
	return "";
};
lime_graphics_Image.__isGIF = function(bytes) {
	if(bytes == null || bytes.length < 6) {
		return false;
	}
	var header = bytes.getString(0,6);
	if(header != "GIF87a") {
		return header == "GIF89a";
	} else {
		return true;
	}
};
lime_graphics_Image.__isJPG = function(bytes) {
	if(bytes == null || bytes.length < 4) {
		return false;
	}
	if(bytes.b[0] == 255 && bytes.b[1] == 216 && bytes.b[bytes.length - 2] == 255) {
		return bytes.b[bytes.length - 1] == 217;
	} else {
		return false;
	}
};
lime_graphics_Image.__isPNG = function(bytes) {
	if(bytes == null || bytes.length < 8) {
		return false;
	}
	if(bytes.b[0] == 137 && bytes.b[1] == 80 && bytes.b[2] == 78 && bytes.b[3] == 71 && bytes.b[4] == 13 && bytes.b[5] == 10 && bytes.b[6] == 26) {
		return bytes.b[7] == 10;
	} else {
		return false;
	}
};
lime_graphics_Image.__isWebP = function(bytes) {
	if(bytes == null || bytes.length < 16) {
		return false;
	}
	if(bytes.getString(0,4) == "RIFF") {
		return bytes.getString(8,4) == "WEBP";
	} else {
		return false;
	}
};
lime_graphics_Image.prototype = {
	buffer: null
	,dirty: null
	,height: null
	,offsetX: null
	,offsetY: null
	,rect: null
	,type: null
	,version: null
	,width: null
	,x: null
	,y: null
	,clone: function() {
		if(this.buffer != null) {
			var image = new lime_graphics_Image(this.buffer.clone(),this.offsetX,this.offsetY,this.width,this.height,null,this.type);
			image.version = this.version;
			return image;
		} else {
			return new lime_graphics_Image(null,this.offsetX,this.offsetY,this.width,this.height,null,this.type);
		}
	}
	,colorTransform: function(rect,colorMatrix) {
		rect = this.__clipRect(rect);
		if(this.buffer == null || rect == null) {
			return;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.colorTransform(this,rect,colorMatrix);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.colorTransform(this,rect,colorMatrix);
			break;
		case 2:
			rect.offset(this.offsetX,this.offsetY);
			this.buffer.__srcBitmapData.colorTransform(rect.__toFlashRectangle(),lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__toFlashColorTransform(colorMatrix));
			break;
		default:
		}
	}
	,copyChannel: function(sourceImage,sourceRect,destPoint,sourceChannel,destChannel) {
		sourceRect = this.__clipRect(sourceRect);
		if(this.buffer == null || sourceRect == null) {
			return;
		}
		if(destChannel == lime_graphics_ImageChannel.ALPHA && !this.get_transparent()) {
			return;
		}
		if(sourceRect.width <= 0 || sourceRect.height <= 0) {
			return;
		}
		if(sourceRect.x + sourceRect.width > sourceImage.width) {
			sourceRect.width = sourceImage.width - sourceRect.x;
		}
		if(sourceRect.y + sourceRect.height > sourceImage.height) {
			sourceRect.height = sourceImage.height - sourceRect.y;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.copyChannel(this,sourceImage,sourceRect,destPoint,sourceChannel,destChannel);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.copyChannel(this,sourceImage,sourceRect,destPoint,sourceChannel,destChannel);
			break;
		case 2:
			var srcChannel;
			switch(sourceChannel[1]) {
			case 0:
				srcChannel = 1;
				break;
			case 1:
				srcChannel = 2;
				break;
			case 2:
				srcChannel = 4;
				break;
			case 3:
				srcChannel = 8;
				break;
			}
			var dstChannel;
			switch(destChannel[1]) {
			case 0:
				dstChannel = 1;
				break;
			case 1:
				dstChannel = 2;
				break;
			case 2:
				dstChannel = 4;
				break;
			case 3:
				dstChannel = 8;
				break;
			}
			sourceRect.offset(sourceImage.offsetX,sourceImage.offsetY);
			destPoint.offset(this.offsetX,this.offsetY);
			this.buffer.__srcBitmapData.copyChannel(sourceImage.buffer.get_src(),sourceRect.__toFlashRectangle(),destPoint.__toFlashPoint(),srcChannel,dstChannel);
			break;
		default:
		}
	}
	,copyPixels: function(sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha) {
		if(mergeAlpha == null) {
			mergeAlpha = false;
		}
		if(this.buffer == null || sourceImage == null) {
			return;
		}
		if(sourceRect.width <= 0 || sourceRect.height <= 0) {
			return;
		}
		if(this.width <= 0 || this.height <= 0) {
			return;
		}
		if(sourceRect.x + sourceRect.width > sourceImage.width) {
			sourceRect.width = sourceImage.width - sourceRect.x;
		}
		if(sourceRect.y + sourceRect.height > sourceImage.height) {
			sourceRect.height = sourceImage.height - sourceRect.y;
		}
		if(sourceRect.x < 0) {
			sourceRect.width += sourceRect.x;
			sourceRect.x = 0;
		}
		if(sourceRect.y < 0) {
			sourceRect.height += sourceRect.y;
			sourceRect.y = 0;
		}
		if(destPoint.x + sourceRect.width > this.width) {
			sourceRect.width = this.width - destPoint.x;
		}
		if(destPoint.y + sourceRect.height > this.height) {
			sourceRect.height = this.height - destPoint.y;
		}
		if(destPoint.x < 0) {
			sourceRect.width += destPoint.x;
			sourceRect.x -= destPoint.x;
			destPoint.x = 0;
		}
		if(destPoint.y < 0) {
			sourceRect.height += destPoint.y;
			sourceRect.y -= destPoint.y;
			destPoint.y = 0;
		}
		if(sourceImage == this && destPoint.x < sourceRect.get_right() && destPoint.y < sourceRect.get_bottom()) {
			sourceImage = this.clone();
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			if(alphaImage != null || sourceImage.type != lime_graphics_ImageType.CANVAS) {
				lime_graphics_utils_ImageCanvasUtil.convertToData(this);
				lime_graphics_utils_ImageCanvasUtil.convertToData(sourceImage);
				if(alphaImage != null) {
					lime_graphics_utils_ImageCanvasUtil.convertToData(alphaImage);
				}
				lime_graphics_utils_ImageDataUtil.copyPixels(this,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha);
			} else {
				lime_graphics_utils_ImageCanvasUtil.convertToCanvas(this);
				lime_graphics_utils_ImageCanvasUtil.convertToCanvas(sourceImage);
				lime_graphics_utils_ImageCanvasUtil.copyPixels(this,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha);
			}
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.copyPixels(this,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha);
			break;
		case 2:
			sourceRect.offset(sourceImage.offsetX,sourceImage.offsetY);
			destPoint.offset(this.offsetX,this.offsetY);
			if(alphaImage != null && alphaPoint != null) {
				alphaPoint.offset(alphaImage.offsetX,alphaImage.offsetY);
			}
			this.buffer.__srcBitmapData.copyPixels(sourceImage.buffer.__srcBitmapData,sourceRect.__toFlashRectangle(),destPoint.__toFlashPoint(),alphaImage != null ? alphaImage.buffer.get_src() : null,alphaPoint != null ? alphaPoint.__toFlashPoint() : null,mergeAlpha);
			break;
		default:
		}
	}
	,encode: function(format,quality) {
		if(quality == null) {
			quality = 90;
		}
		if(format == null) {
			format = "png";
		}
		switch(format) {
		case "bmp":
			return lime_graphics_format_BMP.encode(this);
		case "jpeg":case "jpg":
			return lime_graphics_format_JPEG.encode(this,quality);
		case "png":
			return lime_graphics_format_PNG.encode(this);
		default:
		}
		return null;
	}
	,fillRect: function(rect,color,format) {
		rect = this.__clipRect(rect);
		if(this.buffer == null || rect == null) {
			return;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.fillRect(this,rect,color,format);
			break;
		case 1:
			if(this.buffer.data.length == 0) {
				return;
			}
			lime_graphics_utils_ImageDataUtil.fillRect(this,rect,color,format);
			break;
		case 2:
			rect.offset(this.offsetX,this.offsetY);
			var argb;
			if(format == null) {
				var rgba = color;
				var this1 = 0;
				var argb1 = this1;
				argb1 = (rgba & 255 & 255) << 24 | (rgba >>> 24 & 255 & 255) << 16 | (rgba >>> 16 & 255 & 255) << 8 | rgba >>> 8 & 255 & 255;
				argb = argb1;
			} else {
				switch(format) {
				case 1:
					argb = color;
					break;
				case 2:
					var bgra = color;
					var this2 = 0;
					var argb2 = this2;
					argb2 = (bgra & 255 & 255) << 24 | (bgra >>> 8 & 255 & 255) << 16 | (bgra >>> 16 & 255 & 255) << 8 | bgra >>> 24 & 255 & 255;
					argb = argb2;
					break;
				default:
					var rgba1 = color;
					var this3 = 0;
					var argb3 = this3;
					argb3 = (rgba1 & 255 & 255) << 24 | (rgba1 >>> 24 & 255 & 255) << 16 | (rgba1 >>> 16 & 255 & 255) << 8 | rgba1 >>> 8 & 255 & 255;
					argb = argb3;
				}
			}
			this.buffer.__srcBitmapData.fillRect(rect.__toFlashRectangle(),argb);
			break;
		default:
		}
	}
	,floodFill: function(x,y,color,format) {
		if(this.buffer == null) {
			return;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.floodFill(this,x,y,color,format);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.floodFill(this,x,y,color,format);
			break;
		case 2:
			var argb;
			if(format == null) {
				var rgba = color;
				var this1 = 0;
				var argb1 = this1;
				argb1 = (rgba & 255 & 255) << 24 | (rgba >>> 24 & 255 & 255) << 16 | (rgba >>> 16 & 255 & 255) << 8 | rgba >>> 8 & 255 & 255;
				argb = argb1;
			} else {
				switch(format) {
				case 1:
					argb = color;
					break;
				case 2:
					var bgra = color;
					var this2 = 0;
					var argb2 = this2;
					argb2 = (bgra & 255 & 255) << 24 | (bgra >>> 8 & 255 & 255) << 16 | (bgra >>> 16 & 255 & 255) << 8 | bgra >>> 24 & 255 & 255;
					argb = argb2;
					break;
				default:
					var rgba1 = color;
					var this3 = 0;
					var argb3 = this3;
					argb3 = (rgba1 & 255 & 255) << 24 | (rgba1 >>> 24 & 255 & 255) << 16 | (rgba1 >>> 16 & 255 & 255) << 8 | rgba1 >>> 8 & 255 & 255;
					argb = argb3;
				}
			}
			this.buffer.__srcBitmapData.floodFill(x + this.offsetX,y + this.offsetY,argb);
			break;
		default:
		}
	}
	,getColorBoundsRect: function(mask,color,findColor,format) {
		if(findColor == null) {
			findColor = true;
		}
		if(this.buffer == null) {
			return null;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			return lime_graphics_utils_ImageDataUtil.getColorBoundsRect(this,mask,color,findColor,format);
		case 1:
			return lime_graphics_utils_ImageDataUtil.getColorBoundsRect(this,mask,color,findColor,format);
		case 2:
			var rect = this.buffer.__srcBitmapData.getColorBoundsRect(mask,color,findColor);
			return new lime_math_Rectangle(rect.x,rect.y,rect.width,rect.height);
		default:
			return null;
		}
	}
	,getPixel: function(x,y,format) {
		if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) {
			return 0;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			return lime_graphics_utils_ImageCanvasUtil.getPixel(this,x,y,format);
		case 1:
			return lime_graphics_utils_ImageDataUtil.getPixel(this,x,y,format);
		case 2:
			var color = this.buffer.__srcBitmapData.getPixel(x + this.offsetX,y + this.offsetY);
			if(format == null) {
				var this1 = 0;
				var rgba = this1;
				rgba = (color >>> 16 & 255 & 255) << 24 | (color >>> 8 & 255 & 255) << 16 | (color & 255 & 255) << 8 | color >>> 24 & 255 & 255;
				var rgba1 = rgba;
				return rgba1;
			} else {
				switch(format) {
				case 1:
					return color;
				case 2:
					var this2 = 0;
					var bgra = this2;
					bgra = (color & 255 & 255) << 24 | (color >>> 8 & 255 & 255) << 16 | (color >>> 16 & 255 & 255) << 8 | color >>> 24 & 255 & 255;
					var bgra1 = bgra;
					return bgra1;
				default:
					var this3 = 0;
					var rgba2 = this3;
					rgba2 = (color >>> 16 & 255 & 255) << 24 | (color >>> 8 & 255 & 255) << 16 | (color & 255 & 255) << 8 | color >>> 24 & 255 & 255;
					var rgba3 = rgba2;
					return rgba3;
				}
			}
			break;
		default:
			return 0;
		}
	}
	,getPixel32: function(x,y,format) {
		if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) {
			return 0;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			return lime_graphics_utils_ImageCanvasUtil.getPixel32(this,x,y,format);
		case 1:
			return lime_graphics_utils_ImageDataUtil.getPixel32(this,x,y,format);
		case 2:
			var color = this.buffer.__srcBitmapData.getPixel32(x + this.offsetX,y + this.offsetY);
			if(format == null) {
				var this1 = 0;
				var rgba = this1;
				rgba = (color >>> 16 & 255 & 255) << 24 | (color >>> 8 & 255 & 255) << 16 | (color & 255 & 255) << 8 | color >>> 24 & 255 & 255;
				var rgba1 = rgba;
				return rgba1;
			} else {
				switch(format) {
				case 1:
					return color;
				case 2:
					var this2 = 0;
					var bgra = this2;
					bgra = (color & 255 & 255) << 24 | (color >>> 8 & 255 & 255) << 16 | (color >>> 16 & 255 & 255) << 8 | color >>> 24 & 255 & 255;
					var bgra1 = bgra;
					return bgra1;
				default:
					var this3 = 0;
					var rgba2 = this3;
					rgba2 = (color >>> 16 & 255 & 255) << 24 | (color >>> 8 & 255 & 255) << 16 | (color & 255 & 255) << 8 | color >>> 24 & 255 & 255;
					var rgba3 = rgba2;
					return rgba3;
				}
			}
			break;
		default:
			return 0;
		}
	}
	,getPixels: function(rect,format) {
		if(this.buffer == null) {
			return null;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			return lime_graphics_utils_ImageCanvasUtil.getPixels(this,rect,format);
		case 1:
			return lime_graphics_utils_ImageDataUtil.getPixels(this,rect,format);
		case 2:
			return null;
		default:
			return null;
		}
	}
	,merge: function(sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
		if(this.buffer == null || sourceImage == null) {
			return;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.convertToCanvas(this);
			lime_graphics_utils_ImageCanvasUtil.merge(this,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.merge(this,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
			break;
		case 2:
			sourceRect.offset(this.offsetX,this.offsetY);
			this.buffer.__srcBitmapData.merge(sourceImage.buffer.__srcBitmapData,sourceRect.__toFlashRectangle(),destPoint.__toFlashPoint(),redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
			break;
		default:
			return;
		}
	}
	,resize: function(newWidth,newHeight) {
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.resize(this,newWidth,newHeight);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.resize(this,newWidth,newHeight);
			break;
		case 2:
			break;
		default:
		}
		this.buffer.width = newWidth;
		this.buffer.height = newHeight;
		this.offsetX = 0;
		this.offsetY = 0;
		this.width = newWidth;
		this.height = newHeight;
	}
	,scroll: function(x,y) {
		if(this.buffer == null) {
			return;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.scroll(this,x,y);
			break;
		case 1:
			this.copyPixels(this,this.get_rect(),new lime_math_Vector2(x,y));
			break;
		case 2:
			this.buffer.__srcBitmapData.scroll(x + this.offsetX,y + this.offsetX);
			break;
		default:
		}
	}
	,setPixel: function(x,y,color,format) {
		if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) {
			return;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.setPixel(this,x,y,color,format);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.setPixel(this,x,y,color,format);
			break;
		case 2:
			var argb;
			if(format == null) {
				var rgba = color;
				var this1 = 0;
				var argb1 = this1;
				argb1 = (rgba & 255 & 255) << 24 | (rgba >>> 24 & 255 & 255) << 16 | (rgba >>> 16 & 255 & 255) << 8 | rgba >>> 8 & 255 & 255;
				argb = argb1;
			} else {
				switch(format) {
				case 1:
					argb = color;
					break;
				case 2:
					var bgra = color;
					var this2 = 0;
					var argb2 = this2;
					argb2 = (bgra & 255 & 255) << 24 | (bgra >>> 8 & 255 & 255) << 16 | (bgra >>> 16 & 255 & 255) << 8 | bgra >>> 24 & 255 & 255;
					argb = argb2;
					break;
				default:
					var rgba1 = color;
					var this3 = 0;
					var argb3 = this3;
					argb3 = (rgba1 & 255 & 255) << 24 | (rgba1 >>> 24 & 255 & 255) << 16 | (rgba1 >>> 16 & 255 & 255) << 8 | rgba1 >>> 8 & 255 & 255;
					argb = argb3;
				}
			}
			this.buffer.__srcBitmapData.setPixel(x + this.offsetX,y + this.offsetX,argb);
			break;
		default:
		}
	}
	,setPixel32: function(x,y,color,format) {
		if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) {
			return;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.setPixel32(this,x,y,color,format);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.setPixel32(this,x,y,color,format);
			break;
		case 2:
			var argb;
			if(format == null) {
				var rgba = color;
				var this1 = 0;
				var argb1 = this1;
				argb1 = (rgba & 255 & 255) << 24 | (rgba >>> 24 & 255 & 255) << 16 | (rgba >>> 16 & 255 & 255) << 8 | rgba >>> 8 & 255 & 255;
				argb = argb1;
			} else {
				switch(format) {
				case 1:
					argb = color;
					break;
				case 2:
					var bgra = color;
					var this2 = 0;
					var argb2 = this2;
					argb2 = (bgra & 255 & 255) << 24 | (bgra >>> 8 & 255 & 255) << 16 | (bgra >>> 16 & 255 & 255) << 8 | bgra >>> 24 & 255 & 255;
					argb = argb2;
					break;
				default:
					var rgba1 = color;
					var this3 = 0;
					var argb3 = this3;
					argb3 = (rgba1 & 255 & 255) << 24 | (rgba1 >>> 24 & 255 & 255) << 16 | (rgba1 >>> 16 & 255 & 255) << 8 | rgba1 >>> 8 & 255 & 255;
					argb = argb3;
				}
			}
			this.buffer.__srcBitmapData.setPixel32(x + this.offsetX,y + this.offsetY,argb);
			break;
		default:
		}
	}
	,setPixels: function(rect,bytePointer,format,endian) {
		rect = this.__clipRect(rect);
		if(this.buffer == null || rect == null) {
			return;
		}
		if(endian == null) {
			endian = lime_system_Endian.BIG_ENDIAN;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:
			lime_graphics_utils_ImageCanvasUtil.setPixels(this,rect,bytePointer,format,endian);
			break;
		case 1:
			lime_graphics_utils_ImageDataUtil.setPixels(this,rect,bytePointer,format,endian);
			break;
		case 2:
			break;
		default:
		}
	}
	,threshold: function(sourceImage,sourceRect,destPoint,operation,threshold,color,mask,copySource,format) {
		if(copySource == null) {
			copySource = false;
		}
		if(mask == null) {
			mask = -1;
		}
		if(color == null) {
			color = 0;
		}
		if(this.buffer == null || sourceImage == null || sourceRect == null) {
			return 0;
		}
		var _g = this.type;
		switch(_g[1]) {
		case 0:case 1:
			return lime_graphics_utils_ImageDataUtil.threshold(this,sourceImage,sourceRect,destPoint,operation,threshold,color,mask,copySource,format);
		case 2:
			var _color;
			if(format == null) {
				var rgba = color;
				var this1 = 0;
				var argb = this1;
				argb = (rgba & 255 & 255) << 24 | (rgba >>> 24 & 255 & 255) << 16 | (rgba >>> 16 & 255 & 255) << 8 | rgba >>> 8 & 255 & 255;
				_color = argb;
			} else {
				switch(format) {
				case 1:
					_color = color;
					break;
				case 2:
					var bgra = color;
					var this2 = 0;
					var argb1 = this2;
					argb1 = (bgra & 255 & 255) << 24 | (bgra >>> 8 & 255 & 255) << 16 | (bgra >>> 16 & 255 & 255) << 8 | bgra >>> 24 & 255 & 255;
					_color = argb1;
					break;
				default:
					var rgba1 = color;
					var this3 = 0;
					var argb2 = this3;
					argb2 = (rgba1 & 255 & 255) << 24 | (rgba1 >>> 24 & 255 & 255) << 16 | (rgba1 >>> 16 & 255 & 255) << 8 | rgba1 >>> 8 & 255 & 255;
					_color = argb2;
				}
			}
			var _mask;
			if(format == null) {
				var rgba2 = mask;
				var this4 = 0;
				var argb3 = this4;
				argb3 = (rgba2 & 255 & 255) << 24 | (rgba2 >>> 24 & 255 & 255) << 16 | (rgba2 >>> 16 & 255 & 255) << 8 | rgba2 >>> 8 & 255 & 255;
				_mask = argb3;
			} else {
				switch(format) {
				case 1:
					_mask = mask;
					break;
				case 2:
					var bgra1 = mask;
					var this5 = 0;
					var argb4 = this5;
					argb4 = (bgra1 & 255 & 255) << 24 | (bgra1 >>> 8 & 255 & 255) << 16 | (bgra1 >>> 16 & 255 & 255) << 8 | bgra1 >>> 24 & 255 & 255;
					_mask = argb4;
					break;
				default:
					var rgba3 = mask;
					var this6 = 0;
					var argb5 = this6;
					argb5 = (rgba3 & 255 & 255) << 24 | (rgba3 >>> 24 & 255 & 255) << 16 | (rgba3 >>> 16 & 255 & 255) << 8 | rgba3 >>> 8 & 255 & 255;
					_mask = argb5;
				}
			}
			sourceRect.offset(sourceImage.offsetX,sourceImage.offsetY);
			destPoint.offset(this.offsetX,this.offsetY);
			return this.buffer.__srcBitmapData.threshold(sourceImage.buffer.get_src(),sourceRect.__toFlashRectangle(),destPoint.__toFlashPoint(),operation,threshold,_color,_mask,copySource);
		default:
		}
		return 0;
	}
	,__clipRect: function(r) {
		if(r == null) {
			return null;
		}
		if(r.x < 0) {
			r.width -= -r.x;
			r.x = 0;
			if(r.x + r.width <= 0) {
				return null;
			}
		}
		if(r.y < 0) {
			r.height -= -r.y;
			r.y = 0;
			if(r.y + r.height <= 0) {
				return null;
			}
		}
		if(r.x + r.width >= this.width) {
			r.width -= r.x + r.width - this.width;
			if(r.width <= 0) {
				return null;
			}
		}
		if(r.y + r.height >= this.height) {
			r.height -= r.y + r.height - this.height;
			if(r.height <= 0) {
				return null;
			}
		}
		return r;
	}
	,__fromBase64: function(base64,type,onload) {
	}
	,__fromBytes: function(bytes,onload) {
		lime_utils_Log.warn("Image.fromBytes not supported on this target",{ fileName : "Image.hx", lineNumber : 1388, className : "lime.graphics.Image", methodName : "__fromBytes"});
	}
	,__fromFile: function(path,onload,onerror) {
		lime_utils_Log.warn("Image.fromFile not supported on this target",{ fileName : "Image.hx", lineNumber : 1565, className : "lime.graphics.Image", methodName : "__fromFile"});
	}
	,__fromImageBuffer: function(buffer) {
		this.buffer = buffer;
		if(buffer != null) {
			if(this.width == -1) {
				this.width = buffer.width;
			}
			if(this.height == -1) {
				this.height = buffer.height;
			}
		}
	}
	,get_data: function() {
		var tmp = this.buffer.data == null && this.buffer.width > 0 && this.buffer.height > 0;
		return this.buffer.data;
	}
	,set_data: function(value) {
		return this.buffer.data = value;
	}
	,get_format: function() {
		return this.buffer.format;
	}
	,set_format: function(value) {
		if(this.buffer.format != value) {
			var _g = this.type;
			if(_g[1] == 1) {
				lime_graphics_utils_ImageDataUtil.setFormat(this,value);
			}
		}
		return this.buffer.format = value;
	}
	,get_powerOfTwo: function() {
		if(this.buffer.width != 0 && (this.buffer.width & ~this.buffer.width + 1) == this.buffer.width) {
			if(this.buffer.height != 0) {
				return (this.buffer.height & ~this.buffer.height + 1) == this.buffer.height;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}
	,set_powerOfTwo: function(value) {
		if(value != this.get_powerOfTwo()) {
			var newWidth = 1;
			var newHeight = 1;
			while(newWidth < this.buffer.width) newWidth <<= 1;
			while(newHeight < this.buffer.height) newHeight <<= 1;
			var _g = this.type;
			switch(_g[1]) {
			case 0:
				break;
			case 1:
				lime_graphics_utils_ImageDataUtil.resizeBuffer(this,newWidth,newHeight);
				break;
			case 2:
				break;
			default:
			}
		}
		return value;
	}
	,get_premultiplied: function() {
		return this.buffer.premultiplied;
	}
	,set_premultiplied: function(value) {
		if(value && !this.buffer.premultiplied) {
			var _g = this.type;
			switch(_g[1]) {
			case 0:case 1:
				lime_graphics_utils_ImageDataUtil.multiplyAlpha(this);
				break;
			default:
			}
		} else if(!value && this.buffer.premultiplied) {
			var _g1 = this.type;
			if(_g1[1] == 1) {
				lime_graphics_utils_ImageDataUtil.unmultiplyAlpha(this);
			}
		}
		return value;
	}
	,get_rect: function() {
		return new lime_math_Rectangle(0,0,this.width,this.height);
	}
	,get_src: function() {
		return this.buffer.get_src();
	}
	,set_src: function(value) {
		return this.buffer.set_src(value);
	}
	,get_transparent: function() {
		if(this.buffer == null) {
			return false;
		}
		return this.buffer.transparent;
	}
	,set_transparent: function(value) {
		if(this.buffer == null) {
			return false;
		}
		return this.buffer.transparent = value;
	}
	,__class__: lime_graphics_Image
	,__properties__: {set_transparent:"set_transparent",get_transparent:"get_transparent",set_src:"set_src",get_src:"get_src",get_rect:"get_rect",set_premultiplied:"set_premultiplied",get_premultiplied:"get_premultiplied",set_powerOfTwo:"set_powerOfTwo",get_powerOfTwo:"get_powerOfTwo",set_format:"set_format",get_format:"get_format",set_data:"set_data",get_data:"get_data"}
};
var lime_graphics_ImageBuffer = function(data,width,height,bitsPerPixel,format) {
	if(bitsPerPixel == null) {
		bitsPerPixel = 32;
	}
	if(height == null) {
		height = 0;
	}
	if(width == null) {
		width = 0;
	}
	this.data = data;
	this.width = width;
	this.height = height;
	this.bitsPerPixel = bitsPerPixel;
	this.format = format == null ? 0 : format;
	this.premultiplied = false;
	this.transparent = true;
};
$hxClasses["lime.graphics.ImageBuffer"] = lime_graphics_ImageBuffer;
lime_graphics_ImageBuffer.__name__ = ["lime","graphics","ImageBuffer"];
lime_graphics_ImageBuffer.prototype = {
	bitsPerPixel: null
	,data: null
	,format: null
	,height: null
	,premultiplied: null
	,transparent: null
	,width: null
	,__srcBitmapData: null
	,__srcCanvas: null
	,__srcContext: null
	,__srcCustom: null
	,__srcImage: null
	,__srcImageData: null
	,clone: function() {
		var buffer = new lime_graphics_ImageBuffer(this.data,this.width,this.height,this.bitsPerPixel);
		if(this.data != null) {
			var elements = this.data.byteLength;
			var this1;
			if(elements != null) {
				this1 = new Uint8Array(elements);
			} else {
				this1 = null;
			}
			buffer.data = this1;
			var view = this.data;
			var this2;
			if(view != null) {
				this2 = new Uint8Array(view);
			} else {
				this2 = null;
			}
			var copy = this2;
			buffer.data.set(copy);
		}
		buffer.__srcCustom = this.__srcCustom;
		buffer.bitsPerPixel = this.bitsPerPixel;
		buffer.format = this.format;
		buffer.premultiplied = this.premultiplied;
		buffer.transparent = this.transparent;
		return buffer;
	}
	,get_src: function() {
		return this.__srcCustom;
	}
	,set_src: function(value) {
		this.__srcCustom = value;
		return value;
	}
	,get_stride: function() {
		return this.width * 4;
	}
	,__class__: lime_graphics_ImageBuffer
	,__properties__: {get_stride:"get_stride",set_src:"set_src",get_src:"get_src"}
};
var lime_graphics_ImageChannel = $hxClasses["lime.graphics.ImageChannel"] = { __ename__ : ["lime","graphics","ImageChannel"], __constructs__ : ["RED","GREEN","BLUE","ALPHA"] };
lime_graphics_ImageChannel.RED = ["RED",0];
lime_graphics_ImageChannel.RED.toString = $estr;
lime_graphics_ImageChannel.RED.__enum__ = lime_graphics_ImageChannel;
lime_graphics_ImageChannel.GREEN = ["GREEN",1];
lime_graphics_ImageChannel.GREEN.toString = $estr;
lime_graphics_ImageChannel.GREEN.__enum__ = lime_graphics_ImageChannel;
lime_graphics_ImageChannel.BLUE = ["BLUE",2];
lime_graphics_ImageChannel.BLUE.toString = $estr;
lime_graphics_ImageChannel.BLUE.__enum__ = lime_graphics_ImageChannel;
lime_graphics_ImageChannel.ALPHA = ["ALPHA",3];
lime_graphics_ImageChannel.ALPHA.toString = $estr;
lime_graphics_ImageChannel.ALPHA.__enum__ = lime_graphics_ImageChannel;
var lime_graphics_ImageType = $hxClasses["lime.graphics.ImageType"] = { __ename__ : ["lime","graphics","ImageType"], __constructs__ : ["CANVAS","DATA","FLASH","CUSTOM"] };
lime_graphics_ImageType.CANVAS = ["CANVAS",0];
lime_graphics_ImageType.CANVAS.toString = $estr;
lime_graphics_ImageType.CANVAS.__enum__ = lime_graphics_ImageType;
lime_graphics_ImageType.DATA = ["DATA",1];
lime_graphics_ImageType.DATA.toString = $estr;
lime_graphics_ImageType.DATA.__enum__ = lime_graphics_ImageType;
lime_graphics_ImageType.FLASH = ["FLASH",2];
lime_graphics_ImageType.FLASH.toString = $estr;
lime_graphics_ImageType.FLASH.__enum__ = lime_graphics_ImageType;
lime_graphics_ImageType.CUSTOM = ["CUSTOM",3];
lime_graphics_ImageType.CUSTOM.toString = $estr;
lime_graphics_ImageType.CUSTOM.__enum__ = lime_graphics_ImageType;
var lime_graphics_RenderContext = $hxClasses["lime.graphics.RenderContext"] = { __ename__ : ["lime","graphics","RenderContext"], __constructs__ : ["OPENGL","CANVAS","DOM","FLASH","CAIRO","CONSOLE","CUSTOM","NONE"] };
lime_graphics_RenderContext.OPENGL = function(gl) { var $x = ["OPENGL",0,gl]; $x.__enum__ = lime_graphics_RenderContext; $x.toString = $estr; return $x; };
lime_graphics_RenderContext.CANVAS = function(context) { var $x = ["CANVAS",1,context]; $x.__enum__ = lime_graphics_RenderContext; $x.toString = $estr; return $x; };
lime_graphics_RenderContext.DOM = function(element) { var $x = ["DOM",2,element]; $x.__enum__ = lime_graphics_RenderContext; $x.toString = $estr; return $x; };
lime_graphics_RenderContext.FLASH = function(stage) { var $x = ["FLASH",3,stage]; $x.__enum__ = lime_graphics_RenderContext; $x.toString = $estr; return $x; };
lime_graphics_RenderContext.CAIRO = function(cairo) { var $x = ["CAIRO",4,cairo]; $x.__enum__ = lime_graphics_RenderContext; $x.toString = $estr; return $x; };
lime_graphics_RenderContext.CONSOLE = function(context) { var $x = ["CONSOLE",5,context]; $x.__enum__ = lime_graphics_RenderContext; $x.toString = $estr; return $x; };
lime_graphics_RenderContext.CUSTOM = function(data) { var $x = ["CUSTOM",6,data]; $x.__enum__ = lime_graphics_RenderContext; $x.toString = $estr; return $x; };
lime_graphics_RenderContext.NONE = ["NONE",7];
lime_graphics_RenderContext.NONE.toString = $estr;
lime_graphics_RenderContext.NONE.__enum__ = lime_graphics_RenderContext;
var lime_graphics_Renderer = function(window) {
	this.onRender = new lime_app__$Event_$Void_$Void();
	this.onContextRestored = new lime_app__$Event_$lime_$graphics_$RenderContext_$Void();
	this.onContextLost = new lime_app__$Event_$Void_$Void();
	this.window = window;
	this.backend = new lime__$backend_native_NativeRenderer(this);
	this.window.renderer = this;
};
$hxClasses["lime.graphics.Renderer"] = lime_graphics_Renderer;
lime_graphics_Renderer.__name__ = ["lime","graphics","Renderer"];
lime_graphics_Renderer.prototype = {
	context: null
	,onContextLost: null
	,onContextRestored: null
	,onRender: null
	,type: null
	,window: null
	,backend: null
	,create: function() {
		this.backend.create();
	}
	,flip: function() {
		this.backend.flip();
	}
	,readPixels: function(rect) {
		return this.backend.readPixels(rect);
	}
	,render: function() {
		this.backend.render();
	}
	,__class__: lime_graphics_Renderer
};
var lime_graphics_RendererType = $hxClasses["lime.graphics.RendererType"] = { __ename__ : ["lime","graphics","RendererType"], __constructs__ : ["OPENGL","CANVAS","DOM","FLASH","CAIRO","CONSOLE","CUSTOM"] };
lime_graphics_RendererType.OPENGL = ["OPENGL",0];
lime_graphics_RendererType.OPENGL.toString = $estr;
lime_graphics_RendererType.OPENGL.__enum__ = lime_graphics_RendererType;
lime_graphics_RendererType.CANVAS = ["CANVAS",1];
lime_graphics_RendererType.CANVAS.toString = $estr;
lime_graphics_RendererType.CANVAS.__enum__ = lime_graphics_RendererType;
lime_graphics_RendererType.DOM = ["DOM",2];
lime_graphics_RendererType.DOM.toString = $estr;
lime_graphics_RendererType.DOM.__enum__ = lime_graphics_RendererType;
lime_graphics_RendererType.FLASH = ["FLASH",3];
lime_graphics_RendererType.FLASH.toString = $estr;
lime_graphics_RendererType.FLASH.__enum__ = lime_graphics_RendererType;
lime_graphics_RendererType.CAIRO = ["CAIRO",4];
lime_graphics_RendererType.CAIRO.toString = $estr;
lime_graphics_RendererType.CAIRO.__enum__ = lime_graphics_RendererType;
lime_graphics_RendererType.CONSOLE = ["CONSOLE",5];
lime_graphics_RendererType.CONSOLE.toString = $estr;
lime_graphics_RendererType.CONSOLE.__enum__ = lime_graphics_RendererType;
lime_graphics_RendererType.CUSTOM = ["CUSTOM",6];
lime_graphics_RendererType.CUSTOM.toString = $estr;
lime_graphics_RendererType.CUSTOM.__enum__ = lime_graphics_RendererType;
var lime_graphics_cairo_Cairo = function(surface) {
	var tmp = surface != null;
};
$hxClasses["lime.graphics.cairo.Cairo"] = lime_graphics_cairo_Cairo;
lime_graphics_cairo_Cairo.__name__ = ["lime","graphics","cairo","Cairo"];
lime_graphics_cairo_Cairo.__properties__ = {get_versionString:"get_versionString",get_version:"get_version"};
lime_graphics_cairo_Cairo.get_version = function() {
	return 0;
};
lime_graphics_cairo_Cairo.get_versionString = function() {
	return "";
};
lime_graphics_cairo_Cairo.prototype = {
	target: null
	,userData: null
	,handle: null
	,arc: function(xc,yc,radius,angle1,angle2) {
	}
	,arcNegative: function(xc,yc,radius,angle1,angle2) {
	}
	,clip: function() {
	}
	,clipExtents: function(x1,y1,x2,y2) {
	}
	,clipPreserve: function() {
	}
	,closePath: function() {
	}
	,copyPage: function() {
	}
	,curveTo: function(x1,y1,x2,y2,x3,y3) {
	}
	,fill: function() {
	}
	,fillExtents: function(x1,y1,x2,y2) {
	}
	,fillPreserve: function() {
	}
	,identityMatrix: function() {
	}
	,inClip: function(x,y) {
		return false;
	}
	,inFill: function(x,y) {
		return false;
	}
	,inStroke: function(x,y) {
		return false;
	}
	,lineTo: function(x,y) {
	}
	,moveTo: function(x,y) {
	}
	,mask: function(pattern) {
	}
	,maskSurface: function(surface,x,y) {
	}
	,newPath: function() {
	}
	,paint: function() {
	}
	,paintWithAlpha: function(alpha) {
	}
	,popGroup: function() {
		return null;
	}
	,popGroupToSource: function() {
	}
	,pushGroup: function() {
	}
	,pushGroupWithContent: function(content) {
	}
	,recreate: function(surface) {
	}
	,rectangle: function(x,y,width,height) {
	}
	,relCurveTo: function(dx1,dy1,dx2,dy2,dx3,dy3) {
	}
	,relLineTo: function(dx,dy) {
	}
	,relMoveTo: function(dx,dy) {
	}
	,resetClip: function() {
	}
	,restore: function() {
	}
	,save: function() {
	}
	,setFontSize: function(size) {
	}
	,setSourceRGB: function(r,g,b) {
	}
	,setSourceRGBA: function(r,g,b,a) {
	}
	,setSourceSurface: function(surface,x,y) {
	}
	,showGlyphs: function(glyphs) {
	}
	,showPage: function() {
	}
	,showText: function(utf8) {
	}
	,status: function() {
		return 0;
	}
	,stroke: function() {
	}
	,strokeExtents: function(x1,y1,x2,y2) {
	}
	,strokePreserve: function() {
	}
	,textPath: function(utf8) {
	}
	,transform: function(matrix) {
	}
	,rotate: function(amount) {
	}
	,scale: function(x,y) {
	}
	,translate: function(x,y) {
	}
	,get_antialias: function() {
		return 0;
	}
	,set_antialias: function(value) {
		return value;
	}
	,get_currentPoint: function() {
		return null;
	}
	,get_dash: function() {
		return [];
	}
	,set_dash: function(value) {
		return value;
	}
	,get_dashCount: function() {
		return 0;
	}
	,get_fillRule: function() {
		return 0;
	}
	,set_fillRule: function(value) {
		return value;
	}
	,get_fontFace: function() {
		return 0;
	}
	,set_fontFace: function(value) {
		return value;
	}
	,get_fontOptions: function() {
		return null;
	}
	,set_fontOptions: function(value) {
		return value;
	}
	,get_groupTarget: function() {
		return 0;
	}
	,get_hasCurrentPoint: function() {
		return false;
	}
	,get_lineCap: function() {
		return 0;
	}
	,set_lineCap: function(value) {
		return value;
	}
	,get_lineJoin: function() {
		return 0;
	}
	,set_lineJoin: function(value) {
		return value;
	}
	,get_lineWidth: function() {
		return 0;
	}
	,set_lineWidth: function(value) {
		return value;
	}
	,get_matrix: function() {
		return null;
	}
	,set_matrix: function(value) {
		return value;
	}
	,get_miterLimit: function() {
		return 0;
	}
	,set_miterLimit: function(value) {
		return value;
	}
	,get_operator: function() {
		return 0;
	}
	,set_operator: function(value) {
		return value;
	}
	,get_source: function() {
		return 0;
	}
	,set_source: function(value) {
		return value;
	}
	,get_target: function() {
		return 0;
	}
	,get_tolerance: function() {
		return 0;
	}
	,set_tolerance: function(value) {
		return value;
	}
	,__class__: lime_graphics_cairo_Cairo
	,__properties__: {set_tolerance:"set_tolerance",get_tolerance:"get_tolerance",get_target:"get_target",set_source:"set_source",get_source:"get_source",set_operator:"set_operator",get_operator:"get_operator",set_miterLimit:"set_miterLimit",get_miterLimit:"get_miterLimit",set_matrix:"set_matrix",get_matrix:"get_matrix",set_lineWidth:"set_lineWidth",get_lineWidth:"get_lineWidth",set_lineJoin:"set_lineJoin",get_lineJoin:"get_lineJoin",set_lineCap:"set_lineCap",get_lineCap:"get_lineCap",get_hasCurrentPoint:"get_hasCurrentPoint",get_groupTarget:"get_groupTarget",set_fontOptions:"set_fontOptions",get_fontOptions:"get_fontOptions",set_fontFace:"set_fontFace",get_fontFace:"get_fontFace",set_fillRule:"set_fillRule",get_fillRule:"get_fillRule",get_dashCount:"get_dashCount",set_dash:"set_dash",get_dash:"get_dash",get_currentPoint:"get_currentPoint",set_antialias:"set_antialias",get_antialias:"get_antialias"}
};
var lime_graphics_cairo__$CairoFTFontFace_CairoFTFontFace_$Impl_$ = {};
$hxClasses["lime.graphics.cairo._CairoFTFontFace.CairoFTFontFace_Impl_"] = lime_graphics_cairo__$CairoFTFontFace_CairoFTFontFace_$Impl_$;
lime_graphics_cairo__$CairoFTFontFace_CairoFTFontFace_$Impl_$.__name__ = ["lime","graphics","cairo","_CairoFTFontFace","CairoFTFontFace_Impl_"];
lime_graphics_cairo__$CairoFTFontFace_CairoFTFontFace_$Impl_$._new = function() {
	var this1 = 0;
	return this1;
};
lime_graphics_cairo__$CairoFTFontFace_CairoFTFontFace_$Impl_$.create = function(face,loadFlags) {
	return 0;
};
var lime_graphics_cairo__$CairoFontFace_CairoFontFace_$Impl_$ = {};
$hxClasses["lime.graphics.cairo._CairoFontFace.CairoFontFace_Impl_"] = lime_graphics_cairo__$CairoFontFace_CairoFontFace_$Impl_$;
lime_graphics_cairo__$CairoFontFace_CairoFontFace_$Impl_$.__name__ = ["lime","graphics","cairo","_CairoFontFace","CairoFontFace_Impl_"];
lime_graphics_cairo__$CairoFontFace_CairoFontFace_$Impl_$._new = function() {
	var this1 = null;
	return this1;
};
lime_graphics_cairo__$CairoFontFace_CairoFontFace_$Impl_$.status = function(this1) {
	return 0;
};
var lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$ = {};
$hxClasses["lime.graphics.cairo._CairoFontOptions.CairoFontOptions_Impl_"] = lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$;
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.__name__ = ["lime","graphics","cairo","_CairoFontOptions","CairoFontOptions_Impl_"];
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.__properties__ = {set_subpixelOrder:"set_subpixelOrder",get_subpixelOrder:"get_subpixelOrder",set_hintStyle:"set_hintStyle",get_hintStyle:"get_hintStyle",set_hintMetrics:"set_hintMetrics",get_hintMetrics:"get_hintMetrics",set_antialias:"set_antialias",get_antialias:"get_antialias"};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$._new = function() {
	var this1 = null;
	return this1;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.get_antialias = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.set_antialias = function(this1,value) {
	return value;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.get_hintMetrics = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.set_hintMetrics = function(this1,value) {
	return value;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.get_hintStyle = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.set_hintStyle = function(this1,value) {
	return value;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.get_subpixelOrder = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoFontOptions_CairoFontOptions_$Impl_$.set_subpixelOrder = function(this1,value) {
	return value;
};
var lime_graphics_cairo_CairoGlyph = function(index,x,y) {
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	this.index = index;
	this.x = x;
	this.y = y;
};
$hxClasses["lime.graphics.cairo.CairoGlyph"] = lime_graphics_cairo_CairoGlyph;
lime_graphics_cairo_CairoGlyph.__name__ = ["lime","graphics","cairo","CairoGlyph"];
lime_graphics_cairo_CairoGlyph.prototype = {
	index: null
	,x: null
	,y: null
	,__class__: lime_graphics_cairo_CairoGlyph
};
var lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$ = {};
$hxClasses["lime.graphics.cairo._CairoImageSurface.CairoImageSurface_Impl_"] = lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$;
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.__name__ = ["lime","graphics","cairo","_CairoImageSurface","CairoImageSurface_Impl_"];
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.__properties__ = {get_width:"get_width",get_stride:"get_stride",get_height:"get_height",get_format:"get_format",get_data:"get_data"};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$._new = function(format,width,height) {
	var this1 = 0;
	return this1;
};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.create = function(data,format,width,height,stride) {
	return 0;
};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.fromImage = function(image) {
	return null;
};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.get_data = function(this1) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0);
};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.get_format = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.get_height = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.get_stride = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.get_width = function(this1) {
	return 0;
};
var lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$ = {};
$hxClasses["lime.graphics.cairo._CairoPattern.CairoPattern_Impl_"] = lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$;
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.__name__ = ["lime","graphics","cairo","_CairoPattern","CairoPattern_Impl_"];
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.__properties__ = {set_matrix:"set_matrix",get_matrix:"get_matrix",set_filter:"set_filter",get_filter:"get_filter",set_extend:"set_extend",get_extend:"get_extend",get_colorStopCount:"get_colorStopCount"};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.addColorStopRGB = function(this1,offset,r,g,b) {
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.addColorStopRGBA = function(this1,offset,r,g,b,a) {
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.createForSurface = function(surface) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.createLinear = function(x0,y0,x1,y1) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.createRadial = function(cx0,cy0,radius0,cx1,cy1,radius1) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.createRGB = function(r,g,b) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.createRGBA = function(r,g,b,a) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.get_colorStopCount = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.get_extend = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.set_extend = function(this1,value) {
	return value;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.get_filter = function(this1) {
	return 0;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.set_filter = function(this1,value) {
	return value;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.get_matrix = function(this1) {
	return null;
};
lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.set_matrix = function(this1,value) {
	return value;
};
var lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$ = {};
$hxClasses["lime.graphics.cairo._CairoSurface.CairoSurface_Impl_"] = lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$;
lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$.__name__ = ["lime","graphics","cairo","_CairoSurface","CairoSurface_Impl_"];
lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$.flush = function(this1) {
};
var lime_graphics_console_IndexBuffer = function() {
};
$hxClasses["lime.graphics.console.IndexBuffer"] = lime_graphics_console_IndexBuffer;
lime_graphics_console_IndexBuffer.__name__ = ["lime","graphics","console","IndexBuffer"];
lime_graphics_console_IndexBuffer.prototype = {
	__class__: lime_graphics_console_IndexBuffer
};
var lime_graphics_console_Primitive = $hxClasses["lime.graphics.console.Primitive"] = { __ename__ : ["lime","graphics","console","Primitive"], __constructs__ : ["Point","Line","LineStrip","Triangle","TriangleStrip"] };
lime_graphics_console_Primitive.Point = ["Point",0];
lime_graphics_console_Primitive.Point.toString = $estr;
lime_graphics_console_Primitive.Point.__enum__ = lime_graphics_console_Primitive;
lime_graphics_console_Primitive.Line = ["Line",1];
lime_graphics_console_Primitive.Line.toString = $estr;
lime_graphics_console_Primitive.Line.__enum__ = lime_graphics_console_Primitive;
lime_graphics_console_Primitive.LineStrip = ["LineStrip",2];
lime_graphics_console_Primitive.LineStrip.toString = $estr;
lime_graphics_console_Primitive.LineStrip.__enum__ = lime_graphics_console_Primitive;
lime_graphics_console_Primitive.Triangle = ["Triangle",3];
lime_graphics_console_Primitive.Triangle.toString = $estr;
lime_graphics_console_Primitive.Triangle.__enum__ = lime_graphics_console_Primitive;
lime_graphics_console_Primitive.TriangleStrip = ["TriangleStrip",4];
lime_graphics_console_Primitive.TriangleStrip.toString = $estr;
lime_graphics_console_Primitive.TriangleStrip.__enum__ = lime_graphics_console_Primitive;
var lime_graphics_console_Shader = function() {
};
$hxClasses["lime.graphics.console.Shader"] = lime_graphics_console_Shader;
lime_graphics_console_Shader.__name__ = ["lime","graphics","console","Shader"];
lime_graphics_console_Shader.prototype = {
	__class__: lime_graphics_console_Shader
};
var lime_graphics_console_VertexBuffer = function() {
};
$hxClasses["lime.graphics.console.VertexBuffer"] = lime_graphics_console_VertexBuffer;
lime_graphics_console_VertexBuffer.__name__ = ["lime","graphics","console","VertexBuffer"];
lime_graphics_console_VertexBuffer.prototype = {
	lock: function() {
		return new lime_graphics_console_VertexOutput();
	}
	,unlock: function() {
	}
	,__class__: lime_graphics_console_VertexBuffer
};
var lime_graphics_console_VertexOutput = function() {
};
$hxClasses["lime.graphics.console.VertexOutput"] = lime_graphics_console_VertexOutput;
lime_graphics_console_VertexOutput.__name__ = ["lime","graphics","console","VertexOutput"];
lime_graphics_console_VertexOutput.prototype = {
	vec2: function(x,y) {
	}
	,vec3: function(x,y,z) {
	}
	,color: function(r,g,b,a) {
	}
	,__class__: lime_graphics_console_VertexOutput
};
var lime_graphics_format_BMP = function() { };
$hxClasses["lime.graphics.format.BMP"] = lime_graphics_format_BMP;
lime_graphics_format_BMP.__name__ = ["lime","graphics","format","BMP"];
lime_graphics_format_BMP.encode = function(image,type) {
	if(image.get_premultiplied() || image.get_format() != 0) {
		image = image.clone();
		image.set_premultiplied(false);
		image.set_format(0);
	}
	if(type == null) {
		type = lime_graphics_format_BMPType.RGB;
	}
	var fileHeaderLength = 14;
	var infoHeaderLength = 40;
	var pixelValuesLength = image.width * image.height * 4;
	if(type != null) {
		switch(type[1]) {
		case 0:
			pixelValuesLength = image.width * 3 + image.width * 3 % 4 + image.height * 3 + image.height * 3;
			break;
		case 1:
			infoHeaderLength = 108;
			break;
		case 2:
			fileHeaderLength = 0;
			pixelValuesLength += image.width * image.height;
			break;
		}
	}
	var data = new haxe_io_Bytes(new ArrayBuffer(fileHeaderLength + infoHeaderLength + pixelValuesLength));
	var position = 0;
	if(fileHeaderLength > 0) {
		data.b[position++] = 66;
		data.b[position++] = 77;
		data.setInt32(position,data.length);
		position += 4;
		data.setUInt16(position,0);
		position += 2;
		data.setUInt16(position,0);
		position += 2;
		data.setInt32(position,fileHeaderLength + infoHeaderLength);
		position += 4;
	}
	data.setInt32(position,infoHeaderLength);
	position += 4;
	data.setInt32(position,image.width);
	position += 4;
	data.setInt32(position,type == lime_graphics_format_BMPType.ICO ? image.height * 2 : image.height);
	position += 4;
	data.setUInt16(position,1);
	position += 2;
	data.setUInt16(position,type == lime_graphics_format_BMPType.RGB ? 24 : 32);
	position += 2;
	data.setInt32(position,type == lime_graphics_format_BMPType.BITFIELD ? 3 : 0);
	position += 4;
	data.setInt32(position,pixelValuesLength);
	position += 4;
	data.setInt32(position,11824);
	position += 4;
	data.setInt32(position,11824);
	position += 4;
	data.setInt32(position,0);
	position += 4;
	data.setInt32(position,0);
	position += 4;
	if(type == lime_graphics_format_BMPType.BITFIELD) {
		data.setInt32(position,16711680);
		position += 4;
		data.setInt32(position,65280);
		position += 4;
		data.setInt32(position,255);
		position += 4;
		data.setInt32(position,-16777216);
		position += 4;
		data.b[position++] = 32;
		data.b[position++] = 110;
		data.b[position++] = 105;
		data.b[position++] = 87;
		var _g = 0;
		while(_g < 48) {
			var i = _g++;
			data.b[position++] = 0;
		}
	}
	var pixels = image.getPixels(new lime_math_Rectangle(0,0,image.width,image.height),1);
	var readPosition = 0;
	var a;
	var r;
	var g;
	var b;
	if(type != null) {
		switch(type[1]) {
		case 0:
			var _g1 = 0;
			var _g2 = image.height;
			while(_g1 < _g2) {
				var y = _g1++;
				readPosition = (image.height - 1 - y) * 4 * image.width;
				var _g3 = 0;
				var _g21 = image.width;
				while(_g3 < _g21) {
					var x = _g3++;
					a = pixels.b[readPosition++];
					r = pixels.b[readPosition++];
					g = pixels.b[readPosition++];
					b = pixels.b[readPosition++];
					data.b[position++] = b & 255;
					data.b[position++] = g & 255;
					data.b[position++] = r & 255;
				}
				var _g31 = 0;
				var _g22 = image.width * 3 % 4;
				while(_g31 < _g22) {
					var i1 = _g31++;
					data.b[position++] = 0;
				}
			}
			break;
		case 1:
			var _g11 = 0;
			var _g4 = image.height;
			while(_g11 < _g4) {
				var y1 = _g11++;
				readPosition = (image.height - 1 - y1) * 4 * image.width;
				var _g32 = 0;
				var _g23 = image.width;
				while(_g32 < _g23) {
					var x1 = _g32++;
					a = pixels.b[readPosition++];
					r = pixels.b[readPosition++];
					g = pixels.b[readPosition++];
					b = pixels.b[readPosition++];
					data.b[position++] = b & 255;
					data.b[position++] = g & 255;
					data.b[position++] = r & 255;
					data.b[position++] = a & 255;
				}
			}
			break;
		case 2:
			var andMask = new haxe_io_Bytes(new ArrayBuffer(image.width * image.height));
			var maskPosition = 0;
			var _g12 = 0;
			var _g5 = image.height;
			while(_g12 < _g5) {
				var y2 = _g12++;
				readPosition = (image.height - 1 - y2) * 4 * image.width;
				var _g33 = 0;
				var _g24 = image.width;
				while(_g33 < _g24) {
					var x2 = _g33++;
					a = pixels.b[readPosition++];
					r = pixels.b[readPosition++];
					g = pixels.b[readPosition++];
					b = pixels.b[readPosition++];
					data.b[position++] = b & 255;
					data.b[position++] = g & 255;
					data.b[position++] = r & 255;
					data.b[position++] = a & 255;
					andMask.b[maskPosition++] = 0;
				}
			}
			data.blit(position,andMask,0,image.width * image.height);
			break;
		}
	}
	return data;
};
var lime_graphics_format_BMPType = $hxClasses["lime.graphics.format.BMPType"] = { __ename__ : ["lime","graphics","format","BMPType"], __constructs__ : ["RGB","BITFIELD","ICO"] };
lime_graphics_format_BMPType.RGB = ["RGB",0];
lime_graphics_format_BMPType.RGB.toString = $estr;
lime_graphics_format_BMPType.RGB.__enum__ = lime_graphics_format_BMPType;
lime_graphics_format_BMPType.BITFIELD = ["BITFIELD",1];
lime_graphics_format_BMPType.BITFIELD.toString = $estr;
lime_graphics_format_BMPType.BITFIELD.__enum__ = lime_graphics_format_BMPType;
lime_graphics_format_BMPType.ICO = ["ICO",2];
lime_graphics_format_BMPType.ICO.toString = $estr;
lime_graphics_format_BMPType.ICO.__enum__ = lime_graphics_format_BMPType;
var lime_graphics_format_JPEG = function() { };
$hxClasses["lime.graphics.format.JPEG"] = lime_graphics_format_JPEG;
lime_graphics_format_JPEG.__name__ = ["lime","graphics","format","JPEG"];
lime_graphics_format_JPEG.decodeBytes = function(bytes,decodeData) {
	if(decodeData == null) {
		decodeData = true;
	}
	return null;
};
lime_graphics_format_JPEG.decodeFile = function(path,decodeData) {
	if(decodeData == null) {
		decodeData = true;
	}
	return null;
};
lime_graphics_format_JPEG.encode = function(image,quality) {
	if(image.get_premultiplied() || image.get_format() != 0) {
		image = image.clone();
		image.set_premultiplied(false);
		image.set_format(0);
	}
	try {
		var buffer = image.buffer.data.buffer;
		var data = { width : image.width, height : image.height, quality : quality, pixels : haxe_io_Bytes.ofData(buffer)};
		var output = new haxe_io_BytesOutput();
		var jpeg = new format_jpg_Writer(output);
		jpeg.write(data);
		return output.getBytes();
	} catch( e ) {
		haxe_CallStack.lastException = e;
	}
	return null;
};
var lime_graphics_format_PNG = function() { };
$hxClasses["lime.graphics.format.PNG"] = lime_graphics_format_PNG;
lime_graphics_format_PNG.__name__ = ["lime","graphics","format","PNG"];
lime_graphics_format_PNG.decodeBytes = function(bytes,decodeData) {
	if(decodeData == null) {
		decodeData = true;
	}
	return null;
};
lime_graphics_format_PNG.decodeFile = function(path,decodeData) {
	if(decodeData == null) {
		decodeData = true;
	}
	return null;
};
lime_graphics_format_PNG.encode = function(image) {
	if(image.get_premultiplied() || image.get_format() != 0) {
		image = image.clone();
		image.set_premultiplied(false);
		image.set_format(0);
	}
	try {
		var bytes = new haxe_io_Bytes(new ArrayBuffer(image.width * image.height * 4 + image.height));
		var sourceBytes = new haxe_io_Bytes(new Uint8Array(image.buffer.data.buffer));
		var sourceIndex;
		var index;
		var _g1 = 0;
		var _g = image.height;
		while(_g1 < _g) {
			var y = _g1++;
			sourceIndex = y * image.width * 4;
			index = y * image.width * 4 + y;
			bytes.b[index] = 0;
			bytes.blit(index + 1,sourceBytes,sourceIndex,image.width * 4);
		}
		var data = new List();
		data.add(format_png_Chunk.CHeader({ width : image.width, height : image.height, colbits : 8, color : format_png_Color.ColTrue(true), interlaced : false}));
		data.add(format_png_Chunk.CData(lime_utils_compress_Zlib.compress(bytes)));
		data.add(format_png_Chunk.CEnd);
		var output = new haxe_io_BytesOutput();
		var png = new format_png_Writer(output);
		png.write(data);
		return output.getBytes();
	} catch( e ) {
		haxe_CallStack.lastException = e;
	}
	return null;
};
var lime_graphics_opengl_GL = function() { };
$hxClasses["lime.graphics.opengl.GL"] = lime_graphics_opengl_GL;
lime_graphics_opengl_GL.__name__ = ["lime","graphics","opengl","GL"];
lime_graphics_opengl_GL.__properties__ = {get_version:"get_version",get_type:"get_type"};
lime_graphics_opengl_GL.activeTexture = function(texture) {
	lime_graphics_opengl_GL.context.activeTexture(texture);
};
lime_graphics_opengl_GL.attachShader = function(program,shader) {
	lime_graphics_opengl_GL.context.attachShader(program,shader);
};
lime_graphics_opengl_GL.beginQuery = function(target,query) {
	lime_graphics_opengl_GL.context.beginQuery(target,query);
};
lime_graphics_opengl_GL.beginTransformFeedback = function(primitiveNode) {
	lime_graphics_opengl_GL.context.beginTransformFeedback(primitiveNode);
};
lime_graphics_opengl_GL.bindAttribLocation = function(program,index,name) {
	lime_graphics_opengl_GL.context.bindAttribLocation(program,index,name);
};
lime_graphics_opengl_GL.bindBuffer = function(target,buffer) {
	lime_graphics_opengl_GL.context.bindBuffer(target,buffer);
};
lime_graphics_opengl_GL.bindBufferBase = function(target,index,buffer) {
	lime_graphics_opengl_GL.context.bindBufferBase(target,index,buffer);
};
lime_graphics_opengl_GL.bindBufferRange = function(target,index,buffer,offset,size) {
	lime_graphics_opengl_GL.context.bindBufferRange(target,index,buffer,offset,size);
};
lime_graphics_opengl_GL.bindFramebuffer = function(target,framebuffer) {
	lime_graphics_opengl_GL.context.bindFramebuffer(target,framebuffer);
};
lime_graphics_opengl_GL.bindRenderbuffer = function(target,renderbuffer) {
	lime_graphics_opengl_GL.context.bindRenderbuffer(target,renderbuffer);
};
lime_graphics_opengl_GL.bindSampler = function(unit,sampler) {
	lime_graphics_opengl_GL.context.bindSampler(unit,sampler);
};
lime_graphics_opengl_GL.bindTexture = function(target,texture) {
	lime_graphics_opengl_GL.context.bindTexture(target,texture);
};
lime_graphics_opengl_GL.bindTransformFeedback = function(target,transformFeedback) {
	lime_graphics_opengl_GL.context.bindTransformFeedback(target,transformFeedback);
};
lime_graphics_opengl_GL.bindVertexArray = function(vertexArray) {
	lime_graphics_opengl_GL.context.bindVertexArray(vertexArray);
};
lime_graphics_opengl_GL.blitFramebuffer = function(srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter) {
	lime_graphics_opengl_GL.context.blitFramebuffer(srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter);
};
lime_graphics_opengl_GL.blendColor = function(red,green,blue,alpha) {
	lime_graphics_opengl_GL.context.blendColor(red,green,blue,alpha);
};
lime_graphics_opengl_GL.blendEquation = function(mode) {
	lime_graphics_opengl_GL.context.blendEquation(mode);
};
lime_graphics_opengl_GL.blendEquationSeparate = function(modeRGB,modeAlpha) {
	lime_graphics_opengl_GL.context.blendEquationSeparate(modeRGB,modeAlpha);
};
lime_graphics_opengl_GL.blendFunc = function(sfactor,dfactor) {
	lime_graphics_opengl_GL.context.blendFunc(sfactor,dfactor);
};
lime_graphics_opengl_GL.blendFuncSeparate = function(srcRGB,dstRGB,srcAlpha,dstAlpha) {
	lime_graphics_opengl_GL.context.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);
};
lime_graphics_opengl_GL.bufferData = function(target,size,srcData,usage) {
	lime_graphics_opengl_GL.context.bufferData(target,size,srcData,usage);
};
lime_graphics_opengl_GL.bufferSubData = function(target,dstByteOffset,size,srcData) {
	lime_graphics_opengl_GL.context.bufferSubData(target,dstByteOffset,size,srcData);
};
lime_graphics_opengl_GL.checkFramebufferStatus = function(target) {
	return lime_graphics_opengl_GL.context.checkFramebufferStatus(target);
};
lime_graphics_opengl_GL.clear = function(mask) {
	lime_graphics_opengl_GL.context.clear(mask);
};
lime_graphics_opengl_GL.clearBufferfi = function(buffer,drawbuffer,depth,stencil) {
	lime_graphics_opengl_GL.context.clearBufferfi(buffer,drawbuffer,depth,stencil);
};
lime_graphics_opengl_GL.clearBufferfv = function(buffer,drawbuffer,value) {
	lime_graphics_opengl_GL.context.clearBufferfv(buffer,drawbuffer,value);
};
lime_graphics_opengl_GL.clearBufferiv = function(buffer,drawbuffer,value) {
	lime_graphics_opengl_GL.context.clearBufferiv(buffer,drawbuffer,value);
};
lime_graphics_opengl_GL.clearBufferuiv = function(buffer,drawbuffer,value) {
	lime_graphics_opengl_GL.context.clearBufferuiv(buffer,drawbuffer,value);
};
lime_graphics_opengl_GL.clearColor = function(red,green,blue,alpha) {
	lime_graphics_opengl_GL.context.clearColor(red,green,blue,alpha);
};
lime_graphics_opengl_GL.clearDepthf = function(depth) {
	lime_graphics_opengl_GL.context.clearDepthf(depth);
};
lime_graphics_opengl_GL.clearStencil = function(s) {
	lime_graphics_opengl_GL.context.clearStencil(s);
};
lime_graphics_opengl_GL.clientWaitSync = function(sync,flags,timeout) {
	return lime_graphics_opengl_GL.context.clientWaitSync(sync,flags,timeout);
};
lime_graphics_opengl_GL.colorMask = function(red,green,blue,alpha) {
	lime_graphics_opengl_GL.context.colorMask(red,green,blue,alpha);
};
lime_graphics_opengl_GL.compileShader = function(shader) {
	lime_graphics_opengl_GL.context.compileShader(shader);
};
lime_graphics_opengl_GL.compressedTexImage2D = function(target,level,internalformat,width,height,border,imageSize,data) {
	lime_graphics_opengl_GL.context.compressedTexImage2D(target,level,internalformat,width,height,border,imageSize,data);
};
lime_graphics_opengl_GL.compressedTexImage3D = function(target,level,internalformat,width,height,depth,border,imageSize,data) {
	lime_graphics_opengl_GL.context.compressedTexImage3D(target,level,internalformat,width,height,depth,border,imageSize,data);
};
lime_graphics_opengl_GL.compressedTexSubImage2D = function(target,level,xoffset,yoffset,width,height,format,imageSize,data) {
	lime_graphics_opengl_GL.context.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);
};
lime_graphics_opengl_GL.compressedTexSubImage3D = function(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data) {
	lime_graphics_opengl_GL.context.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data);
};
lime_graphics_opengl_GL.copyBufferSubData = function(readTarget,writeTarget,readOffset,writeOffset,size) {
	lime_graphics_opengl_GL.context.copyBufferSubData(readTarget,writeTarget,readOffset,writeOffset,size);
};
lime_graphics_opengl_GL.copyTexImage2D = function(target,level,internalformat,x,y,width,height,border) {
	lime_graphics_opengl_GL.context.copyTexImage2D(target,level,internalformat,x,y,width,height,border);
};
lime_graphics_opengl_GL.copyTexSubImage2D = function(target,level,xoffset,yoffset,x,y,width,height) {
	lime_graphics_opengl_GL.context.copyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
};
lime_graphics_opengl_GL.copyTexSubImage3D = function(target,level,xoffset,yoffset,zoffset,x,y,width,height) {
	lime_graphics_opengl_GL.context.copyTexSubImage3D(target,level,xoffset,yoffset,zoffset,x,y,width,height);
};
lime_graphics_opengl_GL.createBuffer = function() {
	return lime_graphics_opengl_GL.context.createBuffer();
};
lime_graphics_opengl_GL.createFramebuffer = function() {
	return lime_graphics_opengl_GL.context.createFramebuffer();
};
lime_graphics_opengl_GL.createProgram = function() {
	return lime_graphics_opengl_GL.context.createProgram();
};
lime_graphics_opengl_GL.createQuery = function() {
	return lime_graphics_opengl_GL.context.createQuery();
};
lime_graphics_opengl_GL.createRenderbuffer = function() {
	return lime_graphics_opengl_GL.context.createRenderbuffer();
};
lime_graphics_opengl_GL.createSampler = function() {
	return lime_graphics_opengl_GL.context.createSampler();
};
lime_graphics_opengl_GL.createShader = function(type) {
	return lime_graphics_opengl_GL.context.createShader(type);
};
lime_graphics_opengl_GL.createTexture = function() {
	return lime_graphics_opengl_GL.context.createTexture();
};
lime_graphics_opengl_GL.createTransformFeedback = function() {
	return lime_graphics_opengl_GL.context.createTransformFeedback();
};
lime_graphics_opengl_GL.createVertexArray = function() {
	return lime_graphics_opengl_GL.context.createVertexArray();
};
lime_graphics_opengl_GL.cullFace = function(mode) {
	lime_graphics_opengl_GL.context.cullFace(mode);
};
lime_graphics_opengl_GL.deleteBuffer = function(buffer) {
	lime_graphics_opengl_GL.context.deleteBuffer(buffer);
};
lime_graphics_opengl_GL.deleteFramebuffer = function(framebuffer) {
	lime_graphics_opengl_GL.context.deleteFramebuffer(framebuffer);
};
lime_graphics_opengl_GL.deleteProgram = function(program) {
	lime_graphics_opengl_GL.context.deleteProgram(program);
};
lime_graphics_opengl_GL.deleteQuery = function(query) {
	lime_graphics_opengl_GL.context.deleteQuery(query);
};
lime_graphics_opengl_GL.deleteRenderbuffer = function(renderbuffer) {
	lime_graphics_opengl_GL.context.deleteRenderbuffer(renderbuffer);
};
lime_graphics_opengl_GL.deleteSampler = function(sampler) {
	lime_graphics_opengl_GL.context.deleteSampler(sampler);
};
lime_graphics_opengl_GL.deleteShader = function(shader) {
	lime_graphics_opengl_GL.context.deleteShader(shader);
};
lime_graphics_opengl_GL.deleteSync = function(sync) {
	lime_graphics_opengl_GL.context.deleteSync(sync);
};
lime_graphics_opengl_GL.deleteTexture = function(texture) {
	lime_graphics_opengl_GL.context.deleteTexture(texture);
};
lime_graphics_opengl_GL.deleteTransformFeedback = function(transformFeedback) {
	lime_graphics_opengl_GL.context.deleteTransformFeedback(transformFeedback);
};
lime_graphics_opengl_GL.deleteVertexArray = function(vertexArray) {
	lime_graphics_opengl_GL.context.deleteVertexArray(vertexArray);
};
lime_graphics_opengl_GL.depthFunc = function(func) {
	lime_graphics_opengl_GL.context.depthFunc(func);
};
lime_graphics_opengl_GL.depthMask = function(flag) {
	lime_graphics_opengl_GL.context.depthMask(flag);
};
lime_graphics_opengl_GL.depthRangef = function(zNear,zFar) {
	lime_graphics_opengl_GL.context.depthRangef(zNear,zFar);
};
lime_graphics_opengl_GL.detachShader = function(program,shader) {
	lime_graphics_opengl_GL.context.detachShader(program,shader);
};
lime_graphics_opengl_GL.disable = function(cap) {
	lime_graphics_opengl_GL.context.disable(cap);
};
lime_graphics_opengl_GL.disableVertexAttribArray = function(index) {
	lime_graphics_opengl_GL.context.disableVertexAttribArray(index);
};
lime_graphics_opengl_GL.drawArrays = function(mode,first,count) {
	lime_graphics_opengl_GL.context.drawArrays(mode,first,count);
};
lime_graphics_opengl_GL.drawArraysInstanced = function(mode,first,count,instanceCount) {
	lime_graphics_opengl_GL.context.drawArraysInstanced(mode,first,count,instanceCount);
};
lime_graphics_opengl_GL.drawBuffers = function(buffers) {
	lime_graphics_opengl_GL.context.drawBuffers(buffers);
};
lime_graphics_opengl_GL.drawElements = function(mode,count,type,offset) {
	lime_graphics_opengl_GL.context.drawElements(mode,count,type,offset);
};
lime_graphics_opengl_GL.drawElementsInstanced = function(mode,count,type,offset,instanceCount) {
	lime_graphics_opengl_GL.context.drawElementsInstanced(mode,count,type,offset,instanceCount);
};
lime_graphics_opengl_GL.drawRangeElements = function(mode,start,end,count,type,offset) {
	lime_graphics_opengl_GL.context.drawRangeElements(mode,start,end,count,type,offset);
};
lime_graphics_opengl_GL.enable = function(cap) {
	lime_graphics_opengl_GL.context.enable(cap);
};
lime_graphics_opengl_GL.enableVertexAttribArray = function(index) {
	lime_graphics_opengl_GL.context.enableVertexAttribArray(index);
};
lime_graphics_opengl_GL.endQuery = function(target) {
	lime_graphics_opengl_GL.context.endQuery(target);
};
lime_graphics_opengl_GL.endTransformFeedback = function() {
	lime_graphics_opengl_GL.context.endTransformFeedback();
};
lime_graphics_opengl_GL.fenceSync = function(condition,flags) {
	return lime_graphics_opengl_GL.context.fenceSync(condition,flags);
};
lime_graphics_opengl_GL.finish = function() {
	lime_graphics_opengl_GL.context.finish();
};
lime_graphics_opengl_GL.flush = function() {
	lime_graphics_opengl_GL.context.flush();
};
lime_graphics_opengl_GL.framebufferRenderbuffer = function(target,attachment,renderbuffertarget,renderbuffer) {
	lime_graphics_opengl_GL.context.framebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer);
};
lime_graphics_opengl_GL.framebufferTexture2D = function(target,attachment,textarget,texture,level) {
	lime_graphics_opengl_GL.context.framebufferTexture2D(target,attachment,textarget,texture,level);
};
lime_graphics_opengl_GL.framebufferTextureLayer = function(target,attachment,texture,level,layer) {
	lime_graphics_opengl_GL.context.framebufferTextureLayer(target,attachment,texture,level,layer);
};
lime_graphics_opengl_GL.frontFace = function(mode) {
	lime_graphics_opengl_GL.context.frontFace(mode);
};
lime_graphics_opengl_GL.generateMipmap = function(target) {
	lime_graphics_opengl_GL.context.generateMipmap(target);
};
lime_graphics_opengl_GL.getActiveAttrib = function(program,index) {
	return lime_graphics_opengl_GL.context.getActiveAttrib(program,index);
};
lime_graphics_opengl_GL.getActiveUniform = function(program,index) {
	return lime_graphics_opengl_GL.context.getActiveUniform(program,index);
};
lime_graphics_opengl_GL.getActiveUniformBlocki = function(program,uniformBlockIndex,pname) {
	return lime_graphics_opengl_GL.context.getActiveUniformBlocki(program,uniformBlockIndex,pname);
};
lime_graphics_opengl_GL.getActiveUniformBlockiv = function(program,uniformBlockIndex,pname,params) {
	lime_graphics_opengl_GL.context.getActiveUniformBlockiv(program,uniformBlockIndex,pname,params);
};
lime_graphics_opengl_GL.getActiveUniformBlockName = function(program,uniformBlockIndex) {
	return lime_graphics_opengl_GL.context.getActiveUniformBlockName(program,uniformBlockIndex);
};
lime_graphics_opengl_GL.getActiveUniformBlockParameter = function(program,uniformBlockIndex,pname) {
	return lime_graphics_opengl_GL.context.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);
};
lime_graphics_opengl_GL.getActiveUniforms = function(program,uniformIndices,pname) {
	return lime_graphics_opengl_GL.context.getActiveUniforms(program,uniformIndices,pname);
};
lime_graphics_opengl_GL.getActiveUniformsiv = function(program,uniformIndices,pname,params) {
	lime_graphics_opengl_GL.context.getActiveUniformsiv(program,uniformIndices,pname,params);
};
lime_graphics_opengl_GL.getAttachedShaders = function(program) {
	return lime_graphics_opengl_GL.context.getAttachedShaders(program);
};
lime_graphics_opengl_GL.getAttribLocation = function(program,name) {
	return lime_graphics_opengl_GL.context.getAttribLocation(program,name);
};
lime_graphics_opengl_GL.getBoolean = function(pname) {
	return lime_graphics_opengl_GL.context.getBoolean(pname);
};
lime_graphics_opengl_GL.getBooleanv = function(pname,params) {
	lime_graphics_opengl_GL.context.getBooleanv(pname,params);
};
lime_graphics_opengl_GL.getBufferParameter = function(target,pname) {
	return lime_graphics_opengl_GL.context.getBufferParameter(target,pname);
};
lime_graphics_opengl_GL.getBufferParameteri = function(target,pname) {
	return lime_graphics_opengl_GL.context.getBufferParameteri(target,pname);
};
lime_graphics_opengl_GL.getBufferParameteri64v = function(target,pname,params) {
	lime_graphics_opengl_GL.context.getBufferParameteri64v(target,pname,params);
	return;
};
lime_graphics_opengl_GL.getBufferParameteriv = function(target,pname,data) {
	lime_graphics_opengl_GL.context.getBufferParameteriv(target,pname,data);
	return;
};
lime_graphics_opengl_GL.getBufferPointerv = function(target,pname) {
	return lime_graphics_opengl_GL.context.getBufferPointerv(target,pname);
};
lime_graphics_opengl_GL.getBufferSubData = function(target,offset,size,data) {
	lime_graphics_opengl_GL.context.getBufferSubData(target,offset,size,data);
};
lime_graphics_opengl_GL.getContextAttributes = function() {
	return lime_graphics_opengl_GL.context.getContextAttributes();
};
lime_graphics_opengl_GL.getError = function() {
	return lime_graphics_opengl_GL.context.getError();
};
lime_graphics_opengl_GL.getExtension = function(name) {
	return lime_graphics_opengl_GL.context.getExtension(name);
};
lime_graphics_opengl_GL.getFloat = function(pname) {
	return lime_graphics_opengl_GL.context.getFloat(pname);
};
lime_graphics_opengl_GL.getFloatv = function(pname,params) {
	lime_graphics_opengl_GL.context.getFloatv(pname,params);
};
lime_graphics_opengl_GL.getFragDataLocation = function(program,name) {
	return lime_graphics_opengl_GL.context.getFragDataLocation(program,name);
};
lime_graphics_opengl_GL.getFramebufferAttachmentParameter = function(target,attachment,pname) {
	return lime_graphics_opengl_GL.context.getFramebufferAttachmentParameter(target,attachment,pname);
};
lime_graphics_opengl_GL.getFramebufferAttachmentParameteri = function(target,attachment,pname) {
	return lime_graphics_opengl_GL.context.getFramebufferAttachmentParameteri(target,attachment,pname);
};
lime_graphics_opengl_GL.getFramebufferAttachmentParameteriv = function(target,attachment,pname,params) {
	lime_graphics_opengl_GL.context.getFramebufferAttachmentParameteriv(target,attachment,pname,params);
};
lime_graphics_opengl_GL.getIndexedParameter = function(target,index) {
	return lime_graphics_opengl_GL.context.getIndexedParameter(target,index);
};
lime_graphics_opengl_GL.getInteger = function(pname) {
	return lime_graphics_opengl_GL.context.getInteger(pname);
};
lime_graphics_opengl_GL.getInteger64 = function(pname) {
	return lime_graphics_opengl_GL.context.getInteger64(pname);
};
lime_graphics_opengl_GL.getInteger64i = function(pname) {
	return lime_graphics_opengl_GL.context.getInteger64i(pname);
};
lime_graphics_opengl_GL.getInteger64i_v = function(pname,index,params) {
	lime_graphics_opengl_GL.context.getInteger64i_v(pname,index,params);
	return;
};
lime_graphics_opengl_GL.getInteger64v = function(pname,params) {
	lime_graphics_opengl_GL.context.getInteger64v(pname,params);
	return;
};
lime_graphics_opengl_GL.getIntegeri_v = function(pname,index,params) {
	lime_graphics_opengl_GL.context.getIntegeri_v(pname,index,params);
	return;
};
lime_graphics_opengl_GL.getIntegerv = function(pname,params) {
	lime_graphics_opengl_GL.context.getIntegerv(pname,params);
};
lime_graphics_opengl_GL.getInternalformati = function(target,internalformat,pname) {
	return lime_graphics_opengl_GL.context.getInternalformati(target,internalformat,pname);
};
lime_graphics_opengl_GL.getInternalformativ = function(target,internalformat,pname,bufSize,params) {
	lime_graphics_opengl_GL.context.getInternalformativ(target,internalformat,pname,bufSize,params);
};
lime_graphics_opengl_GL.getInternalformatParameter = function(target,internalformat,pname) {
	return lime_graphics_opengl_GL.context.getInternalformatParameter(target,internalformat,pname);
};
lime_graphics_opengl_GL.getParameter = function(pname) {
	return lime_graphics_opengl_GL.context.getParameter(pname);
};
lime_graphics_opengl_GL.getProgrami = function(program,pname) {
	return lime_graphics_opengl_GL.context.getProgrami(program,pname);
};
lime_graphics_opengl_GL.getProgramiv = function(program,pname,params) {
	lime_graphics_opengl_GL.context.getProgramiv(program,pname,params);
};
lime_graphics_opengl_GL.getProgramBinary = function(program,binaryFormat) {
	return lime_graphics_opengl_GL.context.getProgramBinary(program,binaryFormat);
};
lime_graphics_opengl_GL.getProgramInfoLog = function(program) {
	return lime_graphics_opengl_GL.context.getProgramInfoLog(program);
};
lime_graphics_opengl_GL.getProgramParameter = function(program,pname) {
	return lime_graphics_opengl_GL.context.getProgramParameter(program,pname);
};
lime_graphics_opengl_GL.getQuery = function(target,pname) {
	return lime_graphics_opengl_GL.context.getQuery(target,pname);
};
lime_graphics_opengl_GL.getQueryi = function(target,pname) {
	return lime_graphics_opengl_GL.context.getQueryi(target,pname);
};
lime_graphics_opengl_GL.getQueryiv = function(target,pname,params) {
	lime_graphics_opengl_GL.context.getQueryiv(target,pname,params);
};
lime_graphics_opengl_GL.getQueryObjectui = function(query,pname) {
	return lime_graphics_opengl_GL.context.getQueryObjectui(query,pname);
};
lime_graphics_opengl_GL.getQueryObjectuiv = function(query,pname,params) {
	lime_graphics_opengl_GL.context.getQueryObjectuiv(query,pname,params);
};
lime_graphics_opengl_GL.getQueryParameter = function(query,pname) {
	return lime_graphics_opengl_GL.context.getQueryParameter(query,pname);
};
lime_graphics_opengl_GL.getRenderbufferParameter = function(target,pname) {
	return lime_graphics_opengl_GL.context.getRenderbufferParameter(target,pname);
};
lime_graphics_opengl_GL.getRenderbufferParameteri = function(target,pname) {
	return lime_graphics_opengl_GL.context.getRenderbufferParameteri(target,pname);
};
lime_graphics_opengl_GL.getRenderbufferParameteriv = function(target,pname,params) {
	lime_graphics_opengl_GL.context.getRenderbufferParameteriv(target,pname,params);
};
lime_graphics_opengl_GL.getSamplerParameter = function(sampler,pname) {
	return lime_graphics_opengl_GL.context.getSamplerParameter(sampler,pname);
};
lime_graphics_opengl_GL.getSamplerParameterf = function(sampler,pname) {
	return lime_graphics_opengl_GL.context.getSamplerParameterf(sampler,pname);
};
lime_graphics_opengl_GL.getSamplerParameterfv = function(sampler,pname,params) {
	lime_graphics_opengl_GL.context.getSamplerParameterfv(sampler,pname,params);
};
lime_graphics_opengl_GL.getSamplerParameteri = function(sampler,pname) {
	return lime_graphics_opengl_GL.context.getSamplerParameteri(sampler,pname);
};
lime_graphics_opengl_GL.getSamplerParameteriv = function(sampler,pname,params) {
	lime_graphics_opengl_GL.context.getSamplerParameteriv(sampler,pname,params);
};
lime_graphics_opengl_GL.getShaderi = function(shader,pname) {
	return lime_graphics_opengl_GL.context.getShaderi(shader,pname);
};
lime_graphics_opengl_GL.getShaderiv = function(shader,pname,params) {
	lime_graphics_opengl_GL.context.getShaderiv(shader,pname,params);
};
lime_graphics_opengl_GL.getShaderInfoLog = function(shader) {
	return lime_graphics_opengl_GL.context.getShaderInfoLog(shader);
};
lime_graphics_opengl_GL.getShaderParameter = function(shader,pname) {
	return lime_graphics_opengl_GL.context.getShaderParameter(shader,pname);
};
lime_graphics_opengl_GL.getShaderPrecisionFormat = function(shadertype,precisiontype) {
	return lime_graphics_opengl_GL.context.getShaderPrecisionFormat(shadertype,precisiontype);
};
lime_graphics_opengl_GL.getShaderSource = function(shader) {
	return lime_graphics_opengl_GL.context.getShaderSource(shader);
};
lime_graphics_opengl_GL.getString = function(name) {
	return lime_graphics_opengl_GL.context.getString(name);
};
lime_graphics_opengl_GL.getStringi = function(name,index) {
	return lime_graphics_opengl_GL.context.getStringi(name,index);
};
lime_graphics_opengl_GL.getSupportedExtensions = function() {
	return lime_graphics_opengl_GL.context.getSupportedExtensions();
};
lime_graphics_opengl_GL.getSyncParameter = function(sync,pname) {
	return lime_graphics_opengl_GL.context.getSyncParameter(sync,pname);
};
lime_graphics_opengl_GL.getSyncParameteri = function(sync,pname) {
	return lime_graphics_opengl_GL.context.getSyncParameteri(sync,pname);
};
lime_graphics_opengl_GL.getSyncParameteriv = function(sync,pname,params) {
	lime_graphics_opengl_GL.context.getSyncParameteriv(sync,pname,params);
};
lime_graphics_opengl_GL.getTexParameter = function(target,pname) {
	return lime_graphics_opengl_GL.context.getTexParameter(target,pname);
};
lime_graphics_opengl_GL.getTexParameterf = function(target,pname) {
	return lime_graphics_opengl_GL.context.getTexParameterf(target,pname);
};
lime_graphics_opengl_GL.getTexParameterfv = function(target,pname,params) {
	lime_graphics_opengl_GL.context.getTexParameterfv(target,pname,params);
};
lime_graphics_opengl_GL.getTexParameteri = function(target,pname) {
	return lime_graphics_opengl_GL.context.getTexParameteri(target,pname);
};
lime_graphics_opengl_GL.getTexParameteriv = function(target,pname,params) {
	lime_graphics_opengl_GL.context.getTexParameteriv(target,pname,params);
};
lime_graphics_opengl_GL.getTransformFeedbackVarying = function(program,index) {
	return lime_graphics_opengl_GL.context.getTransformFeedbackVarying(program,index);
};
lime_graphics_opengl_GL.getUniform = function(program,location) {
	return lime_graphics_opengl_GL.context.getUniform(program,location);
};
lime_graphics_opengl_GL.getUniformf = function(program,location) {
	return lime_graphics_opengl_GL.context.getUniformf(program,location);
};
lime_graphics_opengl_GL.getUniformfv = function(program,location,params) {
	lime_graphics_opengl_GL.context.getUniformfv(program,location,params);
};
lime_graphics_opengl_GL.getUniformi = function(program,location) {
	return lime_graphics_opengl_GL.context.getUniformi(program,location);
};
lime_graphics_opengl_GL.getUniformiv = function(program,location,params) {
	lime_graphics_opengl_GL.context.getUniformiv(program,location,params);
};
lime_graphics_opengl_GL.getUniformui = function(program,location) {
	return lime_graphics_opengl_GL.context.getUniformui(program,location);
};
lime_graphics_opengl_GL.getUniformuiv = function(program,location,params) {
	lime_graphics_opengl_GL.context.getUniformuiv(program,location,params);
};
lime_graphics_opengl_GL.getUniformBlockIndex = function(program,uniformBlockName) {
	return lime_graphics_opengl_GL.context.getUniformBlockIndex(program,uniformBlockName);
};
lime_graphics_opengl_GL.getUniformIndices = function(program,uniformNames) {
	return lime_graphics_opengl_GL.context.getUniformIndices(program,uniformNames);
};
lime_graphics_opengl_GL.getUniformLocation = function(program,name) {
	return lime_graphics_opengl_GL.context.getUniformLocation(program,name);
};
lime_graphics_opengl_GL.getVertexAttrib = function(index,pname) {
	return lime_graphics_opengl_GL.context.getVertexAttrib(index,pname);
};
lime_graphics_opengl_GL.getVertexAttribf = function(index,pname) {
	return lime_graphics_opengl_GL.context.getVertexAttribf(index,pname);
};
lime_graphics_opengl_GL.getVertexAttribfv = function(index,pname,params) {
	lime_graphics_opengl_GL.context.getVertexAttribfv(index,pname,params);
};
lime_graphics_opengl_GL.getVertexAttribi = function(index,pname) {
	return lime_graphics_opengl_GL.context.getVertexAttribi(index,pname);
};
lime_graphics_opengl_GL.getVertexAttribIi = function(index,pname) {
	return lime_graphics_opengl_GL.context.getVertexAttribIi(index,pname);
};
lime_graphics_opengl_GL.getVertexAttribIiv = function(index,pname,params) {
	lime_graphics_opengl_GL.context.getVertexAttribIiv(index,pname,params);
};
lime_graphics_opengl_GL.getVertexAttribIui = function(index,pname) {
	return lime_graphics_opengl_GL.context.getVertexAttribIui(index,pname);
};
lime_graphics_opengl_GL.getVertexAttribIuiv = function(index,pname,params) {
	lime_graphics_opengl_GL.context.getVertexAttribIuiv(index,pname,params);
};
lime_graphics_opengl_GL.getVertexAttribiv = function(index,pname,params) {
	lime_graphics_opengl_GL.context.getVertexAttribiv(index,pname,params);
};
lime_graphics_opengl_GL.getVertexAttribPointerv = function(index,pname) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(lime_graphics_opengl_GL.context.getVertexAttribPointerv(index,pname));
};
lime_graphics_opengl_GL.hint = function(target,mode) {
	lime_graphics_opengl_GL.context.hint(target,mode);
};
lime_graphics_opengl_GL.invalidateFramebuffer = function(target,attachments) {
	lime_graphics_opengl_GL.context.invalidateFramebuffer(target,attachments);
};
lime_graphics_opengl_GL.invalidateSubFramebuffer = function(target,attachments,x,y,width,height) {
	lime_graphics_opengl_GL.context.invalidateSubFramebuffer(target,attachments,x,y,width,height);
};
lime_graphics_opengl_GL.isBuffer = function(buffer) {
	return lime_graphics_opengl_GL.context.isBuffer(buffer);
};
lime_graphics_opengl_GL.isContextLost = function() {
	return lime_graphics_opengl_GL.context.isContextLost();
};
lime_graphics_opengl_GL.isEnabled = function(cap) {
	return lime_graphics_opengl_GL.context.isEnabled(cap);
};
lime_graphics_opengl_GL.isFramebuffer = function(framebuffer) {
	return lime_graphics_opengl_GL.context.isFramebuffer(framebuffer);
};
lime_graphics_opengl_GL.isProgram = function(program) {
	return lime_graphics_opengl_GL.context.isProgram(program);
};
lime_graphics_opengl_GL.isQuery = function(query) {
	return lime_graphics_opengl_GL.context.isQuery(query);
};
lime_graphics_opengl_GL.isRenderbuffer = function(renderbuffer) {
	return lime_graphics_opengl_GL.context.isRenderbuffer(renderbuffer);
};
lime_graphics_opengl_GL.isSampler = function(sampler) {
	return lime_graphics_opengl_GL.context.isSampler(sampler);
};
lime_graphics_opengl_GL.isShader = function(shader) {
	return lime_graphics_opengl_GL.context.isShader(shader);
};
lime_graphics_opengl_GL.isSync = function(sync) {
	return lime_graphics_opengl_GL.context.isSync(sync);
};
lime_graphics_opengl_GL.isTexture = function(texture) {
	return lime_graphics_opengl_GL.context.isTexture(texture);
};
lime_graphics_opengl_GL.isTransformFeedback = function(transformFeedback) {
	return lime_graphics_opengl_GL.context.isTransformFeedback(transformFeedback);
};
lime_graphics_opengl_GL.isVertexArray = function(vertexArray) {
	return lime_graphics_opengl_GL.context.isVertexArray(vertexArray);
};
lime_graphics_opengl_GL.lineWidth = function(width) {
	lime_graphics_opengl_GL.context.lineWidth(width);
};
lime_graphics_opengl_GL.linkProgram = function(program) {
	lime_graphics_opengl_GL.context.linkProgram(program);
};
lime_graphics_opengl_GL.mapBufferRange = function(target,offset,length,access) {
	return lime_graphics_opengl_GL.context.mapBufferRange(target,offset,length,access);
};
lime_graphics_opengl_GL.pauseTransformFeedback = function() {
	lime_graphics_opengl_GL.context.pauseTransformFeedback();
};
lime_graphics_opengl_GL.pixelStorei = function(pname,param) {
	lime_graphics_opengl_GL.context.pixelStorei(pname,param);
};
lime_graphics_opengl_GL.polygonOffset = function(factor,units) {
	lime_graphics_opengl_GL.context.polygonOffset(factor,units);
};
lime_graphics_opengl_GL.programBinary = function(program,binaryFormat,binary,length) {
	lime_graphics_opengl_GL.context.programBinary(program,binaryFormat,binary,length);
};
lime_graphics_opengl_GL.programParameteri = function(program,pname,value) {
	lime_graphics_opengl_GL.context.programParameteri(program,pname,value);
};
lime_graphics_opengl_GL.readBuffer = function(src) {
	lime_graphics_opengl_GL.context.readBuffer(src);
};
lime_graphics_opengl_GL.readPixels = function(x,y,width,height,format,type,pixels) {
	lime_graphics_opengl_GL.context.readPixels(x,y,width,height,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(pixels));
};
lime_graphics_opengl_GL.releaseShaderCompiler = function() {
	lime_graphics_opengl_GL.context.releaseShaderCompiler();
};
lime_graphics_opengl_GL.renderbufferStorage = function(target,internalformat,width,height) {
	lime_graphics_opengl_GL.context.renderbufferStorage(target,internalformat,width,height);
};
lime_graphics_opengl_GL.renderbufferStorageMultisample = function(target,samples,internalformat,width,height) {
	lime_graphics_opengl_GL.context.renderbufferStorageMultisample(target,samples,internalformat,width,height);
};
lime_graphics_opengl_GL.resumeTransformFeedback = function() {
	lime_graphics_opengl_GL.context.resumeTransformFeedback();
};
lime_graphics_opengl_GL.sampleCoverage = function(value,invert) {
	lime_graphics_opengl_GL.context.sampleCoverage(value,invert);
};
lime_graphics_opengl_GL.samplerParameterf = function(sampler,pname,param) {
	lime_graphics_opengl_GL.context.samplerParameterf(sampler,pname,param);
};
lime_graphics_opengl_GL.samplerParameteri = function(sampler,pname,param) {
	lime_graphics_opengl_GL.context.samplerParameteri(sampler,pname,param);
};
lime_graphics_opengl_GL.scissor = function(x,y,width,height) {
	lime_graphics_opengl_GL.context.scissor(x,y,width,height);
};
lime_graphics_opengl_GL.shaderBinary = function(shaders,binaryformat,binary,length) {
	lime_graphics_opengl_GL.context.shaderBinary(shaders,binaryformat,binary,length);
};
lime_graphics_opengl_GL.shaderSource = function(shader,source) {
	lime_graphics_opengl_GL.context.shaderSource(shader,source);
};
lime_graphics_opengl_GL.stencilFunc = function(func,ref,mask) {
	lime_graphics_opengl_GL.context.stencilFunc(func,ref,mask);
};
lime_graphics_opengl_GL.stencilFuncSeparate = function(face,func,ref,mask) {
	lime_graphics_opengl_GL.context.stencilFuncSeparate(face,func,ref,mask);
};
lime_graphics_opengl_GL.stencilMask = function(mask) {
	lime_graphics_opengl_GL.context.stencilMask(mask);
};
lime_graphics_opengl_GL.stencilMaskSeparate = function(face,mask) {
	lime_graphics_opengl_GL.context.stencilMaskSeparate(face,mask);
};
lime_graphics_opengl_GL.stencilOp = function(fail,zfail,zpass) {
	lime_graphics_opengl_GL.context.stencilOp(fail,zfail,zpass);
};
lime_graphics_opengl_GL.stencilOpSeparate = function(face,fail,zfail,zpass) {
	lime_graphics_opengl_GL.context.stencilOpSeparate(face,fail,zfail,zpass);
};
lime_graphics_opengl_GL.texImage2D = function(target,level,internalformat,width,height,border,format,type,data) {
	lime_graphics_opengl_GL.context.texImage2D(target,level,internalformat,width,height,border,format,type,data);
};
lime_graphics_opengl_GL.texImage3D = function(target,level,internalformat,width,height,depth,border,format,type,data) {
	lime_graphics_opengl_GL.context.texImage3D(target,level,internalformat,width,height,depth,border,format,type,data);
};
lime_graphics_opengl_GL.texStorage2D = function(target,level,internalformat,width,height) {
	lime_graphics_opengl_GL.context.texStorage2D(target,level,internalformat,width,height);
};
lime_graphics_opengl_GL.texStorage3D = function(target,level,internalformat,width,height,depth) {
	lime_graphics_opengl_GL.context.texStorage3D(target,level,internalformat,width,height,depth);
};
lime_graphics_opengl_GL.texParameterf = function(target,pname,param) {
	lime_graphics_opengl_GL.context.texParameterf(target,pname,param);
};
lime_graphics_opengl_GL.texParameteri = function(target,pname,param) {
	lime_graphics_opengl_GL.context.texParameteri(target,pname,param);
};
lime_graphics_opengl_GL.texSubImage2D = function(target,level,xoffset,yoffset,width,height,format,type,pixels) {
	lime_graphics_opengl_GL.context.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(pixels));
};
lime_graphics_opengl_GL.texSubImage3D = function(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,data) {
	lime_graphics_opengl_GL.context.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,data);
};
lime_graphics_opengl_GL.transformFeedbackVaryings = function(program,varyings,bufferMode) {
	lime_graphics_opengl_GL.context.transformFeedbackVaryings(program,varyings,bufferMode);
};
lime_graphics_opengl_GL.uniform1f = function(location,v0) {
	lime_graphics_opengl_GL.context.uniform1f(location,v0);
};
lime_graphics_opengl_GL.uniform1fv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform1fv(location,count,v);
};
lime_graphics_opengl_GL.uniform1i = function(location,v0) {
	lime_graphics_opengl_GL.context.uniform1i(location,v0);
};
lime_graphics_opengl_GL.uniform1iv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform1iv(location,count,v);
};
lime_graphics_opengl_GL.uniform1ui = function(location,v0) {
	lime_graphics_opengl_GL.context.uniform1ui(location,v0);
};
lime_graphics_opengl_GL.uniform1uiv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform1uiv(location,count,v);
};
lime_graphics_opengl_GL.uniform2f = function(location,v0,v1) {
	lime_graphics_opengl_GL.context.uniform2f(location,v0,v1);
};
lime_graphics_opengl_GL.uniform2fv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform2fv(location,count,v);
};
lime_graphics_opengl_GL.uniform2i = function(location,x,y) {
	lime_graphics_opengl_GL.context.uniform2i(location,x,y);
};
lime_graphics_opengl_GL.uniform2iv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform2iv(location,count,v);
};
lime_graphics_opengl_GL.uniform2ui = function(location,x,y) {
	lime_graphics_opengl_GL.context.uniform2ui(location,x,y);
};
lime_graphics_opengl_GL.uniform2uiv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform2uiv(location,count,v);
};
lime_graphics_opengl_GL.uniform3f = function(location,v0,v1,v2) {
	lime_graphics_opengl_GL.context.uniform3f(location,v0,v1,v2);
};
lime_graphics_opengl_GL.uniform3fv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform3fv(location,count,v);
};
lime_graphics_opengl_GL.uniform3i = function(location,v0,v1,v2) {
	lime_graphics_opengl_GL.context.uniform3i(location,v0,v1,v2);
};
lime_graphics_opengl_GL.uniform3iv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform3iv(location,count,v);
};
lime_graphics_opengl_GL.uniform3ui = function(location,v0,v1,v2) {
	lime_graphics_opengl_GL.context.uniform3ui(location,v0,v1,v2);
};
lime_graphics_opengl_GL.uniform3uiv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform3uiv(location,count,v);
};
lime_graphics_opengl_GL.uniform4f = function(location,v0,v1,v2,v3) {
	lime_graphics_opengl_GL.context.uniform4f(location,v0,v1,v2,v3);
};
lime_graphics_opengl_GL.uniform4fv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform4fv(location,count,v);
};
lime_graphics_opengl_GL.uniform4i = function(location,v0,v1,v2,v3) {
	lime_graphics_opengl_GL.context.uniform4i(location,v0,v1,v2,v3);
};
lime_graphics_opengl_GL.uniform4iv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform4iv(location,count,v);
};
lime_graphics_opengl_GL.uniform4ui = function(location,v0,v1,v2,v3) {
	lime_graphics_opengl_GL.context.uniform4ui(location,v0,v1,v2,v3);
};
lime_graphics_opengl_GL.uniform4uiv = function(location,count,v) {
	lime_graphics_opengl_GL.context.uniform4uiv(location,count,v);
};
lime_graphics_opengl_GL.uniformBlockBinding = function(program,uniformBlockIndex,uniformBlockBinding) {
	lime_graphics_opengl_GL.context.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding);
};
lime_graphics_opengl_GL.uniformMatrix2fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix2fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix2x3fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix2x3fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix2x4fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix2x4fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix3fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix3fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix3x2fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix3x2fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix3x4fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix3x4fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix4fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix4fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix4x2fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix4x2fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.uniformMatrix4x3fv = function(location,count,transpose,v) {
	lime_graphics_opengl_GL.context.uniformMatrix4x3fv(location,count,transpose,v);
};
lime_graphics_opengl_GL.unmapBuffer = function(target) {
	return lime_graphics_opengl_GL.context.unmapBuffer(target);
};
lime_graphics_opengl_GL.useProgram = function(program) {
	lime_graphics_opengl_GL.__currentProgram = program;
	lime_graphics_opengl_GL.context.useProgram(program);
};
lime_graphics_opengl_GL.validateProgram = function(program) {
	lime_graphics_opengl_GL.context.validateProgram(program);
};
lime_graphics_opengl_GL.vertexAttrib1f = function(index,v0) {
	lime_graphics_opengl_GL.context.vertexAttrib1f(index,v0);
};
lime_graphics_opengl_GL.vertexAttrib1fv = function(index,v) {
	lime_graphics_opengl_GL.context.vertexAttrib1fv(index,v);
};
lime_graphics_opengl_GL.vertexAttrib2f = function(index,v0,v1) {
	lime_graphics_opengl_GL.context.vertexAttrib2f(index,v0,v1);
};
lime_graphics_opengl_GL.vertexAttrib2fv = function(index,v) {
	lime_graphics_opengl_GL.context.vertexAttrib2fv(index,v);
};
lime_graphics_opengl_GL.vertexAttrib3f = function(index,v0,v1,v2) {
	lime_graphics_opengl_GL.context.vertexAttrib3f(index,v0,v1,v2);
};
lime_graphics_opengl_GL.vertexAttrib3fv = function(index,v) {
	lime_graphics_opengl_GL.context.vertexAttrib3fv(index,v);
};
lime_graphics_opengl_GL.vertexAttrib4f = function(index,v0,v1,v2,v3) {
	lime_graphics_opengl_GL.context.vertexAttrib4f(index,v0,v1,v2,v3);
};
lime_graphics_opengl_GL.vertexAttrib4fv = function(index,v) {
	lime_graphics_opengl_GL.context.vertexAttrib4fv(index,v);
};
lime_graphics_opengl_GL.vertexAttribDivisor = function(index,divisor) {
	lime_graphics_opengl_GL.context.vertexAttribDivisor(index,divisor);
};
lime_graphics_opengl_GL.vertexAttribI4i = function(index,v0,v1,v2,v3) {
	lime_graphics_opengl_GL.context.vertexAttribI4i(index,v0,v1,v2,v3);
};
lime_graphics_opengl_GL.vertexAttribI4iv = function(index,v) {
	lime_graphics_opengl_GL.context.vertexAttribI4iv(index,v);
};
lime_graphics_opengl_GL.vertexAttribI4ui = function(index,v0,v1,v2,v3) {
	lime_graphics_opengl_GL.context.vertexAttribI4ui(index,v0,v1,v2,v3);
};
lime_graphics_opengl_GL.vertexAttribI4uiv = function(index,v) {
	lime_graphics_opengl_GL.context.vertexAttribI4uiv(index,v);
};
lime_graphics_opengl_GL.vertexAttribIPointer = function(index,size,type,stride,offset) {
	lime_graphics_opengl_GL.context.vertexAttribIPointer(index,size,type,stride,offset);
};
lime_graphics_opengl_GL.vertexAttribPointer = function(index,size,type,normalized,stride,offset) {
	lime_graphics_opengl_GL.context.vertexAttribPointer(index,size,type,normalized,stride,offset);
};
lime_graphics_opengl_GL.viewport = function(x,y,width,height) {
	lime_graphics_opengl_GL.context.viewport(x,y,width,height);
};
lime_graphics_opengl_GL.waitSync = function(sync,flags,timeout) {
	lime_graphics_opengl_GL.context.waitSync(sync,flags,timeout);
};
lime_graphics_opengl_GL.get_type = function() {
	return lime_graphics_opengl_GL.context.type;
};
lime_graphics_opengl_GL.get_version = function() {
	return lime_graphics_opengl_GL.context.version;
};
lime_graphics_opengl_GL.__getObjectID = function(object) {
	if(object == null) {
		return 0;
	} else {
		return object.id;
	}
};
var lime_graphics_opengl_GLObject = function(id) {
	this.id = id;
};
$hxClasses["lime.graphics.opengl.GLObject"] = lime_graphics_opengl_GLObject;
lime_graphics_opengl_GLObject.__name__ = ["lime","graphics","opengl","GLObject"];
lime_graphics_opengl_GLObject.fromInt = function(type,id) {
	if(id == 0) {
		return null;
	}
	return null;
};
lime_graphics_opengl_GLObject.prototype = {
	id: null
	,refs: null
	,__class__: lime_graphics_opengl_GLObject
};
var lime_graphics_opengl_GLContextType = $hxClasses["lime.graphics.opengl.GLContextType"] = { __ename__ : ["lime","graphics","opengl","GLContextType"], __constructs__ : ["OPENGL","GLES","WEBGL"] };
lime_graphics_opengl_GLContextType.OPENGL = ["OPENGL",0];
lime_graphics_opengl_GLContextType.OPENGL.toString = $estr;
lime_graphics_opengl_GLContextType.OPENGL.__enum__ = lime_graphics_opengl_GLContextType;
lime_graphics_opengl_GLContextType.GLES = ["GLES",1];
lime_graphics_opengl_GLContextType.GLES.toString = $estr;
lime_graphics_opengl_GLContextType.GLES.__enum__ = lime_graphics_opengl_GLContextType;
lime_graphics_opengl_GLContextType.WEBGL = ["WEBGL",2];
lime_graphics_opengl_GLContextType.WEBGL.toString = $estr;
lime_graphics_opengl_GLContextType.WEBGL.__enum__ = lime_graphics_opengl_GLContextType;
var lime_graphics_opengl__$GLES2Context_GLES2Context_$Impl_$ = {};
$hxClasses["lime.graphics.opengl._GLES2Context.GLES2Context_Impl_"] = lime_graphics_opengl__$GLES2Context_GLES2Context_$Impl_$;
lime_graphics_opengl__$GLES2Context_GLES2Context_$Impl_$.__name__ = ["lime","graphics","opengl","_GLES2Context","GLES2Context_Impl_"];
lime_graphics_opengl__$GLES2Context_GLES2Context_$Impl_$.fromGL = function(gl) {
	return null;
};
var lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$ = {};
$hxClasses["lime.graphics.opengl._GLES3Context.GLES3Context_Impl_"] = lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$;
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.__name__ = ["lime","graphics","opengl","_GLES3Context","GLES3Context_Impl_"];
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.__properties__ = {get_version:"get_version",get_type:"get_type",get_MAX_CLIENT_WAIT_TIMEOUT_WEBGL:"get_MAX_CLIENT_WAIT_TIMEOUT_WEBGL",get_TIMEOUT_IGNORED:"get_TIMEOUT_IGNORED",get_INVALID_INDEX:"get_INVALID_INDEX",get_DEPTH32F_STENCIL8:"get_DEPTH32F_STENCIL8",get_DEPTH_COMPONENT32F:"get_DEPTH_COMPONENT32F",get_DYNAMIC_COPY:"get_DYNAMIC_COPY",get_DYNAMIC_READ:"get_DYNAMIC_READ",get_STATIC_COPY:"get_STATIC_COPY",get_STATIC_READ:"get_STATIC_READ",get_STREAM_COPY:"get_STREAM_COPY",get_STREAM_READ:"get_STREAM_READ",get_DEPTH_COMPONENT24:"get_DEPTH_COMPONENT24",get_MAX:"get_MAX",get_MIN:"get_MIN",get_STENCIL:"get_STENCIL",get_DEPTH:"get_DEPTH",get_COLOR:"get_COLOR",get_SYNC_FLUSH_COMMANDS_BIT:"get_SYNC_FLUSH_COMMANDS_BIT",get_WAIT_FAILED:"get_WAIT_FAILED",get_CONDITION_SATISFIED:"get_CONDITION_SATISFIED",get_TIMEOUT_EXPIRED:"get_TIMEOUT_EXPIRED",get_ALREADY_SIGNALED:"get_ALREADY_SIGNALED",get_SIGNALED:"get_SIGNALED",get_UNSIGNALED:"get_UNSIGNALED",get_SYNC_GPU_COMMANDS_COMPLETE:"get_SYNC_GPU_COMMANDS_COMPLETE",get_SYNC_FENCE:"get_SYNC_FENCE",get_SYNC_FLAGS:"get_SYNC_FLAGS",get_SYNC_STATUS:"get_SYNC_STATUS",get_SYNC_CONDITION:"get_SYNC_CONDITION",get_OBJECT_TYPE:"get_OBJECT_TYPE",get_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:"get_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",get_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:"get_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",get_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:"get_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",get_UNIFORM_BLOCK_ACTIVE_UNIFORMS:"get_UNIFORM_BLOCK_ACTIVE_UNIFORMS",get_UNIFORM_BLOCK_DATA_SIZE:"get_UNIFORM_BLOCK_DATA_SIZE",get_UNIFORM_BLOCK_BINDING:"get_UNIFORM_BLOCK_BINDING",get_UNIFORM_IS_ROW_MAJOR:"get_UNIFORM_IS_ROW_MAJOR",get_UNIFORM_MATRIX_STRIDE:"get_UNIFORM_MATRIX_STRIDE",get_UNIFORM_ARRAY_STRIDE:"get_UNIFORM_ARRAY_STRIDE",get_UNIFORM_OFFSET:"get_UNIFORM_OFFSET",get_UNIFORM_BLOCK_INDEX:"get_UNIFORM_BLOCK_INDEX",get_UNIFORM_SIZE:"get_UNIFORM_SIZE",get_UNIFORM_TYPE:"get_UNIFORM_TYPE",get_ACTIVE_UNIFORM_BLOCKS:"get_ACTIVE_UNIFORM_BLOCKS",get_UNIFORM_BUFFER_OFFSET_ALIGNMENT:"get_UNIFORM_BUFFER_OFFSET_ALIGNMENT",get_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:"get_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",get_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:"get_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",get_MAX_UNIFORM_BLOCK_SIZE:"get_MAX_UNIFORM_BLOCK_SIZE",get_MAX_UNIFORM_BUFFER_BINDINGS:"get_MAX_UNIFORM_BUFFER_BINDINGS",get_MAX_COMBINED_UNIFORM_BLOCKS:"get_MAX_COMBINED_UNIFORM_BLOCKS",get_MAX_FRAGMENT_UNIFORM_BLOCKS:"get_MAX_FRAGMENT_UNIFORM_BLOCKS",get_MAX_VERTEX_UNIFORM_BLOCKS:"get_MAX_VERTEX_UNIFORM_BLOCKS",get_UNIFORM_BUFFER_SIZE:"get_UNIFORM_BUFFER_SIZE",get_UNIFORM_BUFFER_START:"get_UNIFORM_BUFFER_START",get_UNIFORM_BUFFER_BINDING:"get_UNIFORM_BUFFER_BINDING",get_UNIFORM_BUFFER:"get_UNIFORM_BUFFER",get_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:"get_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:"get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",get_RENDERBUFFER_SAMPLES:"get_RENDERBUFFER_SAMPLES",get_READ_FRAMEBUFFER_BINDING:"get_READ_FRAMEBUFFER_BINDING",get_DRAW_FRAMEBUFFER:"get_DRAW_FRAMEBUFFER",get_READ_FRAMEBUFFER:"get_READ_FRAMEBUFFER",get_DRAW_FRAMEBUFFER_BINDING:"get_DRAW_FRAMEBUFFER_BINDING",get_DEPTH24_STENCIL8:"get_DEPTH24_STENCIL8",get_FRAMEBUFFER_DEFAULT:"get_FRAMEBUFFER_DEFAULT",get_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:"get_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",get_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:"get_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",get_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:"get_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",get_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:"get_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",get_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:"get_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",get_FRAMEBUFFER_ATTACHMENT_RED_SIZE:"get_FRAMEBUFFER_ATTACHMENT_RED_SIZE",get_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:"get_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",get_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:"get_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",get_TRANSFORM_FEEDBACK_BINDING:"get_TRANSFORM_FEEDBACK_BINDING",get_TRANSFORM_FEEDBACK_ACTIVE:"get_TRANSFORM_FEEDBACK_ACTIVE",get_TRANSFORM_FEEDBACK_PAUSED:"get_TRANSFORM_FEEDBACK_PAUSED",get_TRANSFORM_FEEDBACK:"get_TRANSFORM_FEEDBACK",get_TRANSFORM_FEEDBACK_BUFFER_BINDING:"get_TRANSFORM_FEEDBACK_BUFFER_BINDING",get_TRANSFORM_FEEDBACK_BUFFER:"get_TRANSFORM_FEEDBACK_BUFFER",get_SEPARATE_ATTRIBS:"get_SEPARATE_ATTRIBS",get_INTERLEAVED_ATTRIBS:"get_INTERLEAVED_ATTRIBS",get_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:"get_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",get_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:"get_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",get_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:"get_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",get_TRANSFORM_FEEDBACK_BUFFER_SIZE:"get_TRANSFORM_FEEDBACK_BUFFER_SIZE",get_TRANSFORM_FEEDBACK_BUFFER_START:"get_TRANSFORM_FEEDBACK_BUFFER_START",get_TRANSFORM_FEEDBACK_VARYINGS:"get_TRANSFORM_FEEDBACK_VARYINGS",get_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:"get_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",get_TRANSFORM_FEEDBACK_BUFFER_MODE:"get_TRANSFORM_FEEDBACK_BUFFER_MODE",get_VERTEX_ATTRIB_ARRAY_DIVISOR:"get_VERTEX_ATTRIB_ARRAY_DIVISOR",get_VERTEX_ATTRIB_ARRAY_INTEGER:"get_VERTEX_ATTRIB_ARRAY_INTEGER",get_SIGNED_NORMALIZED:"get_SIGNED_NORMALIZED",get_UNSIGNED_NORMALIZED:"get_UNSIGNED_NORMALIZED",get_UNSIGNED_INT_VEC4:"get_UNSIGNED_INT_VEC4",get_UNSIGNED_INT_VEC3:"get_UNSIGNED_INT_VEC3",get_UNSIGNED_INT_VEC2:"get_UNSIGNED_INT_VEC2",get_FLOAT_MAT4x3:"get_FLOAT_MAT4x3",get_FLOAT_MAT4x2:"get_FLOAT_MAT4x2",get_FLOAT_MAT3x4:"get_FLOAT_MAT3x4",get_FLOAT_MAT3x2:"get_FLOAT_MAT3x2",get_FLOAT_MAT2x4:"get_FLOAT_MAT2x4",get_FLOAT_MAT2x3:"get_FLOAT_MAT2x3",get_COPY_WRITE_BUFFER_BINDING:"get_COPY_WRITE_BUFFER_BINDING",get_COPY_READ_BUFFER_BINDING:"get_COPY_READ_BUFFER_BINDING",get_COPY_WRITE_BUFFER:"get_COPY_WRITE_BUFFER",get_COPY_READ_BUFFER:"get_COPY_READ_BUFFER",get_PIXEL_UNPACK_BUFFER_BINDING:"get_PIXEL_UNPACK_BUFFER_BINDING",get_PIXEL_PACK_BUFFER_BINDING:"get_PIXEL_PACK_BUFFER_BINDING",get_PIXEL_UNPACK_BUFFER:"get_PIXEL_UNPACK_BUFFER",get_PIXEL_PACK_BUFFER:"get_PIXEL_PACK_BUFFER",get_SAMPLER_BINDING:"get_SAMPLER_BINDING",get_MAX_SAMPLES:"get_MAX_SAMPLES",get_UNSIGNED_INT_SAMPLER_2D_ARRAY:"get_UNSIGNED_INT_SAMPLER_2D_ARRAY",get_UNSIGNED_INT_SAMPLER_CUBE:"get_UNSIGNED_INT_SAMPLER_CUBE",get_UNSIGNED_INT_SAMPLER_3D:"get_UNSIGNED_INT_SAMPLER_3D",get_UNSIGNED_INT_SAMPLER_2D:"get_UNSIGNED_INT_SAMPLER_2D",get_INT_SAMPLER_2D_ARRAY:"get_INT_SAMPLER_2D_ARRAY",get_INT_SAMPLER_CUBE:"get_INT_SAMPLER_CUBE",get_INT_SAMPLER_3D:"get_INT_SAMPLER_3D",get_INT_SAMPLER_2D:"get_INT_SAMPLER_2D",get_SAMPLER_CUBE_SHADOW:"get_SAMPLER_CUBE_SHADOW",get_SAMPLER_2D_ARRAY_SHADOW:"get_SAMPLER_2D_ARRAY_SHADOW",get_SAMPLER_2D_ARRAY:"get_SAMPLER_2D_ARRAY",get_SAMPLER_2D_SHADOW:"get_SAMPLER_2D_SHADOW",get_SAMPLER_3D:"get_SAMPLER_3D",get_COLOR_ATTACHMENT15:"get_COLOR_ATTACHMENT15",get_COLOR_ATTACHMENT14:"get_COLOR_ATTACHMENT14",get_COLOR_ATTACHMENT13:"get_COLOR_ATTACHMENT13",get_COLOR_ATTACHMENT12:"get_COLOR_ATTACHMENT12",get_COLOR_ATTACHMENT11:"get_COLOR_ATTACHMENT11",get_COLOR_ATTACHMENT10:"get_COLOR_ATTACHMENT10",get_COLOR_ATTACHMENT9:"get_COLOR_ATTACHMENT9",get_COLOR_ATTACHMENT8:"get_COLOR_ATTACHMENT8",get_COLOR_ATTACHMENT7:"get_COLOR_ATTACHMENT7",get_COLOR_ATTACHMENT6:"get_COLOR_ATTACHMENT6",get_COLOR_ATTACHMENT5:"get_COLOR_ATTACHMENT5",get_COLOR_ATTACHMENT4:"get_COLOR_ATTACHMENT4",get_COLOR_ATTACHMENT3:"get_COLOR_ATTACHMENT3",get_COLOR_ATTACHMENT2:"get_COLOR_ATTACHMENT2",get_COLOR_ATTACHMENT1:"get_COLOR_ATTACHMENT1",get_MAX_COLOR_ATTACHMENTS:"get_MAX_COLOR_ATTACHMENTS",get_DRAW_BUFFER15:"get_DRAW_BUFFER15",get_DRAW_BUFFER14:"get_DRAW_BUFFER14",get_DRAW_BUFFER13:"get_DRAW_BUFFER13",get_DRAW_BUFFER12:"get_DRAW_BUFFER12",get_DRAW_BUFFER11:"get_DRAW_BUFFER11",get_DRAW_BUFFER10:"get_DRAW_BUFFER10",get_DRAW_BUFFER9:"get_DRAW_BUFFER9",get_DRAW_BUFFER8:"get_DRAW_BUFFER8",get_DRAW_BUFFER7:"get_DRAW_BUFFER7",get_DRAW_BUFFER6:"get_DRAW_BUFFER6",get_DRAW_BUFFER5:"get_DRAW_BUFFER5",get_DRAW_BUFFER4:"get_DRAW_BUFFER4",get_DRAW_BUFFER3:"get_DRAW_BUFFER3",get_DRAW_BUFFER2:"get_DRAW_BUFFER2",get_DRAW_BUFFER1:"get_DRAW_BUFFER1",get_DRAW_BUFFER0:"get_DRAW_BUFFER0",get_MAX_DRAW_BUFFERS:"get_MAX_DRAW_BUFFERS",get_ANY_SAMPLES_PASSED_CONSERVATIVE:"get_ANY_SAMPLES_PASSED_CONSERVATIVE",get_ANY_SAMPLES_PASSED:"get_ANY_SAMPLES_PASSED",get_QUERY_RESULT_AVAILABLE:"get_QUERY_RESULT_AVAILABLE",get_QUERY_RESULT:"get_QUERY_RESULT",get_CURRENT_QUERY:"get_CURRENT_QUERY",get_INT_2_10_10_10_REV:"get_INT_2_10_10_10_REV",get_RG_INTEGER:"get_RG_INTEGER",get_RG:"get_RG",get_HALF_FLOAT:"get_HALF_FLOAT",get_UNSIGNED_INT_24_8:"get_UNSIGNED_INT_24_8",get_FLOAT_32_UNSIGNED_INT_24_8_REV:"get_FLOAT_32_UNSIGNED_INT_24_8_REV",get_UNSIGNED_INT_5_9_9_9_REV:"get_UNSIGNED_INT_5_9_9_9_REV",get_UNSIGNED_INT_10F_11F_11F_REV:"get_UNSIGNED_INT_10F_11F_11F_REV",get_UNSIGNED_INT_2_10_10_10_REV:"get_UNSIGNED_INT_2_10_10_10_REV",get_TEXTURE_IMMUTABLE_LEVELS:"get_TEXTURE_IMMUTABLE_LEVELS",get_TEXTURE_IMMUTABLE_FORMAT:"get_TEXTURE_IMMUTABLE_FORMAT",get_RGB10_A2UI:"get_RGB10_A2UI",get_RGBA8_SNORM:"get_RGBA8_SNORM",get_RGB8_SNORM:"get_RGB8_SNORM",get_RG8_SNORM:"get_RG8_SNORM",get_R8_SNORM:"get_R8_SNORM",get_RG32UI:"get_RG32UI",get_RG32I:"get_RG32I",get_RG16UI:"get_RG16UI",get_RG16I:"get_RG16I",get_RG8UI:"get_RG8UI",get_RG8I:"get_RG8I",get_R32UI:"get_R32UI",get_R32I:"get_R32I",get_R16UI:"get_R16UI",get_R16I:"get_R16I",get_R8UI:"get_R8UI",get_R8I:"get_R8I",get_RG32F:"get_RG32F",get_RG16F:"get_RG16F",get_R32F:"get_R32F",get_R16F:"get_R16F",get_RG8:"get_RG8",get_R8:"get_R8",get_RGBA_INTEGER:"get_RGBA_INTEGER",get_RGB_INTEGER:"get_RGB_INTEGER",get_RED_INTEGER:"get_RED_INTEGER",get_RGB8I:"get_RGB8I",get_RGBA8I:"get_RGBA8I",get_RGB16I:"get_RGB16I",get_RGBA16I:"get_RGBA16I",get_RGB32I:"get_RGB32I",get_RGBA32I:"get_RGBA32I",get_RGB8UI:"get_RGB8UI",get_RGBA8UI:"get_RGBA8UI",get_RGB16UI:"get_RGB16UI",get_RGBA16UI:"get_RGBA16UI",get_RGB32UI:"get_RGB32UI",get_RGBA32UI:"get_RGBA32UI",get_RGB9_E5:"get_RGB9_E5",get_R11F_G11F_B10F:"get_R11F_G11F_B10F",get_TEXTURE_BINDING_2D_ARRAY:"get_TEXTURE_BINDING_2D_ARRAY",get_TEXTURE_2D_ARRAY:"get_TEXTURE_2D_ARRAY",get_RGB16F:"get_RGB16F",get_RGBA16F:"get_RGBA16F",get_RGB32F:"get_RGB32F",get_RGBA32F:"get_RGBA32F",get_COMPARE_REF_TO_TEXTURE:"get_COMPARE_REF_TO_TEXTURE",get_SRGB8_ALPHA8:"get_SRGB8_ALPHA8",get_SRGB8:"get_SRGB8",get_SRGB:"get_SRGB",get_TEXTURE_COMPARE_FUNC:"get_TEXTURE_COMPARE_FUNC",get_TEXTURE_COMPARE_MODE:"get_TEXTURE_COMPARE_MODE",get_TEXTURE_MAX_LEVEL:"get_TEXTURE_MAX_LEVEL",get_TEXTURE_BASE_LEVEL:"get_TEXTURE_BASE_LEVEL",get_TEXTURE_MAX_LOD:"get_TEXTURE_MAX_LOD",get_TEXTURE_MIN_LOD:"get_TEXTURE_MIN_LOD",get_TEXTURE_WRAP_R:"get_TEXTURE_WRAP_R",get_TEXTURE_3D:"get_TEXTURE_3D",get_RGB10_A2:"get_RGB10_A2",get_RGBA8:"get_RGBA8",get_RGB8:"get_RGB8",get_RED:"get_RED",get_MAX_ELEMENT_INDEX:"get_MAX_ELEMENT_INDEX",get_MAX_SERVER_WAIT_TIMEOUT:"get_MAX_SERVER_WAIT_TIMEOUT",get_MAX_FRAGMENT_INPUT_COMPONENTS:"get_MAX_FRAGMENT_INPUT_COMPONENTS",get_MAX_VERTEX_OUTPUT_COMPONENTS:"get_MAX_VERTEX_OUTPUT_COMPONENTS",get_VERTEX_ARRAY_BINDING:"get_VERTEX_ARRAY_BINDING",get_RASTERIZER_DISCARD:"get_RASTERIZER_DISCARD",get_FRAGMENT_SHADER_DERIVATIVE_HINT:"get_FRAGMENT_SHADER_DERIVATIVE_HINT",get_MAX_VARYING_COMPONENTS:"get_MAX_VARYING_COMPONENTS",get_MAX_PROGRAM_TEXEL_OFFSET:"get_MAX_PROGRAM_TEXEL_OFFSET",get_MIN_PROGRAM_TEXEL_OFFSET:"get_MIN_PROGRAM_TEXEL_OFFSET",get_MAX_ARRAY_TEXTURE_LAYERS:"get_MAX_ARRAY_TEXTURE_LAYERS",get_MAX_VERTEX_UNIFORM_COMPONENTS:"get_MAX_VERTEX_UNIFORM_COMPONENTS",get_MAX_FRAGMENT_UNIFORM_COMPONENTS:"get_MAX_FRAGMENT_UNIFORM_COMPONENTS",get_MAX_TEXTURE_LOD_BIAS:"get_MAX_TEXTURE_LOD_BIAS",get_MAX_ELEMENTS_INDICES:"get_MAX_ELEMENTS_INDICES",get_MAX_ELEMENTS_VERTICES:"get_MAX_ELEMENTS_VERTICES",get_MAX_3D_TEXTURE_SIZE:"get_MAX_3D_TEXTURE_SIZE",get_UNPACK_IMAGE_HEIGHT:"get_UNPACK_IMAGE_HEIGHT",get_UNPACK_SKIP_IMAGES:"get_UNPACK_SKIP_IMAGES",get_TEXTURE_BINDING_3D:"get_TEXTURE_BINDING_3D",get_PACK_SKIP_PIXELS:"get_PACK_SKIP_PIXELS",get_PACK_SKIP_ROWS:"get_PACK_SKIP_ROWS",get_PACK_ROW_LENGTH:"get_PACK_ROW_LENGTH",get_UNPACK_SKIP_PIXELS:"get_UNPACK_SKIP_PIXELS",get_UNPACK_SKIP_ROWS:"get_UNPACK_SKIP_ROWS",get_UNPACK_ROW_LENGTH:"get_UNPACK_ROW_LENGTH",get_READ_BUFFER:"get_READ_BUFFER",get_BROWSER_DEFAULT_WEBGL:"get_BROWSER_DEFAULT_WEBGL",get_UNPACK_COLORSPACE_CONVERSION_WEBGL:"get_UNPACK_COLORSPACE_CONVERSION_WEBGL",get_CONTEXT_LOST_WEBGL:"get_CONTEXT_LOST_WEBGL",get_UNPACK_PREMULTIPLY_ALPHA_WEBGL:"get_UNPACK_PREMULTIPLY_ALPHA_WEBGL",get_UNPACK_FLIP_Y_WEBGL:"get_UNPACK_FLIP_Y_WEBGL",get_INVALID_FRAMEBUFFER_OPERATION:"get_INVALID_FRAMEBUFFER_OPERATION",get_MAX_RENDERBUFFER_SIZE:"get_MAX_RENDERBUFFER_SIZE",get_RENDERBUFFER_BINDING:"get_RENDERBUFFER_BINDING",get_FRAMEBUFFER_BINDING:"get_FRAMEBUFFER_BINDING",get_FRAMEBUFFER_UNSUPPORTED:"get_FRAMEBUFFER_UNSUPPORTED",get_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:"get_FRAMEBUFFER_INCOMPLETE_DIMENSIONS",get_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:"get_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",get_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:"get_FRAMEBUFFER_INCOMPLETE_ATTACHMENT",get_FRAMEBUFFER_COMPLETE:"get_FRAMEBUFFER_COMPLETE",get_NONE:"get_NONE",get_DEPTH_STENCIL_ATTACHMENT:"get_DEPTH_STENCIL_ATTACHMENT",get_STENCIL_ATTACHMENT:"get_STENCIL_ATTACHMENT",get_DEPTH_ATTACHMENT:"get_DEPTH_ATTACHMENT",get_COLOR_ATTACHMENT0:"get_COLOR_ATTACHMENT0",get_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:"get_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:"get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",get_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:"get_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",get_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:"get_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",get_RENDERBUFFER_STENCIL_SIZE:"get_RENDERBUFFER_STENCIL_SIZE",get_RENDERBUFFER_DEPTH_SIZE:"get_RENDERBUFFER_DEPTH_SIZE",get_RENDERBUFFER_ALPHA_SIZE:"get_RENDERBUFFER_ALPHA_SIZE",get_RENDERBUFFER_BLUE_SIZE:"get_RENDERBUFFER_BLUE_SIZE",get_RENDERBUFFER_GREEN_SIZE:"get_RENDERBUFFER_GREEN_SIZE",get_RENDERBUFFER_RED_SIZE:"get_RENDERBUFFER_RED_SIZE",get_RENDERBUFFER_INTERNAL_FORMAT:"get_RENDERBUFFER_INTERNAL_FORMAT",get_RENDERBUFFER_HEIGHT:"get_RENDERBUFFER_HEIGHT",get_RENDERBUFFER_WIDTH:"get_RENDERBUFFER_WIDTH",get_DEPTH_STENCIL:"get_DEPTH_STENCIL",get_STENCIL_INDEX8:"get_STENCIL_INDEX8",get_STENCIL_INDEX:"get_STENCIL_INDEX",get_DEPTH_COMPONENT16:"get_DEPTH_COMPONENT16",get_RGB565:"get_RGB565",get_RGB5_A1:"get_RGB5_A1",get_RGBA4:"get_RGBA4",get_RENDERBUFFER:"get_RENDERBUFFER",get_FRAMEBUFFER:"get_FRAMEBUFFER",get_HIGH_INT:"get_HIGH_INT",get_MEDIUM_INT:"get_MEDIUM_INT",get_LOW_INT:"get_LOW_INT",get_HIGH_FLOAT:"get_HIGH_FLOAT",get_MEDIUM_FLOAT:"get_MEDIUM_FLOAT",get_LOW_FLOAT:"get_LOW_FLOAT",get_COMPILE_STATUS:"get_COMPILE_STATUS",get_POINT_SPRITE:"get_POINT_SPRITE",get_VERTEX_PROGRAM_POINT_SIZE:"get_VERTEX_PROGRAM_POINT_SIZE",get_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:"get_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",get_VERTEX_ATTRIB_ARRAY_POINTER:"get_VERTEX_ATTRIB_ARRAY_POINTER",get_VERTEX_ATTRIB_ARRAY_NORMALIZED:"get_VERTEX_ATTRIB_ARRAY_NORMALIZED",get_VERTEX_ATTRIB_ARRAY_TYPE:"get_VERTEX_ATTRIB_ARRAY_TYPE",get_VERTEX_ATTRIB_ARRAY_STRIDE:"get_VERTEX_ATTRIB_ARRAY_STRIDE",get_VERTEX_ATTRIB_ARRAY_SIZE:"get_VERTEX_ATTRIB_ARRAY_SIZE",get_VERTEX_ATTRIB_ARRAY_ENABLED:"get_VERTEX_ATTRIB_ARRAY_ENABLED",get_SAMPLER_CUBE:"get_SAMPLER_CUBE",get_SAMPLER_2D:"get_SAMPLER_2D",get_FLOAT_MAT4:"get_FLOAT_MAT4",get_FLOAT_MAT3:"get_FLOAT_MAT3",get_FLOAT_MAT2:"get_FLOAT_MAT2",get_BOOL_VEC4:"get_BOOL_VEC4",get_BOOL_VEC3:"get_BOOL_VEC3",get_BOOL_VEC2:"get_BOOL_VEC2",get_BOOL:"get_BOOL",get_INT_VEC4:"get_INT_VEC4",get_INT_VEC3:"get_INT_VEC3",get_INT_VEC2:"get_INT_VEC2",get_FLOAT_VEC4:"get_FLOAT_VEC4",get_FLOAT_VEC3:"get_FLOAT_VEC3",get_FLOAT_VEC2:"get_FLOAT_VEC2",get_MIRRORED_REPEAT:"get_MIRRORED_REPEAT",get_CLAMP_TO_EDGE:"get_CLAMP_TO_EDGE",get_REPEAT:"get_REPEAT",get_ACTIVE_TEXTURE:"get_ACTIVE_TEXTURE",get_TEXTURE31:"get_TEXTURE31",get_TEXTURE30:"get_TEXTURE30",get_TEXTURE29:"get_TEXTURE29",get_TEXTURE28:"get_TEXTURE28",get_TEXTURE27:"get_TEXTURE27",get_TEXTURE26:"get_TEXTURE26",get_TEXTURE25:"get_TEXTURE25",get_TEXTURE24:"get_TEXTURE24",get_TEXTURE23:"get_TEXTURE23",get_TEXTURE22:"get_TEXTURE22",get_TEXTURE21:"get_TEXTURE21",get_TEXTURE20:"get_TEXTURE20",get_TEXTURE19:"get_TEXTURE19",get_TEXTURE18:"get_TEXTURE18",get_TEXTURE17:"get_TEXTURE17",get_TEXTURE16:"get_TEXTURE16",get_TEXTURE15:"get_TEXTURE15",get_TEXTURE14:"get_TEXTURE14",get_TEXTURE13:"get_TEXTURE13",get_TEXTURE12:"get_TEXTURE12",get_TEXTURE11:"get_TEXTURE11",get_TEXTURE10:"get_TEXTURE10",get_TEXTURE9:"get_TEXTURE9",get_TEXTURE8:"get_TEXTURE8",get_TEXTURE7:"get_TEXTURE7",get_TEXTURE6:"get_TEXTURE6",get_TEXTURE5:"get_TEXTURE5",get_TEXTURE4:"get_TEXTURE4",get_TEXTURE3:"get_TEXTURE3",get_TEXTURE2:"get_TEXTURE2",get_TEXTURE1:"get_TEXTURE1",get_TEXTURE0:"get_TEXTURE0",get_MAX_CUBE_MAP_TEXTURE_SIZE:"get_MAX_CUBE_MAP_TEXTURE_SIZE",get_TEXTURE_CUBE_MAP_NEGATIVE_Z:"get_TEXTURE_CUBE_MAP_NEGATIVE_Z",get_TEXTURE_CUBE_MAP_POSITIVE_Z:"get_TEXTURE_CUBE_MAP_POSITIVE_Z",get_TEXTURE_CUBE_MAP_NEGATIVE_Y:"get_TEXTURE_CUBE_MAP_NEGATIVE_Y",get_TEXTURE_CUBE_MAP_POSITIVE_Y:"get_TEXTURE_CUBE_MAP_POSITIVE_Y",get_TEXTURE_CUBE_MAP_NEGATIVE_X:"get_TEXTURE_CUBE_MAP_NEGATIVE_X",get_TEXTURE_CUBE_MAP_POSITIVE_X:"get_TEXTURE_CUBE_MAP_POSITIVE_X",get_TEXTURE_BINDING_CUBE_MAP:"get_TEXTURE_BINDING_CUBE_MAP",get_TEXTURE_CUBE_MAP:"get_TEXTURE_CUBE_MAP",get_TEXTURE:"get_TEXTURE",get_TEXTURE_2D:"get_TEXTURE_2D",get_TEXTURE_WRAP_T:"get_TEXTURE_WRAP_T",get_TEXTURE_WRAP_S:"get_TEXTURE_WRAP_S",get_TEXTURE_MIN_FILTER:"get_TEXTURE_MIN_FILTER",get_TEXTURE_MAG_FILTER:"get_TEXTURE_MAG_FILTER",get_LINEAR_MIPMAP_LINEAR:"get_LINEAR_MIPMAP_LINEAR",get_NEAREST_MIPMAP_LINEAR:"get_NEAREST_MIPMAP_LINEAR",get_LINEAR_MIPMAP_NEAREST:"get_LINEAR_MIPMAP_NEAREST",get_NEAREST_MIPMAP_NEAREST:"get_NEAREST_MIPMAP_NEAREST",get_LINEAR:"get_LINEAR",get_NEAREST:"get_NEAREST",get_VERSION:"get_VERSION",get_RENDERER:"get_RENDERER",get_VENDOR:"get_VENDOR",get_DECR_WRAP:"get_DECR_WRAP",get_INCR_WRAP:"get_INCR_WRAP",get_INVERT:"get_INVERT",get_DECR:"get_DECR",get_INCR:"get_INCR",get_REPLACE:"get_REPLACE",get_KEEP:"get_KEEP",get_ALWAYS:"get_ALWAYS",get_GEQUAL:"get_GEQUAL",get_NOTEQUAL:"get_NOTEQUAL",get_GREATER:"get_GREATER",get_LEQUAL:"get_LEQUAL",get_EQUAL:"get_EQUAL",get_LESS:"get_LESS",get_NEVER:"get_NEVER",get_CURRENT_PROGRAM:"get_CURRENT_PROGRAM",get_SHADING_LANGUAGE_VERSION:"get_SHADING_LANGUAGE_VERSION",get_ACTIVE_ATTRIBUTES:"get_ACTIVE_ATTRIBUTES",get_ACTIVE_UNIFORMS:"get_ACTIVE_UNIFORMS",get_ATTACHED_SHADERS:"get_ATTACHED_SHADERS",get_VALIDATE_STATUS:"get_VALIDATE_STATUS",get_LINK_STATUS:"get_LINK_STATUS",get_DELETE_STATUS:"get_DELETE_STATUS",get_SHADER_TYPE:"get_SHADER_TYPE",get_MAX_FRAGMENT_UNIFORM_VECTORS:"get_MAX_FRAGMENT_UNIFORM_VECTORS",get_MAX_TEXTURE_IMAGE_UNITS:"get_MAX_TEXTURE_IMAGE_UNITS",get_MAX_VERTEX_TEXTURE_IMAGE_UNITS:"get_MAX_VERTEX_TEXTURE_IMAGE_UNITS",get_MAX_COMBINED_TEXTURE_IMAGE_UNITS:"get_MAX_COMBINED_TEXTURE_IMAGE_UNITS",get_MAX_VARYING_VECTORS:"get_MAX_VARYING_VECTORS",get_MAX_VERTEX_UNIFORM_VECTORS:"get_MAX_VERTEX_UNIFORM_VECTORS",get_MAX_VERTEX_ATTRIBS:"get_MAX_VERTEX_ATTRIBS",get_VERTEX_SHADER:"get_VERTEX_SHADER",get_FRAGMENT_SHADER:"get_FRAGMENT_SHADER",get_UNSIGNED_SHORT_5_6_5:"get_UNSIGNED_SHORT_5_6_5",get_UNSIGNED_SHORT_5_5_5_1:"get_UNSIGNED_SHORT_5_5_5_1",get_UNSIGNED_SHORT_4_4_4_4:"get_UNSIGNED_SHORT_4_4_4_4",get_LUMINANCE_ALPHA:"get_LUMINANCE_ALPHA",get_LUMINANCE:"get_LUMINANCE",get_RGBA:"get_RGBA",get_RGB:"get_RGB",get_ALPHA:"get_ALPHA",get_DEPTH_COMPONENT:"get_DEPTH_COMPONENT",get_FLOAT:"get_FLOAT",get_UNSIGNED_INT:"get_UNSIGNED_INT",get_INT:"get_INT",get_UNSIGNED_SHORT:"get_UNSIGNED_SHORT",get_SHORT:"get_SHORT",get_UNSIGNED_BYTE:"get_UNSIGNED_BYTE",get_BYTE:"get_BYTE",get_GENERATE_MIPMAP_HINT:"get_GENERATE_MIPMAP_HINT",get_NICEST:"get_NICEST",get_FASTEST:"get_FASTEST",get_DONT_CARE:"get_DONT_CARE",get_COMPRESSED_TEXTURE_FORMATS:"get_COMPRESSED_TEXTURE_FORMATS",get_SAMPLE_COVERAGE_INVERT:"get_SAMPLE_COVERAGE_INVERT",get_SAMPLE_COVERAGE_VALUE:"get_SAMPLE_COVERAGE_VALUE",get_SAMPLES:"get_SAMPLES",get_SAMPLE_BUFFERS:"get_SAMPLE_BUFFERS",get_TEXTURE_BINDING_2D:"get_TEXTURE_BINDING_2D",get_POLYGON_OFFSET_FACTOR:"get_POLYGON_OFFSET_FACTOR",get_POLYGON_OFFSET_UNITS:"get_POLYGON_OFFSET_UNITS",get_STENCIL_BITS:"get_STENCIL_BITS",get_DEPTH_BITS:"get_DEPTH_BITS",get_ALPHA_BITS:"get_ALPHA_BITS",get_BLUE_BITS:"get_BLUE_BITS",get_GREEN_BITS:"get_GREEN_BITS",get_RED_BITS:"get_RED_BITS",get_SUBPIXEL_BITS:"get_SUBPIXEL_BITS",get_MAX_VIEWPORT_DIMS:"get_MAX_VIEWPORT_DIMS",get_MAX_TEXTURE_SIZE:"get_MAX_TEXTURE_SIZE",get_PACK_ALIGNMENT:"get_PACK_ALIGNMENT",get_UNPACK_ALIGNMENT:"get_UNPACK_ALIGNMENT",get_COLOR_WRITEMASK:"get_COLOR_WRITEMASK",get_COLOR_CLEAR_VALUE:"get_COLOR_CLEAR_VALUE",get_SCISSOR_BOX:"get_SCISSOR_BOX",get_VIEWPORT:"get_VIEWPORT",get_STENCIL_BACK_WRITEMASK:"get_STENCIL_BACK_WRITEMASK",get_STENCIL_BACK_VALUE_MASK:"get_STENCIL_BACK_VALUE_MASK",get_STENCIL_BACK_REF:"get_STENCIL_BACK_REF",get_STENCIL_BACK_PASS_DEPTH_PASS:"get_STENCIL_BACK_PASS_DEPTH_PASS",get_STENCIL_BACK_PASS_DEPTH_FAIL:"get_STENCIL_BACK_PASS_DEPTH_FAIL",get_STENCIL_BACK_FAIL:"get_STENCIL_BACK_FAIL",get_STENCIL_BACK_FUNC:"get_STENCIL_BACK_FUNC",get_STENCIL_WRITEMASK:"get_STENCIL_WRITEMASK",get_STENCIL_VALUE_MASK:"get_STENCIL_VALUE_MASK",get_STENCIL_REF:"get_STENCIL_REF",get_STENCIL_PASS_DEPTH_PASS:"get_STENCIL_PASS_DEPTH_PASS",get_STENCIL_PASS_DEPTH_FAIL:"get_STENCIL_PASS_DEPTH_FAIL",get_STENCIL_FAIL:"get_STENCIL_FAIL",get_STENCIL_FUNC:"get_STENCIL_FUNC",get_STENCIL_CLEAR_VALUE:"get_STENCIL_CLEAR_VALUE",get_DEPTH_FUNC:"get_DEPTH_FUNC",get_DEPTH_CLEAR_VALUE:"get_DEPTH_CLEAR_VALUE",get_DEPTH_WRITEMASK:"get_DEPTH_WRITEMASK",get_DEPTH_RANGE:"get_DEPTH_RANGE",get_FRONT_FACE:"get_FRONT_FACE",get_CULL_FACE_MODE:"get_CULL_FACE_MODE",get_ALIASED_LINE_WIDTH_RANGE:"get_ALIASED_LINE_WIDTH_RANGE",get_ALIASED_POINT_SIZE_RANGE:"get_ALIASED_POINT_SIZE_RANGE",get_LINE_WIDTH:"get_LINE_WIDTH",get_CCW:"get_CCW",get_CW:"get_CW",get_OUT_OF_MEMORY:"get_OUT_OF_MEMORY",get_INVALID_OPERATION:"get_INVALID_OPERATION",get_INVALID_VALUE:"get_INVALID_VALUE",get_INVALID_ENUM:"get_INVALID_ENUM",get_NO_ERROR:"get_NO_ERROR",get_SAMPLE_COVERAGE:"get_SAMPLE_COVERAGE",get_SAMPLE_ALPHA_TO_COVERAGE:"get_SAMPLE_ALPHA_TO_COVERAGE",get_POLYGON_OFFSET_FILL:"get_POLYGON_OFFSET_FILL",get_SCISSOR_TEST:"get_SCISSOR_TEST",get_DEPTH_TEST:"get_DEPTH_TEST",get_STENCIL_TEST:"get_STENCIL_TEST",get_DITHER:"get_DITHER",get_BLEND:"get_BLEND",get_CULL_FACE:"get_CULL_FACE",get_FRONT_AND_BACK:"get_FRONT_AND_BACK",get_BACK:"get_BACK",get_FRONT:"get_FRONT",get_CURRENT_VERTEX_ATTRIB:"get_CURRENT_VERTEX_ATTRIB",get_BUFFER_USAGE:"get_BUFFER_USAGE",get_BUFFER_SIZE:"get_BUFFER_SIZE",get_DYNAMIC_DRAW:"get_DYNAMIC_DRAW",get_STATIC_DRAW:"get_STATIC_DRAW",get_STREAM_DRAW:"get_STREAM_DRAW",get_ELEMENT_ARRAY_BUFFER_BINDING:"get_ELEMENT_ARRAY_BUFFER_BINDING",get_ARRAY_BUFFER_BINDING:"get_ARRAY_BUFFER_BINDING",get_ELEMENT_ARRAY_BUFFER:"get_ELEMENT_ARRAY_BUFFER",get_ARRAY_BUFFER:"get_ARRAY_BUFFER",get_BLEND_COLOR:"get_BLEND_COLOR",get_ONE_MINUS_CONSTANT_ALPHA:"get_ONE_MINUS_CONSTANT_ALPHA",get_CONSTANT_ALPHA:"get_CONSTANT_ALPHA",get_ONE_MINUS_CONSTANT_COLOR:"get_ONE_MINUS_CONSTANT_COLOR",get_CONSTANT_COLOR:"get_CONSTANT_COLOR",get_BLEND_SRC_ALPHA:"get_BLEND_SRC_ALPHA",get_BLEND_DST_ALPHA:"get_BLEND_DST_ALPHA",get_BLEND_SRC_RGB:"get_BLEND_SRC_RGB",get_BLEND_DST_RGB:"get_BLEND_DST_RGB",get_FUNC_REVERSE_SUBTRACT:"get_FUNC_REVERSE_SUBTRACT",get_FUNC_SUBTRACT:"get_FUNC_SUBTRACT",get_BLEND_EQUATION_ALPHA:"get_BLEND_EQUATION_ALPHA",get_BLEND_EQUATION_RGB:"get_BLEND_EQUATION_RGB",get_BLEND_EQUATION:"get_BLEND_EQUATION",get_FUNC_ADD:"get_FUNC_ADD",get_SRC_ALPHA_SATURATE:"get_SRC_ALPHA_SATURATE",get_ONE_MINUS_DST_COLOR:"get_ONE_MINUS_DST_COLOR",get_DST_COLOR:"get_DST_COLOR",get_ONE_MINUS_DST_ALPHA:"get_ONE_MINUS_DST_ALPHA",get_DST_ALPHA:"get_DST_ALPHA",get_ONE_MINUS_SRC_ALPHA:"get_ONE_MINUS_SRC_ALPHA",get_SRC_ALPHA:"get_SRC_ALPHA",get_ONE_MINUS_SRC_COLOR:"get_ONE_MINUS_SRC_COLOR",get_SRC_COLOR:"get_SRC_COLOR",get_ONE:"get_ONE",get_ZERO:"get_ZERO",get_TRIANGLE_FAN:"get_TRIANGLE_FAN",get_TRIANGLE_STRIP:"get_TRIANGLE_STRIP",get_TRIANGLES:"get_TRIANGLES",get_LINE_STRIP:"get_LINE_STRIP",get_LINE_LOOP:"get_LINE_LOOP",get_LINES:"get_LINES",get_POINTS:"get_POINTS",get_COLOR_BUFFER_BIT:"get_COLOR_BUFFER_BIT",get_STENCIL_BUFFER_BIT:"get_STENCIL_BUFFER_BIT",get_DEPTH_BUFFER_BIT:"get_DEPTH_BUFFER_BIT",get_EXTENSIONS:"get_EXTENSIONS"};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_EXTENSIONS = function(this1) {
	return 7939;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_BUFFER_BIT = function(this1) {
	return this1.DEPTH_BUFFER_BIT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BUFFER_BIT = function(this1) {
	return this1.STENCIL_BUFFER_BIT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_BUFFER_BIT = function(this1) {
	return this1.COLOR_BUFFER_BIT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_POINTS = function(this1) {
	return this1.POINTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINES = function(this1) {
	return this1.LINES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINE_LOOP = function(this1) {
	return this1.LINE_LOOP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINE_STRIP = function(this1) {
	return this1.LINE_STRIP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRIANGLES = function(this1) {
	return this1.TRIANGLES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRIANGLE_STRIP = function(this1) {
	return this1.TRIANGLE_STRIP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRIANGLE_FAN = function(this1) {
	return this1.TRIANGLE_FAN;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ZERO = function(this1) {
	return this1.ZERO;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ONE = function(this1) {
	return this1.ONE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SRC_COLOR = function(this1) {
	return this1.SRC_COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ONE_MINUS_SRC_COLOR = function(this1) {
	return this1.ONE_MINUS_SRC_COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SRC_ALPHA = function(this1) {
	return this1.SRC_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ONE_MINUS_SRC_ALPHA = function(this1) {
	return this1.ONE_MINUS_SRC_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DST_ALPHA = function(this1) {
	return this1.DST_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ONE_MINUS_DST_ALPHA = function(this1) {
	return this1.ONE_MINUS_DST_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DST_COLOR = function(this1) {
	return this1.DST_COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ONE_MINUS_DST_COLOR = function(this1) {
	return this1.ONE_MINUS_DST_COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SRC_ALPHA_SATURATE = function(this1) {
	return this1.SRC_ALPHA_SATURATE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FUNC_ADD = function(this1) {
	return this1.FUNC_ADD;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_EQUATION = function(this1) {
	return this1.BLEND_EQUATION;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_EQUATION_RGB = function(this1) {
	return this1.BLEND_EQUATION_RGB;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_EQUATION_ALPHA = function(this1) {
	return this1.BLEND_EQUATION_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FUNC_SUBTRACT = function(this1) {
	return this1.FUNC_SUBTRACT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FUNC_REVERSE_SUBTRACT = function(this1) {
	return this1.FUNC_REVERSE_SUBTRACT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_DST_RGB = function(this1) {
	return this1.BLEND_DST_RGB;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_SRC_RGB = function(this1) {
	return this1.BLEND_SRC_RGB;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_DST_ALPHA = function(this1) {
	return this1.BLEND_DST_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_SRC_ALPHA = function(this1) {
	return this1.BLEND_SRC_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CONSTANT_COLOR = function(this1) {
	return this1.CONSTANT_COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ONE_MINUS_CONSTANT_COLOR = function(this1) {
	return this1.ONE_MINUS_CONSTANT_COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CONSTANT_ALPHA = function(this1) {
	return this1.CONSTANT_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ONE_MINUS_CONSTANT_ALPHA = function(this1) {
	return this1.ONE_MINUS_CONSTANT_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND_COLOR = function(this1) {
	return this1.BLEND_COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ARRAY_BUFFER = function(this1) {
	return this1.ARRAY_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ELEMENT_ARRAY_BUFFER = function(this1) {
	return this1.ELEMENT_ARRAY_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ARRAY_BUFFER_BINDING = function(this1) {
	return this1.ARRAY_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ELEMENT_ARRAY_BUFFER_BINDING = function(this1) {
	return this1.ELEMENT_ARRAY_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STREAM_DRAW = function(this1) {
	return this1.STREAM_DRAW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STATIC_DRAW = function(this1) {
	return this1.STATIC_DRAW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DYNAMIC_DRAW = function(this1) {
	return this1.DYNAMIC_DRAW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BUFFER_SIZE = function(this1) {
	return this1.BUFFER_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BUFFER_USAGE = function(this1) {
	return this1.BUFFER_USAGE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CURRENT_VERTEX_ATTRIB = function(this1) {
	return this1.CURRENT_VERTEX_ATTRIB;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRONT = function(this1) {
	return this1.FRONT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BACK = function(this1) {
	return this1.BACK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRONT_AND_BACK = function(this1) {
	return this1.FRONT_AND_BACK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CULL_FACE = function(this1) {
	return this1.CULL_FACE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLEND = function(this1) {
	return this1.BLEND;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DITHER = function(this1) {
	return this1.DITHER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_TEST = function(this1) {
	return this1.STENCIL_TEST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_TEST = function(this1) {
	return this1.DEPTH_TEST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SCISSOR_TEST = function(this1) {
	return this1.SCISSOR_TEST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_POLYGON_OFFSET_FILL = function(this1) {
	return this1.POLYGON_OFFSET_FILL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLE_ALPHA_TO_COVERAGE = function(this1) {
	return this1.SAMPLE_ALPHA_TO_COVERAGE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLE_COVERAGE = function(this1) {
	return this1.SAMPLE_COVERAGE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NO_ERROR = function(this1) {
	return this1.NO_ERROR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INVALID_ENUM = function(this1) {
	return this1.INVALID_ENUM;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INVALID_VALUE = function(this1) {
	return this1.INVALID_VALUE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INVALID_OPERATION = function(this1) {
	return this1.INVALID_OPERATION;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_OUT_OF_MEMORY = function(this1) {
	return this1.OUT_OF_MEMORY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CW = function(this1) {
	return this1.CW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CCW = function(this1) {
	return this1.CCW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINE_WIDTH = function(this1) {
	return this1.LINE_WIDTH;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ALIASED_POINT_SIZE_RANGE = function(this1) {
	return this1.ALIASED_POINT_SIZE_RANGE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ALIASED_LINE_WIDTH_RANGE = function(this1) {
	return this1.ALIASED_LINE_WIDTH_RANGE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CULL_FACE_MODE = function(this1) {
	return this1.CULL_FACE_MODE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRONT_FACE = function(this1) {
	return this1.FRONT_FACE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_RANGE = function(this1) {
	return this1.DEPTH_RANGE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_WRITEMASK = function(this1) {
	return this1.DEPTH_WRITEMASK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_CLEAR_VALUE = function(this1) {
	return this1.DEPTH_CLEAR_VALUE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_FUNC = function(this1) {
	return this1.DEPTH_FUNC;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_CLEAR_VALUE = function(this1) {
	return this1.STENCIL_CLEAR_VALUE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_FUNC = function(this1) {
	return this1.STENCIL_FUNC;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_FAIL = function(this1) {
	return this1.STENCIL_FAIL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_PASS_DEPTH_FAIL = function(this1) {
	return this1.STENCIL_PASS_DEPTH_FAIL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_PASS_DEPTH_PASS = function(this1) {
	return this1.STENCIL_PASS_DEPTH_PASS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_REF = function(this1) {
	return this1.STENCIL_REF;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_VALUE_MASK = function(this1) {
	return this1.STENCIL_VALUE_MASK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_WRITEMASK = function(this1) {
	return this1.STENCIL_WRITEMASK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BACK_FUNC = function(this1) {
	return this1.STENCIL_BACK_FUNC;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BACK_FAIL = function(this1) {
	return this1.STENCIL_BACK_FAIL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BACK_PASS_DEPTH_FAIL = function(this1) {
	return this1.STENCIL_BACK_PASS_DEPTH_FAIL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BACK_PASS_DEPTH_PASS = function(this1) {
	return this1.STENCIL_BACK_PASS_DEPTH_PASS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BACK_REF = function(this1) {
	return this1.STENCIL_BACK_REF;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BACK_VALUE_MASK = function(this1) {
	return this1.STENCIL_BACK_VALUE_MASK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BACK_WRITEMASK = function(this1) {
	return this1.STENCIL_BACK_WRITEMASK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VIEWPORT = function(this1) {
	return this1.VIEWPORT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SCISSOR_BOX = function(this1) {
	return this1.SCISSOR_BOX;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_CLEAR_VALUE = function(this1) {
	return this1.COLOR_CLEAR_VALUE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_WRITEMASK = function(this1) {
	return this1.COLOR_WRITEMASK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_ALIGNMENT = function(this1) {
	return this1.UNPACK_ALIGNMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PACK_ALIGNMENT = function(this1) {
	return this1.PACK_ALIGNMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_TEXTURE_SIZE = function(this1) {
	return this1.MAX_TEXTURE_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VIEWPORT_DIMS = function(this1) {
	return this1.MAX_VIEWPORT_DIMS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SUBPIXEL_BITS = function(this1) {
	return this1.SUBPIXEL_BITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RED_BITS = function(this1) {
	return this1.RED_BITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_GREEN_BITS = function(this1) {
	return this1.GREEN_BITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BLUE_BITS = function(this1) {
	return this1.BLUE_BITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ALPHA_BITS = function(this1) {
	return this1.ALPHA_BITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_BITS = function(this1) {
	return this1.DEPTH_BITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_BITS = function(this1) {
	return this1.STENCIL_BITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_POLYGON_OFFSET_UNITS = function(this1) {
	return this1.POLYGON_OFFSET_UNITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_POLYGON_OFFSET_FACTOR = function(this1) {
	return this1.POLYGON_OFFSET_FACTOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_BINDING_2D = function(this1) {
	return this1.TEXTURE_BINDING_2D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLE_BUFFERS = function(this1) {
	return this1.SAMPLE_BUFFERS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLES = function(this1) {
	return this1.SAMPLES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLE_COVERAGE_VALUE = function(this1) {
	return this1.SAMPLE_COVERAGE_VALUE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLE_COVERAGE_INVERT = function(this1) {
	return this1.SAMPLE_COVERAGE_INVERT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COMPRESSED_TEXTURE_FORMATS = function(this1) {
	return this1.COMPRESSED_TEXTURE_FORMATS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DONT_CARE = function(this1) {
	return this1.DONT_CARE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FASTEST = function(this1) {
	return this1.FASTEST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NICEST = function(this1) {
	return this1.NICEST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_GENERATE_MIPMAP_HINT = function(this1) {
	return this1.GENERATE_MIPMAP_HINT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BYTE = function(this1) {
	return this1.BYTE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_BYTE = function(this1) {
	return this1.UNSIGNED_BYTE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SHORT = function(this1) {
	return this1.SHORT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_SHORT = function(this1) {
	return this1.UNSIGNED_SHORT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT = function(this1) {
	return this1.INT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT = function(this1) {
	return this1.UNSIGNED_INT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT = function(this1) {
	return this1.FLOAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_COMPONENT = function(this1) {
	return this1.DEPTH_COMPONENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ALPHA = function(this1) {
	return this1.ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB = function(this1) {
	return this1.RGB;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA = function(this1) {
	return this1.RGBA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LUMINANCE = function(this1) {
	return this1.LUMINANCE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LUMINANCE_ALPHA = function(this1) {
	return this1.LUMINANCE_ALPHA;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_SHORT_4_4_4_4 = function(this1) {
	return this1.UNSIGNED_SHORT_4_4_4_4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_SHORT_5_5_5_1 = function(this1) {
	return this1.UNSIGNED_SHORT_5_5_5_1;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_SHORT_5_6_5 = function(this1) {
	return this1.UNSIGNED_SHORT_5_6_5;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAGMENT_SHADER = function(this1) {
	return this1.FRAGMENT_SHADER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_SHADER = function(this1) {
	return this1.VERTEX_SHADER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VERTEX_ATTRIBS = function(this1) {
	return this1.MAX_VERTEX_ATTRIBS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VERTEX_UNIFORM_VECTORS = function(this1) {
	return this1.MAX_VERTEX_UNIFORM_VECTORS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VARYING_VECTORS = function(this1) {
	return this1.MAX_VARYING_VECTORS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_COMBINED_TEXTURE_IMAGE_UNITS = function(this1) {
	return this1.MAX_COMBINED_TEXTURE_IMAGE_UNITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VERTEX_TEXTURE_IMAGE_UNITS = function(this1) {
	return this1.MAX_VERTEX_TEXTURE_IMAGE_UNITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_TEXTURE_IMAGE_UNITS = function(this1) {
	return this1.MAX_TEXTURE_IMAGE_UNITS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_FRAGMENT_UNIFORM_VECTORS = function(this1) {
	return this1.MAX_FRAGMENT_UNIFORM_VECTORS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SHADER_TYPE = function(this1) {
	return this1.SHADER_TYPE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DELETE_STATUS = function(this1) {
	return this1.DELETE_STATUS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINK_STATUS = function(this1) {
	return this1.LINK_STATUS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VALIDATE_STATUS = function(this1) {
	return this1.VALIDATE_STATUS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ATTACHED_SHADERS = function(this1) {
	return this1.ATTACHED_SHADERS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ACTIVE_UNIFORMS = function(this1) {
	return this1.ACTIVE_UNIFORMS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ACTIVE_ATTRIBUTES = function(this1) {
	return this1.ACTIVE_ATTRIBUTES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SHADING_LANGUAGE_VERSION = function(this1) {
	return this1.SHADING_LANGUAGE_VERSION;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CURRENT_PROGRAM = function(this1) {
	return this1.CURRENT_PROGRAM;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NEVER = function(this1) {
	return this1.NEVER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LESS = function(this1) {
	return this1.LESS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_EQUAL = function(this1) {
	return this1.EQUAL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LEQUAL = function(this1) {
	return this1.LEQUAL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_GREATER = function(this1) {
	return this1.GREATER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NOTEQUAL = function(this1) {
	return this1.NOTEQUAL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_GEQUAL = function(this1) {
	return this1.GEQUAL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ALWAYS = function(this1) {
	return this1.ALWAYS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_KEEP = function(this1) {
	return this1.KEEP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_REPLACE = function(this1) {
	return this1.REPLACE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INCR = function(this1) {
	return this1.INCR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DECR = function(this1) {
	return this1.DECR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INVERT = function(this1) {
	return this1.INVERT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INCR_WRAP = function(this1) {
	return this1.INCR_WRAP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DECR_WRAP = function(this1) {
	return this1.DECR_WRAP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VENDOR = function(this1) {
	return this1.VENDOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERER = function(this1) {
	return this1.RENDERER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERSION = function(this1) {
	return this1.VERSION;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NEAREST = function(this1) {
	return this1.NEAREST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINEAR = function(this1) {
	return this1.LINEAR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NEAREST_MIPMAP_NEAREST = function(this1) {
	return this1.NEAREST_MIPMAP_NEAREST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINEAR_MIPMAP_NEAREST = function(this1) {
	return this1.LINEAR_MIPMAP_NEAREST;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NEAREST_MIPMAP_LINEAR = function(this1) {
	return this1.NEAREST_MIPMAP_LINEAR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LINEAR_MIPMAP_LINEAR = function(this1) {
	return this1.LINEAR_MIPMAP_LINEAR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_MAG_FILTER = function(this1) {
	return this1.TEXTURE_MAG_FILTER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_MIN_FILTER = function(this1) {
	return this1.TEXTURE_MIN_FILTER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_WRAP_S = function(this1) {
	return this1.TEXTURE_WRAP_S;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_WRAP_T = function(this1) {
	return this1.TEXTURE_WRAP_T;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_2D = function(this1) {
	return this1.TEXTURE_2D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE = function(this1) {
	return this1.TEXTURE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_CUBE_MAP = function(this1) {
	return this1.TEXTURE_CUBE_MAP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_BINDING_CUBE_MAP = function(this1) {
	return this1.TEXTURE_BINDING_CUBE_MAP;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_CUBE_MAP_POSITIVE_X = function(this1) {
	return this1.TEXTURE_CUBE_MAP_POSITIVE_X;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_CUBE_MAP_NEGATIVE_X = function(this1) {
	return this1.TEXTURE_CUBE_MAP_NEGATIVE_X;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_CUBE_MAP_POSITIVE_Y = function(this1) {
	return this1.TEXTURE_CUBE_MAP_POSITIVE_Y;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_CUBE_MAP_NEGATIVE_Y = function(this1) {
	return this1.TEXTURE_CUBE_MAP_NEGATIVE_Y;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_CUBE_MAP_POSITIVE_Z = function(this1) {
	return this1.TEXTURE_CUBE_MAP_POSITIVE_Z;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_CUBE_MAP_NEGATIVE_Z = function(this1) {
	return this1.TEXTURE_CUBE_MAP_NEGATIVE_Z;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_CUBE_MAP_TEXTURE_SIZE = function(this1) {
	return this1.MAX_CUBE_MAP_TEXTURE_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE0 = function(this1) {
	return this1.TEXTURE0;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE1 = function(this1) {
	return this1.TEXTURE1;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE2 = function(this1) {
	return this1.TEXTURE2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE3 = function(this1) {
	return this1.TEXTURE3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE4 = function(this1) {
	return this1.TEXTURE4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE5 = function(this1) {
	return this1.TEXTURE5;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE6 = function(this1) {
	return this1.TEXTURE6;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE7 = function(this1) {
	return this1.TEXTURE7;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE8 = function(this1) {
	return this1.TEXTURE8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE9 = function(this1) {
	return this1.TEXTURE9;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE10 = function(this1) {
	return this1.TEXTURE10;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE11 = function(this1) {
	return this1.TEXTURE11;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE12 = function(this1) {
	return this1.TEXTURE12;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE13 = function(this1) {
	return this1.TEXTURE13;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE14 = function(this1) {
	return this1.TEXTURE14;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE15 = function(this1) {
	return this1.TEXTURE15;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE16 = function(this1) {
	return this1.TEXTURE16;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE17 = function(this1) {
	return this1.TEXTURE17;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE18 = function(this1) {
	return this1.TEXTURE18;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE19 = function(this1) {
	return this1.TEXTURE19;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE20 = function(this1) {
	return this1.TEXTURE20;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE21 = function(this1) {
	return this1.TEXTURE21;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE22 = function(this1) {
	return this1.TEXTURE22;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE23 = function(this1) {
	return this1.TEXTURE23;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE24 = function(this1) {
	return this1.TEXTURE24;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE25 = function(this1) {
	return this1.TEXTURE25;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE26 = function(this1) {
	return this1.TEXTURE26;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE27 = function(this1) {
	return this1.TEXTURE27;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE28 = function(this1) {
	return this1.TEXTURE28;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE29 = function(this1) {
	return this1.TEXTURE29;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE30 = function(this1) {
	return this1.TEXTURE30;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE31 = function(this1) {
	return this1.TEXTURE31;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ACTIVE_TEXTURE = function(this1) {
	return this1.ACTIVE_TEXTURE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_REPEAT = function(this1) {
	return this1.REPEAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CLAMP_TO_EDGE = function(this1) {
	return this1.CLAMP_TO_EDGE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MIRRORED_REPEAT = function(this1) {
	return this1.MIRRORED_REPEAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_VEC2 = function(this1) {
	return this1.FLOAT_VEC2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_VEC3 = function(this1) {
	return this1.FLOAT_VEC3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_VEC4 = function(this1) {
	return this1.FLOAT_VEC4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_VEC2 = function(this1) {
	return this1.INT_VEC2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_VEC3 = function(this1) {
	return this1.INT_VEC3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_VEC4 = function(this1) {
	return this1.INT_VEC4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BOOL = function(this1) {
	return this1.BOOL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BOOL_VEC2 = function(this1) {
	return this1.BOOL_VEC2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BOOL_VEC3 = function(this1) {
	return this1.BOOL_VEC3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BOOL_VEC4 = function(this1) {
	return this1.BOOL_VEC4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT2 = function(this1) {
	return this1.FLOAT_MAT2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT3 = function(this1) {
	return this1.FLOAT_MAT3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT4 = function(this1) {
	return this1.FLOAT_MAT4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_2D = function(this1) {
	return this1.SAMPLER_2D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_CUBE = function(this1) {
	return this1.SAMPLER_CUBE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_ENABLED = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_ENABLED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_SIZE = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_STRIDE = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_STRIDE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_TYPE = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_TYPE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_NORMALIZED = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_NORMALIZED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_POINTER = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_POINTER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_PROGRAM_POINT_SIZE = function(this1) {
	return this1.VERTEX_PROGRAM_POINT_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_POINT_SPRITE = function(this1) {
	return this1.POINT_SPRITE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COMPILE_STATUS = function(this1) {
	return this1.COMPILE_STATUS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LOW_FLOAT = function(this1) {
	return this1.LOW_FLOAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MEDIUM_FLOAT = function(this1) {
	return this1.MEDIUM_FLOAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_HIGH_FLOAT = function(this1) {
	return this1.HIGH_FLOAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_LOW_INT = function(this1) {
	return this1.LOW_INT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MEDIUM_INT = function(this1) {
	return this1.MEDIUM_INT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_HIGH_INT = function(this1) {
	return this1.HIGH_INT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER = function(this1) {
	return this1.FRAMEBUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER = function(this1) {
	return this1.RENDERBUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA4 = function(this1) {
	return this1.RGBA4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB5_A1 = function(this1) {
	return this1.RGB5_A1;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB565 = function(this1) {
	return this1.RGB565;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_COMPONENT16 = function(this1) {
	return this1.DEPTH_COMPONENT16;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_INDEX = function(this1) {
	return this1.STENCIL_INDEX;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_INDEX8 = function(this1) {
	return this1.STENCIL_INDEX8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_STENCIL = function(this1) {
	return this1.DEPTH_STENCIL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_WIDTH = function(this1) {
	return this1.RENDERBUFFER_WIDTH;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_HEIGHT = function(this1) {
	return this1.RENDERBUFFER_HEIGHT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_INTERNAL_FORMAT = function(this1) {
	return this1.RENDERBUFFER_INTERNAL_FORMAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_RED_SIZE = function(this1) {
	return this1.RENDERBUFFER_RED_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_GREEN_SIZE = function(this1) {
	return this1.RENDERBUFFER_GREEN_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_BLUE_SIZE = function(this1) {
	return this1.RENDERBUFFER_BLUE_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_ALPHA_SIZE = function(this1) {
	return this1.RENDERBUFFER_ALPHA_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_DEPTH_SIZE = function(this1) {
	return this1.RENDERBUFFER_DEPTH_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_STENCIL_SIZE = function(this1) {
	return this1.RENDERBUFFER_STENCIL_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT0 = function(this1) {
	return this1.COLOR_ATTACHMENT0;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_ATTACHMENT = function(this1) {
	return this1.DEPTH_ATTACHMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL_ATTACHMENT = function(this1) {
	return this1.STENCIL_ATTACHMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_STENCIL_ATTACHMENT = function(this1) {
	return this1.DEPTH_STENCIL_ATTACHMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_NONE = function(this1) {
	return this1.NONE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_COMPLETE = function(this1) {
	return this1.FRAMEBUFFER_COMPLETE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_DIMENSIONS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_UNSUPPORTED = function(this1) {
	return this1.FRAMEBUFFER_UNSUPPORTED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_BINDING = function(this1) {
	return this1.FRAMEBUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_BINDING = function(this1) {
	return this1.RENDERBUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_RENDERBUFFER_SIZE = function(this1) {
	return this1.MAX_RENDERBUFFER_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INVALID_FRAMEBUFFER_OPERATION = function(this1) {
	return this1.INVALID_FRAMEBUFFER_OPERATION;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_FLIP_Y_WEBGL = function(this1) {
	return this1.UNPACK_FLIP_Y_WEBGL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_PREMULTIPLY_ALPHA_WEBGL = function(this1) {
	return this1.UNPACK_PREMULTIPLY_ALPHA_WEBGL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CONTEXT_LOST_WEBGL = function(this1) {
	return this1.CONTEXT_LOST_WEBGL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_COLORSPACE_CONVERSION_WEBGL = function(this1) {
	return this1.UNPACK_COLORSPACE_CONVERSION_WEBGL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_BROWSER_DEFAULT_WEBGL = function(this1) {
	return this1.BROWSER_DEFAULT_WEBGL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_type = function(this1) {
	return this1.type;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_version = function(this1) {
	return this1.version;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_READ_BUFFER = function(this1) {
	return this1.READ_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_ROW_LENGTH = function(this1) {
	return this1.UNPACK_ROW_LENGTH;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_SKIP_ROWS = function(this1) {
	return this1.UNPACK_SKIP_ROWS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_SKIP_PIXELS = function(this1) {
	return this1.UNPACK_SKIP_PIXELS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PACK_ROW_LENGTH = function(this1) {
	return this1.PACK_ROW_LENGTH;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PACK_SKIP_ROWS = function(this1) {
	return this1.PACK_SKIP_ROWS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PACK_SKIP_PIXELS = function(this1) {
	return this1.PACK_SKIP_PIXELS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_BINDING_3D = function(this1) {
	return this1.TEXTURE_BINDING_3D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_SKIP_IMAGES = function(this1) {
	return this1.UNPACK_SKIP_IMAGES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNPACK_IMAGE_HEIGHT = function(this1) {
	return this1.UNPACK_IMAGE_HEIGHT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_3D_TEXTURE_SIZE = function(this1) {
	return this1.MAX_3D_TEXTURE_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_ELEMENTS_VERTICES = function(this1) {
	return this1.MAX_ELEMENTS_VERTICES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_ELEMENTS_INDICES = function(this1) {
	return this1.MAX_ELEMENTS_INDICES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_TEXTURE_LOD_BIAS = function(this1) {
	return this1.MAX_TEXTURE_LOD_BIAS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_FRAGMENT_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_FRAGMENT_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VERTEX_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_VERTEX_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_ARRAY_TEXTURE_LAYERS = function(this1) {
	return this1.MAX_ARRAY_TEXTURE_LAYERS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MIN_PROGRAM_TEXEL_OFFSET = function(this1) {
	return this1.MIN_PROGRAM_TEXEL_OFFSET;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_PROGRAM_TEXEL_OFFSET = function(this1) {
	return this1.MAX_PROGRAM_TEXEL_OFFSET;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VARYING_COMPONENTS = function(this1) {
	return this1.MAX_VARYING_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAGMENT_SHADER_DERIVATIVE_HINT = function(this1) {
	return this1.FRAGMENT_SHADER_DERIVATIVE_HINT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RASTERIZER_DISCARD = function(this1) {
	return this1.RASTERIZER_DISCARD;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ARRAY_BINDING = function(this1) {
	return this1.VERTEX_ARRAY_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VERTEX_OUTPUT_COMPONENTS = function(this1) {
	return this1.MAX_VERTEX_OUTPUT_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_FRAGMENT_INPUT_COMPONENTS = function(this1) {
	return this1.MAX_FRAGMENT_INPUT_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_SERVER_WAIT_TIMEOUT = function(this1) {
	return this1.MAX_SERVER_WAIT_TIMEOUT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_ELEMENT_INDEX = function(this1) {
	return this1.MAX_ELEMENT_INDEX;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RED = function(this1) {
	return this1.RED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB8 = function(this1) {
	return this1.RGB8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA8 = function(this1) {
	return this1.RGBA8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB10_A2 = function(this1) {
	return this1.RGB10_A2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_3D = function(this1) {
	return this1.TEXTURE_3D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_WRAP_R = function(this1) {
	return this1.TEXTURE_WRAP_R;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_MIN_LOD = function(this1) {
	return this1.TEXTURE_MIN_LOD;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_MAX_LOD = function(this1) {
	return this1.TEXTURE_MAX_LOD;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_BASE_LEVEL = function(this1) {
	return this1.TEXTURE_BASE_LEVEL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_MAX_LEVEL = function(this1) {
	return this1.TEXTURE_MAX_LEVEL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_COMPARE_MODE = function(this1) {
	return this1.TEXTURE_COMPARE_MODE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_COMPARE_FUNC = function(this1) {
	return this1.TEXTURE_COMPARE_FUNC;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SRGB = function(this1) {
	return this1.SRGB;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SRGB8 = function(this1) {
	return this1.SRGB8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SRGB8_ALPHA8 = function(this1) {
	return this1.SRGB8_ALPHA8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COMPARE_REF_TO_TEXTURE = function(this1) {
	return this1.COMPARE_REF_TO_TEXTURE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA32F = function(this1) {
	return this1.RGBA32F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB32F = function(this1) {
	return this1.RGB32F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA16F = function(this1) {
	return this1.RGBA16F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB16F = function(this1) {
	return this1.RGB16F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_2D_ARRAY = function(this1) {
	return this1.TEXTURE_2D_ARRAY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_BINDING_2D_ARRAY = function(this1) {
	return this1.TEXTURE_BINDING_2D_ARRAY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R11F_G11F_B10F = function(this1) {
	return this1.R11F_G11F_B10F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB9_E5 = function(this1) {
	return this1.RGB9_E5;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA32UI = function(this1) {
	return this1.RGBA32UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB32UI = function(this1) {
	return this1.RGB32UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA16UI = function(this1) {
	return this1.RGBA16UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB16UI = function(this1) {
	return this1.RGB16UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA8UI = function(this1) {
	return this1.RGBA8UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB8UI = function(this1) {
	return this1.RGB8UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA32I = function(this1) {
	return this1.RGBA32I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB32I = function(this1) {
	return this1.RGB32I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA16I = function(this1) {
	return this1.RGBA16I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB16I = function(this1) {
	return this1.RGB16I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA8I = function(this1) {
	return this1.RGBA8I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB8I = function(this1) {
	return this1.RGB8I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RED_INTEGER = function(this1) {
	return this1.RED_INTEGER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB_INTEGER = function(this1) {
	return this1.RGB_INTEGER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA_INTEGER = function(this1) {
	return this1.RGBA_INTEGER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R8 = function(this1) {
	return this1.R8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG8 = function(this1) {
	return this1.RG8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R16F = function(this1) {
	return this1.R16F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R32F = function(this1) {
	return this1.R32F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG16F = function(this1) {
	return this1.RG16F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG32F = function(this1) {
	return this1.RG32F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R8I = function(this1) {
	return this1.R8I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R8UI = function(this1) {
	return this1.R8UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R16I = function(this1) {
	return this1.R16I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R16UI = function(this1) {
	return this1.R16UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R32I = function(this1) {
	return this1.R32I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R32UI = function(this1) {
	return this1.R32UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG8I = function(this1) {
	return this1.RG8I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG8UI = function(this1) {
	return this1.RG8UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG16I = function(this1) {
	return this1.RG16I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG16UI = function(this1) {
	return this1.RG16UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG32I = function(this1) {
	return this1.RG32I;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG32UI = function(this1) {
	return this1.RG32UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_R8_SNORM = function(this1) {
	return this1.R8_SNORM;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG8_SNORM = function(this1) {
	return this1.RG8_SNORM;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB8_SNORM = function(this1) {
	return this1.RGB8_SNORM;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGBA8_SNORM = function(this1) {
	return this1.RGBA8_SNORM;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RGB10_A2UI = function(this1) {
	return this1.RGB10_A2UI;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_IMMUTABLE_FORMAT = function(this1) {
	return this1.TEXTURE_IMMUTABLE_FORMAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TEXTURE_IMMUTABLE_LEVELS = function(this1) {
	return this1.TEXTURE_IMMUTABLE_LEVELS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_2_10_10_10_REV = function(this1) {
	return this1.UNSIGNED_INT_2_10_10_10_REV;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_10F_11F_11F_REV = function(this1) {
	return this1.UNSIGNED_INT_10F_11F_11F_REV;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_5_9_9_9_REV = function(this1) {
	return this1.UNSIGNED_INT_5_9_9_9_REV;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_32_UNSIGNED_INT_24_8_REV = function(this1) {
	return this1.FLOAT_32_UNSIGNED_INT_24_8_REV;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_24_8 = function(this1) {
	return this1.UNSIGNED_INT_24_8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_HALF_FLOAT = function(this1) {
	return this1.HALF_FLOAT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG = function(this1) {
	return this1.RG;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RG_INTEGER = function(this1) {
	return this1.RG_INTEGER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_2_10_10_10_REV = function(this1) {
	return this1.INT_2_10_10_10_REV;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CURRENT_QUERY = function(this1) {
	return this1.CURRENT_QUERY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_QUERY_RESULT = function(this1) {
	return this1.QUERY_RESULT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_QUERY_RESULT_AVAILABLE = function(this1) {
	return this1.QUERY_RESULT_AVAILABLE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ANY_SAMPLES_PASSED = function(this1) {
	return this1.ANY_SAMPLES_PASSED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ANY_SAMPLES_PASSED_CONSERVATIVE = function(this1) {
	return this1.ANY_SAMPLES_PASSED_CONSERVATIVE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_DRAW_BUFFERS = function(this1) {
	return this1.MAX_DRAW_BUFFERS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER0 = function(this1) {
	return this1.DRAW_BUFFER0;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER1 = function(this1) {
	return this1.DRAW_BUFFER1;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER2 = function(this1) {
	return this1.DRAW_BUFFER2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER3 = function(this1) {
	return this1.DRAW_BUFFER3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER4 = function(this1) {
	return this1.DRAW_BUFFER4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER5 = function(this1) {
	return this1.DRAW_BUFFER5;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER6 = function(this1) {
	return this1.DRAW_BUFFER6;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER7 = function(this1) {
	return this1.DRAW_BUFFER7;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER8 = function(this1) {
	return this1.DRAW_BUFFER8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER9 = function(this1) {
	return this1.DRAW_BUFFER9;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER10 = function(this1) {
	return this1.DRAW_BUFFER10;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER11 = function(this1) {
	return this1.DRAW_BUFFER11;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER12 = function(this1) {
	return this1.DRAW_BUFFER12;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER13 = function(this1) {
	return this1.DRAW_BUFFER13;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER14 = function(this1) {
	return this1.DRAW_BUFFER14;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_BUFFER15 = function(this1) {
	return this1.DRAW_BUFFER15;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_COLOR_ATTACHMENTS = function(this1) {
	return this1.MAX_COLOR_ATTACHMENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT1 = function(this1) {
	return this1.COLOR_ATTACHMENT1;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT2 = function(this1) {
	return this1.COLOR_ATTACHMENT2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT3 = function(this1) {
	return this1.COLOR_ATTACHMENT3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT4 = function(this1) {
	return this1.COLOR_ATTACHMENT4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT5 = function(this1) {
	return this1.COLOR_ATTACHMENT5;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT6 = function(this1) {
	return this1.COLOR_ATTACHMENT6;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT7 = function(this1) {
	return this1.COLOR_ATTACHMENT7;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT8 = function(this1) {
	return this1.COLOR_ATTACHMENT8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT9 = function(this1) {
	return this1.COLOR_ATTACHMENT9;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT10 = function(this1) {
	return this1.COLOR_ATTACHMENT10;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT11 = function(this1) {
	return this1.COLOR_ATTACHMENT11;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT12 = function(this1) {
	return this1.COLOR_ATTACHMENT12;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT13 = function(this1) {
	return this1.COLOR_ATTACHMENT13;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT14 = function(this1) {
	return this1.COLOR_ATTACHMENT14;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR_ATTACHMENT15 = function(this1) {
	return this1.COLOR_ATTACHMENT15;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_3D = function(this1) {
	return this1.SAMPLER_3D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_2D_SHADOW = function(this1) {
	return this1.SAMPLER_2D_SHADOW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_2D_ARRAY = function(this1) {
	return this1.SAMPLER_2D_ARRAY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_2D_ARRAY_SHADOW = function(this1) {
	return this1.SAMPLER_2D_ARRAY_SHADOW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_CUBE_SHADOW = function(this1) {
	return this1.SAMPLER_CUBE_SHADOW;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_SAMPLER_2D = function(this1) {
	return this1.INT_SAMPLER_2D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_SAMPLER_3D = function(this1) {
	return this1.INT_SAMPLER_3D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_SAMPLER_CUBE = function(this1) {
	return this1.INT_SAMPLER_CUBE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INT_SAMPLER_2D_ARRAY = function(this1) {
	return this1.INT_SAMPLER_2D_ARRAY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_2D = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_2D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_3D = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_3D;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_CUBE = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_CUBE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_2D_ARRAY = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_2D_ARRAY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_SAMPLES = function(this1) {
	return this1.MAX_SAMPLES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SAMPLER_BINDING = function(this1) {
	return this1.SAMPLER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PIXEL_PACK_BUFFER = function(this1) {
	return this1.PIXEL_PACK_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PIXEL_UNPACK_BUFFER = function(this1) {
	return this1.PIXEL_UNPACK_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PIXEL_PACK_BUFFER_BINDING = function(this1) {
	return this1.PIXEL_PACK_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_PIXEL_UNPACK_BUFFER_BINDING = function(this1) {
	return this1.PIXEL_UNPACK_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COPY_READ_BUFFER = function(this1) {
	return this1.COPY_READ_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COPY_WRITE_BUFFER = function(this1) {
	return this1.COPY_WRITE_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COPY_READ_BUFFER_BINDING = function(this1) {
	return this1.COPY_READ_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COPY_WRITE_BUFFER_BINDING = function(this1) {
	return this1.COPY_WRITE_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT2x3 = function(this1) {
	return this1.FLOAT_MAT2x3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT2x4 = function(this1) {
	return this1.FLOAT_MAT2x4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT3x2 = function(this1) {
	return this1.FLOAT_MAT3x2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT3x4 = function(this1) {
	return this1.FLOAT_MAT3x4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT4x2 = function(this1) {
	return this1.FLOAT_MAT4x2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FLOAT_MAT4x3 = function(this1) {
	return this1.FLOAT_MAT4x3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_VEC2 = function(this1) {
	return this1.UNSIGNED_INT_VEC2;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_VEC3 = function(this1) {
	return this1.UNSIGNED_INT_VEC3;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_INT_VEC4 = function(this1) {
	return this1.UNSIGNED_INT_VEC4;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNED_NORMALIZED = function(this1) {
	return this1.UNSIGNED_NORMALIZED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SIGNED_NORMALIZED = function(this1) {
	return this1.SIGNED_NORMALIZED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_INTEGER = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_INTEGER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_DIVISOR = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_DIVISOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_MODE = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_MODE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = function(this1) {
	return this1.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_VARYINGS = function(this1) {
	return this1.TRANSFORM_FEEDBACK_VARYINGS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_START = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_START;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_SIZE = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = function(this1) {
	return this1.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = function(this1) {
	return this1.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = function(this1) {
	return this1.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INTERLEAVED_ATTRIBS = function(this1) {
	return this1.INTERLEAVED_ATTRIBS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SEPARATE_ATTRIBS = function(this1) {
	return this1.SEPARATE_ATTRIBS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_BINDING = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK = function(this1) {
	return this1.TRANSFORM_FEEDBACK;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_PAUSED = function(this1) {
	return this1.TRANSFORM_FEEDBACK_PAUSED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_ACTIVE = function(this1) {
	return this1.TRANSFORM_FEEDBACK_ACTIVE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TRANSFORM_FEEDBACK_BINDING = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_RED_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_RED_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_DEFAULT = function(this1) {
	return this1.FRAMEBUFFER_DEFAULT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH24_STENCIL8 = function(this1) {
	return this1.DEPTH24_STENCIL8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_FRAMEBUFFER_BINDING = function(this1) {
	return this1.DRAW_FRAMEBUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_READ_FRAMEBUFFER = function(this1) {
	return this1.READ_FRAMEBUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DRAW_FRAMEBUFFER = function(this1) {
	return this1.DRAW_FRAMEBUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_READ_FRAMEBUFFER_BINDING = function(this1) {
	return this1.READ_FRAMEBUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_RENDERBUFFER_SAMPLES = function(this1) {
	return this1.RENDERBUFFER_SAMPLES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BUFFER = function(this1) {
	return this1.UNIFORM_BUFFER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BUFFER_BINDING = function(this1) {
	return this1.UNIFORM_BUFFER_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BUFFER_START = function(this1) {
	return this1.UNIFORM_BUFFER_START;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BUFFER_SIZE = function(this1) {
	return this1.UNIFORM_BUFFER_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_VERTEX_UNIFORM_BLOCKS = function(this1) {
	return this1.MAX_VERTEX_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_FRAGMENT_UNIFORM_BLOCKS = function(this1) {
	return this1.MAX_FRAGMENT_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_COMBINED_UNIFORM_BLOCKS = function(this1) {
	return this1.MAX_COMBINED_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_UNIFORM_BUFFER_BINDINGS = function(this1) {
	return this1.MAX_UNIFORM_BUFFER_BINDINGS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_UNIFORM_BLOCK_SIZE = function(this1) {
	return this1.MAX_UNIFORM_BLOCK_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BUFFER_OFFSET_ALIGNMENT = function(this1) {
	return this1.UNIFORM_BUFFER_OFFSET_ALIGNMENT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ACTIVE_UNIFORM_BLOCKS = function(this1) {
	return this1.ACTIVE_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_TYPE = function(this1) {
	return this1.UNIFORM_TYPE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_SIZE = function(this1) {
	return this1.UNIFORM_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BLOCK_INDEX = function(this1) {
	return this1.UNIFORM_BLOCK_INDEX;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_OFFSET = function(this1) {
	return this1.UNIFORM_OFFSET;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_ARRAY_STRIDE = function(this1) {
	return this1.UNIFORM_ARRAY_STRIDE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_MATRIX_STRIDE = function(this1) {
	return this1.UNIFORM_MATRIX_STRIDE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_IS_ROW_MAJOR = function(this1) {
	return this1.UNIFORM_IS_ROW_MAJOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BLOCK_BINDING = function(this1) {
	return this1.UNIFORM_BLOCK_BINDING;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BLOCK_DATA_SIZE = function(this1) {
	return this1.UNIFORM_BLOCK_DATA_SIZE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BLOCK_ACTIVE_UNIFORMS = function(this1) {
	return this1.UNIFORM_BLOCK_ACTIVE_UNIFORMS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = function(this1) {
	return this1.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = function(this1) {
	return this1.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = function(this1) {
	return this1.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_OBJECT_TYPE = function(this1) {
	return this1.OBJECT_TYPE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SYNC_CONDITION = function(this1) {
	return this1.SYNC_CONDITION;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SYNC_STATUS = function(this1) {
	return this1.SYNC_STATUS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SYNC_FLAGS = function(this1) {
	return this1.SYNC_FLAGS;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SYNC_FENCE = function(this1) {
	return this1.SYNC_FENCE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SYNC_GPU_COMMANDS_COMPLETE = function(this1) {
	return this1.SYNC_GPU_COMMANDS_COMPLETE;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_UNSIGNALED = function(this1) {
	return this1.UNSIGNALED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SIGNALED = function(this1) {
	return this1.SIGNALED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_ALREADY_SIGNALED = function(this1) {
	return this1.ALREADY_SIGNALED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TIMEOUT_EXPIRED = function(this1) {
	return this1.TIMEOUT_EXPIRED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_CONDITION_SATISFIED = function(this1) {
	return this1.CONDITION_SATISFIED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_WAIT_FAILED = function(this1) {
	return this1.WAIT_FAILED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_SYNC_FLUSH_COMMANDS_BIT = function(this1) {
	return this1.SYNC_FLUSH_COMMANDS_BIT;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_COLOR = function(this1) {
	return this1.COLOR;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH = function(this1) {
	return this1.DEPTH;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STENCIL = function(this1) {
	return this1.STENCIL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MIN = function(this1) {
	return this1.MIN;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX = function(this1) {
	return this1.MAX;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_COMPONENT24 = function(this1) {
	return this1.DEPTH_COMPONENT24;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STREAM_READ = function(this1) {
	return this1.STREAM_READ;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STREAM_COPY = function(this1) {
	return this1.STREAM_COPY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STATIC_READ = function(this1) {
	return this1.STATIC_READ;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_STATIC_COPY = function(this1) {
	return this1.STATIC_COPY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DYNAMIC_READ = function(this1) {
	return this1.DYNAMIC_READ;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DYNAMIC_COPY = function(this1) {
	return this1.DYNAMIC_COPY;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH_COMPONENT32F = function(this1) {
	return this1.DEPTH_COMPONENT32F;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_DEPTH32F_STENCIL8 = function(this1) {
	return this1.DEPTH32F_STENCIL8;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_INVALID_INDEX = function(this1) {
	return this1.INVALID_INDEX;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_TIMEOUT_IGNORED = function(this1) {
	return this1.TIMEOUT_IGNORED;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.get_MAX_CLIENT_WAIT_TIMEOUT_WEBGL = function(this1) {
	return this1.MAX_CLIENT_WAIT_TIMEOUT_WEBGL;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.activeTexture = function(this1,texture) {
	this1.activeTexture(texture);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.attachShader = function(this1,program,shader) {
	this1.attachShader(program,shader);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.beginQuery = function(this1,target,query) {
	this1.beginQuery(target,query);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.beginTransformFeedback = function(this1,primitiveNode) {
	this1.beginTransformFeedback(primitiveNode);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindAttribLocation = function(this1,program,index,name) {
	this1.bindAttribLocation(program,index,name);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindBuffer = function(this1,target,buffer) {
	this1.bindBuffer(target,buffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindBufferBase = function(this1,target,index,buffer) {
	this1.bindBufferBase(target,index,buffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindBufferRange = function(this1,target,index,buffer,offset,size) {
	this1.bindBufferRange(target,index,buffer,offset,size);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindFramebuffer = function(this1,target,framebuffer) {
	this1.bindFramebuffer(target,framebuffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindRenderbuffer = function(this1,target,renderbuffer) {
	this1.bindRenderbuffer(target,renderbuffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindSampler = function(this1,unit,sampler) {
	this1.bindSampler(unit,sampler);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindTexture = function(this1,target,texture) {
	this1.bindTexture(target,texture);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindTransformFeedback = function(this1,target,transformFeedback) {
	this1.bindTransformFeedback(target,transformFeedback);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bindVertexArray = function(this1,vertexArray) {
	this1.bindVertexArray(vertexArray);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.blendColor = function(this1,red,green,blue,alpha) {
	this1.blendColor(red,green,blue,alpha);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.blendEquation = function(this1,mode) {
	this1.blendEquation(mode);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.blendEquationSeparate = function(this1,modeRGB,modeAlpha) {
	this1.blendEquationSeparate(modeRGB,modeAlpha);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.blendFunc = function(this1,sfactor,dfactor) {
	this1.blendFunc(sfactor,dfactor);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.blendFuncSeparate = function(this1,srcRGB,dstRGB,srcAlpha,dstAlpha) {
	this1.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.blitFramebuffer = function(this1,srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter) {
	this1.blitFramebuffer(srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bufferData = function(this1,target,size,data,usage) {
	this1.bufferData(target,size,data,usage);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.bufferSubData = function(this1,target,offset,size,data) {
	this1.bufferSubData(target,offset,size,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.checkFramebufferStatus = function(this1,target) {
	return this1.checkFramebufferStatus(target);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clear = function(this1,mask) {
	this1.clear(mask);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clearBufferfi = function(this1,buffer,drawbuffer,depth,stencil) {
	this1.clearBufferfi(buffer,drawbuffer,depth,stencil);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clearBufferfv = function(this1,buffer,drawbuffer,value) {
	this1.clearBufferfv(buffer,drawbuffer,value);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clearBufferiv = function(this1,buffer,drawbuffer,value) {
	this1.clearBufferiv(buffer,drawbuffer,value);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clearBufferuiv = function(this1,buffer,drawbuffer,value) {
	this1.clearBufferuiv(buffer,drawbuffer,value);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clearColor = function(this1,red,green,blue,alpha) {
	this1.clearColor(red,green,blue,alpha);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clearDepthf = function(this1,depth) {
	this1.clearDepthf(depth);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clearStencil = function(this1,s) {
	this1.clearStencil(s);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.clientWaitSync = function(this1,sync,flags,timeout) {
	return this1.clientWaitSync(sync,flags,timeout);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.colorMask = function(this1,red,green,blue,alpha) {
	this1.colorMask(red,green,blue,alpha);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.compileShader = function(this1,shader) {
	this1.compileShader(shader);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.compressedTexImage2D = function(this1,target,level,internalformat,width,height,border,imageSize,data) {
	this1.compressedTexImage2D(target,level,internalformat,width,height,border,imageSize,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.compressedTexImage3D = function(this1,target,level,internalformat,width,height,depth,border,imageSize,data) {
	this1.compressedTexImage3D(target,level,internalformat,width,height,depth,border,imageSize,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.compressedTexSubImage2D = function(this1,target,level,xoffset,yoffset,width,height,format,imageSize,data) {
	this1.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.compressedTexSubImage3D = function(this1,target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data) {
	this1.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.copyBufferSubData = function(this1,readTarget,writeTarget,readOffset,writeOffset,size) {
	this1.copyBufferSubData(readTarget,writeTarget,readOffset,writeOffset,size);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.copyTexImage2D = function(this1,target,level,internalformat,x,y,width,height,border) {
	this1.copyTexImage2D(target,level,internalformat,x,y,width,height,border);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.copyTexSubImage2D = function(this1,target,level,xoffset,yoffset,x,y,width,height) {
	this1.copyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.copyTexSubImage3D = function(this1,target,level,xoffset,yoffset,zoffset,x,y,width,height) {
	this1.copyTexSubImage3D(target,level,xoffset,yoffset,zoffset,x,y,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createBuffer = function(this1) {
	return this1.createBuffer();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createFramebuffer = function(this1) {
	return this1.createFramebuffer();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createProgram = function(this1) {
	return this1.createProgram();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createQuery = function(this1) {
	return this1.createQuery();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createRenderbuffer = function(this1) {
	return this1.createRenderbuffer();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createSampler = function(this1) {
	return this1.createSampler();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createShader = function(this1,type) {
	return this1.createShader(type);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createTexture = function(this1) {
	return this1.createTexture();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createTransformFeedback = function(this1) {
	return this1.createTransformFeedback();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.createVertexArray = function(this1) {
	return this1.createVertexArray();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.cullFace = function(this1,mode) {
	this1.cullFace(mode);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteBuffer = function(this1,buffer) {
	this1.deleteBuffer(buffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteFramebuffer = function(this1,framebuffer) {
	this1.deleteFramebuffer(framebuffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteProgram = function(this1,program) {
	this1.deleteProgram(program);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteQuery = function(this1,query) {
	this1.deleteQuery(query);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteRenderbuffer = function(this1,renderbuffer) {
	this1.deleteRenderbuffer(renderbuffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteSampler = function(this1,sampler) {
	this1.deleteSampler(sampler);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteShader = function(this1,shader) {
	this1.deleteShader(shader);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteSync = function(this1,sync) {
	this1.deleteSync(sync);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteTexture = function(this1,texture) {
	this1.deleteTexture(texture);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteTransformFeedback = function(this1,transformFeedback) {
	this1.deleteTransformFeedback(transformFeedback);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.deleteVertexArray = function(this1,vertexArray) {
	this1.deleteVertexArray(vertexArray);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.depthFunc = function(this1,func) {
	this1.depthFunc(func);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.depthMask = function(this1,flag) {
	this1.depthMask(flag);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.depthRangef = function(this1,zNear,zFar) {
	this1.depthRangef(zNear,zFar);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.detachShader = function(this1,program,shader) {
	this1.detachShader(program,shader);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.disable = function(this1,cap) {
	this1.disable(cap);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.disableVertexAttribArray = function(this1,index) {
	this1.disableVertexAttribArray(index);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.drawArrays = function(this1,mode,first,count) {
	this1.drawArrays(mode,first,count);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.drawArraysInstanced = function(this1,mode,first,count,instanceCount) {
	this1.drawArraysInstanced(mode,first,count,instanceCount);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.drawBuffers = function(this1,buffers) {
	this1.drawBuffers(buffers);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.drawElements = function(this1,mode,count,type,offset) {
	this1.drawElements(mode,count,type,offset);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.drawElementsInstanced = function(this1,mode,count,type,offset,instanceCount) {
	this1.drawElementsInstanced(mode,count,type,offset,instanceCount);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.drawRangeElements = function(this1,mode,start,end,count,type,offset) {
	this1.drawRangeElements(mode,start,end,count,type,offset);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.enable = function(this1,cap) {
	this1.enable(cap);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.enableVertexAttribArray = function(this1,index) {
	this1.enableVertexAttribArray(index);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.endQuery = function(this1,target) {
	this1.endQuery(target);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.endTransformFeedback = function(this1) {
	this1.endTransformFeedback();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.fenceSync = function(this1,condition,flags) {
	return this1.fenceSync(condition,flags);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.finish = function(this1) {
	this1.finish();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.flush = function(this1) {
	this1.flush();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.framebufferRenderbuffer = function(this1,target,attachment,renderbuffertarget,renderbuffer) {
	this1.framebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.framebufferTexture2D = function(this1,target,attachment,textarget,texture,level) {
	this1.framebufferTexture2D(target,attachment,textarget,texture,level);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.framebufferTextureLayer = function(this1,target,attachment,texture,level,layer) {
	this1.framebufferTextureLayer(target,attachment,texture,level,layer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.frontFace = function(this1,mode) {
	this1.frontFace(mode);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.genBuffers = function(this1,n,buffers) {
	if(buffers == null) {
		buffers = [];
	}
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		buffers[i] = this1.createBuffer();
	}
	return buffers;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.generateMipmap = function(this1,target) {
	this1.generateMipmap(target);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.genFramebuffers = function(this1,n,framebuffers) {
	if(framebuffers == null) {
		framebuffers = [];
	}
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		framebuffers[i] = this1.createFramebuffer();
	}
	return framebuffers;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.genQueries = function(this1,n,queries) {
	if(queries == null) {
		queries = [];
	}
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		queries[i] = this1.createQuery();
	}
	return queries;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.genRenderbuffers = function(this1,n,renderbuffers) {
	if(renderbuffers == null) {
		renderbuffers = [];
	}
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		renderbuffers[i] = this1.createRenderbuffer();
	}
	return renderbuffers;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.genSamplers = function(this1,n,samplers) {
	if(samplers == null) {
		samplers = [];
	}
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		samplers[i] = this1.createSampler();
	}
	return samplers;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.genTextures = function(this1,n,textures) {
	if(textures == null) {
		textures = [];
	}
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		textures[i] = this1.createTexture();
	}
	return textures;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.genTransformFeedbacks = function(this1,n,transformFeedbacks) {
	if(transformFeedbacks == null) {
		transformFeedbacks = [];
	}
	var _g1 = 0;
	var _g = n;
	while(_g1 < _g) {
		var i = _g1++;
		transformFeedbacks[i] = this1.createTransformFeedback();
	}
	return transformFeedbacks;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getActiveAttrib = function(this1,program,index) {
	return this1.getActiveAttrib(program,index);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getActiveUniform = function(this1,program,index) {
	return this1.getActiveUniform(program,index);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getActiveUniformBlocki = function(this1,program,uniformBlockIndex,pname) {
	return this1.getActiveUniformBlocki(program,uniformBlockIndex,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getActiveUniformBlockiv = function(this1,program,uniformBlockIndex,pname,params) {
	this1.getActiveUniformBlockiv(program,uniformBlockIndex,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getActiveUniformBlockName = function(this1,program,uniformBlockIndex) {
	return this1.getActiveUniformBlockName(program,uniformBlockIndex);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getActiveUniformsiv = function(this1,program,uniformIndices,pname,params) {
	this1.getActiveUniformsiv(program,uniformIndices,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getAttachedShaders = function(this1,program) {
	return this1.getAttachedShaders(program);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getAttribLocation = function(this1,program,name) {
	return this1.getAttribLocation(program,name);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getBoolean = function(this1,pname) {
	return this1.getBoolean(pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getBooleanv = function(this1,pname,params) {
	this1.getBooleanv(pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getBufferParameteri = function(this1,target,pname) {
	return this1.getBufferParameteri(target,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getBufferParameteri64v = function(this1,target,pname,params) {
	this1.getBufferParameteri64v(target,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getBufferParameteriv = function(this1,target,pname,params) {
	this1.getBufferParameteriv(target,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getBufferPointerv = function(this1,target,pname) {
	return this1.getBufferPointerv(target,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getError = function(this1) {
	return this1.getError();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getFloat = function(this1,pname) {
	return this1.getFloat(pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getFloatv = function(this1,pname,params) {
	this1.getFloatv(pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getExtension = function(this1,name) {
	return this1.getExtension(name);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getFragDataLocation = function(this1,program,name) {
	return this1.getFragDataLocation(program,name);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getFramebufferAttachmentParameteri = function(this1,target,attachment,pname) {
	return this1.getFramebufferAttachmentParameteri(target,attachment,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getFramebufferAttachmentParameteriv = function(this1,target,attachment,pname,params) {
	this1.getFramebufferAttachmentParameteriv(target,attachment,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getInteger = function(this1,pname) {
	return this1.getInteger(pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getInteger64 = function(this1,pname) {
	return this1.getInteger64(pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getInteger64i = function(this1,pname) {
	return this1.getInteger64(pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getInteger64i_v = function(this1,pname,index,params) {
	this1.getInteger64i_v(pname,index,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getInteger64v = function(this1,pname,params) {
	this1.getInteger64v(pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getIntegeri_v = function(this1,pname,index,params) {
	this1.getIntegeri_v(pname,index,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getIntegerv = function(this1,pname,params) {
	this1.getIntegerv(pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getInternalformati = function(this1,target,internalformat,pname) {
	return this1.getInternalformatParameter(target,internalformat,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getInternalformativ = function(this1,target,internalformat,pname,bufSize,params) {
	this1.getInternalformativ(target,internalformat,pname,bufSize,params);
	return;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getProgramBinary = function(this1,program,binaryFormat) {
	return this1.getProgramBinary(program,binaryFormat);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getProgrami = function(this1,program,pname) {
	return this1.getProgrami(program,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getProgramInfoLog = function(this1,program) {
	return this1.getProgramInfoLog(program);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getProgramiv = function(this1,program,pname,params) {
	this1.getProgramiv(program,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getQueryi = function(this1,target,pname) {
	return this1.getQueryi(target,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getQueryiv = function(this1,target,pname,params) {
	this1.getQueryiv(target,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getQueryObjectui = function(this1,query,pname) {
	return this1.getQueryObjectui(query,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getQueryObjectuiv = function(this1,query,pname,params) {
	this1.getQueryObjectuiv(query,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getRenderbufferParameteri = function(this1,target,pname) {
	return this1.getRenderbufferParameteri(target,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getRenderbufferParameteriv = function(this1,target,pname,params) {
	this1.getRenderbufferParameteriv(target,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getSamplerParameteri = function(this1,sampler,pname) {
	return this1.getSamplerParameteri(sampler,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getSamplerParameteriv = function(this1,sampler,pname,params) {
	this1.getSamplerParameteriv(sampler,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getSamplerParameterf = function(this1,sampler,pname) {
	return this1.getSamplerParameterf(sampler,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getSamplerParameterfv = function(this1,sampler,pname,params) {
	this1.getSamplerParameterfv(sampler,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getShaderInfoLog = function(this1,shader) {
	return this1.getShaderInfoLog(shader);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getShaderi = function(this1,shader,pname) {
	return this1.getShaderi(shader,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getShaderiv = function(this1,shader,pname,params) {
	this1.getShaderiv(shader,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getShaderPrecisionFormat = function(this1,shadertype,precisiontype) {
	return this1.getShaderPrecisionFormat(shadertype,precisiontype);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getShaderSource = function(this1,shader) {
	return this1.getShaderSource(shader);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getString = function(this1,name) {
	return this1.getString(name);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getStringi = function(this1,name,index) {
	return this1.getStringi(name,index);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getSyncParameteri = function(this1,sync,pname) {
	return this1.getSyncParameteri(sync,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getSyncParameteriv = function(this1,sync,pname,params) {
	this1.getSyncParameteriv(sync,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getTexParameterf = function(this1,target,pname) {
	return this1.getTexParameterf(target,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getTexParameterfv = function(this1,target,pname,params) {
	this1.getTexParameterfv(target,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getTexParameteri = function(this1,target,pname) {
	return this1.getTexParameteri(target,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getTexParameteriv = function(this1,target,pname,params) {
	this1.getTexParameteriv(target,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getTransformFeedbackVarying = function(this1,program,index) {
	return this1.getTransformFeedbackVarying(program,index);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformf = function(this1,program,location) {
	return this1.getUniformf(program,location);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformfv = function(this1,program,location,params) {
	this1.getUniformfv(program,location,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformi = function(this1,program,location) {
	return this1.getUniformi(program,location);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformiv = function(this1,program,location,params) {
	this1.getUniformiv(program,location,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformui = function(this1,program,location) {
	return this1.getUniformui(program,location);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformuiv = function(this1,program,location,params) {
	this1.getUniformuiv(program,location,params);
	return;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformBlockIndex = function(this1,program,uniformBlockName) {
	return this1.getUniformBlockIndex(program,uniformBlockName);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformIndices = function(this1,program,uniformNames) {
	return this1.getUniformIndices(program,uniformNames);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getUniformLocation = function(this1,program,name) {
	return this1.getUniformLocation(program,name);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribf = function(this1,index,pname) {
	return this1.getVertexAttribf(index,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribfv = function(this1,index,pname,params) {
	this1.getVertexAttribfv(index,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribi = function(this1,index,pname) {
	return this1.getVertexAttrib(index,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribIi = function(this1,index,pname) {
	return this1.getVertexAttribIi(index,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribIiv = function(this1,index,pname,params) {
	this1.getVertexAttribIiv(index,pname,params);
	return;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribIui = function(this1,index,pname) {
	return this1.getVertexAttribIui(index,pname);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribIuiv = function(this1,index,pname,params) {
	this1.getVertexAttribIuiv(index,pname,params);
	return;
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribiv = function(this1,index,pname,params) {
	this1.getVertexAttribiv(index,pname,params);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.getVertexAttribPointerv = function(this1,index,pname) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(this1.getVertexAttribPointerv(index,pname));
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.hint = function(this1,target,mode) {
	this1.hint(target,mode);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.invalidateFramebuffer = function(this1,target,attachments) {
	this1.invalidateFramebuffer(target,attachments);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.invalidateSubFramebuffer = function(this1,target,attachments,x,y,width,height) {
	this1.invalidateSubFramebuffer(target,attachments,x,y,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isBuffer = function(this1,buffer) {
	return this1.isBuffer(buffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isEnabled = function(this1,cap) {
	return this1.isEnabled(cap);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isFramebuffer = function(this1,framebuffer) {
	return this1.isFramebuffer(framebuffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isProgram = function(this1,program) {
	return this1.isProgram(program);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isQuery = function(this1,query) {
	return this1.isQuery(query);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isRenderbuffer = function(this1,renderbuffer) {
	return this1.isRenderbuffer(renderbuffer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isSampler = function(this1,sampler) {
	return this1.isSampler(sampler);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isShader = function(this1,shader) {
	return this1.isShader(shader);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isTexture = function(this1,texture) {
	return this1.isTexture(texture);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isTransformFeedback = function(this1,transformFeedback) {
	return this1.isTransformFeedback(transformFeedback);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.isVertexArray = function(this1,vertexArray) {
	return this1.isVertexArray(vertexArray);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.lineWidth = function(this1,width) {
	this1.lineWidth(width);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.linkProgram = function(this1,program) {
	this1.linkProgram(program);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.mapBufferRange = function(this1,target,offset,length,access) {
	return this1.mapBufferRange(target,offset,length,access);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.pauseTransformFeedback = function(this1) {
	this1.pauseTransformFeedback();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.pixelStorei = function(this1,pname,param) {
	this1.pixelStorei(pname,param);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.polygonOffset = function(this1,factor,units) {
	this1.polygonOffset(factor,units);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.programBinary = function(this1,program,binaryFormat,binary,length) {
	this1.programBinary(program,binaryFormat,binary,length);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.programParameteri = function(this1,program,pname,value) {
	this1.programParameteri(program,pname,value);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.readBuffer = function(this1,src) {
	this1.readBuffer(src);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.readPixels = function(this1,x,y,width,height,format,type,data) {
	this1.readPixels(x,y,width,height,format,type,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.releaseShaderCompiler = function(this1) {
	this1.releaseShaderCompiler();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.renderbufferStorage = function(this1,target,internalformat,width,height) {
	this1.renderbufferStorage(target,internalformat,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.renderbufferStorageMultisample = function(this1,target,samples,internalformat,width,height) {
	this1.renderbufferStorageMultisample(target,samples,internalformat,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.resumeTransformFeedback = function(this1) {
	this1.resumeTransformFeedback();
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.sampleCoverage = function(this1,value,invert) {
	this1.sampleCoverage(value,invert);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.samplerParameterf = function(this1,sampler,pname,param) {
	this1.samplerParameterf(sampler,pname,param);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.samplerParameteri = function(this1,sampler,pname,param) {
	this1.samplerParameteri(sampler,pname,param);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.scissor = function(this1,x,y,width,height) {
	this1.scissor(x,y,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.shaderBinary = function(this1,shaders,binaryformat,binary,length) {
	this1.shaderBinary(shaders,binaryformat,binary,length);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.shaderSource = function(this1,shader,source) {
	this1.shaderSource(shader,source);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.stencilFunc = function(this1,func,ref,mask) {
	this1.stencilFunc(func,ref,mask);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.stencilFuncSeparate = function(this1,face,func,ref,mask) {
	this1.stencilFuncSeparate(face,func,ref,mask);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.stencilMask = function(this1,mask) {
	this1.stencilMask(mask);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.stencilMaskSeparate = function(this1,face,mask) {
	this1.stencilMaskSeparate(face,mask);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.stencilOp = function(this1,fail,zfail,zpass) {
	this1.stencilOp(fail,zfail,zpass);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.stencilOpSeparate = function(this1,face,fail,zfail,zpass) {
	this1.stencilOpSeparate(face,fail,zfail,zpass);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texImage2D = function(this1,target,level,internalformat,width,height,border,format,type,data) {
	this1.texImage2D(target,level,internalformat,width,height,border,format,type,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texImage3D = function(this1,target,level,internalformat,width,height,depth,border,format,type,data) {
	this1.texImage3D(target,level,internalformat,width,height,depth,border,format,type,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texStorage2D = function(this1,target,level,internalformat,width,height) {
	this1.texStorage2D(target,level,internalformat,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texStorage3D = function(this1,target,level,internalformat,width,height,depth) {
	this1.texStorage3D(target,level,internalformat,width,height,depth);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texParameterf = function(this1,target,pname,param) {
	this1.texParameterf(target,pname,param);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texParameteri = function(this1,target,pname,param) {
	this1.texParameteri(target,pname,param);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texSubImage2D = function(this1,target,level,xoffset,yoffset,width,height,format,type,data) {
	this1.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.texSubImage3D = function(this1,target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,data) {
	this1.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,data);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.transformFeedbackVaryings = function(this1,program,varyings,bufferMode) {
	this1.transformFeedbackVaryings(program,varyings,bufferMode);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform1f = function(this1,location,v0) {
	this1.uniform1f(location,v0);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform1fv = function(this1,location,count,v) {
	this1.uniform1fv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform1i = function(this1,location,v0) {
	this1.uniform1i(location,v0);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform1iv = function(this1,location,count,v) {
	this1.uniform1iv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform1ui = function(this1,location,v0) {
	this1.uniform1ui(location,v0);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform1uiv = function(this1,location,count,v) {
	this1.uniform1uiv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform2f = function(this1,location,v0,v1) {
	this1.uniform2f(location,v0,v1);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform2fv = function(this1,location,count,v) {
	this1.uniform2fv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform2i = function(this1,location,v0,v1) {
	this1.uniform2i(location,v0,v1);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform2iv = function(this1,location,count,v) {
	this1.uniform2iv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform2ui = function(this1,location,v0,v1) {
	this1.uniform2ui(location,v0,v1);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform2uiv = function(this1,location,count,v) {
	this1.uniform2uiv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform3f = function(this1,location,v0,v1,v2) {
	this1.uniform3f(location,v0,v1,v2);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform3fv = function(this1,location,count,v) {
	this1.uniform3fv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform3i = function(this1,location,v0,v1,v2) {
	this1.uniform3i(location,v0,v1,v2);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform3iv = function(this1,location,count,v) {
	this1.uniform3iv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform3ui = function(this1,location,v0,v1,v2) {
	this1.uniform3ui(location,v0,v1,v2);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform3uiv = function(this1,location,count,v) {
	this1.uniform3uiv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform4f = function(this1,location,v0,v1,v2,v3) {
	this1.uniform4f(location,v0,v1,v2,v3);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform4fv = function(this1,location,count,v) {
	this1.uniform4fv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform4i = function(this1,location,v0,v1,v2,v3) {
	this1.uniform4i(location,v0,v1,v2,v3);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform4iv = function(this1,location,count,v) {
	this1.uniform4iv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform4ui = function(this1,location,v0,v1,v2,v3) {
	this1.uniform4ui(location,v0,v1,v2,v3);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniform4uiv = function(this1,location,count,v) {
	this1.uniform4uiv(location,count,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformBlockBinding = function(this1,program,uniformBlockIndex,uniformBlockBinding) {
	this1.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix2fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix2fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix2x3fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix2x3fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix2x4fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix2x4fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix3fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix3fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix3x2fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix3x2fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix3x4fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix3x4fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix4fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix4fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix4x2fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix4x2fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.uniformMatrix4x3fv = function(this1,location,count,transpose,v) {
	this1.uniformMatrix4x3fv(location,count,transpose,v);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.unmapBuffer = function(this1,target) {
	return this1.unmapBuffer(target);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.useProgram = function(this1,program) {
	this1.useProgram(program);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.validateProgram = function(this1,program) {
	this1.validateProgram(program);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib1f = function(this1,indx,x) {
	this1.vertexAttrib1f(indx,x);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib1fv = function(this1,indx,values) {
	this1.vertexAttrib1fv(indx,values);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib2f = function(this1,indx,x,y) {
	this1.vertexAttrib2f(indx,x,y);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib2fv = function(this1,indx,values) {
	this1.vertexAttrib2fv(indx,values);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib3f = function(this1,indx,x,y,z) {
	this1.vertexAttrib3f(indx,x,y,z);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib3fv = function(this1,indx,values) {
	this1.vertexAttrib3fv(indx,values);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib4f = function(this1,indx,x,y,z,w) {
	this1.vertexAttrib4f(indx,x,y,z,w);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttrib4fv = function(this1,indx,values) {
	this1.vertexAttrib4fv(indx,values);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttribDivisor = function(this1,index,divisor) {
	this1.vertexAttribDivisor(index,divisor);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttribI4i = function(this1,indx,x,y,z,w) {
	this1.vertexAttribI4i(indx,x,y,z,w);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttribI4iv = function(this1,indx,values) {
	this1.vertexAttribI4iv(indx,values);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttribI4ui = function(this1,indx,x,y,z,w) {
	this1.vertexAttribI4ui(indx,x,y,z,w);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttribI4uiv = function(this1,indx,values) {
	this1.vertexAttribI4uiv(indx,values);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttribIPointer = function(this1,indx,size,type,stride,pointer) {
	this1.vertexAttribIPointer(indx,size,type,stride,pointer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.vertexAttribPointer = function(this1,indx,size,type,normalized,stride,pointer) {
	this1.vertexAttribPointer(indx,size,type,normalized,stride,pointer);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.viewport = function(this1,x,y,width,height) {
	this1.viewport(x,y,width,height);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.waitSync = function(this1,sync,flags,timeout) {
	this1.waitSync(sync,flags,timeout);
};
lime_graphics_opengl__$GLES3Context_GLES3Context_$Impl_$.fromGL = function(gl) {
	return null;
};
var lime_utils_BytePointerData = function(bytes,offset) {
	this.bytes = bytes;
	this.offset = offset;
};
$hxClasses["lime.utils.BytePointerData"] = lime_utils_BytePointerData;
lime_utils_BytePointerData.__name__ = ["lime","utils","BytePointerData"];
lime_utils_BytePointerData.prototype = {
	bytes: null
	,offset: null
	,__class__: lime_utils_BytePointerData
};
var lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$ = {};
$hxClasses["lime.graphics.opengl._WebGL2Context.WebGL2Context_Impl_"] = lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$;
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__name__ = ["lime","graphics","opengl","_WebGL2Context","WebGL2Context_Impl_"];
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__properties__ = {get_version:"get_version",get_type:"get_type",get_MAX_CLIENT_WAIT_TIMEOUT_WEBGL:"get_MAX_CLIENT_WAIT_TIMEOUT_WEBGL",get_TIMEOUT_IGNORED:"get_TIMEOUT_IGNORED",get_INVALID_INDEX:"get_INVALID_INDEX",get_DEPTH32F_STENCIL8:"get_DEPTH32F_STENCIL8",get_DEPTH_COMPONENT32F:"get_DEPTH_COMPONENT32F",get_DYNAMIC_COPY:"get_DYNAMIC_COPY",get_DYNAMIC_READ:"get_DYNAMIC_READ",get_STATIC_COPY:"get_STATIC_COPY",get_STATIC_READ:"get_STATIC_READ",get_STREAM_COPY:"get_STREAM_COPY",get_STREAM_READ:"get_STREAM_READ",get_DEPTH_COMPONENT24:"get_DEPTH_COMPONENT24",get_MAX:"get_MAX",get_MIN:"get_MIN",get_STENCIL:"get_STENCIL",get_DEPTH:"get_DEPTH",get_COLOR:"get_COLOR",get_SYNC_FLUSH_COMMANDS_BIT:"get_SYNC_FLUSH_COMMANDS_BIT",get_WAIT_FAILED:"get_WAIT_FAILED",get_CONDITION_SATISFIED:"get_CONDITION_SATISFIED",get_TIMEOUT_EXPIRED:"get_TIMEOUT_EXPIRED",get_ALREADY_SIGNALED:"get_ALREADY_SIGNALED",get_SIGNALED:"get_SIGNALED",get_UNSIGNALED:"get_UNSIGNALED",get_SYNC_GPU_COMMANDS_COMPLETE:"get_SYNC_GPU_COMMANDS_COMPLETE",get_SYNC_FENCE:"get_SYNC_FENCE",get_SYNC_FLAGS:"get_SYNC_FLAGS",get_SYNC_STATUS:"get_SYNC_STATUS",get_SYNC_CONDITION:"get_SYNC_CONDITION",get_OBJECT_TYPE:"get_OBJECT_TYPE",get_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:"get_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",get_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:"get_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",get_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:"get_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",get_UNIFORM_BLOCK_ACTIVE_UNIFORMS:"get_UNIFORM_BLOCK_ACTIVE_UNIFORMS",get_UNIFORM_BLOCK_DATA_SIZE:"get_UNIFORM_BLOCK_DATA_SIZE",get_UNIFORM_BLOCK_BINDING:"get_UNIFORM_BLOCK_BINDING",get_UNIFORM_IS_ROW_MAJOR:"get_UNIFORM_IS_ROW_MAJOR",get_UNIFORM_MATRIX_STRIDE:"get_UNIFORM_MATRIX_STRIDE",get_UNIFORM_ARRAY_STRIDE:"get_UNIFORM_ARRAY_STRIDE",get_UNIFORM_OFFSET:"get_UNIFORM_OFFSET",get_UNIFORM_BLOCK_INDEX:"get_UNIFORM_BLOCK_INDEX",get_UNIFORM_SIZE:"get_UNIFORM_SIZE",get_UNIFORM_TYPE:"get_UNIFORM_TYPE",get_ACTIVE_UNIFORM_BLOCKS:"get_ACTIVE_UNIFORM_BLOCKS",get_UNIFORM_BUFFER_OFFSET_ALIGNMENT:"get_UNIFORM_BUFFER_OFFSET_ALIGNMENT",get_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:"get_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",get_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:"get_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",get_MAX_UNIFORM_BLOCK_SIZE:"get_MAX_UNIFORM_BLOCK_SIZE",get_MAX_UNIFORM_BUFFER_BINDINGS:"get_MAX_UNIFORM_BUFFER_BINDINGS",get_MAX_COMBINED_UNIFORM_BLOCKS:"get_MAX_COMBINED_UNIFORM_BLOCKS",get_MAX_FRAGMENT_UNIFORM_BLOCKS:"get_MAX_FRAGMENT_UNIFORM_BLOCKS",get_MAX_VERTEX_UNIFORM_BLOCKS:"get_MAX_VERTEX_UNIFORM_BLOCKS",get_UNIFORM_BUFFER_SIZE:"get_UNIFORM_BUFFER_SIZE",get_UNIFORM_BUFFER_START:"get_UNIFORM_BUFFER_START",get_UNIFORM_BUFFER_BINDING:"get_UNIFORM_BUFFER_BINDING",get_UNIFORM_BUFFER:"get_UNIFORM_BUFFER",get_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:"get_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:"get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",get_RENDERBUFFER_SAMPLES:"get_RENDERBUFFER_SAMPLES",get_READ_FRAMEBUFFER_BINDING:"get_READ_FRAMEBUFFER_BINDING",get_DRAW_FRAMEBUFFER:"get_DRAW_FRAMEBUFFER",get_READ_FRAMEBUFFER:"get_READ_FRAMEBUFFER",get_DRAW_FRAMEBUFFER_BINDING:"get_DRAW_FRAMEBUFFER_BINDING",get_DEPTH24_STENCIL8:"get_DEPTH24_STENCIL8",get_FRAMEBUFFER_DEFAULT:"get_FRAMEBUFFER_DEFAULT",get_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:"get_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",get_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:"get_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",get_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:"get_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",get_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:"get_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",get_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:"get_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",get_FRAMEBUFFER_ATTACHMENT_RED_SIZE:"get_FRAMEBUFFER_ATTACHMENT_RED_SIZE",get_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:"get_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",get_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:"get_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",get_TRANSFORM_FEEDBACK_BINDING:"get_TRANSFORM_FEEDBACK_BINDING",get_TRANSFORM_FEEDBACK_ACTIVE:"get_TRANSFORM_FEEDBACK_ACTIVE",get_TRANSFORM_FEEDBACK_PAUSED:"get_TRANSFORM_FEEDBACK_PAUSED",get_TRANSFORM_FEEDBACK:"get_TRANSFORM_FEEDBACK",get_TRANSFORM_FEEDBACK_BUFFER_BINDING:"get_TRANSFORM_FEEDBACK_BUFFER_BINDING",get_TRANSFORM_FEEDBACK_BUFFER:"get_TRANSFORM_FEEDBACK_BUFFER",get_SEPARATE_ATTRIBS:"get_SEPARATE_ATTRIBS",get_INTERLEAVED_ATTRIBS:"get_INTERLEAVED_ATTRIBS",get_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:"get_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",get_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:"get_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",get_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:"get_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",get_TRANSFORM_FEEDBACK_BUFFER_SIZE:"get_TRANSFORM_FEEDBACK_BUFFER_SIZE",get_TRANSFORM_FEEDBACK_BUFFER_START:"get_TRANSFORM_FEEDBACK_BUFFER_START",get_TRANSFORM_FEEDBACK_VARYINGS:"get_TRANSFORM_FEEDBACK_VARYINGS",get_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:"get_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",get_TRANSFORM_FEEDBACK_BUFFER_MODE:"get_TRANSFORM_FEEDBACK_BUFFER_MODE",get_VERTEX_ATTRIB_ARRAY_DIVISOR:"get_VERTEX_ATTRIB_ARRAY_DIVISOR",get_VERTEX_ATTRIB_ARRAY_INTEGER:"get_VERTEX_ATTRIB_ARRAY_INTEGER",get_SIGNED_NORMALIZED:"get_SIGNED_NORMALIZED",get_UNSIGNED_NORMALIZED:"get_UNSIGNED_NORMALIZED",get_UNSIGNED_INT_VEC4:"get_UNSIGNED_INT_VEC4",get_UNSIGNED_INT_VEC3:"get_UNSIGNED_INT_VEC3",get_UNSIGNED_INT_VEC2:"get_UNSIGNED_INT_VEC2",get_FLOAT_MAT4x3:"get_FLOAT_MAT4x3",get_FLOAT_MAT4x2:"get_FLOAT_MAT4x2",get_FLOAT_MAT3x4:"get_FLOAT_MAT3x4",get_FLOAT_MAT3x2:"get_FLOAT_MAT3x2",get_FLOAT_MAT2x4:"get_FLOAT_MAT2x4",get_FLOAT_MAT2x3:"get_FLOAT_MAT2x3",get_COPY_WRITE_BUFFER_BINDING:"get_COPY_WRITE_BUFFER_BINDING",get_COPY_READ_BUFFER_BINDING:"get_COPY_READ_BUFFER_BINDING",get_COPY_WRITE_BUFFER:"get_COPY_WRITE_BUFFER",get_COPY_READ_BUFFER:"get_COPY_READ_BUFFER",get_PIXEL_UNPACK_BUFFER_BINDING:"get_PIXEL_UNPACK_BUFFER_BINDING",get_PIXEL_PACK_BUFFER_BINDING:"get_PIXEL_PACK_BUFFER_BINDING",get_PIXEL_UNPACK_BUFFER:"get_PIXEL_UNPACK_BUFFER",get_PIXEL_PACK_BUFFER:"get_PIXEL_PACK_BUFFER",get_SAMPLER_BINDING:"get_SAMPLER_BINDING",get_MAX_SAMPLES:"get_MAX_SAMPLES",get_UNSIGNED_INT_SAMPLER_2D_ARRAY:"get_UNSIGNED_INT_SAMPLER_2D_ARRAY",get_UNSIGNED_INT_SAMPLER_CUBE:"get_UNSIGNED_INT_SAMPLER_CUBE",get_UNSIGNED_INT_SAMPLER_3D:"get_UNSIGNED_INT_SAMPLER_3D",get_UNSIGNED_INT_SAMPLER_2D:"get_UNSIGNED_INT_SAMPLER_2D",get_INT_SAMPLER_2D_ARRAY:"get_INT_SAMPLER_2D_ARRAY",get_INT_SAMPLER_CUBE:"get_INT_SAMPLER_CUBE",get_INT_SAMPLER_3D:"get_INT_SAMPLER_3D",get_INT_SAMPLER_2D:"get_INT_SAMPLER_2D",get_SAMPLER_CUBE_SHADOW:"get_SAMPLER_CUBE_SHADOW",get_SAMPLER_2D_ARRAY_SHADOW:"get_SAMPLER_2D_ARRAY_SHADOW",get_SAMPLER_2D_ARRAY:"get_SAMPLER_2D_ARRAY",get_SAMPLER_2D_SHADOW:"get_SAMPLER_2D_SHADOW",get_SAMPLER_3D:"get_SAMPLER_3D",get_COLOR_ATTACHMENT15:"get_COLOR_ATTACHMENT15",get_COLOR_ATTACHMENT14:"get_COLOR_ATTACHMENT14",get_COLOR_ATTACHMENT13:"get_COLOR_ATTACHMENT13",get_COLOR_ATTACHMENT12:"get_COLOR_ATTACHMENT12",get_COLOR_ATTACHMENT11:"get_COLOR_ATTACHMENT11",get_COLOR_ATTACHMENT10:"get_COLOR_ATTACHMENT10",get_COLOR_ATTACHMENT9:"get_COLOR_ATTACHMENT9",get_COLOR_ATTACHMENT8:"get_COLOR_ATTACHMENT8",get_COLOR_ATTACHMENT7:"get_COLOR_ATTACHMENT7",get_COLOR_ATTACHMENT6:"get_COLOR_ATTACHMENT6",get_COLOR_ATTACHMENT5:"get_COLOR_ATTACHMENT5",get_COLOR_ATTACHMENT4:"get_COLOR_ATTACHMENT4",get_COLOR_ATTACHMENT3:"get_COLOR_ATTACHMENT3",get_COLOR_ATTACHMENT2:"get_COLOR_ATTACHMENT2",get_COLOR_ATTACHMENT1:"get_COLOR_ATTACHMENT1",get_MAX_COLOR_ATTACHMENTS:"get_MAX_COLOR_ATTACHMENTS",get_DRAW_BUFFER15:"get_DRAW_BUFFER15",get_DRAW_BUFFER14:"get_DRAW_BUFFER14",get_DRAW_BUFFER13:"get_DRAW_BUFFER13",get_DRAW_BUFFER12:"get_DRAW_BUFFER12",get_DRAW_BUFFER11:"get_DRAW_BUFFER11",get_DRAW_BUFFER10:"get_DRAW_BUFFER10",get_DRAW_BUFFER9:"get_DRAW_BUFFER9",get_DRAW_BUFFER8:"get_DRAW_BUFFER8",get_DRAW_BUFFER7:"get_DRAW_BUFFER7",get_DRAW_BUFFER6:"get_DRAW_BUFFER6",get_DRAW_BUFFER5:"get_DRAW_BUFFER5",get_DRAW_BUFFER4:"get_DRAW_BUFFER4",get_DRAW_BUFFER3:"get_DRAW_BUFFER3",get_DRAW_BUFFER2:"get_DRAW_BUFFER2",get_DRAW_BUFFER1:"get_DRAW_BUFFER1",get_DRAW_BUFFER0:"get_DRAW_BUFFER0",get_MAX_DRAW_BUFFERS:"get_MAX_DRAW_BUFFERS",get_ANY_SAMPLES_PASSED_CONSERVATIVE:"get_ANY_SAMPLES_PASSED_CONSERVATIVE",get_ANY_SAMPLES_PASSED:"get_ANY_SAMPLES_PASSED",get_QUERY_RESULT_AVAILABLE:"get_QUERY_RESULT_AVAILABLE",get_QUERY_RESULT:"get_QUERY_RESULT",get_CURRENT_QUERY:"get_CURRENT_QUERY",get_INT_2_10_10_10_REV:"get_INT_2_10_10_10_REV",get_RG_INTEGER:"get_RG_INTEGER",get_RG:"get_RG",get_HALF_FLOAT:"get_HALF_FLOAT",get_UNSIGNED_INT_24_8:"get_UNSIGNED_INT_24_8",get_FLOAT_32_UNSIGNED_INT_24_8_REV:"get_FLOAT_32_UNSIGNED_INT_24_8_REV",get_UNSIGNED_INT_5_9_9_9_REV:"get_UNSIGNED_INT_5_9_9_9_REV",get_UNSIGNED_INT_10F_11F_11F_REV:"get_UNSIGNED_INT_10F_11F_11F_REV",get_UNSIGNED_INT_2_10_10_10_REV:"get_UNSIGNED_INT_2_10_10_10_REV",get_TEXTURE_IMMUTABLE_LEVELS:"get_TEXTURE_IMMUTABLE_LEVELS",get_TEXTURE_IMMUTABLE_FORMAT:"get_TEXTURE_IMMUTABLE_FORMAT",get_RGB10_A2UI:"get_RGB10_A2UI",get_RGBA8_SNORM:"get_RGBA8_SNORM",get_RGB8_SNORM:"get_RGB8_SNORM",get_RG8_SNORM:"get_RG8_SNORM",get_R8_SNORM:"get_R8_SNORM",get_RG32UI:"get_RG32UI",get_RG32I:"get_RG32I",get_RG16UI:"get_RG16UI",get_RG16I:"get_RG16I",get_RG8UI:"get_RG8UI",get_RG8I:"get_RG8I",get_R32UI:"get_R32UI",get_R32I:"get_R32I",get_R16UI:"get_R16UI",get_R16I:"get_R16I",get_R8UI:"get_R8UI",get_R8I:"get_R8I",get_RG32F:"get_RG32F",get_RG16F:"get_RG16F",get_R32F:"get_R32F",get_R16F:"get_R16F",get_RG8:"get_RG8",get_R8:"get_R8",get_RGBA_INTEGER:"get_RGBA_INTEGER",get_RGB_INTEGER:"get_RGB_INTEGER",get_RED_INTEGER:"get_RED_INTEGER",get_RGB8I:"get_RGB8I",get_RGBA8I:"get_RGBA8I",get_RGB16I:"get_RGB16I",get_RGBA16I:"get_RGBA16I",get_RGB32I:"get_RGB32I",get_RGBA32I:"get_RGBA32I",get_RGB8UI:"get_RGB8UI",get_RGBA8UI:"get_RGBA8UI",get_RGB16UI:"get_RGB16UI",get_RGBA16UI:"get_RGBA16UI",get_RGB32UI:"get_RGB32UI",get_RGBA32UI:"get_RGBA32UI",get_RGB9_E5:"get_RGB9_E5",get_R11F_G11F_B10F:"get_R11F_G11F_B10F",get_TEXTURE_BINDING_2D_ARRAY:"get_TEXTURE_BINDING_2D_ARRAY",get_TEXTURE_2D_ARRAY:"get_TEXTURE_2D_ARRAY",get_RGB16F:"get_RGB16F",get_RGBA16F:"get_RGBA16F",get_RGB32F:"get_RGB32F",get_RGBA32F:"get_RGBA32F",get_COMPARE_REF_TO_TEXTURE:"get_COMPARE_REF_TO_TEXTURE",get_SRGB8_ALPHA8:"get_SRGB8_ALPHA8",get_SRGB8:"get_SRGB8",get_SRGB:"get_SRGB",get_TEXTURE_COMPARE_FUNC:"get_TEXTURE_COMPARE_FUNC",get_TEXTURE_COMPARE_MODE:"get_TEXTURE_COMPARE_MODE",get_TEXTURE_MAX_LEVEL:"get_TEXTURE_MAX_LEVEL",get_TEXTURE_BASE_LEVEL:"get_TEXTURE_BASE_LEVEL",get_TEXTURE_MAX_LOD:"get_TEXTURE_MAX_LOD",get_TEXTURE_MIN_LOD:"get_TEXTURE_MIN_LOD",get_TEXTURE_WRAP_R:"get_TEXTURE_WRAP_R",get_TEXTURE_3D:"get_TEXTURE_3D",get_RGB10_A2:"get_RGB10_A2",get_RGBA8:"get_RGBA8",get_RGB8:"get_RGB8",get_RED:"get_RED",get_MAX_ELEMENT_INDEX:"get_MAX_ELEMENT_INDEX",get_MAX_SERVER_WAIT_TIMEOUT:"get_MAX_SERVER_WAIT_TIMEOUT",get_MAX_FRAGMENT_INPUT_COMPONENTS:"get_MAX_FRAGMENT_INPUT_COMPONENTS",get_MAX_VERTEX_OUTPUT_COMPONENTS:"get_MAX_VERTEX_OUTPUT_COMPONENTS",get_VERTEX_ARRAY_BINDING:"get_VERTEX_ARRAY_BINDING",get_RASTERIZER_DISCARD:"get_RASTERIZER_DISCARD",get_FRAGMENT_SHADER_DERIVATIVE_HINT:"get_FRAGMENT_SHADER_DERIVATIVE_HINT",get_MAX_VARYING_COMPONENTS:"get_MAX_VARYING_COMPONENTS",get_MAX_PROGRAM_TEXEL_OFFSET:"get_MAX_PROGRAM_TEXEL_OFFSET",get_MIN_PROGRAM_TEXEL_OFFSET:"get_MIN_PROGRAM_TEXEL_OFFSET",get_MAX_ARRAY_TEXTURE_LAYERS:"get_MAX_ARRAY_TEXTURE_LAYERS",get_MAX_VERTEX_UNIFORM_COMPONENTS:"get_MAX_VERTEX_UNIFORM_COMPONENTS",get_MAX_FRAGMENT_UNIFORM_COMPONENTS:"get_MAX_FRAGMENT_UNIFORM_COMPONENTS",get_MAX_TEXTURE_LOD_BIAS:"get_MAX_TEXTURE_LOD_BIAS",get_MAX_ELEMENTS_INDICES:"get_MAX_ELEMENTS_INDICES",get_MAX_ELEMENTS_VERTICES:"get_MAX_ELEMENTS_VERTICES",get_MAX_3D_TEXTURE_SIZE:"get_MAX_3D_TEXTURE_SIZE",get_UNPACK_IMAGE_HEIGHT:"get_UNPACK_IMAGE_HEIGHT",get_UNPACK_SKIP_IMAGES:"get_UNPACK_SKIP_IMAGES",get_TEXTURE_BINDING_3D:"get_TEXTURE_BINDING_3D",get_PACK_SKIP_PIXELS:"get_PACK_SKIP_PIXELS",get_PACK_SKIP_ROWS:"get_PACK_SKIP_ROWS",get_PACK_ROW_LENGTH:"get_PACK_ROW_LENGTH",get_UNPACK_SKIP_PIXELS:"get_UNPACK_SKIP_PIXELS",get_UNPACK_SKIP_ROWS:"get_UNPACK_SKIP_ROWS",get_UNPACK_ROW_LENGTH:"get_UNPACK_ROW_LENGTH",get_READ_BUFFER:"get_READ_BUFFER",get_BROWSER_DEFAULT_WEBGL:"get_BROWSER_DEFAULT_WEBGL",get_UNPACK_COLORSPACE_CONVERSION_WEBGL:"get_UNPACK_COLORSPACE_CONVERSION_WEBGL",get_CONTEXT_LOST_WEBGL:"get_CONTEXT_LOST_WEBGL",get_UNPACK_PREMULTIPLY_ALPHA_WEBGL:"get_UNPACK_PREMULTIPLY_ALPHA_WEBGL",get_UNPACK_FLIP_Y_WEBGL:"get_UNPACK_FLIP_Y_WEBGL",get_INVALID_FRAMEBUFFER_OPERATION:"get_INVALID_FRAMEBUFFER_OPERATION",get_MAX_RENDERBUFFER_SIZE:"get_MAX_RENDERBUFFER_SIZE",get_RENDERBUFFER_BINDING:"get_RENDERBUFFER_BINDING",get_FRAMEBUFFER_BINDING:"get_FRAMEBUFFER_BINDING",get_FRAMEBUFFER_UNSUPPORTED:"get_FRAMEBUFFER_UNSUPPORTED",get_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:"get_FRAMEBUFFER_INCOMPLETE_DIMENSIONS",get_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:"get_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",get_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:"get_FRAMEBUFFER_INCOMPLETE_ATTACHMENT",get_FRAMEBUFFER_COMPLETE:"get_FRAMEBUFFER_COMPLETE",get_NONE:"get_NONE",get_DEPTH_STENCIL_ATTACHMENT:"get_DEPTH_STENCIL_ATTACHMENT",get_STENCIL_ATTACHMENT:"get_STENCIL_ATTACHMENT",get_DEPTH_ATTACHMENT:"get_DEPTH_ATTACHMENT",get_COLOR_ATTACHMENT0:"get_COLOR_ATTACHMENT0",get_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:"get_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:"get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",get_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:"get_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",get_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:"get_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",get_RENDERBUFFER_STENCIL_SIZE:"get_RENDERBUFFER_STENCIL_SIZE",get_RENDERBUFFER_DEPTH_SIZE:"get_RENDERBUFFER_DEPTH_SIZE",get_RENDERBUFFER_ALPHA_SIZE:"get_RENDERBUFFER_ALPHA_SIZE",get_RENDERBUFFER_BLUE_SIZE:"get_RENDERBUFFER_BLUE_SIZE",get_RENDERBUFFER_GREEN_SIZE:"get_RENDERBUFFER_GREEN_SIZE",get_RENDERBUFFER_RED_SIZE:"get_RENDERBUFFER_RED_SIZE",get_RENDERBUFFER_INTERNAL_FORMAT:"get_RENDERBUFFER_INTERNAL_FORMAT",get_RENDERBUFFER_HEIGHT:"get_RENDERBUFFER_HEIGHT",get_RENDERBUFFER_WIDTH:"get_RENDERBUFFER_WIDTH",get_DEPTH_STENCIL:"get_DEPTH_STENCIL",get_STENCIL_INDEX8:"get_STENCIL_INDEX8",get_STENCIL_INDEX:"get_STENCIL_INDEX",get_DEPTH_COMPONENT16:"get_DEPTH_COMPONENT16",get_RGB565:"get_RGB565",get_RGB5_A1:"get_RGB5_A1",get_RGBA4:"get_RGBA4",get_RENDERBUFFER:"get_RENDERBUFFER",get_FRAMEBUFFER:"get_FRAMEBUFFER",get_HIGH_INT:"get_HIGH_INT",get_MEDIUM_INT:"get_MEDIUM_INT",get_LOW_INT:"get_LOW_INT",get_HIGH_FLOAT:"get_HIGH_FLOAT",get_MEDIUM_FLOAT:"get_MEDIUM_FLOAT",get_LOW_FLOAT:"get_LOW_FLOAT",get_COMPILE_STATUS:"get_COMPILE_STATUS",get_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:"get_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",get_VERTEX_ATTRIB_ARRAY_POINTER:"get_VERTEX_ATTRIB_ARRAY_POINTER",get_VERTEX_ATTRIB_ARRAY_NORMALIZED:"get_VERTEX_ATTRIB_ARRAY_NORMALIZED",get_VERTEX_ATTRIB_ARRAY_TYPE:"get_VERTEX_ATTRIB_ARRAY_TYPE",get_VERTEX_ATTRIB_ARRAY_STRIDE:"get_VERTEX_ATTRIB_ARRAY_STRIDE",get_VERTEX_ATTRIB_ARRAY_SIZE:"get_VERTEX_ATTRIB_ARRAY_SIZE",get_VERTEX_ATTRIB_ARRAY_ENABLED:"get_VERTEX_ATTRIB_ARRAY_ENABLED",get_SAMPLER_CUBE:"get_SAMPLER_CUBE",get_SAMPLER_2D:"get_SAMPLER_2D",get_FLOAT_MAT4:"get_FLOAT_MAT4",get_FLOAT_MAT3:"get_FLOAT_MAT3",get_FLOAT_MAT2:"get_FLOAT_MAT2",get_BOOL_VEC4:"get_BOOL_VEC4",get_BOOL_VEC3:"get_BOOL_VEC3",get_BOOL_VEC2:"get_BOOL_VEC2",get_BOOL:"get_BOOL",get_INT_VEC4:"get_INT_VEC4",get_INT_VEC3:"get_INT_VEC3",get_INT_VEC2:"get_INT_VEC2",get_FLOAT_VEC4:"get_FLOAT_VEC4",get_FLOAT_VEC3:"get_FLOAT_VEC3",get_FLOAT_VEC2:"get_FLOAT_VEC2",get_MIRRORED_REPEAT:"get_MIRRORED_REPEAT",get_CLAMP_TO_EDGE:"get_CLAMP_TO_EDGE",get_REPEAT:"get_REPEAT",get_ACTIVE_TEXTURE:"get_ACTIVE_TEXTURE",get_TEXTURE31:"get_TEXTURE31",get_TEXTURE30:"get_TEXTURE30",get_TEXTURE29:"get_TEXTURE29",get_TEXTURE28:"get_TEXTURE28",get_TEXTURE27:"get_TEXTURE27",get_TEXTURE26:"get_TEXTURE26",get_TEXTURE25:"get_TEXTURE25",get_TEXTURE24:"get_TEXTURE24",get_TEXTURE23:"get_TEXTURE23",get_TEXTURE22:"get_TEXTURE22",get_TEXTURE21:"get_TEXTURE21",get_TEXTURE20:"get_TEXTURE20",get_TEXTURE19:"get_TEXTURE19",get_TEXTURE18:"get_TEXTURE18",get_TEXTURE17:"get_TEXTURE17",get_TEXTURE16:"get_TEXTURE16",get_TEXTURE15:"get_TEXTURE15",get_TEXTURE14:"get_TEXTURE14",get_TEXTURE13:"get_TEXTURE13",get_TEXTURE12:"get_TEXTURE12",get_TEXTURE11:"get_TEXTURE11",get_TEXTURE10:"get_TEXTURE10",get_TEXTURE9:"get_TEXTURE9",get_TEXTURE8:"get_TEXTURE8",get_TEXTURE7:"get_TEXTURE7",get_TEXTURE6:"get_TEXTURE6",get_TEXTURE5:"get_TEXTURE5",get_TEXTURE4:"get_TEXTURE4",get_TEXTURE3:"get_TEXTURE3",get_TEXTURE2:"get_TEXTURE2",get_TEXTURE1:"get_TEXTURE1",get_TEXTURE0:"get_TEXTURE0",get_MAX_CUBE_MAP_TEXTURE_SIZE:"get_MAX_CUBE_MAP_TEXTURE_SIZE",get_TEXTURE_CUBE_MAP_NEGATIVE_Z:"get_TEXTURE_CUBE_MAP_NEGATIVE_Z",get_TEXTURE_CUBE_MAP_POSITIVE_Z:"get_TEXTURE_CUBE_MAP_POSITIVE_Z",get_TEXTURE_CUBE_MAP_NEGATIVE_Y:"get_TEXTURE_CUBE_MAP_NEGATIVE_Y",get_TEXTURE_CUBE_MAP_POSITIVE_Y:"get_TEXTURE_CUBE_MAP_POSITIVE_Y",get_TEXTURE_CUBE_MAP_NEGATIVE_X:"get_TEXTURE_CUBE_MAP_NEGATIVE_X",get_TEXTURE_CUBE_MAP_POSITIVE_X:"get_TEXTURE_CUBE_MAP_POSITIVE_X",get_TEXTURE_BINDING_CUBE_MAP:"get_TEXTURE_BINDING_CUBE_MAP",get_TEXTURE_CUBE_MAP:"get_TEXTURE_CUBE_MAP",get_TEXTURE:"get_TEXTURE",get_TEXTURE_2D:"get_TEXTURE_2D",get_TEXTURE_WRAP_T:"get_TEXTURE_WRAP_T",get_TEXTURE_WRAP_S:"get_TEXTURE_WRAP_S",get_TEXTURE_MIN_FILTER:"get_TEXTURE_MIN_FILTER",get_TEXTURE_MAG_FILTER:"get_TEXTURE_MAG_FILTER",get_LINEAR_MIPMAP_LINEAR:"get_LINEAR_MIPMAP_LINEAR",get_NEAREST_MIPMAP_LINEAR:"get_NEAREST_MIPMAP_LINEAR",get_LINEAR_MIPMAP_NEAREST:"get_LINEAR_MIPMAP_NEAREST",get_NEAREST_MIPMAP_NEAREST:"get_NEAREST_MIPMAP_NEAREST",get_LINEAR:"get_LINEAR",get_NEAREST:"get_NEAREST",get_VERSION:"get_VERSION",get_RENDERER:"get_RENDERER",get_VENDOR:"get_VENDOR",get_DECR_WRAP:"get_DECR_WRAP",get_INCR_WRAP:"get_INCR_WRAP",get_INVERT:"get_INVERT",get_DECR:"get_DECR",get_INCR:"get_INCR",get_REPLACE:"get_REPLACE",get_KEEP:"get_KEEP",get_ALWAYS:"get_ALWAYS",get_GEQUAL:"get_GEQUAL",get_NOTEQUAL:"get_NOTEQUAL",get_GREATER:"get_GREATER",get_LEQUAL:"get_LEQUAL",get_EQUAL:"get_EQUAL",get_LESS:"get_LESS",get_NEVER:"get_NEVER",get_CURRENT_PROGRAM:"get_CURRENT_PROGRAM",get_SHADING_LANGUAGE_VERSION:"get_SHADING_LANGUAGE_VERSION",get_ACTIVE_ATTRIBUTES:"get_ACTIVE_ATTRIBUTES",get_ACTIVE_UNIFORMS:"get_ACTIVE_UNIFORMS",get_ATTACHED_SHADERS:"get_ATTACHED_SHADERS",get_VALIDATE_STATUS:"get_VALIDATE_STATUS",get_LINK_STATUS:"get_LINK_STATUS",get_DELETE_STATUS:"get_DELETE_STATUS",get_SHADER_TYPE:"get_SHADER_TYPE",get_MAX_FRAGMENT_UNIFORM_VECTORS:"get_MAX_FRAGMENT_UNIFORM_VECTORS",get_MAX_TEXTURE_IMAGE_UNITS:"get_MAX_TEXTURE_IMAGE_UNITS",get_MAX_VERTEX_TEXTURE_IMAGE_UNITS:"get_MAX_VERTEX_TEXTURE_IMAGE_UNITS",get_MAX_COMBINED_TEXTURE_IMAGE_UNITS:"get_MAX_COMBINED_TEXTURE_IMAGE_UNITS",get_MAX_VARYING_VECTORS:"get_MAX_VARYING_VECTORS",get_MAX_VERTEX_UNIFORM_VECTORS:"get_MAX_VERTEX_UNIFORM_VECTORS",get_MAX_VERTEX_ATTRIBS:"get_MAX_VERTEX_ATTRIBS",get_VERTEX_SHADER:"get_VERTEX_SHADER",get_FRAGMENT_SHADER:"get_FRAGMENT_SHADER",get_UNSIGNED_SHORT_5_6_5:"get_UNSIGNED_SHORT_5_6_5",get_UNSIGNED_SHORT_5_5_5_1:"get_UNSIGNED_SHORT_5_5_5_1",get_UNSIGNED_SHORT_4_4_4_4:"get_UNSIGNED_SHORT_4_4_4_4",get_LUMINANCE_ALPHA:"get_LUMINANCE_ALPHA",get_LUMINANCE:"get_LUMINANCE",get_RGBA:"get_RGBA",get_RGB:"get_RGB",get_ALPHA:"get_ALPHA",get_DEPTH_COMPONENT:"get_DEPTH_COMPONENT",get_FLOAT:"get_FLOAT",get_UNSIGNED_INT:"get_UNSIGNED_INT",get_INT:"get_INT",get_UNSIGNED_SHORT:"get_UNSIGNED_SHORT",get_SHORT:"get_SHORT",get_UNSIGNED_BYTE:"get_UNSIGNED_BYTE",get_BYTE:"get_BYTE",get_GENERATE_MIPMAP_HINT:"get_GENERATE_MIPMAP_HINT",get_NICEST:"get_NICEST",get_FASTEST:"get_FASTEST",get_DONT_CARE:"get_DONT_CARE",get_COMPRESSED_TEXTURE_FORMATS:"get_COMPRESSED_TEXTURE_FORMATS",get_SAMPLE_COVERAGE_INVERT:"get_SAMPLE_COVERAGE_INVERT",get_SAMPLE_COVERAGE_VALUE:"get_SAMPLE_COVERAGE_VALUE",get_SAMPLES:"get_SAMPLES",get_SAMPLE_BUFFERS:"get_SAMPLE_BUFFERS",get_TEXTURE_BINDING_2D:"get_TEXTURE_BINDING_2D",get_POLYGON_OFFSET_FACTOR:"get_POLYGON_OFFSET_FACTOR",get_POLYGON_OFFSET_UNITS:"get_POLYGON_OFFSET_UNITS",get_STENCIL_BITS:"get_STENCIL_BITS",get_DEPTH_BITS:"get_DEPTH_BITS",get_ALPHA_BITS:"get_ALPHA_BITS",get_BLUE_BITS:"get_BLUE_BITS",get_GREEN_BITS:"get_GREEN_BITS",get_RED_BITS:"get_RED_BITS",get_SUBPIXEL_BITS:"get_SUBPIXEL_BITS",get_MAX_VIEWPORT_DIMS:"get_MAX_VIEWPORT_DIMS",get_MAX_TEXTURE_SIZE:"get_MAX_TEXTURE_SIZE",get_PACK_ALIGNMENT:"get_PACK_ALIGNMENT",get_UNPACK_ALIGNMENT:"get_UNPACK_ALIGNMENT",get_COLOR_WRITEMASK:"get_COLOR_WRITEMASK",get_COLOR_CLEAR_VALUE:"get_COLOR_CLEAR_VALUE",get_SCISSOR_BOX:"get_SCISSOR_BOX",get_VIEWPORT:"get_VIEWPORT",get_STENCIL_BACK_WRITEMASK:"get_STENCIL_BACK_WRITEMASK",get_STENCIL_BACK_VALUE_MASK:"get_STENCIL_BACK_VALUE_MASK",get_STENCIL_BACK_REF:"get_STENCIL_BACK_REF",get_STENCIL_BACK_PASS_DEPTH_PASS:"get_STENCIL_BACK_PASS_DEPTH_PASS",get_STENCIL_BACK_PASS_DEPTH_FAIL:"get_STENCIL_BACK_PASS_DEPTH_FAIL",get_STENCIL_BACK_FAIL:"get_STENCIL_BACK_FAIL",get_STENCIL_BACK_FUNC:"get_STENCIL_BACK_FUNC",get_STENCIL_WRITEMASK:"get_STENCIL_WRITEMASK",get_STENCIL_VALUE_MASK:"get_STENCIL_VALUE_MASK",get_STENCIL_REF:"get_STENCIL_REF",get_STENCIL_PASS_DEPTH_PASS:"get_STENCIL_PASS_DEPTH_PASS",get_STENCIL_PASS_DEPTH_FAIL:"get_STENCIL_PASS_DEPTH_FAIL",get_STENCIL_FAIL:"get_STENCIL_FAIL",get_STENCIL_FUNC:"get_STENCIL_FUNC",get_STENCIL_CLEAR_VALUE:"get_STENCIL_CLEAR_VALUE",get_DEPTH_FUNC:"get_DEPTH_FUNC",get_DEPTH_CLEAR_VALUE:"get_DEPTH_CLEAR_VALUE",get_DEPTH_WRITEMASK:"get_DEPTH_WRITEMASK",get_DEPTH_RANGE:"get_DEPTH_RANGE",get_FRONT_FACE:"get_FRONT_FACE",get_CULL_FACE_MODE:"get_CULL_FACE_MODE",get_ALIASED_LINE_WIDTH_RANGE:"get_ALIASED_LINE_WIDTH_RANGE",get_ALIASED_POINT_SIZE_RANGE:"get_ALIASED_POINT_SIZE_RANGE",get_LINE_WIDTH:"get_LINE_WIDTH",get_CCW:"get_CCW",get_CW:"get_CW",get_OUT_OF_MEMORY:"get_OUT_OF_MEMORY",get_INVALID_OPERATION:"get_INVALID_OPERATION",get_INVALID_VALUE:"get_INVALID_VALUE",get_INVALID_ENUM:"get_INVALID_ENUM",get_NO_ERROR:"get_NO_ERROR",get_SAMPLE_COVERAGE:"get_SAMPLE_COVERAGE",get_SAMPLE_ALPHA_TO_COVERAGE:"get_SAMPLE_ALPHA_TO_COVERAGE",get_POLYGON_OFFSET_FILL:"get_POLYGON_OFFSET_FILL",get_SCISSOR_TEST:"get_SCISSOR_TEST",get_DEPTH_TEST:"get_DEPTH_TEST",get_STENCIL_TEST:"get_STENCIL_TEST",get_DITHER:"get_DITHER",get_BLEND:"get_BLEND",get_CULL_FACE:"get_CULL_FACE",get_FRONT_AND_BACK:"get_FRONT_AND_BACK",get_BACK:"get_BACK",get_FRONT:"get_FRONT",get_CURRENT_VERTEX_ATTRIB:"get_CURRENT_VERTEX_ATTRIB",get_BUFFER_USAGE:"get_BUFFER_USAGE",get_BUFFER_SIZE:"get_BUFFER_SIZE",get_DYNAMIC_DRAW:"get_DYNAMIC_DRAW",get_STATIC_DRAW:"get_STATIC_DRAW",get_STREAM_DRAW:"get_STREAM_DRAW",get_ELEMENT_ARRAY_BUFFER_BINDING:"get_ELEMENT_ARRAY_BUFFER_BINDING",get_ARRAY_BUFFER_BINDING:"get_ARRAY_BUFFER_BINDING",get_ELEMENT_ARRAY_BUFFER:"get_ELEMENT_ARRAY_BUFFER",get_ARRAY_BUFFER:"get_ARRAY_BUFFER",get_BLEND_COLOR:"get_BLEND_COLOR",get_ONE_MINUS_CONSTANT_ALPHA:"get_ONE_MINUS_CONSTANT_ALPHA",get_CONSTANT_ALPHA:"get_CONSTANT_ALPHA",get_ONE_MINUS_CONSTANT_COLOR:"get_ONE_MINUS_CONSTANT_COLOR",get_CONSTANT_COLOR:"get_CONSTANT_COLOR",get_BLEND_SRC_ALPHA:"get_BLEND_SRC_ALPHA",get_BLEND_DST_ALPHA:"get_BLEND_DST_ALPHA",get_BLEND_SRC_RGB:"get_BLEND_SRC_RGB",get_BLEND_DST_RGB:"get_BLEND_DST_RGB",get_FUNC_REVERSE_SUBTRACT:"get_FUNC_REVERSE_SUBTRACT",get_FUNC_SUBTRACT:"get_FUNC_SUBTRACT",get_BLEND_EQUATION_ALPHA:"get_BLEND_EQUATION_ALPHA",get_BLEND_EQUATION_RGB:"get_BLEND_EQUATION_RGB",get_BLEND_EQUATION:"get_BLEND_EQUATION",get_FUNC_ADD:"get_FUNC_ADD",get_SRC_ALPHA_SATURATE:"get_SRC_ALPHA_SATURATE",get_ONE_MINUS_DST_COLOR:"get_ONE_MINUS_DST_COLOR",get_DST_COLOR:"get_DST_COLOR",get_ONE_MINUS_DST_ALPHA:"get_ONE_MINUS_DST_ALPHA",get_DST_ALPHA:"get_DST_ALPHA",get_ONE_MINUS_SRC_ALPHA:"get_ONE_MINUS_SRC_ALPHA",get_SRC_ALPHA:"get_SRC_ALPHA",get_ONE_MINUS_SRC_COLOR:"get_ONE_MINUS_SRC_COLOR",get_SRC_COLOR:"get_SRC_COLOR",get_ONE:"get_ONE",get_ZERO:"get_ZERO",get_TRIANGLE_FAN:"get_TRIANGLE_FAN",get_TRIANGLE_STRIP:"get_TRIANGLE_STRIP",get_TRIANGLES:"get_TRIANGLES",get_LINE_STRIP:"get_LINE_STRIP",get_LINE_LOOP:"get_LINE_LOOP",get_LINES:"get_LINES",get_POINTS:"get_POINTS",get_COLOR_BUFFER_BIT:"get_COLOR_BUFFER_BIT",get_STENCIL_BUFFER_BIT:"get_STENCIL_BUFFER_BIT",get_DEPTH_BUFFER_BIT:"get_DEPTH_BUFFER_BIT"};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_BUFFER_BIT = function(this1) {
	return this1.DEPTH_BUFFER_BIT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BUFFER_BIT = function(this1) {
	return this1.STENCIL_BUFFER_BIT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_BUFFER_BIT = function(this1) {
	return this1.COLOR_BUFFER_BIT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_POINTS = function(this1) {
	return this1.POINTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINES = function(this1) {
	return this1.LINES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINE_LOOP = function(this1) {
	return this1.LINE_LOOP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINE_STRIP = function(this1) {
	return this1.LINE_STRIP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRIANGLES = function(this1) {
	return this1.TRIANGLES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRIANGLE_STRIP = function(this1) {
	return this1.TRIANGLE_STRIP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRIANGLE_FAN = function(this1) {
	return this1.TRIANGLE_FAN;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ZERO = function(this1) {
	return this1.ZERO;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ONE = function(this1) {
	return this1.ONE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SRC_COLOR = function(this1) {
	return this1.SRC_COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ONE_MINUS_SRC_COLOR = function(this1) {
	return this1.ONE_MINUS_SRC_COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SRC_ALPHA = function(this1) {
	return this1.SRC_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ONE_MINUS_SRC_ALPHA = function(this1) {
	return this1.ONE_MINUS_SRC_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DST_ALPHA = function(this1) {
	return this1.DST_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ONE_MINUS_DST_ALPHA = function(this1) {
	return this1.ONE_MINUS_DST_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DST_COLOR = function(this1) {
	return this1.DST_COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ONE_MINUS_DST_COLOR = function(this1) {
	return this1.ONE_MINUS_DST_COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SRC_ALPHA_SATURATE = function(this1) {
	return this1.SRC_ALPHA_SATURATE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FUNC_ADD = function(this1) {
	return this1.FUNC_ADD;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_EQUATION = function(this1) {
	return this1.BLEND_EQUATION;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_EQUATION_RGB = function(this1) {
	return this1.BLEND_EQUATION_RGB;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_EQUATION_ALPHA = function(this1) {
	return this1.BLEND_EQUATION_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FUNC_SUBTRACT = function(this1) {
	return this1.FUNC_SUBTRACT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FUNC_REVERSE_SUBTRACT = function(this1) {
	return this1.FUNC_REVERSE_SUBTRACT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_DST_RGB = function(this1) {
	return this1.BLEND_DST_RGB;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_SRC_RGB = function(this1) {
	return this1.BLEND_SRC_RGB;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_DST_ALPHA = function(this1) {
	return this1.BLEND_DST_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_SRC_ALPHA = function(this1) {
	return this1.BLEND_SRC_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CONSTANT_COLOR = function(this1) {
	return this1.CONSTANT_COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ONE_MINUS_CONSTANT_COLOR = function(this1) {
	return this1.ONE_MINUS_CONSTANT_COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CONSTANT_ALPHA = function(this1) {
	return this1.CONSTANT_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ONE_MINUS_CONSTANT_ALPHA = function(this1) {
	return this1.ONE_MINUS_CONSTANT_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND_COLOR = function(this1) {
	return this1.BLEND_COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ARRAY_BUFFER = function(this1) {
	return this1.ARRAY_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ELEMENT_ARRAY_BUFFER = function(this1) {
	return this1.ELEMENT_ARRAY_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ARRAY_BUFFER_BINDING = function(this1) {
	return this1.ARRAY_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ELEMENT_ARRAY_BUFFER_BINDING = function(this1) {
	return this1.ELEMENT_ARRAY_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STREAM_DRAW = function(this1) {
	return this1.STREAM_DRAW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STATIC_DRAW = function(this1) {
	return this1.STATIC_DRAW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DYNAMIC_DRAW = function(this1) {
	return this1.DYNAMIC_DRAW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BUFFER_SIZE = function(this1) {
	return this1.BUFFER_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BUFFER_USAGE = function(this1) {
	return this1.BUFFER_USAGE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CURRENT_VERTEX_ATTRIB = function(this1) {
	return this1.CURRENT_VERTEX_ATTRIB;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRONT = function(this1) {
	return this1.FRONT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BACK = function(this1) {
	return this1.BACK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRONT_AND_BACK = function(this1) {
	return this1.FRONT_AND_BACK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CULL_FACE = function(this1) {
	return this1.CULL_FACE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLEND = function(this1) {
	return this1.BLEND;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DITHER = function(this1) {
	return this1.DITHER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_TEST = function(this1) {
	return this1.STENCIL_TEST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_TEST = function(this1) {
	return this1.DEPTH_TEST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SCISSOR_TEST = function(this1) {
	return this1.SCISSOR_TEST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_POLYGON_OFFSET_FILL = function(this1) {
	return this1.POLYGON_OFFSET_FILL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLE_ALPHA_TO_COVERAGE = function(this1) {
	return this1.SAMPLE_ALPHA_TO_COVERAGE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLE_COVERAGE = function(this1) {
	return this1.SAMPLE_COVERAGE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NO_ERROR = function(this1) {
	return this1.NO_ERROR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INVALID_ENUM = function(this1) {
	return this1.INVALID_ENUM;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INVALID_VALUE = function(this1) {
	return this1.INVALID_VALUE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INVALID_OPERATION = function(this1) {
	return this1.INVALID_OPERATION;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_OUT_OF_MEMORY = function(this1) {
	return this1.OUT_OF_MEMORY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CW = function(this1) {
	return this1.CW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CCW = function(this1) {
	return this1.CCW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINE_WIDTH = function(this1) {
	return this1.LINE_WIDTH;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ALIASED_POINT_SIZE_RANGE = function(this1) {
	return this1.ALIASED_POINT_SIZE_RANGE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ALIASED_LINE_WIDTH_RANGE = function(this1) {
	return this1.ALIASED_LINE_WIDTH_RANGE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CULL_FACE_MODE = function(this1) {
	return this1.CULL_FACE_MODE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRONT_FACE = function(this1) {
	return this1.FRONT_FACE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_RANGE = function(this1) {
	return this1.DEPTH_RANGE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_WRITEMASK = function(this1) {
	return this1.DEPTH_WRITEMASK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_CLEAR_VALUE = function(this1) {
	return this1.DEPTH_CLEAR_VALUE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_FUNC = function(this1) {
	return this1.DEPTH_FUNC;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_CLEAR_VALUE = function(this1) {
	return this1.STENCIL_CLEAR_VALUE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_FUNC = function(this1) {
	return this1.STENCIL_FUNC;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_FAIL = function(this1) {
	return this1.STENCIL_FAIL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_PASS_DEPTH_FAIL = function(this1) {
	return this1.STENCIL_PASS_DEPTH_FAIL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_PASS_DEPTH_PASS = function(this1) {
	return this1.STENCIL_PASS_DEPTH_PASS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_REF = function(this1) {
	return this1.STENCIL_REF;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_VALUE_MASK = function(this1) {
	return this1.STENCIL_VALUE_MASK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_WRITEMASK = function(this1) {
	return this1.STENCIL_WRITEMASK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BACK_FUNC = function(this1) {
	return this1.STENCIL_BACK_FUNC;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BACK_FAIL = function(this1) {
	return this1.STENCIL_BACK_FAIL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BACK_PASS_DEPTH_FAIL = function(this1) {
	return this1.STENCIL_BACK_PASS_DEPTH_FAIL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BACK_PASS_DEPTH_PASS = function(this1) {
	return this1.STENCIL_BACK_PASS_DEPTH_PASS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BACK_REF = function(this1) {
	return this1.STENCIL_BACK_REF;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BACK_VALUE_MASK = function(this1) {
	return this1.STENCIL_BACK_VALUE_MASK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BACK_WRITEMASK = function(this1) {
	return this1.STENCIL_BACK_WRITEMASK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VIEWPORT = function(this1) {
	return this1.VIEWPORT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SCISSOR_BOX = function(this1) {
	return this1.SCISSOR_BOX;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_CLEAR_VALUE = function(this1) {
	return this1.COLOR_CLEAR_VALUE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_WRITEMASK = function(this1) {
	return this1.COLOR_WRITEMASK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_ALIGNMENT = function(this1) {
	return this1.UNPACK_ALIGNMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PACK_ALIGNMENT = function(this1) {
	return this1.PACK_ALIGNMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_TEXTURE_SIZE = function(this1) {
	return this1.MAX_TEXTURE_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VIEWPORT_DIMS = function(this1) {
	return this1.MAX_VIEWPORT_DIMS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SUBPIXEL_BITS = function(this1) {
	return this1.SUBPIXEL_BITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RED_BITS = function(this1) {
	return this1.RED_BITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_GREEN_BITS = function(this1) {
	return this1.GREEN_BITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BLUE_BITS = function(this1) {
	return this1.BLUE_BITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ALPHA_BITS = function(this1) {
	return this1.ALPHA_BITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_BITS = function(this1) {
	return this1.DEPTH_BITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_BITS = function(this1) {
	return this1.STENCIL_BITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_POLYGON_OFFSET_UNITS = function(this1) {
	return this1.POLYGON_OFFSET_UNITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_POLYGON_OFFSET_FACTOR = function(this1) {
	return this1.POLYGON_OFFSET_FACTOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_BINDING_2D = function(this1) {
	return this1.TEXTURE_BINDING_2D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLE_BUFFERS = function(this1) {
	return this1.SAMPLE_BUFFERS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLES = function(this1) {
	return this1.SAMPLES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLE_COVERAGE_VALUE = function(this1) {
	return this1.SAMPLE_COVERAGE_VALUE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLE_COVERAGE_INVERT = function(this1) {
	return this1.SAMPLE_COVERAGE_INVERT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COMPRESSED_TEXTURE_FORMATS = function(this1) {
	return this1.COMPRESSED_TEXTURE_FORMATS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DONT_CARE = function(this1) {
	return this1.DONT_CARE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FASTEST = function(this1) {
	return this1.FASTEST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NICEST = function(this1) {
	return this1.NICEST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_GENERATE_MIPMAP_HINT = function(this1) {
	return this1.GENERATE_MIPMAP_HINT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BYTE = function(this1) {
	return this1.BYTE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_BYTE = function(this1) {
	return this1.UNSIGNED_BYTE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SHORT = function(this1) {
	return this1.SHORT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_SHORT = function(this1) {
	return this1.UNSIGNED_SHORT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT = function(this1) {
	return this1.INT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT = function(this1) {
	return this1.UNSIGNED_INT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT = function(this1) {
	return this1.FLOAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_COMPONENT = function(this1) {
	return this1.DEPTH_COMPONENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ALPHA = function(this1) {
	return this1.ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB = function(this1) {
	return this1.RGB;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA = function(this1) {
	return this1.RGBA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LUMINANCE = function(this1) {
	return this1.LUMINANCE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LUMINANCE_ALPHA = function(this1) {
	return this1.LUMINANCE_ALPHA;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_SHORT_4_4_4_4 = function(this1) {
	return this1.UNSIGNED_SHORT_4_4_4_4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_SHORT_5_5_5_1 = function(this1) {
	return this1.UNSIGNED_SHORT_5_5_5_1;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_SHORT_5_6_5 = function(this1) {
	return this1.UNSIGNED_SHORT_5_6_5;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAGMENT_SHADER = function(this1) {
	return this1.FRAGMENT_SHADER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_SHADER = function(this1) {
	return this1.VERTEX_SHADER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VERTEX_ATTRIBS = function(this1) {
	return this1.MAX_VERTEX_ATTRIBS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VERTEX_UNIFORM_VECTORS = function(this1) {
	return this1.MAX_VERTEX_UNIFORM_VECTORS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VARYING_VECTORS = function(this1) {
	return this1.MAX_VARYING_VECTORS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_COMBINED_TEXTURE_IMAGE_UNITS = function(this1) {
	return this1.MAX_COMBINED_TEXTURE_IMAGE_UNITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VERTEX_TEXTURE_IMAGE_UNITS = function(this1) {
	return this1.MAX_VERTEX_TEXTURE_IMAGE_UNITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_TEXTURE_IMAGE_UNITS = function(this1) {
	return this1.MAX_TEXTURE_IMAGE_UNITS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_FRAGMENT_UNIFORM_VECTORS = function(this1) {
	return this1.MAX_FRAGMENT_UNIFORM_VECTORS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SHADER_TYPE = function(this1) {
	return this1.SHADER_TYPE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DELETE_STATUS = function(this1) {
	return this1.DELETE_STATUS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINK_STATUS = function(this1) {
	return this1.LINK_STATUS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VALIDATE_STATUS = function(this1) {
	return this1.VALIDATE_STATUS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ATTACHED_SHADERS = function(this1) {
	return this1.ATTACHED_SHADERS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ACTIVE_UNIFORMS = function(this1) {
	return this1.ACTIVE_UNIFORMS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ACTIVE_ATTRIBUTES = function(this1) {
	return this1.ACTIVE_ATTRIBUTES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SHADING_LANGUAGE_VERSION = function(this1) {
	return this1.SHADING_LANGUAGE_VERSION;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CURRENT_PROGRAM = function(this1) {
	return this1.CURRENT_PROGRAM;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NEVER = function(this1) {
	return this1.NEVER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LESS = function(this1) {
	return this1.LESS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_EQUAL = function(this1) {
	return this1.EQUAL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LEQUAL = function(this1) {
	return this1.LEQUAL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_GREATER = function(this1) {
	return this1.GREATER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NOTEQUAL = function(this1) {
	return this1.NOTEQUAL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_GEQUAL = function(this1) {
	return this1.GEQUAL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ALWAYS = function(this1) {
	return this1.ALWAYS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_KEEP = function(this1) {
	return this1.KEEP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_REPLACE = function(this1) {
	return this1.REPLACE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INCR = function(this1) {
	return this1.INCR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DECR = function(this1) {
	return this1.DECR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INVERT = function(this1) {
	return this1.INVERT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INCR_WRAP = function(this1) {
	return this1.INCR_WRAP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DECR_WRAP = function(this1) {
	return this1.DECR_WRAP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VENDOR = function(this1) {
	return this1.VENDOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERER = function(this1) {
	return this1.RENDERER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERSION = function(this1) {
	return this1.VERSION;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NEAREST = function(this1) {
	return this1.NEAREST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINEAR = function(this1) {
	return this1.LINEAR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NEAREST_MIPMAP_NEAREST = function(this1) {
	return this1.NEAREST_MIPMAP_NEAREST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINEAR_MIPMAP_NEAREST = function(this1) {
	return this1.LINEAR_MIPMAP_NEAREST;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NEAREST_MIPMAP_LINEAR = function(this1) {
	return this1.NEAREST_MIPMAP_LINEAR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LINEAR_MIPMAP_LINEAR = function(this1) {
	return this1.LINEAR_MIPMAP_LINEAR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_MAG_FILTER = function(this1) {
	return this1.TEXTURE_MAG_FILTER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_MIN_FILTER = function(this1) {
	return this1.TEXTURE_MIN_FILTER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_WRAP_S = function(this1) {
	return this1.TEXTURE_WRAP_S;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_WRAP_T = function(this1) {
	return this1.TEXTURE_WRAP_T;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_2D = function(this1) {
	return this1.TEXTURE_2D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE = function(this1) {
	return this1.TEXTURE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_CUBE_MAP = function(this1) {
	return this1.TEXTURE_CUBE_MAP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_BINDING_CUBE_MAP = function(this1) {
	return this1.TEXTURE_BINDING_CUBE_MAP;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_CUBE_MAP_POSITIVE_X = function(this1) {
	return this1.TEXTURE_CUBE_MAP_POSITIVE_X;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_CUBE_MAP_NEGATIVE_X = function(this1) {
	return this1.TEXTURE_CUBE_MAP_NEGATIVE_X;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_CUBE_MAP_POSITIVE_Y = function(this1) {
	return this1.TEXTURE_CUBE_MAP_POSITIVE_Y;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_CUBE_MAP_NEGATIVE_Y = function(this1) {
	return this1.TEXTURE_CUBE_MAP_NEGATIVE_Y;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_CUBE_MAP_POSITIVE_Z = function(this1) {
	return this1.TEXTURE_CUBE_MAP_POSITIVE_Z;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_CUBE_MAP_NEGATIVE_Z = function(this1) {
	return this1.TEXTURE_CUBE_MAP_NEGATIVE_Z;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_CUBE_MAP_TEXTURE_SIZE = function(this1) {
	return this1.MAX_CUBE_MAP_TEXTURE_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE0 = function(this1) {
	return this1.TEXTURE0;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE1 = function(this1) {
	return this1.TEXTURE1;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE2 = function(this1) {
	return this1.TEXTURE2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE3 = function(this1) {
	return this1.TEXTURE3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE4 = function(this1) {
	return this1.TEXTURE4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE5 = function(this1) {
	return this1.TEXTURE5;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE6 = function(this1) {
	return this1.TEXTURE6;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE7 = function(this1) {
	return this1.TEXTURE7;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE8 = function(this1) {
	return this1.TEXTURE8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE9 = function(this1) {
	return this1.TEXTURE9;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE10 = function(this1) {
	return this1.TEXTURE10;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE11 = function(this1) {
	return this1.TEXTURE11;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE12 = function(this1) {
	return this1.TEXTURE12;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE13 = function(this1) {
	return this1.TEXTURE13;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE14 = function(this1) {
	return this1.TEXTURE14;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE15 = function(this1) {
	return this1.TEXTURE15;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE16 = function(this1) {
	return this1.TEXTURE16;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE17 = function(this1) {
	return this1.TEXTURE17;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE18 = function(this1) {
	return this1.TEXTURE18;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE19 = function(this1) {
	return this1.TEXTURE19;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE20 = function(this1) {
	return this1.TEXTURE20;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE21 = function(this1) {
	return this1.TEXTURE21;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE22 = function(this1) {
	return this1.TEXTURE22;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE23 = function(this1) {
	return this1.TEXTURE23;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE24 = function(this1) {
	return this1.TEXTURE24;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE25 = function(this1) {
	return this1.TEXTURE25;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE26 = function(this1) {
	return this1.TEXTURE26;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE27 = function(this1) {
	return this1.TEXTURE27;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE28 = function(this1) {
	return this1.TEXTURE28;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE29 = function(this1) {
	return this1.TEXTURE29;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE30 = function(this1) {
	return this1.TEXTURE30;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE31 = function(this1) {
	return this1.TEXTURE31;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ACTIVE_TEXTURE = function(this1) {
	return this1.ACTIVE_TEXTURE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_REPEAT = function(this1) {
	return this1.REPEAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CLAMP_TO_EDGE = function(this1) {
	return this1.CLAMP_TO_EDGE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MIRRORED_REPEAT = function(this1) {
	return this1.MIRRORED_REPEAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_VEC2 = function(this1) {
	return this1.FLOAT_VEC2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_VEC3 = function(this1) {
	return this1.FLOAT_VEC3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_VEC4 = function(this1) {
	return this1.FLOAT_VEC4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_VEC2 = function(this1) {
	return this1.INT_VEC2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_VEC3 = function(this1) {
	return this1.INT_VEC3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_VEC4 = function(this1) {
	return this1.INT_VEC4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BOOL = function(this1) {
	return this1.BOOL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BOOL_VEC2 = function(this1) {
	return this1.BOOL_VEC2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BOOL_VEC3 = function(this1) {
	return this1.BOOL_VEC3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BOOL_VEC4 = function(this1) {
	return this1.BOOL_VEC4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT2 = function(this1) {
	return this1.FLOAT_MAT2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT3 = function(this1) {
	return this1.FLOAT_MAT3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT4 = function(this1) {
	return this1.FLOAT_MAT4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_2D = function(this1) {
	return this1.SAMPLER_2D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_CUBE = function(this1) {
	return this1.SAMPLER_CUBE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_ENABLED = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_ENABLED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_SIZE = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_STRIDE = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_STRIDE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_TYPE = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_TYPE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_NORMALIZED = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_NORMALIZED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_POINTER = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_POINTER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COMPILE_STATUS = function(this1) {
	return this1.COMPILE_STATUS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LOW_FLOAT = function(this1) {
	return this1.LOW_FLOAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MEDIUM_FLOAT = function(this1) {
	return this1.MEDIUM_FLOAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_HIGH_FLOAT = function(this1) {
	return this1.HIGH_FLOAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_LOW_INT = function(this1) {
	return this1.LOW_INT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MEDIUM_INT = function(this1) {
	return this1.MEDIUM_INT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_HIGH_INT = function(this1) {
	return this1.HIGH_INT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER = function(this1) {
	return this1.FRAMEBUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER = function(this1) {
	return this1.RENDERBUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA4 = function(this1) {
	return this1.RGBA4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB5_A1 = function(this1) {
	return this1.RGB5_A1;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB565 = function(this1) {
	return this1.RGB565;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_COMPONENT16 = function(this1) {
	return this1.DEPTH_COMPONENT16;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_INDEX = function(this1) {
	return this1.STENCIL_INDEX;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_INDEX8 = function(this1) {
	return this1.STENCIL_INDEX8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_STENCIL = function(this1) {
	return this1.DEPTH_STENCIL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_WIDTH = function(this1) {
	return this1.RENDERBUFFER_WIDTH;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_HEIGHT = function(this1) {
	return this1.RENDERBUFFER_HEIGHT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_INTERNAL_FORMAT = function(this1) {
	return this1.RENDERBUFFER_INTERNAL_FORMAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_RED_SIZE = function(this1) {
	return this1.RENDERBUFFER_RED_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_GREEN_SIZE = function(this1) {
	return this1.RENDERBUFFER_GREEN_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_BLUE_SIZE = function(this1) {
	return this1.RENDERBUFFER_BLUE_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_ALPHA_SIZE = function(this1) {
	return this1.RENDERBUFFER_ALPHA_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_DEPTH_SIZE = function(this1) {
	return this1.RENDERBUFFER_DEPTH_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_STENCIL_SIZE = function(this1) {
	return this1.RENDERBUFFER_STENCIL_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT0 = function(this1) {
	return this1.COLOR_ATTACHMENT0;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_ATTACHMENT = function(this1) {
	return this1.DEPTH_ATTACHMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL_ATTACHMENT = function(this1) {
	return this1.STENCIL_ATTACHMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_STENCIL_ATTACHMENT = function(this1) {
	return this1.DEPTH_STENCIL_ATTACHMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_NONE = function(this1) {
	return this1.NONE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_COMPLETE = function(this1) {
	return this1.FRAMEBUFFER_COMPLETE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_DIMENSIONS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_UNSUPPORTED = function(this1) {
	return this1.FRAMEBUFFER_UNSUPPORTED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_BINDING = function(this1) {
	return this1.FRAMEBUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_BINDING = function(this1) {
	return this1.RENDERBUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_RENDERBUFFER_SIZE = function(this1) {
	return this1.MAX_RENDERBUFFER_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INVALID_FRAMEBUFFER_OPERATION = function(this1) {
	return this1.INVALID_FRAMEBUFFER_OPERATION;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_FLIP_Y_WEBGL = function(this1) {
	return this1.UNPACK_FLIP_Y_WEBGL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_PREMULTIPLY_ALPHA_WEBGL = function(this1) {
	return this1.UNPACK_PREMULTIPLY_ALPHA_WEBGL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CONTEXT_LOST_WEBGL = function(this1) {
	return this1.CONTEXT_LOST_WEBGL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_COLORSPACE_CONVERSION_WEBGL = function(this1) {
	return this1.UNPACK_COLORSPACE_CONVERSION_WEBGL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_BROWSER_DEFAULT_WEBGL = function(this1) {
	return this1.BROWSER_DEFAULT_WEBGL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_type = function(this1) {
	return this1.type;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_version = function(this1) {
	return this1.version;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_READ_BUFFER = function(this1) {
	return this1.READ_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_ROW_LENGTH = function(this1) {
	return this1.UNPACK_ROW_LENGTH;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_SKIP_ROWS = function(this1) {
	return this1.UNPACK_SKIP_ROWS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_SKIP_PIXELS = function(this1) {
	return this1.UNPACK_SKIP_PIXELS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PACK_ROW_LENGTH = function(this1) {
	return this1.PACK_ROW_LENGTH;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PACK_SKIP_ROWS = function(this1) {
	return this1.PACK_SKIP_ROWS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PACK_SKIP_PIXELS = function(this1) {
	return this1.PACK_SKIP_PIXELS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_BINDING_3D = function(this1) {
	return this1.TEXTURE_BINDING_3D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_SKIP_IMAGES = function(this1) {
	return this1.UNPACK_SKIP_IMAGES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNPACK_IMAGE_HEIGHT = function(this1) {
	return this1.UNPACK_IMAGE_HEIGHT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_3D_TEXTURE_SIZE = function(this1) {
	return this1.MAX_3D_TEXTURE_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_ELEMENTS_VERTICES = function(this1) {
	return this1.MAX_ELEMENTS_VERTICES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_ELEMENTS_INDICES = function(this1) {
	return this1.MAX_ELEMENTS_INDICES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_TEXTURE_LOD_BIAS = function(this1) {
	return this1.MAX_TEXTURE_LOD_BIAS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_FRAGMENT_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_FRAGMENT_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VERTEX_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_VERTEX_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_ARRAY_TEXTURE_LAYERS = function(this1) {
	return this1.MAX_ARRAY_TEXTURE_LAYERS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MIN_PROGRAM_TEXEL_OFFSET = function(this1) {
	return this1.MIN_PROGRAM_TEXEL_OFFSET;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_PROGRAM_TEXEL_OFFSET = function(this1) {
	return this1.MAX_PROGRAM_TEXEL_OFFSET;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VARYING_COMPONENTS = function(this1) {
	return this1.MAX_VARYING_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAGMENT_SHADER_DERIVATIVE_HINT = function(this1) {
	return this1.FRAGMENT_SHADER_DERIVATIVE_HINT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RASTERIZER_DISCARD = function(this1) {
	return this1.RASTERIZER_DISCARD;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ARRAY_BINDING = function(this1) {
	return this1.VERTEX_ARRAY_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VERTEX_OUTPUT_COMPONENTS = function(this1) {
	return this1.MAX_VERTEX_OUTPUT_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_FRAGMENT_INPUT_COMPONENTS = function(this1) {
	return this1.MAX_FRAGMENT_INPUT_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_SERVER_WAIT_TIMEOUT = function(this1) {
	return this1.MAX_SERVER_WAIT_TIMEOUT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_ELEMENT_INDEX = function(this1) {
	return this1.MAX_ELEMENT_INDEX;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RED = function(this1) {
	return this1.RED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB8 = function(this1) {
	return this1.RGB8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA8 = function(this1) {
	return this1.RGBA8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB10_A2 = function(this1) {
	return this1.RGB10_A2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_3D = function(this1) {
	return this1.TEXTURE_3D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_WRAP_R = function(this1) {
	return this1.TEXTURE_WRAP_R;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_MIN_LOD = function(this1) {
	return this1.TEXTURE_MIN_LOD;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_MAX_LOD = function(this1) {
	return this1.TEXTURE_MAX_LOD;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_BASE_LEVEL = function(this1) {
	return this1.TEXTURE_BASE_LEVEL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_MAX_LEVEL = function(this1) {
	return this1.TEXTURE_MAX_LEVEL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_COMPARE_MODE = function(this1) {
	return this1.TEXTURE_COMPARE_MODE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_COMPARE_FUNC = function(this1) {
	return this1.TEXTURE_COMPARE_FUNC;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SRGB = function(this1) {
	return this1.SRGB;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SRGB8 = function(this1) {
	return this1.SRGB8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SRGB8_ALPHA8 = function(this1) {
	return this1.SRGB8_ALPHA8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COMPARE_REF_TO_TEXTURE = function(this1) {
	return this1.COMPARE_REF_TO_TEXTURE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA32F = function(this1) {
	return this1.RGBA32F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB32F = function(this1) {
	return this1.RGB32F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA16F = function(this1) {
	return this1.RGBA16F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB16F = function(this1) {
	return this1.RGB16F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_2D_ARRAY = function(this1) {
	return this1.TEXTURE_2D_ARRAY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_BINDING_2D_ARRAY = function(this1) {
	return this1.TEXTURE_BINDING_2D_ARRAY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R11F_G11F_B10F = function(this1) {
	return this1.R11F_G11F_B10F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB9_E5 = function(this1) {
	return this1.RGB9_E5;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA32UI = function(this1) {
	return this1.RGBA32UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB32UI = function(this1) {
	return this1.RGB32UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA16UI = function(this1) {
	return this1.RGBA16UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB16UI = function(this1) {
	return this1.RGB16UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA8UI = function(this1) {
	return this1.RGBA8UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB8UI = function(this1) {
	return this1.RGB8UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA32I = function(this1) {
	return this1.RGBA32I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB32I = function(this1) {
	return this1.RGB32I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA16I = function(this1) {
	return this1.RGBA16I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB16I = function(this1) {
	return this1.RGB16I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA8I = function(this1) {
	return this1.RGBA8I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB8I = function(this1) {
	return this1.RGB8I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RED_INTEGER = function(this1) {
	return this1.RED_INTEGER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB_INTEGER = function(this1) {
	return this1.RGB_INTEGER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA_INTEGER = function(this1) {
	return this1.RGBA_INTEGER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R8 = function(this1) {
	return this1.R8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG8 = function(this1) {
	return this1.RG8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R16F = function(this1) {
	return this1.R16F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R32F = function(this1) {
	return this1.R32F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG16F = function(this1) {
	return this1.RG16F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG32F = function(this1) {
	return this1.RG32F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R8I = function(this1) {
	return this1.R8I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R8UI = function(this1) {
	return this1.R8UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R16I = function(this1) {
	return this1.R16I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R16UI = function(this1) {
	return this1.R16UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R32I = function(this1) {
	return this1.R32I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R32UI = function(this1) {
	return this1.R32UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG8I = function(this1) {
	return this1.RG8I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG8UI = function(this1) {
	return this1.RG8UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG16I = function(this1) {
	return this1.RG16I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG16UI = function(this1) {
	return this1.RG16UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG32I = function(this1) {
	return this1.RG32I;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG32UI = function(this1) {
	return this1.RG32UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_R8_SNORM = function(this1) {
	return this1.R8_SNORM;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG8_SNORM = function(this1) {
	return this1.RG8_SNORM;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB8_SNORM = function(this1) {
	return this1.RGB8_SNORM;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGBA8_SNORM = function(this1) {
	return this1.RGBA8_SNORM;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RGB10_A2UI = function(this1) {
	return this1.RGB10_A2UI;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_IMMUTABLE_FORMAT = function(this1) {
	return this1.TEXTURE_IMMUTABLE_FORMAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TEXTURE_IMMUTABLE_LEVELS = function(this1) {
	return this1.TEXTURE_IMMUTABLE_LEVELS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_2_10_10_10_REV = function(this1) {
	return this1.UNSIGNED_INT_2_10_10_10_REV;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_10F_11F_11F_REV = function(this1) {
	return this1.UNSIGNED_INT_10F_11F_11F_REV;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_5_9_9_9_REV = function(this1) {
	return this1.UNSIGNED_INT_5_9_9_9_REV;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_32_UNSIGNED_INT_24_8_REV = function(this1) {
	return this1.FLOAT_32_UNSIGNED_INT_24_8_REV;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_24_8 = function(this1) {
	return this1.UNSIGNED_INT_24_8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_HALF_FLOAT = function(this1) {
	return this1.HALF_FLOAT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG = function(this1) {
	return this1.RG;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RG_INTEGER = function(this1) {
	return this1.RG_INTEGER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_2_10_10_10_REV = function(this1) {
	return this1.INT_2_10_10_10_REV;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CURRENT_QUERY = function(this1) {
	return this1.CURRENT_QUERY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_QUERY_RESULT = function(this1) {
	return this1.QUERY_RESULT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_QUERY_RESULT_AVAILABLE = function(this1) {
	return this1.QUERY_RESULT_AVAILABLE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ANY_SAMPLES_PASSED = function(this1) {
	return this1.ANY_SAMPLES_PASSED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ANY_SAMPLES_PASSED_CONSERVATIVE = function(this1) {
	return this1.ANY_SAMPLES_PASSED_CONSERVATIVE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_DRAW_BUFFERS = function(this1) {
	return this1.MAX_DRAW_BUFFERS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER0 = function(this1) {
	return this1.DRAW_BUFFER0;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER1 = function(this1) {
	return this1.DRAW_BUFFER1;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER2 = function(this1) {
	return this1.DRAW_BUFFER2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER3 = function(this1) {
	return this1.DRAW_BUFFER3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER4 = function(this1) {
	return this1.DRAW_BUFFER4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER5 = function(this1) {
	return this1.DRAW_BUFFER5;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER6 = function(this1) {
	return this1.DRAW_BUFFER6;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER7 = function(this1) {
	return this1.DRAW_BUFFER7;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER8 = function(this1) {
	return this1.DRAW_BUFFER8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER9 = function(this1) {
	return this1.DRAW_BUFFER9;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER10 = function(this1) {
	return this1.DRAW_BUFFER10;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER11 = function(this1) {
	return this1.DRAW_BUFFER11;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER12 = function(this1) {
	return this1.DRAW_BUFFER12;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER13 = function(this1) {
	return this1.DRAW_BUFFER13;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER14 = function(this1) {
	return this1.DRAW_BUFFER14;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_BUFFER15 = function(this1) {
	return this1.DRAW_BUFFER15;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_COLOR_ATTACHMENTS = function(this1) {
	return this1.MAX_COLOR_ATTACHMENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT1 = function(this1) {
	return this1.COLOR_ATTACHMENT1;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT2 = function(this1) {
	return this1.COLOR_ATTACHMENT2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT3 = function(this1) {
	return this1.COLOR_ATTACHMENT3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT4 = function(this1) {
	return this1.COLOR_ATTACHMENT4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT5 = function(this1) {
	return this1.COLOR_ATTACHMENT5;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT6 = function(this1) {
	return this1.COLOR_ATTACHMENT6;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT7 = function(this1) {
	return this1.COLOR_ATTACHMENT7;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT8 = function(this1) {
	return this1.COLOR_ATTACHMENT8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT9 = function(this1) {
	return this1.COLOR_ATTACHMENT9;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT10 = function(this1) {
	return this1.COLOR_ATTACHMENT10;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT11 = function(this1) {
	return this1.COLOR_ATTACHMENT11;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT12 = function(this1) {
	return this1.COLOR_ATTACHMENT12;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT13 = function(this1) {
	return this1.COLOR_ATTACHMENT13;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT14 = function(this1) {
	return this1.COLOR_ATTACHMENT14;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR_ATTACHMENT15 = function(this1) {
	return this1.COLOR_ATTACHMENT15;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_3D = function(this1) {
	return this1.SAMPLER_3D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_2D_SHADOW = function(this1) {
	return this1.SAMPLER_2D_SHADOW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_2D_ARRAY = function(this1) {
	return this1.SAMPLER_2D_ARRAY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_2D_ARRAY_SHADOW = function(this1) {
	return this1.SAMPLER_2D_ARRAY_SHADOW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_CUBE_SHADOW = function(this1) {
	return this1.SAMPLER_CUBE_SHADOW;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_SAMPLER_2D = function(this1) {
	return this1.INT_SAMPLER_2D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_SAMPLER_3D = function(this1) {
	return this1.INT_SAMPLER_3D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_SAMPLER_CUBE = function(this1) {
	return this1.INT_SAMPLER_CUBE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INT_SAMPLER_2D_ARRAY = function(this1) {
	return this1.INT_SAMPLER_2D_ARRAY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_2D = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_2D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_3D = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_3D;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_CUBE = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_CUBE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_SAMPLER_2D_ARRAY = function(this1) {
	return this1.UNSIGNED_INT_SAMPLER_2D_ARRAY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_SAMPLES = function(this1) {
	return this1.MAX_SAMPLES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SAMPLER_BINDING = function(this1) {
	return this1.SAMPLER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PIXEL_PACK_BUFFER = function(this1) {
	return this1.PIXEL_PACK_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PIXEL_UNPACK_BUFFER = function(this1) {
	return this1.PIXEL_UNPACK_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PIXEL_PACK_BUFFER_BINDING = function(this1) {
	return this1.PIXEL_PACK_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_PIXEL_UNPACK_BUFFER_BINDING = function(this1) {
	return this1.PIXEL_UNPACK_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COPY_READ_BUFFER = function(this1) {
	return this1.COPY_READ_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COPY_WRITE_BUFFER = function(this1) {
	return this1.COPY_WRITE_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COPY_READ_BUFFER_BINDING = function(this1) {
	return this1.COPY_READ_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COPY_WRITE_BUFFER_BINDING = function(this1) {
	return this1.COPY_WRITE_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT2x3 = function(this1) {
	return this1.FLOAT_MAT2x3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT2x4 = function(this1) {
	return this1.FLOAT_MAT2x4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT3x2 = function(this1) {
	return this1.FLOAT_MAT3x2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT3x4 = function(this1) {
	return this1.FLOAT_MAT3x4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT4x2 = function(this1) {
	return this1.FLOAT_MAT4x2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FLOAT_MAT4x3 = function(this1) {
	return this1.FLOAT_MAT4x3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_VEC2 = function(this1) {
	return this1.UNSIGNED_INT_VEC2;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_VEC3 = function(this1) {
	return this1.UNSIGNED_INT_VEC3;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_INT_VEC4 = function(this1) {
	return this1.UNSIGNED_INT_VEC4;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNED_NORMALIZED = function(this1) {
	return this1.UNSIGNED_NORMALIZED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SIGNED_NORMALIZED = function(this1) {
	return this1.SIGNED_NORMALIZED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_INTEGER = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_INTEGER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_VERTEX_ATTRIB_ARRAY_DIVISOR = function(this1) {
	return this1.VERTEX_ATTRIB_ARRAY_DIVISOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_MODE = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_MODE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = function(this1) {
	return this1.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_VARYINGS = function(this1) {
	return this1.TRANSFORM_FEEDBACK_VARYINGS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_START = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_START;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_SIZE = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = function(this1) {
	return this1.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = function(this1) {
	return this1.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = function(this1) {
	return this1.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INTERLEAVED_ATTRIBS = function(this1) {
	return this1.INTERLEAVED_ATTRIBS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SEPARATE_ATTRIBS = function(this1) {
	return this1.SEPARATE_ATTRIBS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_BUFFER_BINDING = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK = function(this1) {
	return this1.TRANSFORM_FEEDBACK;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_PAUSED = function(this1) {
	return this1.TRANSFORM_FEEDBACK_PAUSED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_ACTIVE = function(this1) {
	return this1.TRANSFORM_FEEDBACK_ACTIVE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TRANSFORM_FEEDBACK_BINDING = function(this1) {
	return this1.TRANSFORM_FEEDBACK_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_RED_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_RED_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_DEFAULT = function(this1) {
	return this1.FRAMEBUFFER_DEFAULT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH24_STENCIL8 = function(this1) {
	return this1.DEPTH24_STENCIL8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_FRAMEBUFFER_BINDING = function(this1) {
	return this1.DRAW_FRAMEBUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_READ_FRAMEBUFFER = function(this1) {
	return this1.READ_FRAMEBUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DRAW_FRAMEBUFFER = function(this1) {
	return this1.DRAW_FRAMEBUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_READ_FRAMEBUFFER_BINDING = function(this1) {
	return this1.READ_FRAMEBUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_RENDERBUFFER_SAMPLES = function(this1) {
	return this1.RENDERBUFFER_SAMPLES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = function(this1) {
	return this1.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = function(this1) {
	return this1.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BUFFER = function(this1) {
	return this1.UNIFORM_BUFFER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BUFFER_BINDING = function(this1) {
	return this1.UNIFORM_BUFFER_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BUFFER_START = function(this1) {
	return this1.UNIFORM_BUFFER_START;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BUFFER_SIZE = function(this1) {
	return this1.UNIFORM_BUFFER_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_VERTEX_UNIFORM_BLOCKS = function(this1) {
	return this1.MAX_VERTEX_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_FRAGMENT_UNIFORM_BLOCKS = function(this1) {
	return this1.MAX_FRAGMENT_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_COMBINED_UNIFORM_BLOCKS = function(this1) {
	return this1.MAX_COMBINED_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_UNIFORM_BUFFER_BINDINGS = function(this1) {
	return this1.MAX_UNIFORM_BUFFER_BINDINGS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_UNIFORM_BLOCK_SIZE = function(this1) {
	return this1.MAX_UNIFORM_BLOCK_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = function(this1) {
	return this1.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BUFFER_OFFSET_ALIGNMENT = function(this1) {
	return this1.UNIFORM_BUFFER_OFFSET_ALIGNMENT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ACTIVE_UNIFORM_BLOCKS = function(this1) {
	return this1.ACTIVE_UNIFORM_BLOCKS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_TYPE = function(this1) {
	return this1.UNIFORM_TYPE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_SIZE = function(this1) {
	return this1.UNIFORM_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BLOCK_INDEX = function(this1) {
	return this1.UNIFORM_BLOCK_INDEX;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_OFFSET = function(this1) {
	return this1.UNIFORM_OFFSET;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_ARRAY_STRIDE = function(this1) {
	return this1.UNIFORM_ARRAY_STRIDE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_MATRIX_STRIDE = function(this1) {
	return this1.UNIFORM_MATRIX_STRIDE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_IS_ROW_MAJOR = function(this1) {
	return this1.UNIFORM_IS_ROW_MAJOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BLOCK_BINDING = function(this1) {
	return this1.UNIFORM_BLOCK_BINDING;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BLOCK_DATA_SIZE = function(this1) {
	return this1.UNIFORM_BLOCK_DATA_SIZE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BLOCK_ACTIVE_UNIFORMS = function(this1) {
	return this1.UNIFORM_BLOCK_ACTIVE_UNIFORMS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = function(this1) {
	return this1.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = function(this1) {
	return this1.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = function(this1) {
	return this1.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_OBJECT_TYPE = function(this1) {
	return this1.OBJECT_TYPE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SYNC_CONDITION = function(this1) {
	return this1.SYNC_CONDITION;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SYNC_STATUS = function(this1) {
	return this1.SYNC_STATUS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SYNC_FLAGS = function(this1) {
	return this1.SYNC_FLAGS;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SYNC_FENCE = function(this1) {
	return this1.SYNC_FENCE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SYNC_GPU_COMMANDS_COMPLETE = function(this1) {
	return this1.SYNC_GPU_COMMANDS_COMPLETE;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_UNSIGNALED = function(this1) {
	return this1.UNSIGNALED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SIGNALED = function(this1) {
	return this1.SIGNALED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_ALREADY_SIGNALED = function(this1) {
	return this1.ALREADY_SIGNALED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TIMEOUT_EXPIRED = function(this1) {
	return this1.TIMEOUT_EXPIRED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_CONDITION_SATISFIED = function(this1) {
	return this1.CONDITION_SATISFIED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_WAIT_FAILED = function(this1) {
	return this1.WAIT_FAILED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_SYNC_FLUSH_COMMANDS_BIT = function(this1) {
	return this1.SYNC_FLUSH_COMMANDS_BIT;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_COLOR = function(this1) {
	return this1.COLOR;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH = function(this1) {
	return this1.DEPTH;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STENCIL = function(this1) {
	return this1.STENCIL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MIN = function(this1) {
	return this1.MIN;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX = function(this1) {
	return this1.MAX;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_COMPONENT24 = function(this1) {
	return this1.DEPTH_COMPONENT24;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STREAM_READ = function(this1) {
	return this1.STREAM_READ;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STREAM_COPY = function(this1) {
	return this1.STREAM_COPY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STATIC_READ = function(this1) {
	return this1.STATIC_READ;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_STATIC_COPY = function(this1) {
	return this1.STATIC_COPY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DYNAMIC_READ = function(this1) {
	return this1.DYNAMIC_READ;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DYNAMIC_COPY = function(this1) {
	return this1.DYNAMIC_COPY;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH_COMPONENT32F = function(this1) {
	return this1.DEPTH_COMPONENT32F;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_DEPTH32F_STENCIL8 = function(this1) {
	return this1.DEPTH32F_STENCIL8;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_INVALID_INDEX = function(this1) {
	return this1.INVALID_INDEX;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_TIMEOUT_IGNORED = function(this1) {
	return this1.TIMEOUT_IGNORED;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.get_MAX_CLIENT_WAIT_TIMEOUT_WEBGL = function(this1) {
	return this1.MAX_CLIENT_WAIT_TIMEOUT_WEBGL;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.activeTexture = function(this1,texture) {
	this1.activeTexture(texture);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.attachShader = function(this1,program,shader) {
	this1.attachShader(program,shader);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.beginQuery = function(this1,target,query) {
	this1.beginQuery(target,query);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.beginTransformFeedback = function(this1,primitiveNode) {
	this1.beginTransformFeedback(primitiveNode);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindAttribLocation = function(this1,program,index,name) {
	this1.bindAttribLocation(program,index,name);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindBuffer = function(this1,target,buffer) {
	this1.bindBuffer(target,buffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindBufferBase = function(this1,target,index,buffer) {
	this1.bindBufferBase(target,index,buffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindBufferRange = function(this1,target,index,buffer,offset,size) {
	this1.bindBufferRange(target,index,buffer,offset,size);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindFramebuffer = function(this1,target,framebuffer) {
	this1.bindFramebuffer(target,framebuffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindRenderbuffer = function(this1,target,renderbuffer) {
	this1.bindRenderbuffer(target,renderbuffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindSampler = function(this1,unit,sampler) {
	this1.bindSampler(unit,sampler);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindTexture = function(this1,target,texture) {
	this1.bindTexture(target,texture);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindTransformFeedback = function(this1,target,transformFeedback) {
	this1.bindTransformFeedback(target,transformFeedback);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bindVertexArray = function(this1,vertexArray) {
	this1.bindVertexArray(vertexArray);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.blendColor = function(this1,red,green,blue,alpha) {
	this1.blendColor(red,green,blue,alpha);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.blendEquation = function(this1,mode) {
	this1.blendEquation(mode);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.blendEquationSeparate = function(this1,modeRGB,modeAlpha) {
	this1.blendEquationSeparate(modeRGB,modeAlpha);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.blendFunc = function(this1,sfactor,dfactor) {
	this1.blendFunc(sfactor,dfactor);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.blendFuncSeparate = function(this1,srcRGB,dstRGB,srcAlpha,dstAlpha) {
	this1.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.blitFramebuffer = function(this1,srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter) {
	this1.blitFramebuffer(srcX0,srcY0,srcX1,srcY1,dstX0,dstY0,dstX1,dstY1,mask,filter);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bufferData = function(this1,target,srcData,usage,srcOffset,length) {
	if(length == null) {
		length = 0;
	}
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var size = srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.bufferData(target,size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer),usage);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bufferSubData = function(this1,target,offset,srcData,srcOffset,length) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var size = length != null ? length : srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.bufferSubData(target,offset,size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.checkFramebufferStatus = function(this1,target) {
	return this1.checkFramebufferStatus(target);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clear = function(this1,mask) {
	this1.clear(mask);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clearBufferfi = function(this1,buffer,drawbuffer,depth,stencil) {
	this1.clearBufferfi(buffer,drawbuffer,depth,stencil);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clearBufferfv = function(this1,buffer,drawbuffer,values,srcOffset) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,values,null,srcOffset);
	this1.clearBufferfv(buffer,drawbuffer,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clearBufferiv = function(this1,buffer,drawbuffer,values,srcOffset) {
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,values,null,srcOffset);
	this1.clearBufferiv(buffer,drawbuffer,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clearBufferuiv = function(this1,buffer,drawbuffer,values,srcOffset) {
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,values,null,srcOffset);
	this1.clearBufferuiv(buffer,drawbuffer,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clearColor = function(this1,red,green,blue,alpha) {
	this1.clearColor(red,green,blue,alpha);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clearDepth = function(this1,depth) {
	this1.clearDepthf(depth);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clearStencil = function(this1,s) {
	this1.clearStencil(s);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.clientWaitSync = function(this1,sync,flags,timeout) {
	return this1.clientWaitSync(sync,flags,timeout);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.colorMask = function(this1,red,green,blue,alpha) {
	this1.colorMask(red,green,blue,alpha);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.compileShader = function(this1,shader) {
	this1.compileShader(shader);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.compressedTexImage2D = function(this1,target,level,internalformat,width,height,border,srcData,srcOffset,srcLengthOverride) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var imageSize = srcLengthOverride != null ? srcLengthOverride : srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.compressedTexImage2D(target,level,internalformat,width,height,border,imageSize,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.compressedTexImage3D = function(this1,target,level,internalformat,width,height,depth,border,srcData,srcOffset,srcLengthOverride) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var imageSize = srcLengthOverride != null ? srcLengthOverride : srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.compressedTexImage3D(target,level,internalformat,width,height,depth,border,imageSize,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.compressedTexSubImage2D = function(this1,target,level,xoffset,yoffset,width,height,format,srcData,srcOffset,srcLengthOverride) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var imageSize = srcLengthOverride != null ? srcLengthOverride : srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.compressedTexSubImage3D = function(this1,target,level,xoffset,yoffset,zoffset,width,height,depth,format,srcData,srcOffset,srcLengthOverride) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var imageSize = srcLengthOverride != null ? srcLengthOverride : srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.copyBufferSubData = function(this1,readTarget,writeTarget,readOffset,writeOffset,size) {
	this1.copyBufferSubData(readTarget,writeTarget,readOffset,writeOffset,size);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.copyTexImage2D = function(this1,target,level,internalformat,x,y,width,height,border) {
	this1.copyTexImage2D(target,level,internalformat,x,y,width,height,border);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.copyTexSubImage2D = function(this1,target,level,xoffset,yoffset,x,y,width,height) {
	this1.copyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.copyTexSubImage3D = function(this1,target,level,xoffset,yoffset,zoffset,x,y,width,height) {
	this1.copyTexSubImage3D(target,level,xoffset,yoffset,zoffset,x,y,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createBuffer = function(this1) {
	return this1.createBuffer();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createFramebuffer = function(this1) {
	return this1.createFramebuffer();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createProgram = function(this1) {
	return this1.createProgram();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createQuery = function(this1) {
	return this1.createQuery();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createRenderbuffer = function(this1) {
	return this1.createRenderbuffer();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createSampler = function(this1) {
	return this1.createSampler();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createShader = function(this1,type) {
	return this1.createShader(type);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createTexture = function(this1) {
	return this1.createTexture();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createTransformFeedback = function(this1) {
	return this1.createTransformFeedback();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.createVertexArray = function(this1) {
	return this1.createVertexArray();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.cullFace = function(this1,mode) {
	this1.cullFace(mode);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteBuffer = function(this1,buffer) {
	this1.deleteBuffer(buffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteFramebuffer = function(this1,framebuffer) {
	this1.deleteFramebuffer(framebuffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteProgram = function(this1,program) {
	this1.deleteProgram(program);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteQuery = function(this1,query) {
	this1.deleteQuery(query);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteRenderbuffer = function(this1,renderbuffer) {
	this1.deleteRenderbuffer(renderbuffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteSampler = function(this1,sampler) {
	this1.deleteSampler(sampler);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteShader = function(this1,shader) {
	this1.deleteShader(shader);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteSync = function(this1,sync) {
	this1.deleteSync(sync);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteTexture = function(this1,texture) {
	this1.deleteTexture(texture);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteTransformFeedback = function(this1,transformFeedback) {
	this1.deleteTransformFeedback(transformFeedback);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.deleteVertexArray = function(this1,vertexArray) {
	this1.deleteVertexArray(vertexArray);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.depthFunc = function(this1,func) {
	this1.depthFunc(func);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.depthMask = function(this1,flag) {
	this1.depthMask(flag);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.depthRange = function(this1,zNear,zFar) {
	this1.depthRangef(zNear,zFar);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.detachShader = function(this1,program,shader) {
	this1.detachShader(program,shader);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.disable = function(this1,cap) {
	this1.disable(cap);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.disableVertexAttribArray = function(this1,index) {
	this1.disableVertexAttribArray(index);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.drawArrays = function(this1,mode,first,count) {
	this1.drawArrays(mode,first,count);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.drawArraysInstanced = function(this1,mode,first,count,instanceCount) {
	this1.drawArraysInstanced(mode,first,count,instanceCount);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.drawBuffers = function(this1,buffers) {
	this1.drawBuffers(buffers);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.drawElements = function(this1,mode,count,type,offset) {
	this1.drawElements(mode,count,type,offset);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.drawElementsInstanced = function(this1,mode,count,type,offset,instanceCount) {
	this1.drawElementsInstanced(mode,count,type,offset,instanceCount);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.drawRangeElements = function(this1,mode,start,end,count,type,offset) {
	this1.drawRangeElements(mode,start,end,count,type,offset);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.enable = function(this1,cap) {
	this1.enable(cap);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.enableVertexAttribArray = function(this1,index) {
	this1.enableVertexAttribArray(index);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.endQuery = function(this1,target) {
	this1.endQuery(target);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.endTransformFeedback = function(this1) {
	this1.endTransformFeedback();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.fenceSync = function(this1,condition,flags) {
	return this1.fenceSync(condition,flags);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.finish = function(this1) {
	this1.finish();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.flush = function(this1) {
	this1.flush();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.framebufferRenderbuffer = function(this1,target,attachment,renderbuffertarget,renderbuffer) {
	this1.framebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.framebufferTexture2D = function(this1,target,attachment,textarget,texture,level) {
	this1.framebufferTexture2D(target,attachment,textarget,texture,level);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.framebufferTextureLayer = function(this1,target,attachment,texture,level,layer) {
	this1.framebufferTextureLayer(target,attachment,texture,level,layer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.frontFace = function(this1,mode) {
	this1.frontFace(mode);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.generateMipmap = function(this1,target) {
	this1.generateMipmap(target);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getActiveAttrib = function(this1,program,index) {
	return this1.getActiveAttrib(program,index);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getActiveUniform = function(this1,program,index) {
	return this1.getActiveUniform(program,index);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getActiveUniformBlockName = function(this1,program,uniformBlockIndex) {
	return this1.getActiveUniformBlockName(program,uniformBlockIndex);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getActiveUniformBlockParameter = function(this1,program,uniformBlockIndex,pname) {
	return this1.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getActiveUniforms = function(this1,program,uniformIndices,pname) {
	return this1.getActiveUniforms(program,uniformIndices,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getAttachedShaders = function(this1,program) {
	return this1.getAttachedShaders(program);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getAttribLocation = function(this1,program,name) {
	return this1.getAttribLocation(program,name);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getBufferParameter = function(this1,target,pname) {
	return this1.getBufferParameter(target,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getBufferSubData = function(this1,target,srcByteOffset,dstData,srcOffset,length) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var size = length != null ? length : dstData != null ? dstData.byteLength : 0;
	this1.getBufferSubData(target,lime_utils__$DataPointer_DataPointer_$Impl_$.__withOffset(srcByteOffset,srcOffset),size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBuffer(dstData));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getContextAttributes = function(this1) {
	return this1.getContextAttributes();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getError = function(this1) {
	return this1.getError();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getExtension = function(this1,name) {
	return this1.getExtension(name);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getFragDataLocation = function(this1,program,name) {
	return this1.getFragDataLocation(program,name);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getFramebufferAttachmentParameter = function(this1,target,attachment,pname) {
	return this1.getFramebufferAttachmentParameter(target,attachment,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getIndexedParameter = function(this1,target,index) {
	return this1.getIndexedParameter(target,index);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getInternalformatParameter = function(this1,target,internalformat,pname) {
	return this1.getInternalformatParameter(target,internalformat,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getParameter = function(this1,pname) {
	return this1.getParameter(pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getProgramInfoLog = function(this1,program) {
	return this1.getProgramInfoLog(program);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getProgramParameter = function(this1,program,pname) {
	return this1.getProgramParameter(program,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getQuery = function(this1,target,pname) {
	return this1.getQuery(target,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getQueryParameter = function(this1,query,pname) {
	return this1.getQueryParameter(query,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getRenderbufferParameter = function(this1,target,pname) {
	return this1.getRenderbufferParameter(target,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getSamplerParameter = function(this1,sampler,pname) {
	return this1.getSamplerParameter(sampler,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getShaderInfoLog = function(this1,shader) {
	return this1.getShaderInfoLog(shader);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getShaderParameter = function(this1,shader,pname) {
	return this1.getShaderParameter(shader,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getShaderPrecisionFormat = function(this1,shadertype,precisiontype) {
	return this1.getShaderPrecisionFormat(shadertype,precisiontype);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getShaderSource = function(this1,shader) {
	return this1.getShaderSource(shader);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getSupportedExtensions = function(this1) {
	return this1.getSupportedExtensions();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getSyncParameter = function(this1,sync,pname) {
	return this1.getSyncParameter(sync,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getTexParameter = function(this1,target,pname) {
	return this1.getTexParameter(target,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getTransformFeedbackVarying = function(this1,program,index) {
	return this1.getTransformFeedbackVarying(program,index);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getUniform = function(this1,program,location) {
	return this1.getUniform(program,location);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getUniformBlockIndex = function(this1,program,uniformBlockName) {
	return this1.getUniformBlockIndex(program,uniformBlockName);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getUniformIndices = function(this1,program,uniformNames) {
	return this1.getUniformIndices(program,uniformNames);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getUniformLocation = function(this1,program,name) {
	return this1.getUniformLocation(program,name);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getVertexAttrib = function(this1,index,pname) {
	return this1.getVertexAttrib(index,pname);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.getVertexAttribOffset = function(this1,index,pname) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(this1.getVertexAttribPointerv(index,pname));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.hint = function(this1,target,mode) {
	this1.hint(target,mode);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.invalidateFramebuffer = function(this1,target,attachments) {
	this1.invalidateFramebuffer(target,attachments);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.invalidateSubFramebuffer = function(this1,target,attachments,x,y,width,height) {
	this1.invalidateSubFramebuffer(target,attachments,x,y,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isBuffer = function(this1,buffer) {
	return this1.isBuffer(buffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isContextLost = function(this1) {
	return this1.isContextLost();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isEnabled = function(this1,cap) {
	return this1.isEnabled(cap);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isFramebuffer = function(this1,framebuffer) {
	return this1.isFramebuffer(framebuffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isProgram = function(this1,program) {
	return this1.isProgram(program);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isQuery = function(this1,query) {
	return this1.isQuery(query);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isRenderbuffer = function(this1,renderbuffer) {
	return this1.isRenderbuffer(renderbuffer);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isSampler = function(this1,sampler) {
	return this1.isSampler(sampler);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isShader = function(this1,shader) {
	return this1.isShader(shader);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isTexture = function(this1,texture) {
	return this1.isTexture(texture);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isTransformFeedback = function(this1,transformFeedback) {
	return this1.isTransformFeedback(transformFeedback);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.isVertexArray = function(this1,vertexArray) {
	return this1.isVertexArray(vertexArray);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.lineWidth = function(this1,width) {
	this1.lineWidth(width);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.linkProgram = function(this1,program) {
	this1.linkProgram(program);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.pauseTransformFeedback = function(this1) {
	this1.pauseTransformFeedback();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.pixelStorei = function(this1,pname,param) {
	this1.pixelStorei(pname,param);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.polygonOffset = function(this1,factor,units) {
	this1.polygonOffset(factor,units);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.readBuffer = function(this1,src) {
	this1.readBuffer(src);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.readPixels = function(this1,x,y,width,height,format,type,pixels,dstOffset) {
	if(dstOffset == null) {
		dstOffset = 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,pixels,null,dstOffset);
	this1.readPixels(x,y,width,height,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.renderbufferStorage = function(this1,target,internalformat,width,height) {
	this1.renderbufferStorage(target,internalformat,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.renderbufferStorageMultisample = function(this1,target,samples,internalformat,width,height) {
	this1.renderbufferStorageMultisample(target,samples,internalformat,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.resumeTransformFeedback = function(this1) {
	this1.resumeTransformFeedback();
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.sampleCoverage = function(this1,value,invert) {
	this1.sampleCoverage(value,invert);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.samplerParameterf = function(this1,sampler,pname,param) {
	this1.samplerParameterf(sampler,pname,param);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.samplerParameteri = function(this1,sampler,pname,param) {
	this1.samplerParameteri(sampler,pname,param);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.scissor = function(this1,x,y,width,height) {
	this1.scissor(x,y,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.shaderSource = function(this1,shader,source) {
	this1.shaderSource(shader,source);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.stencilFunc = function(this1,func,ref,mask) {
	this1.stencilFunc(func,ref,mask);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.stencilFuncSeparate = function(this1,face,func,ref,mask) {
	this1.stencilFuncSeparate(face,func,ref,mask);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.stencilMask = function(this1,mask) {
	this1.stencilMask(mask);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.stencilMaskSeparate = function(this1,face,mask) {
	this1.stencilMaskSeparate(face,mask);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.stencilOp = function(this1,fail,zfail,zpass) {
	this1.stencilOp(fail,zfail,zpass);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.stencilOpSeparate = function(this1,face,fail,zfail,zpass) {
	this1.stencilOpSeparate(face,fail,zfail,zpass);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texImage2D = function(this1,target,level,internalformat,width,height,border,format,type,srcData,srcOffset) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.texImage2D(target,level,internalformat,width,height,border,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texImage3D = function(this1,target,level,internalformat,width,height,depth,border,format,type,srcData,srcOffset) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.texImage3D(target,level,internalformat,width,height,depth,border,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texStorage2D = function(this1,target,level,internalformat,width,height) {
	this1.texStorage2D(target,level,internalformat,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texStorage3D = function(this1,target,level,internalformat,width,height,depth) {
	this1.texStorage3D(target,level,internalformat,width,height,depth);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texParameterf = function(this1,target,pname,param) {
	this1.texParameterf(target,pname,param);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texParameteri = function(this1,target,pname,param) {
	this1.texParameteri(target,pname,param);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texSubImage2D = function(this1,target,level,xoffset,yoffset,width,height,format,type,srcData,srcOffset) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.texSubImage3D = function(this1,target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,srcData,srcOffset) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.transformFeedbackVaryings = function(this1,program,varyings,bufferMode) {
	this1.transformFeedbackVaryings(program,varyings,bufferMode);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform1f = function(this1,location,v0) {
	this1.uniform1f(location,v0);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform1fv = function(this1,location,v) {
	this1.uniform1fv(location,v != null ? v.length : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform1i = function(this1,location,v0) {
	this1.uniform1i(location,v0);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform1iv = function(this1,location,v) {
	this1.uniform1iv(location,v != null ? v.length : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform1ui = function(this1,location,v0) {
	this1.uniform1ui(location,v0);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform1uiv = function(this1,location,v) {
	this1.uniform1uiv(location,v != null ? v.length : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform2f = function(this1,location,v0,v1) {
	this1.uniform2f(location,v0,v1);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform2fv = function(this1,location,v) {
	this1.uniform2fv(location,v != null ? v.length >> 1 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform2i = function(this1,location,v0,v1) {
	this1.uniform2i(location,v0,v1);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform2iv = function(this1,location,v) {
	this1.uniform2iv(location,v != null ? v.length >> 1 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform2ui = function(this1,location,v0,v1) {
	this1.uniform2ui(location,v0,v1);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform2uiv = function(this1,location,v) {
	this1.uniform2uiv(location,v != null ? v.length >> 1 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform3f = function(this1,location,v0,v1,v2) {
	this1.uniform3f(location,v0,v1,v2);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform3fv = function(this1,location,v) {
	this1.uniform3fv(location,v != null ? v.length / 3 | 0 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform3i = function(this1,location,v0,v1,v2) {
	this1.uniform3i(location,v0,v1,v2);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform3iv = function(this1,location,v) {
	this1.uniform3iv(location,v != null ? v.length / 3 | 0 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform3ui = function(this1,location,v0,v1,v2) {
	this1.uniform3ui(location,v0,v1,v2);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform3uiv = function(this1,location,v) {
	this1.uniform3uiv(location,v != null ? v.length / 3 | 0 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform4f = function(this1,location,v0,v1,v2,v3) {
	this1.uniform4f(location,v0,v1,v2,v3);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform4fv = function(this1,location,v) {
	this1.uniform4fv(location,v != null ? v.length >> 2 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform4i = function(this1,location,v0,v1,v2,v3) {
	this1.uniform4i(location,v0,v1,v2,v3);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform4iv = function(this1,location,v) {
	this1.uniform4iv(location,v != null ? v.length >> 2 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform4ui = function(this1,location,v0,v1,v2,v3) {
	this1.uniform4ui(location,v0,v1,v2,v3);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniform4uiv = function(this1,location,v) {
	this1.uniform4uiv(location,v != null ? v.length >> 2 : 0,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(v));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformBlockBinding = function(this1,program,uniformBlockIndex,uniformBlockBinding) {
	this1.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix2fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length >> 2;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix2fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix2x3fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length / 6 | 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix2x3fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix2x4fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length / 8 | 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix2x4fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix3fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length / 9 | 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix3fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix3x2fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length / 6 | 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix3x2fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix3x4fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length / 12 | 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix3x4fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix4fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length >> 4;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix4fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix4x2fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length / 8 | 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix4x2fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix4x3fv = function(this1,location,transpose,v,srcOffset,srcLength) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	var count = 0;
	if(srcLength != null) {
		count = srcLength;
	} else if(v != null) {
		count = v.length / 12 | 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,v,null,srcOffset);
	this1.uniformMatrix4x3fv(location,count,transpose,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.useProgram = function(this1,program) {
	this1.useProgram(program);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.validateProgram = function(this1,program) {
	this1.validateProgram(program);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib1f = function(this1,indx,x) {
	this1.vertexAttrib1f(indx,x);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib1fv = function(this1,indx,values) {
	this1.vertexAttrib1fv(indx,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(values));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib2f = function(this1,indx,x,y) {
	this1.vertexAttrib2f(indx,x,y);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib2fv = function(this1,indx,values) {
	this1.vertexAttrib2fv(indx,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(values));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib3f = function(this1,indx,x,y,z) {
	this1.vertexAttrib3f(indx,x,y,z);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib3fv = function(this1,indx,values) {
	this1.vertexAttrib3fv(indx,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(values));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib4f = function(this1,indx,x,y,z,w) {
	this1.vertexAttrib4f(indx,x,y,z,w);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttrib4fv = function(this1,indx,values) {
	this1.vertexAttrib4fv(indx,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(values));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttribDivisor = function(this1,index,divisor) {
	this1.vertexAttribDivisor(index,divisor);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttribI4i = function(this1,indx,x,y,z,w) {
	this1.vertexAttribI4i(indx,x,y,z,w);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttribI4iv = function(this1,indx,values) {
	this1.vertexAttribI4iv(indx,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(values));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttribI4ui = function(this1,indx,x,y,z,w) {
	this1.vertexAttribI4ui(indx,x,y,z,w);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttribI4uiv = function(this1,indx,values) {
	this1.vertexAttribI4uiv(indx,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(values));
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.vertexAttribPointer = function(this1,indx,size,type,normalized,stride,offset) {
	this1.vertexAttribPointer(indx,size,type,normalized,stride,offset);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.viewport = function(this1,x,y,width,height) {
	this1.viewport(x,y,width,height);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.waitSync = function(this1,sync,flags,timeout) {
	this1.waitSync(sync,flags,timeout);
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.fromGL = function(gl) {
	return null;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.fromGLES3Context = function(gl) {
	return gl;
};
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.toWebGLContext = function(gl) {
	return gl;
};
var lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$ = {};
$hxClasses["lime.graphics.opengl._WebGLContext.WebGLContext_Impl_"] = lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$;
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.__name__ = ["lime","graphics","opengl","_WebGLContext","WebGLContext_Impl_"];
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.bufferData = function(this1,target,srcData,usage) {
	lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.bufferData(this1,target,srcData,usage);
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.bufferSubData = function(this1,target,offset,srcData) {
	var size = srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,0);
	this1.bufferSubData(target,offset,size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.compressedTexImage2D = function(this1,target,level,internalformat,width,height,border,srcData) {
	lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.compressedTexImage2D(this1,target,level,internalformat,width,height,border,srcData);
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.compressedTexSubImage2D = function(this1,target,level,xoffset,yoffset,width,height,format,srcData) {
	var imageSize = srcData != null ? srcData.byteLength : 0;
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,0);
	this1.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.readPixels = function(this1,x,y,width,height,format,type,pixels) {
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,pixels,null,0);
	this1.readPixels(x,y,width,height,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.texImage2D = function(this1,target,level,internalformat,width,height,border,format,type,srcData) {
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,0);
	this1.texImage2D(target,level,internalformat,width,height,border,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.texSubImage2D = function(this1,target,level,xoffset,yoffset,width,height,format,type,srcData,srcOffset) {
	if(srcOffset == null) {
		srcOffset = 0;
	}
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer,null,srcData,null,srcOffset);
	this1.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer));
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.uniformMatrix2fv = function(this1,location,transpose,v) {
	lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix2fv(this1,location,transpose,v);
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.uniformMatrix3fv = function(this1,location,transpose,v) {
	lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix3fv(this1,location,transpose,v);
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.uniformMatrix4fv = function(this1,location,transpose,v) {
	lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.uniformMatrix4fv(this1,location,transpose,v);
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.fromGL = function(gl) {
	return null;
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.fromGLES2Context = function(gl) {
	return gl;
};
lime_graphics_opengl__$WebGLContext_WebGLContext_$Impl_$.fromGLES3Context = function(gl) {
	return gl;
};
var lime_graphics_utils_ImageCanvasUtil = function() { };
$hxClasses["lime.graphics.utils.ImageCanvasUtil"] = lime_graphics_utils_ImageCanvasUtil;
lime_graphics_utils_ImageCanvasUtil.__name__ = ["lime","graphics","utils","ImageCanvasUtil"];
lime_graphics_utils_ImageCanvasUtil.colorTransform = function(image,rect,colorMatrix) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	lime_graphics_utils_ImageDataUtil.colorTransform(image,rect,colorMatrix);
};
lime_graphics_utils_ImageCanvasUtil.convertToCanvas = function(image,clear) {
	if(clear == null) {
		clear = false;
	}
	var buffer = image.buffer;
	image.type = lime_graphics_ImageType.CANVAS;
};
lime_graphics_utils_ImageCanvasUtil.convertToData = function(image,clear) {
	if(clear == null) {
		clear = false;
	}
	var buffer = image.buffer;
	image.type = lime_graphics_ImageType.DATA;
};
lime_graphics_utils_ImageCanvasUtil.copyChannel = function(image,sourceImage,sourceRect,destPoint,sourceChannel,destChannel) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(sourceImage);
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	lime_graphics_utils_ImageDataUtil.copyChannel(image,sourceImage,sourceRect,destPoint,sourceChannel,destChannel);
};
lime_graphics_utils_ImageCanvasUtil.copyPixels = function(image,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha) {
	if(mergeAlpha == null) {
		mergeAlpha = false;
	}
	if(destPoint == null || destPoint.x >= image.width || destPoint.y >= image.height || sourceRect == null || sourceRect.width < 1 || sourceRect.height < 1) {
		return;
	}
	if(alphaImage != null && alphaImage.get_transparent()) {
		if(alphaPoint == null) {
			alphaPoint = new lime_math_Vector2();
		}
		var tempData = image.clone();
		tempData.copyChannel(alphaImage,new lime_math_Rectangle(alphaPoint.x,alphaPoint.y,sourceRect.width,sourceRect.height),new lime_math_Vector2(sourceRect.x,sourceRect.y),lime_graphics_ImageChannel.ALPHA,lime_graphics_ImageChannel.ALPHA);
		sourceImage = tempData;
	}
	lime_graphics_utils_ImageCanvasUtil.convertToCanvas(image,true);
	if(!mergeAlpha) {
		if(image.get_transparent() && sourceImage.get_transparent()) {
			image.buffer.__srcContext.clearRect(destPoint.x + image.offsetX,destPoint.y + image.offsetY,sourceRect.width + image.offsetX,sourceRect.height + image.offsetY);
		}
	}
	lime_graphics_utils_ImageCanvasUtil.convertToCanvas(sourceImage);
	if(sourceImage.buffer.get_src() != null) {
		image.buffer.__srcContext.globalCompositeOperation = "source-over";
		image.buffer.__srcContext.drawImage(sourceImage.buffer.get_src(),sourceRect.x + sourceImage.offsetX | 0,sourceRect.y + sourceImage.offsetY | 0,sourceRect.width | 0,sourceRect.height | 0,destPoint.x + image.offsetX | 0,destPoint.y + image.offsetY | 0,sourceRect.width | 0,sourceRect.height | 0);
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageCanvasUtil.createCanvas = function(image,width,height) {
};
lime_graphics_utils_ImageCanvasUtil.createImageData = function(image) {
};
lime_graphics_utils_ImageCanvasUtil.fillRect = function(image,rect,color,format) {
	lime_graphics_utils_ImageCanvasUtil.convertToCanvas(image);
	var r;
	var g;
	var b;
	var a;
	if(format == 1) {
		r = color >> 16 & 255;
		g = color >> 8 & 255;
		b = color & 255;
		if(image.get_transparent()) {
			a = color >> 24 & 255;
		} else {
			a = 255;
		}
	} else {
		r = color >> 24 & 255;
		g = color >> 16 & 255;
		b = color >> 8 & 255;
		if(image.get_transparent()) {
			a = color & 255;
		} else {
			a = 255;
		}
	}
	if(rect.x == 0 && rect.y == 0 && rect.width == image.width && rect.height == image.height) {
		if(image.get_transparent() && a == 0) {
			image.buffer.__srcCanvas.width = image.buffer.width;
			return;
		}
	}
	if(a < 255) {
		image.buffer.__srcContext.clearRect(rect.x + image.offsetX,rect.y + image.offsetY,rect.width + image.offsetX,rect.height + image.offsetY);
	}
	if(a > 0) {
		image.buffer.__srcContext.fillStyle = "rgba(" + r + ", " + g + ", " + b + ", " + a / 255 + ")";
		image.buffer.__srcContext.fillRect(rect.x + image.offsetX,rect.y + image.offsetY,rect.width + image.offsetX,rect.height + image.offsetY);
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageCanvasUtil.floodFill = function(image,x,y,color,format) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	lime_graphics_utils_ImageDataUtil.floodFill(image,x,y,color,format);
};
lime_graphics_utils_ImageCanvasUtil.getPixel = function(image,x,y,format) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	return lime_graphics_utils_ImageDataUtil.getPixel(image,x,y,format);
};
lime_graphics_utils_ImageCanvasUtil.getPixel32 = function(image,x,y,format) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	return lime_graphics_utils_ImageDataUtil.getPixel32(image,x,y,format);
};
lime_graphics_utils_ImageCanvasUtil.getPixels = function(image,rect,format) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	return lime_graphics_utils_ImageDataUtil.getPixels(image,rect,format);
};
lime_graphics_utils_ImageCanvasUtil.merge = function(image,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(sourceImage);
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	lime_graphics_utils_ImageDataUtil.merge(image,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
};
lime_graphics_utils_ImageCanvasUtil.resize = function(image,newWidth,newHeight) {
	var buffer = image.buffer;
	if(buffer.__srcCanvas == null) {
		lime_graphics_utils_ImageCanvasUtil.createCanvas(image,newWidth,newHeight);
		buffer.__srcContext.drawImage(buffer.get_src(),0,0,newWidth,newHeight);
	} else {
		lime_graphics_utils_ImageCanvasUtil.convertToCanvas(image,true);
		var sourceCanvas = buffer.__srcCanvas;
		buffer.__srcCanvas = null;
		lime_graphics_utils_ImageCanvasUtil.createCanvas(image,newWidth,newHeight);
		buffer.__srcContext.drawImage(sourceCanvas,0,0,newWidth,newHeight);
	}
	buffer.__srcImageData = null;
	buffer.data = null;
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageCanvasUtil.scroll = function(image,x,y) {
	if(x % image.width == 0 && y % image.height == 0) {
		return;
	}
	var copy = image.clone();
	lime_graphics_utils_ImageCanvasUtil.convertToCanvas(image,true);
	image.buffer.__srcContext.clearRect(x,y,image.width,image.height);
	image.buffer.__srcContext.drawImage(copy.get_src(),x,y);
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageCanvasUtil.setPixel = function(image,x,y,color,format) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	lime_graphics_utils_ImageDataUtil.setPixel(image,x,y,color,format);
};
lime_graphics_utils_ImageCanvasUtil.setPixel32 = function(image,x,y,color,format) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	lime_graphics_utils_ImageDataUtil.setPixel32(image,x,y,color,format);
};
lime_graphics_utils_ImageCanvasUtil.setPixels = function(image,rect,bytePointer,format,endian) {
	lime_graphics_utils_ImageCanvasUtil.convertToData(image);
	lime_graphics_utils_ImageDataUtil.setPixels(image,rect,bytePointer,format,endian);
};
lime_graphics_utils_ImageCanvasUtil.sync = function(image,clear) {
	if(image == null) {
		return;
	}
};
var lime_graphics_utils_ImageDataUtil = function() { };
$hxClasses["lime.graphics.utils.ImageDataUtil"] = lime_graphics_utils_ImageDataUtil;
lime_graphics_utils_ImageDataUtil.__name__ = ["lime","graphics","utils","ImageDataUtil"];
lime_graphics_utils_ImageDataUtil.colorTransform = function(image,rect,colorMatrix) {
	var data = image.buffer.data;
	if(data == null) {
		return;
	}
	var format = image.buffer.format;
	var premultiplied = image.buffer.premultiplied;
	var dataView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,rect);
	var alphaTable = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getAlphaTable(colorMatrix);
	var redTable = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getRedTable(colorMatrix);
	var greenTable = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getGreenTable(colorMatrix);
	var blueTable = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getBlueTable(colorMatrix);
	var row;
	var offset;
	var pixel;
	var _g1 = 0;
	var _g = dataView.height;
	while(_g1 < _g) {
		var y = _g1++;
		row = dataView.byteOffset + dataView.stride * y;
		var _g3 = 0;
		var _g2 = dataView.width;
		while(_g3 < _g2) {
			var x = _g3++;
			offset = row + x * 4;
			switch(format) {
			case 0:
				pixel = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
				break;
			case 1:
				pixel = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
				break;
			case 2:
				pixel = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
				break;
			}
			if(premultiplied) {
				if((pixel & 255) != 0 && (pixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (pixel & 255);
					pixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | pixel & 255 & 255;
				}
			}
			pixel = (redTable[pixel >>> 24 & 255] & 255) << 24 | (greenTable[pixel >>> 16 & 255] & 255) << 16 | (blueTable[pixel >>> 8 & 255] & 255) << 8 | alphaTable[pixel & 255] & 255;
			if(premultiplied) {
				if((pixel & 255) == 0) {
					if(pixel != 0) {
						pixel = 0;
					}
				} else if((pixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[pixel & 255];
					pixel = ((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | pixel & 255 & 255;
				}
			}
			switch(format) {
			case 0:
				data[offset] = pixel >>> 24 & 255;
				data[offset + 1] = pixel >>> 16 & 255;
				data[offset + 2] = pixel >>> 8 & 255;
				data[offset + 3] = pixel & 255;
				break;
			case 1:
				data[offset] = pixel & 255;
				data[offset + 1] = pixel >>> 24 & 255;
				data[offset + 2] = pixel >>> 16 & 255;
				data[offset + 3] = pixel >>> 8 & 255;
				break;
			case 2:
				data[offset] = pixel >>> 8 & 255;
				data[offset + 1] = pixel >>> 16 & 255;
				data[offset + 2] = pixel >>> 24 & 255;
				data[offset + 3] = pixel & 255;
				break;
			}
		}
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.copyChannel = function(image,sourceImage,sourceRect,destPoint,sourceChannel,destChannel) {
	var destIdx;
	switch(destChannel[1]) {
	case 0:
		destIdx = 0;
		break;
	case 1:
		destIdx = 1;
		break;
	case 2:
		destIdx = 2;
		break;
	case 3:
		destIdx = 3;
		break;
	}
	var srcIdx;
	switch(sourceChannel[1]) {
	case 0:
		srcIdx = 0;
		break;
	case 1:
		srcIdx = 1;
		break;
	case 2:
		srcIdx = 2;
		break;
	case 3:
		srcIdx = 3;
		break;
	}
	var srcData = sourceImage.buffer.data;
	var destData = image.buffer.data;
	if(srcData == null || destData == null) {
		return;
	}
	var srcView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(sourceImage,sourceRect);
	var destView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,new lime_math_Rectangle(destPoint.x,destPoint.y,srcView.width,srcView.height));
	var srcFormat = sourceImage.buffer.format;
	var destFormat = image.buffer.format;
	var srcPremultiplied = sourceImage.buffer.premultiplied;
	var destPremultiplied = image.buffer.premultiplied;
	var srcPosition;
	var destPosition;
	var srcPixel;
	var destPixel;
	var value = 0;
	var _g1 = 0;
	var _g = destView.height;
	while(_g1 < _g) {
		var y = _g1++;
		srcPosition = srcView.byteOffset + srcView.stride * y;
		destPosition = destView.byteOffset + destView.stride * y;
		var _g3 = 0;
		var _g2 = destView.width;
		while(_g3 < _g2) {
			var x = _g3++;
			switch(srcFormat) {
			case 0:
				srcPixel = (srcData[srcPosition] & 255) << 24 | (srcData[srcPosition + 1] & 255) << 16 | (srcData[srcPosition + 2] & 255) << 8 | srcData[srcPosition + 3] & 255;
				break;
			case 1:
				srcPixel = (srcData[srcPosition + 1] & 255) << 24 | (srcData[srcPosition + 2] & 255) << 16 | (srcData[srcPosition + 3] & 255) << 8 | srcData[srcPosition] & 255;
				break;
			case 2:
				srcPixel = (srcData[srcPosition + 2] & 255) << 24 | (srcData[srcPosition + 1] & 255) << 16 | (srcData[srcPosition] & 255) << 8 | srcData[srcPosition + 3] & 255;
				break;
			}
			if(srcPremultiplied) {
				if((srcPixel & 255) != 0 && (srcPixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (srcPixel & 255);
					srcPixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((srcPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((srcPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((srcPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | srcPixel & 255 & 255;
				}
			}
			switch(destFormat) {
			case 0:
				destPixel = (destData[destPosition] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition + 2] & 255) << 8 | destData[destPosition + 3] & 255;
				break;
			case 1:
				destPixel = (destData[destPosition + 1] & 255) << 24 | (destData[destPosition + 2] & 255) << 16 | (destData[destPosition + 3] & 255) << 8 | destData[destPosition] & 255;
				break;
			case 2:
				destPixel = (destData[destPosition + 2] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition] & 255) << 8 | destData[destPosition + 3] & 255;
				break;
			}
			if(destPremultiplied) {
				if((destPixel & 255) != 0 && (destPixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (destPixel & 255);
					destPixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | destPixel & 255 & 255;
				}
			}
			switch(srcIdx) {
			case 0:
				value = srcPixel >>> 24 & 255;
				break;
			case 1:
				value = srcPixel >>> 16 & 255;
				break;
			case 2:
				value = srcPixel >>> 8 & 255;
				break;
			case 3:
				value = srcPixel & 255;
				break;
			}
			switch(destIdx) {
			case 0:
				destPixel = (value & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
				break;
			case 1:
				destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (value & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
				break;
			case 2:
				destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (value & 255) << 8 | destPixel & 255 & 255;
				break;
			case 3:
				destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | value & 255;
				break;
			}
			if(destPremultiplied) {
				if((destPixel & 255) == 0) {
					if(destPixel != 0) {
						destPixel = 0;
					}
				} else if((destPixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[destPixel & 255];
					destPixel = ((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | destPixel & 255 & 255;
				}
			}
			switch(destFormat) {
			case 0:
				destData[destPosition] = destPixel >>> 24 & 255;
				destData[destPosition + 1] = destPixel >>> 16 & 255;
				destData[destPosition + 2] = destPixel >>> 8 & 255;
				destData[destPosition + 3] = destPixel & 255;
				break;
			case 1:
				destData[destPosition] = destPixel & 255;
				destData[destPosition + 1] = destPixel >>> 24 & 255;
				destData[destPosition + 2] = destPixel >>> 16 & 255;
				destData[destPosition + 3] = destPixel >>> 8 & 255;
				break;
			case 2:
				destData[destPosition] = destPixel >>> 8 & 255;
				destData[destPosition + 1] = destPixel >>> 16 & 255;
				destData[destPosition + 2] = destPixel >>> 24 & 255;
				destData[destPosition + 3] = destPixel & 255;
				break;
			}
			srcPosition += 4;
			destPosition += 4;
		}
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.copyPixels = function(image,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha) {
	if(mergeAlpha == null) {
		mergeAlpha = false;
	}
	if(image.width == sourceImage.width && image.height == sourceImage.height && sourceRect.width == sourceImage.width && sourceRect.height == sourceImage.height && sourceRect.x == 0 && sourceRect.y == 0 && destPoint.x == 0 && destPoint.y == 0 && alphaImage == null && alphaPoint == null && mergeAlpha == false && image.get_format() == sourceImage.get_format()) {
		image.buffer.data.set(sourceImage.buffer.data);
	} else {
		var sourceData = sourceImage.buffer.data;
		var destData = image.buffer.data;
		if(sourceData == null || destData == null) {
			return;
		}
		var sourceView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(sourceImage,sourceRect);
		var destRect = new lime_math_Rectangle(destPoint.x,destPoint.y,sourceView.width,sourceView.height);
		var destView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,destRect);
		var sourceFormat = sourceImage.buffer.format;
		var destFormat = image.buffer.format;
		var sourcePosition;
		var destPosition;
		var sourceAlpha;
		var destAlpha;
		var oneMinusSourceAlpha;
		var blendAlpha;
		var sourcePixel;
		var destPixel;
		var sourcePremultiplied = sourceImage.buffer.premultiplied;
		var destPremultiplied = image.buffer.premultiplied;
		var sourceBytesPerPixel = sourceImage.buffer.bitsPerPixel / 8 | 0;
		var destBytesPerPixel = image.buffer.bitsPerPixel / 8 | 0;
		var useAlphaImage = alphaImage != null && alphaImage.get_transparent();
		var blend = mergeAlpha || useAlphaImage && !image.get_transparent();
		if(!useAlphaImage) {
			if(blend) {
				var _g1 = 0;
				var _g = destView.height;
				while(_g1 < _g) {
					var y = _g1++;
					sourcePosition = sourceView.byteOffset + sourceView.stride * y;
					destPosition = destView.byteOffset + destView.stride * y;
					var _g3 = 0;
					var _g2 = destView.width;
					while(_g3 < _g2) {
						var x = _g3++;
						switch(sourceFormat) {
						case 0:
							sourcePixel = (sourceData[sourcePosition] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition + 2] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						case 1:
							sourcePixel = (sourceData[sourcePosition + 1] & 255) << 24 | (sourceData[sourcePosition + 2] & 255) << 16 | (sourceData[sourcePosition + 3] & 255) << 8 | sourceData[sourcePosition] & 255;
							break;
						case 2:
							sourcePixel = (sourceData[sourcePosition + 2] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						}
						if(sourcePremultiplied) {
							if((sourcePixel & 255) != 0 && (sourcePixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (sourcePixel & 255);
								sourcePixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | sourcePixel & 255 & 255;
							}
						}
						switch(destFormat) {
						case 0:
							destPixel = (destData[destPosition] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition + 2] & 255) << 8 | destData[destPosition + 3] & 255;
							break;
						case 1:
							destPixel = (destData[destPosition + 1] & 255) << 24 | (destData[destPosition + 2] & 255) << 16 | (destData[destPosition + 3] & 255) << 8 | destData[destPosition] & 255;
							break;
						case 2:
							destPixel = (destData[destPosition + 2] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition] & 255) << 8 | destData[destPosition + 3] & 255;
							break;
						}
						if(destPremultiplied) {
							if((destPixel & 255) != 0 && (destPixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (destPixel & 255);
								destPixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | destPixel & 255 & 255;
							}
						}
						sourceAlpha = (sourcePixel & 255) / 255.0;
						destAlpha = (destPixel & 255) / 255.0;
						oneMinusSourceAlpha = 1 - sourceAlpha;
						blendAlpha = sourceAlpha + destAlpha * oneMinusSourceAlpha;
						if(blendAlpha == 0) {
							destPixel = 0;
						} else {
							var value = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(((sourcePixel >>> 24 & 255) * sourceAlpha + (destPixel >>> 24 & 255) * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
							destPixel = (value & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
							var value1 = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(((sourcePixel >>> 16 & 255) * sourceAlpha + (destPixel >>> 16 & 255) * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
							destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (value1 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
							var value2 = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(((sourcePixel >>> 8 & 255) * sourceAlpha + (destPixel >>> 8 & 255) * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
							destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (value2 & 255) << 8 | destPixel & 255 & 255;
							var value3 = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(blendAlpha * 255.0)];
							destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | value3 & 255;
						}
						if(destPremultiplied) {
							if((destPixel & 255) == 0) {
								if(destPixel != 0) {
									destPixel = 0;
								}
							} else if((destPixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[destPixel & 255];
								destPixel = ((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | destPixel & 255 & 255;
							}
						}
						switch(destFormat) {
						case 0:
							destData[destPosition] = destPixel >>> 24 & 255;
							destData[destPosition + 1] = destPixel >>> 16 & 255;
							destData[destPosition + 2] = destPixel >>> 8 & 255;
							destData[destPosition + 3] = destPixel & 255;
							break;
						case 1:
							destData[destPosition] = destPixel & 255;
							destData[destPosition + 1] = destPixel >>> 24 & 255;
							destData[destPosition + 2] = destPixel >>> 16 & 255;
							destData[destPosition + 3] = destPixel >>> 8 & 255;
							break;
						case 2:
							destData[destPosition] = destPixel >>> 8 & 255;
							destData[destPosition + 1] = destPixel >>> 16 & 255;
							destData[destPosition + 2] = destPixel >>> 24 & 255;
							destData[destPosition + 3] = destPixel & 255;
							break;
						}
						sourcePosition += 4;
						destPosition += 4;
					}
				}
			} else if(sourceFormat == destFormat && sourcePremultiplied == destPremultiplied && sourceBytesPerPixel == destBytesPerPixel) {
				var _g11 = 0;
				var _g4 = destView.height;
				while(_g11 < _g4) {
					var y1 = _g11++;
					sourcePosition = sourceView.byteOffset + sourceView.stride * y1;
					destPosition = destView.byteOffset + destView.stride * y1;
					destData.set(sourceData.subarray(sourcePosition,sourcePosition + destView.width * destBytesPerPixel),destPosition);
				}
			} else {
				var _g12 = 0;
				var _g5 = destView.height;
				while(_g12 < _g5) {
					var y2 = _g12++;
					sourcePosition = sourceView.byteOffset + sourceView.stride * y2;
					destPosition = destView.byteOffset + destView.stride * y2;
					var _g31 = 0;
					var _g21 = destView.width;
					while(_g31 < _g21) {
						var x1 = _g31++;
						switch(sourceFormat) {
						case 0:
							sourcePixel = (sourceData[sourcePosition] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition + 2] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						case 1:
							sourcePixel = (sourceData[sourcePosition + 1] & 255) << 24 | (sourceData[sourcePosition + 2] & 255) << 16 | (sourceData[sourcePosition + 3] & 255) << 8 | sourceData[sourcePosition] & 255;
							break;
						case 2:
							sourcePixel = (sourceData[sourcePosition + 2] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						}
						if(sourcePremultiplied) {
							if((sourcePixel & 255) != 0 && (sourcePixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (sourcePixel & 255);
								sourcePixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | sourcePixel & 255 & 255;
							}
						}
						if(destPremultiplied) {
							if((sourcePixel & 255) == 0) {
								if(sourcePixel != 0) {
									sourcePixel = 0;
								}
							} else if((sourcePixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[sourcePixel & 255];
								sourcePixel = ((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | sourcePixel & 255 & 255;
							}
						}
						switch(destFormat) {
						case 0:
							destData[destPosition] = sourcePixel >>> 24 & 255;
							destData[destPosition + 1] = sourcePixel >>> 16 & 255;
							destData[destPosition + 2] = sourcePixel >>> 8 & 255;
							destData[destPosition + 3] = sourcePixel & 255;
							break;
						case 1:
							destData[destPosition] = sourcePixel & 255;
							destData[destPosition + 1] = sourcePixel >>> 24 & 255;
							destData[destPosition + 2] = sourcePixel >>> 16 & 255;
							destData[destPosition + 3] = sourcePixel >>> 8 & 255;
							break;
						case 2:
							destData[destPosition] = sourcePixel >>> 8 & 255;
							destData[destPosition + 1] = sourcePixel >>> 16 & 255;
							destData[destPosition + 2] = sourcePixel >>> 24 & 255;
							destData[destPosition + 3] = sourcePixel & 255;
							break;
						}
						sourcePosition += 4;
						destPosition += 4;
					}
				}
			}
		} else {
			if(alphaPoint == null) {
				alphaPoint = new lime_math_Vector2();
			}
			var alphaData = alphaImage.buffer.data;
			var alphaFormat = alphaImage.buffer.format;
			var alphaPosition;
			var alphaPixel;
			var alphaView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(alphaImage,new lime_math_Rectangle(alphaPoint.x,alphaPoint.y,alphaImage.width,alphaImage.height));
			alphaView.offset(sourceView.x,sourceView.y);
			destView.clip(destPoint.x | 0,destPoint.y | 0,alphaView.width,alphaView.height);
			if(blend) {
				var _g13 = 0;
				var _g6 = destView.height;
				while(_g13 < _g6) {
					var y3 = _g13++;
					sourcePosition = sourceView.byteOffset + sourceView.stride * y3;
					destPosition = destView.byteOffset + destView.stride * y3;
					alphaPosition = alphaView.byteOffset + alphaView.stride * y3;
					var _g32 = 0;
					var _g22 = destView.width;
					while(_g32 < _g22) {
						var x2 = _g32++;
						switch(sourceFormat) {
						case 0:
							sourcePixel = (sourceData[sourcePosition] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition + 2] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						case 1:
							sourcePixel = (sourceData[sourcePosition + 1] & 255) << 24 | (sourceData[sourcePosition + 2] & 255) << 16 | (sourceData[sourcePosition + 3] & 255) << 8 | sourceData[sourcePosition] & 255;
							break;
						case 2:
							sourcePixel = (sourceData[sourcePosition + 2] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						}
						if(sourcePremultiplied) {
							if((sourcePixel & 255) != 0 && (sourcePixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (sourcePixel & 255);
								sourcePixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | sourcePixel & 255 & 255;
							}
						}
						switch(destFormat) {
						case 0:
							destPixel = (destData[destPosition] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition + 2] & 255) << 8 | destData[destPosition + 3] & 255;
							break;
						case 1:
							destPixel = (destData[destPosition + 1] & 255) << 24 | (destData[destPosition + 2] & 255) << 16 | (destData[destPosition + 3] & 255) << 8 | destData[destPosition] & 255;
							break;
						case 2:
							destPixel = (destData[destPosition + 2] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition] & 255) << 8 | destData[destPosition + 3] & 255;
							break;
						}
						if(destPremultiplied) {
							if((destPixel & 255) != 0 && (destPixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (destPixel & 255);
								destPixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | destPixel & 255 & 255;
							}
						}
						switch(alphaFormat) {
						case 0:
							alphaPixel = (alphaData[alphaPosition] & 255) << 24 | (alphaData[alphaPosition + 1] & 255) << 16 | (alphaData[alphaPosition + 2] & 255) << 8 | alphaData[alphaPosition + 3] & 255;
							break;
						case 1:
							alphaPixel = (alphaData[alphaPosition + 1] & 255) << 24 | (alphaData[alphaPosition + 2] & 255) << 16 | (alphaData[alphaPosition + 3] & 255) << 8 | alphaData[alphaPosition] & 255;
							break;
						case 2:
							alphaPixel = (alphaData[alphaPosition + 2] & 255) << 24 | (alphaData[alphaPosition + 1] & 255) << 16 | (alphaData[alphaPosition] & 255) << 8 | alphaData[alphaPosition + 3] & 255;
							break;
						}
						sourceAlpha = (alphaPixel & 255) / 255.0 * ((sourcePixel & 255) / 255.0);
						if(sourceAlpha > 0) {
							destAlpha = (destPixel & 255) / 255.0;
							oneMinusSourceAlpha = 1 - sourceAlpha;
							blendAlpha = sourceAlpha + destAlpha * oneMinusSourceAlpha;
							var value4 = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(((sourcePixel >>> 24 & 255) * sourceAlpha + (destPixel >>> 24 & 255) * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
							destPixel = (value4 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
							var value5 = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(((sourcePixel >>> 16 & 255) * sourceAlpha + (destPixel >>> 16 & 255) * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
							destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (value5 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
							var value6 = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(((sourcePixel >>> 8 & 255) * sourceAlpha + (destPixel >>> 8 & 255) * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
							destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (value6 & 255) << 8 | destPixel & 255 & 255;
							var value7 = lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round(blendAlpha * 255.0)];
							destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | value7 & 255;
							if(destPremultiplied) {
								if((destPixel & 255) == 0) {
									if(destPixel != 0) {
										destPixel = 0;
									}
								} else if((destPixel & 255) != 255) {
									lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[destPixel & 255];
									destPixel = ((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | destPixel & 255 & 255;
								}
							}
							switch(destFormat) {
							case 0:
								destData[destPosition] = destPixel >>> 24 & 255;
								destData[destPosition + 1] = destPixel >>> 16 & 255;
								destData[destPosition + 2] = destPixel >>> 8 & 255;
								destData[destPosition + 3] = destPixel & 255;
								break;
							case 1:
								destData[destPosition] = destPixel & 255;
								destData[destPosition + 1] = destPixel >>> 24 & 255;
								destData[destPosition + 2] = destPixel >>> 16 & 255;
								destData[destPosition + 3] = destPixel >>> 8 & 255;
								break;
							case 2:
								destData[destPosition] = destPixel >>> 8 & 255;
								destData[destPosition + 1] = destPixel >>> 16 & 255;
								destData[destPosition + 2] = destPixel >>> 24 & 255;
								destData[destPosition + 3] = destPixel & 255;
								break;
							}
						}
						sourcePosition += 4;
						destPosition += 4;
						alphaPosition += 4;
					}
				}
			} else {
				var _g14 = 0;
				var _g7 = destView.height;
				while(_g14 < _g7) {
					var y4 = _g14++;
					sourcePosition = sourceView.byteOffset + sourceView.stride * y4;
					destPosition = destView.byteOffset + destView.stride * y4;
					alphaPosition = alphaView.byteOffset + alphaView.stride * y4;
					var _g33 = 0;
					var _g23 = destView.width;
					while(_g33 < _g23) {
						var x3 = _g33++;
						switch(sourceFormat) {
						case 0:
							sourcePixel = (sourceData[sourcePosition] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition + 2] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						case 1:
							sourcePixel = (sourceData[sourcePosition + 1] & 255) << 24 | (sourceData[sourcePosition + 2] & 255) << 16 | (sourceData[sourcePosition + 3] & 255) << 8 | sourceData[sourcePosition] & 255;
							break;
						case 2:
							sourcePixel = (sourceData[sourcePosition + 2] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
							break;
						}
						if(sourcePremultiplied) {
							if((sourcePixel & 255) != 0 && (sourcePixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (sourcePixel & 255);
								sourcePixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | sourcePixel & 255 & 255;
							}
						}
						switch(alphaFormat) {
						case 0:
							alphaPixel = (alphaData[alphaPosition] & 255) << 24 | (alphaData[alphaPosition + 1] & 255) << 16 | (alphaData[alphaPosition + 2] & 255) << 8 | alphaData[alphaPosition + 3] & 255;
							break;
						case 1:
							alphaPixel = (alphaData[alphaPosition + 1] & 255) << 24 | (alphaData[alphaPosition + 2] & 255) << 16 | (alphaData[alphaPosition + 3] & 255) << 8 | alphaData[alphaPosition] & 255;
							break;
						case 2:
							alphaPixel = (alphaData[alphaPosition + 2] & 255) << 24 | (alphaData[alphaPosition + 1] & 255) << 16 | (alphaData[alphaPosition] & 255) << 8 | alphaData[alphaPosition + 3] & 255;
							break;
						}
						var value8 = Math.round((sourcePixel & 255) * ((alphaPixel & 255) / 255));
						sourcePixel = (sourcePixel >>> 24 & 255 & 255) << 24 | (sourcePixel >>> 16 & 255 & 255) << 16 | (sourcePixel >>> 8 & 255 & 255) << 8 | value8 & 255;
						if(destPremultiplied) {
							if((sourcePixel & 255) == 0) {
								if(sourcePixel != 0) {
									sourcePixel = 0;
								}
							} else if((sourcePixel & 255) != 255) {
								lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[sourcePixel & 255];
								sourcePixel = ((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | sourcePixel & 255 & 255;
							}
						}
						switch(destFormat) {
						case 0:
							destData[destPosition] = sourcePixel >>> 24 & 255;
							destData[destPosition + 1] = sourcePixel >>> 16 & 255;
							destData[destPosition + 2] = sourcePixel >>> 8 & 255;
							destData[destPosition + 3] = sourcePixel & 255;
							break;
						case 1:
							destData[destPosition] = sourcePixel & 255;
							destData[destPosition + 1] = sourcePixel >>> 24 & 255;
							destData[destPosition + 2] = sourcePixel >>> 16 & 255;
							destData[destPosition + 3] = sourcePixel >>> 8 & 255;
							break;
						case 2:
							destData[destPosition] = sourcePixel >>> 8 & 255;
							destData[destPosition + 1] = sourcePixel >>> 16 & 255;
							destData[destPosition + 2] = sourcePixel >>> 24 & 255;
							destData[destPosition + 3] = sourcePixel & 255;
							break;
						}
						sourcePosition += 4;
						destPosition += 4;
						alphaPosition += 4;
					}
				}
			}
		}
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.fillRect = function(image,rect,color,format) {
	var fillColor;
	switch(format) {
	case 1:
		var argb = color;
		var this1 = 0;
		var rgba = this1;
		rgba = (argb >>> 16 & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
		fillColor = rgba;
		break;
	case 2:
		var bgra = color;
		var this2 = 0;
		var rgba1 = this2;
		rgba1 = (bgra >>> 8 & 255 & 255) << 24 | (bgra >>> 16 & 255 & 255) << 16 | (bgra >>> 24 & 255 & 255) << 8 | bgra & 255 & 255;
		fillColor = rgba1;
		break;
	default:
		fillColor = color;
	}
	if(!image.get_transparent()) {
		fillColor = (fillColor >>> 24 & 255 & 255) << 24 | (fillColor >>> 16 & 255 & 255) << 16 | (fillColor >>> 8 & 255 & 255) << 8 | 255;
	}
	var data = image.buffer.data;
	if(data == null) {
		return;
	}
	var format1 = image.buffer.format;
	var premultiplied = image.buffer.premultiplied;
	if(premultiplied) {
		if((fillColor & 255) == 0) {
			if(fillColor != 0) {
				fillColor = 0;
			}
		} else if((fillColor & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[fillColor & 255];
			fillColor = ((fillColor >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((fillColor >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((fillColor >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | fillColor & 255 & 255;
		}
	}
	var dataView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,rect);
	var row;
	var _g1 = 0;
	var _g = dataView.height;
	while(_g1 < _g) {
		var y = _g1++;
		row = dataView.byteOffset + dataView.stride * y;
		var _g3 = 0;
		var _g2 = dataView.width;
		while(_g3 < _g2) {
			var x = _g3++;
			var offset = row + x * 4;
			switch(format1) {
			case 0:
				data[offset] = fillColor >>> 24 & 255;
				data[offset + 1] = fillColor >>> 16 & 255;
				data[offset + 2] = fillColor >>> 8 & 255;
				data[offset + 3] = fillColor & 255;
				break;
			case 1:
				data[offset] = fillColor & 255;
				data[offset + 1] = fillColor >>> 24 & 255;
				data[offset + 2] = fillColor >>> 16 & 255;
				data[offset + 3] = fillColor >>> 8 & 255;
				break;
			case 2:
				data[offset] = fillColor >>> 8 & 255;
				data[offset + 1] = fillColor >>> 16 & 255;
				data[offset + 2] = fillColor >>> 24 & 255;
				data[offset + 3] = fillColor & 255;
				break;
			}
		}
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.floodFill = function(image,x,y,color,format) {
	var data = image.buffer.data;
	if(data == null) {
		return;
	}
	if(format == 1) {
		color = (color & 16777215) << 8 | color >> 24 & 255;
	}
	var format1 = image.buffer.format;
	var premultiplied = image.buffer.premultiplied;
	var fillColor = color;
	var hitColor;
	var offset = (y + image.offsetY) * (image.buffer.width * 4) + (x + image.offsetX) * 4;
	switch(format1) {
	case 0:
		hitColor = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
		break;
	case 1:
		hitColor = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
		break;
	case 2:
		hitColor = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
		break;
	}
	if(premultiplied) {
		if((hitColor & 255) != 0 && (hitColor & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (hitColor & 255);
			hitColor = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((hitColor >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((hitColor >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((hitColor >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | hitColor & 255 & 255;
		}
	}
	if(!image.get_transparent()) {
		fillColor = (fillColor >>> 24 & 255 & 255) << 24 | (fillColor >>> 16 & 255 & 255) << 16 | (fillColor >>> 8 & 255 & 255) << 8 | 255;
		hitColor = (hitColor >>> 24 & 255 & 255) << 24 | (hitColor >>> 16 & 255 & 255) << 16 | (hitColor >>> 8 & 255 & 255) << 8 | 255;
	}
	if(fillColor == hitColor) {
		return;
	}
	if(premultiplied) {
		if((fillColor & 255) == 0) {
			if(fillColor != 0) {
				fillColor = 0;
			}
		} else if((fillColor & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[fillColor & 255];
			fillColor = ((fillColor >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((fillColor >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((fillColor >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | fillColor & 255 & 255;
		}
	}
	var dx = [0,-1,1,0];
	var dy = [-1,0,0,1];
	var minX = -image.offsetX;
	var minY = -image.offsetY;
	var maxX = minX + image.width;
	var maxY = minY + image.height;
	var queue = [];
	queue.push(x);
	queue.push(y);
	var curPointX;
	var curPointY;
	var nextPointX;
	var nextPointY;
	var nextPointOffset;
	var readColor;
	while(queue.length > 0) {
		curPointY = queue.pop();
		curPointX = queue.pop();
		var _g = 0;
		while(_g < 4) {
			var i = _g++;
			nextPointX = curPointX + dx[i];
			nextPointY = curPointY + dy[i];
			if(nextPointX < minX || nextPointY < minY || nextPointX >= maxX || nextPointY >= maxY) {
				continue;
			}
			nextPointOffset = (nextPointY * image.width + nextPointX) * 4;
			switch(format1) {
			case 0:
				readColor = (data[nextPointOffset] & 255) << 24 | (data[nextPointOffset + 1] & 255) << 16 | (data[nextPointOffset + 2] & 255) << 8 | data[nextPointOffset + 3] & 255;
				break;
			case 1:
				readColor = (data[nextPointOffset + 1] & 255) << 24 | (data[nextPointOffset + 2] & 255) << 16 | (data[nextPointOffset + 3] & 255) << 8 | data[nextPointOffset] & 255;
				break;
			case 2:
				readColor = (data[nextPointOffset + 2] & 255) << 24 | (data[nextPointOffset + 1] & 255) << 16 | (data[nextPointOffset] & 255) << 8 | data[nextPointOffset + 3] & 255;
				break;
			}
			if(premultiplied) {
				if((readColor & 255) != 0 && (readColor & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (readColor & 255);
					readColor = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((readColor >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((readColor >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((readColor >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | readColor & 255 & 255;
				}
			}
			if(readColor == hitColor) {
				switch(format1) {
				case 0:
					data[nextPointOffset] = fillColor >>> 24 & 255;
					data[nextPointOffset + 1] = fillColor >>> 16 & 255;
					data[nextPointOffset + 2] = fillColor >>> 8 & 255;
					data[nextPointOffset + 3] = fillColor & 255;
					break;
				case 1:
					data[nextPointOffset] = fillColor & 255;
					data[nextPointOffset + 1] = fillColor >>> 24 & 255;
					data[nextPointOffset + 2] = fillColor >>> 16 & 255;
					data[nextPointOffset + 3] = fillColor >>> 8 & 255;
					break;
				case 2:
					data[nextPointOffset] = fillColor >>> 8 & 255;
					data[nextPointOffset + 1] = fillColor >>> 16 & 255;
					data[nextPointOffset + 2] = fillColor >>> 24 & 255;
					data[nextPointOffset + 3] = fillColor & 255;
					break;
				}
				queue.push(nextPointX);
				queue.push(nextPointY);
			}
		}
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.gaussianBlur = function(image,sourceImage,sourceRect,destPoint,blurX,blurY,quality,strength) {
	if(strength == null) {
		strength = 1;
	}
	if(quality == null) {
		quality = 1;
	}
	if(blurY == null) {
		blurY = 4;
	}
	if(blurX == null) {
		blurX = 4;
	}
	var fromPreMult;
	if(image.buffer.premultiplied || sourceImage.buffer.premultiplied) {
		fromPreMult = function(col,alpha) {
			var col1 = col | 0;
			if(col1 < 0) {
				return 0;
			} else if(col1 > 255) {
				return 255;
			} else {
				return col1;
			}
		};
	} else {
		fromPreMult = function(col2,alpha1) {
			var col3 = col2 / alpha1 * 255 | 0;
			if(col3 < 0) {
				return 0;
			} else if(col3 > 255) {
				return 255;
			} else {
				return col3;
			}
		};
	}
	var boxesForGauss = function(sigma,n) {
		var wIdeal = Math.sqrt(12 * sigma * sigma / n + 1);
		var wl = Math.floor(wIdeal);
		if(wl % 2 == 0) {
			--wl;
		}
		var wu = wl + 2;
		var mIdeal = (12 * sigma * sigma - n * wl * wl - 4 * n * wl - 3 * n) / (-4 * wl - 4);
		var m = Math.round(mIdeal);
		var sizes = [];
		var _g1 = 0;
		var _g = n;
		while(_g1 < _g) {
			var i = _g1++;
			sizes.push(i < m ? wl : wu);
		}
		return sizes;
	};
	var boxBlurH = function(imgA,imgB,w,h,r,off) {
		var iarr = 1 / (r + r + 1);
		var _g11 = 0;
		var _g2 = h;
		while(_g11 < _g2) {
			var i1 = _g11++;
			var ti = i1 * w;
			var li = ti;
			var ri = ti + r;
			var fv = imgA[ti * 4 + off];
			var lv = imgA[(ti + w - 1) * 4 + off];
			var val = (r + 1) * fv;
			var _g3 = 0;
			var _g21 = r;
			while(_g3 < _g21) {
				var j = _g3++;
				val = val + imgA[(ti + j) * 4 + off];
			}
			var _g31 = 0;
			var _g22 = r + 1;
			while(_g31 < _g22) {
				var j1 = _g31++;
				val = val + (imgA[ri * 4 + off] - fv);
				imgB[ti * 4 + off] = Math.round(_$UInt_UInt_$Impl_$.toFloat(val) * iarr);
				++ri;
				++ti;
			}
			var _g32 = r + 1;
			var _g23 = w - r;
			while(_g32 < _g23) {
				var j2 = _g32++;
				val = val + (imgA[ri * 4 + off] - imgA[li * 4 + off]);
				imgB[ti * 4 + off] = Math.round(_$UInt_UInt_$Impl_$.toFloat(val) * iarr);
				++ri;
				++li;
				++ti;
			}
			var _g33 = w - r;
			var _g24 = w;
			while(_g33 < _g24) {
				var j3 = _g33++;
				val = val + (lv - imgA[li * 4 + off]);
				imgB[ti * 4 + off] = Math.round(_$UInt_UInt_$Impl_$.toFloat(val) * iarr);
				++li;
				++ti;
			}
		}
	};
	var boxBlurT = function(imgA1,imgB1,w1,h1,r1,off1) {
		var iarr1 = 1 / (r1 + r1 + 1);
		var ws = w1 * 4;
		var _g12 = 0;
		var _g4 = w1;
		while(_g12 < _g4) {
			var i2 = _g12++;
			var ti1 = i2 * 4 + off1;
			var li1 = ti1;
			var ri1 = ti1 + r1 * ws;
			var fv1 = imgA1[ti1];
			var lv1 = imgA1[ti1 + ws * (h1 - 1)];
			var val1 = (r1 + 1) * fv1;
			var _g34 = 0;
			var _g25 = r1;
			while(_g34 < _g25) {
				var j4 = _g34++;
				val1 = val1 + imgA1[ti1 + j4 * ws];
			}
			var _g35 = 0;
			var _g26 = r1 + 1;
			while(_g35 < _g26) {
				var j5 = _g35++;
				val1 = val1 + (imgA1[ri1] - fv1);
				imgB1[ti1] = Math.round(_$UInt_UInt_$Impl_$.toFloat(val1) * iarr1);
				ri1 += ws;
				ti1 += ws;
			}
			var _g36 = r1 + 1;
			var _g27 = h1 - r1;
			while(_g36 < _g27) {
				var j6 = _g36++;
				val1 = val1 + (imgA1[ri1] - imgA1[li1]);
				imgB1[ti1] = Math.round(_$UInt_UInt_$Impl_$.toFloat(val1) * iarr1);
				li1 += ws;
				ri1 += ws;
				ti1 += ws;
			}
			var _g37 = h1 - r1;
			var _g28 = h1;
			while(_g37 < _g28) {
				var j7 = _g37++;
				val1 = val1 + (lv1 - imgA1[li1]);
				imgB1[ti1] = Math.round(_$UInt_UInt_$Impl_$.toFloat(val1) * iarr1);
				li1 += ws;
				ti1 += ws;
			}
		}
	};
	var boxBlur = function(imgA2,imgB2,w2,h2,bx,by) {
		var _g13 = 0;
		var _g5 = imgA2.length;
		while(_g13 < _g5) {
			var i3 = _g13++;
			imgB2[i3] = imgA2[i3];
		}
		boxBlurH(imgB2,imgA2,w2,h2,bx | 0,0);
		boxBlurH(imgB2,imgA2,w2,h2,bx | 0,1);
		boxBlurH(imgB2,imgA2,w2,h2,bx | 0,2);
		boxBlurH(imgB2,imgA2,w2,h2,bx | 0,3);
		boxBlurT(imgA2,imgB2,w2,h2,by | 0,0);
		boxBlurT(imgA2,imgB2,w2,h2,by | 0,1);
		boxBlurT(imgA2,imgB2,w2,h2,by | 0,2);
		boxBlurT(imgA2,imgB2,w2,h2,by | 0,3);
	};
	var imgB3 = image.get_data();
	var imgA3 = sourceImage.get_data();
	var w3 = sourceRect.width | 0;
	var h3 = sourceRect.height | 0;
	var bx1 = blurX | 0;
	var by1 = blurY | 0;
	var oX = destPoint.x | 0;
	var oY = destPoint.y | 0;
	var n1 = quality * 2 - 1;
	var rng = Math.pow(2,quality) * 0.125;
	var bxs = boxesForGauss(bx1 * rng,n1);
	var bys = boxesForGauss(by1 * rng,n1);
	var offset = (w3 * oY + oX) * 4 | 0;
	boxBlur(imgA3,imgB3,w3,h3,(bxs[0] - 1) / 2,(bys[0] - 1) / 2);
	var bIndex = 1;
	var _g14 = 0;
	var _g6 = n1 / 2 | 0;
	while(_g14 < _g6) {
		var i4 = _g14++;
		boxBlur(imgB3,imgA3,w3,h3,(bxs[bIndex] - 1) / 2,(bys[bIndex] - 1) / 2);
		boxBlur(imgA3,imgB3,w3,h3,(bxs[bIndex + 1] - 1) / 2,(bys[bIndex + 1] - 1) / 2);
		bIndex += 2;
	}
	var x;
	var y;
	if(offset <= 0) {
		y = 0;
		while(y < h3) {
			x = 0;
			while(x < w3) {
				var sourceRect1 = sourceImage.get_rect();
				var d = 4 * (y * (image.get_rect().width | 0) + x);
				var sourceX = x - (destPoint.x | 0);
				var sourceY = y - (destPoint.y | 0);
				var s = sourceX < 0 || sourceY < 0 || sourceX >= sourceRect1.width || sourceY >= sourceRect1.height ? -1 : 4 * (sourceY * (sourceRect1.width | 0) + sourceX);
				var a = s >= 0 ? _$UInt_UInt_$Impl_$.toFloat(imgB3[s + 3]) * strength | 0 : 0;
				if(a < 0) {
					a = 0;
				} else if(a > 255) {
					a = 255;
				} else {
					a = a;
				}
				imgB3[d] = s >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB3[s]),a) : 0;
				imgB3[d + 1] = s >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB3[s + 1]),a) : 0;
				imgB3[d + 2] = s >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB3[s + 2]),a) : 0;
				imgB3[d + 3] = a;
				++x;
			}
			++y;
		}
	} else {
		y = h3 - 1;
		while(y >= 0) {
			x = w3 - 1;
			while(x >= 0) {
				var sourceRect2 = sourceImage.get_rect();
				var d1 = 4 * (y * (image.get_rect().width | 0) + x);
				var sourceX1 = x - (destPoint.x | 0);
				var sourceY1 = y - (destPoint.y | 0);
				var s1 = sourceX1 < 0 || sourceY1 < 0 || sourceX1 >= sourceRect2.width || sourceY1 >= sourceRect2.height ? -1 : 4 * (sourceY1 * (sourceRect2.width | 0) + sourceX1);
				var a1 = s1 >= 0 ? _$UInt_UInt_$Impl_$.toFloat(imgB3[s1 + 3]) * strength | 0 : 0;
				if(a1 < 0) {
					a1 = 0;
				} else if(a1 > 255) {
					a1 = 255;
				} else {
					a1 = a1;
				}
				imgB3[d1] = s1 >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB3[s1]),a1) : 0;
				imgB3[d1 + 1] = s1 >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB3[s1 + 1]),a1) : 0;
				imgB3[d1 + 2] = s1 >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB3[s1 + 2]),a1) : 0;
				imgB3[d1 + 3] = a1;
				--x;
			}
			--y;
		}
	}
	image.dirty = true;
	image.version++;
	sourceImage.dirty = true;
	sourceImage.version++;
	if(imgB3 == image.get_data()) {
		return image;
	}
	return sourceImage;
};
lime_graphics_utils_ImageDataUtil.calculateSourceOffset = function(sourceRect,destPoint,destX,destY) {
	var sourceX = destX - (destPoint.x | 0);
	var sourceY = destY - (destPoint.y | 0);
	if(sourceX < 0 || sourceY < 0 || sourceX >= sourceRect.width || sourceY >= sourceRect.height) {
		return -1;
	} else {
		return 4 * (sourceY * (sourceRect.width | 0) + sourceX);
	}
};
lime_graphics_utils_ImageDataUtil.translatePixel = function(imgB,sourceRect,destRect,destPoint,destX,destY,strength,fromPreMult) {
	var d = 4 * (destY * (destRect.width | 0) + destX);
	var sourceX = destX - (destPoint.x | 0);
	var sourceY = destY - (destPoint.y | 0);
	var s = sourceX < 0 || sourceY < 0 || sourceX >= sourceRect.width || sourceY >= sourceRect.height ? -1 : 4 * (sourceY * (sourceRect.width | 0) + sourceX);
	var a = s >= 0 ? _$UInt_UInt_$Impl_$.toFloat(imgB[s + 3]) * strength | 0 : 0;
	if(a < 0) {
		a = 0;
	} else if(a > 255) {
		a = 255;
	} else {
		a = a;
	}
	imgB[d] = s >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB[s]),a) : 0;
	imgB[d + 1] = s >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB[s + 1]),a) : 0;
	imgB[d + 2] = s >= 0 ? fromPreMult(_$UInt_UInt_$Impl_$.toFloat(imgB[s + 2]),a) : 0;
	imgB[d + 3] = a;
};
lime_graphics_utils_ImageDataUtil.getColorBoundsRect = function(image,mask,color,findColor,format) {
	var left = image.width + 1;
	var right = 0;
	var top = image.height + 1;
	var bottom = 0;
	var _color;
	var _mask;
	switch(format) {
	case 1:
		var argb = color;
		var this1 = 0;
		var rgba = this1;
		rgba = (argb >>> 16 & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
		_color = rgba;
		var argb1 = mask;
		var this2 = 0;
		var rgba1 = this2;
		rgba1 = (argb1 >>> 16 & 255 & 255) << 24 | (argb1 >>> 8 & 255 & 255) << 16 | (argb1 & 255 & 255) << 8 | argb1 >>> 24 & 255 & 255;
		_mask = rgba1;
		break;
	case 2:
		var bgra = color;
		var this3 = 0;
		var rgba2 = this3;
		rgba2 = (bgra >>> 8 & 255 & 255) << 24 | (bgra >>> 16 & 255 & 255) << 16 | (bgra >>> 24 & 255 & 255) << 8 | bgra & 255 & 255;
		_color = rgba2;
		var bgra1 = mask;
		var this4 = 0;
		var rgba3 = this4;
		rgba3 = (bgra1 >>> 8 & 255 & 255) << 24 | (bgra1 >>> 16 & 255 & 255) << 16 | (bgra1 >>> 24 & 255 & 255) << 8 | bgra1 & 255 & 255;
		_mask = rgba3;
		break;
	default:
		_color = color;
		_mask = mask;
	}
	if(!image.get_transparent()) {
		_color = (_color >>> 24 & 255 & 255) << 24 | (_color >>> 16 & 255 & 255) << 16 | (_color >>> 8 & 255 & 255) << 8 | 255;
		_mask = (_mask >>> 24 & 255 & 255) << 24 | (_mask >>> 16 & 255 & 255) << 16 | (_mask >>> 8 & 255 & 255) << 8 | 255;
	}
	var pixel;
	var hit;
	var _g1 = 0;
	var _g = image.width;
	while(_g1 < _g) {
		var x = _g1++;
		hit = false;
		var _g3 = 0;
		var _g2 = image.height;
		while(_g3 < _g2) {
			var y = _g3++;
			pixel = image.getPixel32(x,y,0);
			if(findColor) {
				hit = (pixel & _mask) == _color;
			} else {
				hit = (pixel & _mask) != _color;
			}
			if(hit) {
				if(x < left) {
					left = x;
				}
				break;
			}
		}
		if(hit) {
			break;
		}
	}
	var ix;
	var _g11 = 0;
	var _g4 = image.width;
	while(_g11 < _g4) {
		var x1 = _g11++;
		ix = image.width - 1 - x1;
		hit = false;
		var _g31 = 0;
		var _g21 = image.height;
		while(_g31 < _g21) {
			var y1 = _g31++;
			pixel = image.getPixel32(ix,y1,0);
			if(findColor) {
				hit = (pixel & _mask) == _color;
			} else {
				hit = (pixel & _mask) != _color;
			}
			if(hit) {
				if(ix > right) {
					right = ix;
				}
				break;
			}
		}
		if(hit) {
			break;
		}
	}
	var _g12 = 0;
	var _g5 = image.height;
	while(_g12 < _g5) {
		var y2 = _g12++;
		hit = false;
		var _g32 = 0;
		var _g22 = image.width;
		while(_g32 < _g22) {
			var x2 = _g32++;
			pixel = image.getPixel32(x2,y2,0);
			if(findColor) {
				hit = (pixel & _mask) == _color;
			} else {
				hit = (pixel & _mask) != _color;
			}
			if(hit) {
				if(y2 < top) {
					top = y2;
				}
				break;
			}
		}
		if(hit) {
			break;
		}
	}
	var iy;
	var _g13 = 0;
	var _g6 = image.height;
	while(_g13 < _g6) {
		var y3 = _g13++;
		iy = image.height - 1 - y3;
		hit = false;
		var _g33 = 0;
		var _g23 = image.width;
		while(_g33 < _g23) {
			var x3 = _g33++;
			pixel = image.getPixel32(x3,iy,0);
			if(findColor) {
				hit = (pixel & _mask) == _color;
			} else {
				hit = (pixel & _mask) != _color;
			}
			if(hit) {
				if(iy > bottom) {
					bottom = iy;
				}
				break;
			}
		}
		if(hit) {
			break;
		}
	}
	var w = right - left;
	var h = bottom - top;
	if(w > 0) {
		++w;
	}
	if(h > 0) {
		++h;
	}
	if(w < 0) {
		w = 0;
	}
	if(h < 0) {
		h = 0;
	}
	if(left == right) {
		w = 1;
	}
	if(top == bottom) {
		h = 1;
	}
	if(left > image.width) {
		left = 0;
	}
	if(top > image.height) {
		top = 0;
	}
	return new lime_math_Rectangle(left,top,w,h);
};
lime_graphics_utils_ImageDataUtil.getPixel = function(image,x,y,format) {
	var pixel;
	var data = image.buffer.data;
	var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
	var premultiplied = image.buffer.premultiplied;
	switch(image.buffer.format) {
	case 0:
		pixel = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
		break;
	case 1:
		pixel = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
		break;
	case 2:
		pixel = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
		break;
	}
	if(premultiplied) {
		if((pixel & 255) != 0 && (pixel & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (pixel & 255);
			pixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | pixel & 255 & 255;
		}
	}
	pixel = (pixel >>> 24 & 255 & 255) << 24 | (pixel >>> 16 & 255 & 255) << 16 | (pixel >>> 8 & 255 & 255) << 8 | 0;
	switch(format) {
	case 1:
		var this1 = 0;
		var argb = this1;
		argb = (pixel & 255 & 255) << 24 | (pixel >>> 24 & 255 & 255) << 16 | (pixel >>> 16 & 255 & 255) << 8 | pixel >>> 8 & 255 & 255;
		return argb;
	case 2:
		var this2 = 0;
		var bgra = this2;
		bgra = (pixel >>> 8 & 255 & 255) << 24 | (pixel >>> 16 & 255 & 255) << 16 | (pixel >>> 24 & 255 & 255) << 8 | pixel & 255 & 255;
		return bgra;
	default:
		return pixel;
	}
};
lime_graphics_utils_ImageDataUtil.getPixel32 = function(image,x,y,format) {
	var pixel;
	var data = image.buffer.data;
	var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
	var premultiplied = image.buffer.premultiplied;
	switch(image.buffer.format) {
	case 0:
		pixel = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
		break;
	case 1:
		pixel = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
		break;
	case 2:
		pixel = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
		break;
	}
	if(premultiplied) {
		if((pixel & 255) != 0 && (pixel & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (pixel & 255);
			pixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | pixel & 255 & 255;
		}
	}
	switch(format) {
	case 1:
		var this1 = 0;
		var argb = this1;
		argb = (pixel & 255 & 255) << 24 | (pixel >>> 24 & 255 & 255) << 16 | (pixel >>> 16 & 255 & 255) << 8 | pixel >>> 8 & 255 & 255;
		return argb;
	case 2:
		var this2 = 0;
		var bgra = this2;
		bgra = (pixel >>> 8 & 255 & 255) << 24 | (pixel >>> 16 & 255 & 255) << 16 | (pixel >>> 24 & 255 & 255) << 8 | pixel & 255 & 255;
		return bgra;
	default:
		return pixel;
	}
};
lime_graphics_utils_ImageDataUtil.getPixels = function(image,rect,format) {
	if(image.buffer.data == null) {
		return null;
	}
	var length = rect.width * rect.height | 0;
	var bytes = new haxe_io_Bytes(new ArrayBuffer(length * 4));
	var data = image.buffer.data;
	var sourceFormat = image.buffer.format;
	var premultiplied = image.buffer.premultiplied;
	var dataView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,rect);
	var position;
	var argb;
	var bgra;
	var pixel;
	var destPosition = 0;
	var _g1 = 0;
	var _g = dataView.height;
	while(_g1 < _g) {
		var y = _g1++;
		position = dataView.byteOffset + dataView.stride * y;
		var _g3 = 0;
		var _g2 = dataView.width;
		while(_g3 < _g2) {
			var x = _g3++;
			switch(sourceFormat) {
			case 0:
				pixel = (data[position] & 255) << 24 | (data[position + 1] & 255) << 16 | (data[position + 2] & 255) << 8 | data[position + 3] & 255;
				break;
			case 1:
				pixel = (data[position + 1] & 255) << 24 | (data[position + 2] & 255) << 16 | (data[position + 3] & 255) << 8 | data[position] & 255;
				break;
			case 2:
				pixel = (data[position + 2] & 255) << 24 | (data[position + 1] & 255) << 16 | (data[position] & 255) << 8 | data[position + 3] & 255;
				break;
			}
			if(premultiplied) {
				if((pixel & 255) != 0 && (pixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (pixel & 255);
					pixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | pixel & 255 & 255;
				}
			}
			switch(format) {
			case 1:
				var this1 = 0;
				var argb1 = this1;
				argb1 = (pixel & 255 & 255) << 24 | (pixel >>> 24 & 255 & 255) << 16 | (pixel >>> 16 & 255 & 255) << 8 | pixel >>> 8 & 255 & 255;
				argb = argb1;
				pixel = argb;
				break;
			case 2:
				var this2 = 0;
				var bgra1 = this2;
				bgra1 = (pixel >>> 8 & 255 & 255) << 24 | (pixel >>> 16 & 255 & 255) << 16 | (pixel >>> 24 & 255 & 255) << 8 | pixel & 255 & 255;
				bgra = bgra1;
				pixel = bgra;
				break;
			default:
			}
			bytes.b[destPosition++] = pixel >>> 24 & 255 & 255;
			bytes.b[destPosition++] = pixel >>> 16 & 255 & 255;
			bytes.b[destPosition++] = pixel >>> 8 & 255 & 255;
			bytes.b[destPosition++] = pixel & 255 & 255;
			position += 4;
		}
	}
	return bytes;
};
lime_graphics_utils_ImageDataUtil.merge = function(image,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
	if(image.buffer.data == null || sourceImage.buffer.data == null) {
		return;
	}
	var sourceView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(sourceImage,sourceRect);
	var destView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,new lime_math_Rectangle(destPoint.x,destPoint.y,sourceView.width,sourceView.height));
	var sourceData = sourceImage.buffer.data;
	var destData = image.buffer.data;
	var sourceFormat = sourceImage.buffer.format;
	var destFormat = image.buffer.format;
	var sourcePremultiplied = sourceImage.buffer.premultiplied;
	var destPremultiplied = image.buffer.premultiplied;
	var sourcePosition;
	var destPosition;
	var sourcePixel;
	var destPixel;
	var _g1 = 0;
	var _g = destView.height;
	while(_g1 < _g) {
		var y = _g1++;
		sourcePosition = sourceView.byteOffset + sourceView.stride * y;
		destPosition = destView.byteOffset + destView.stride * y;
		var _g3 = 0;
		var _g2 = destView.width;
		while(_g3 < _g2) {
			var x = _g3++;
			switch(sourceFormat) {
			case 0:
				sourcePixel = (sourceData[sourcePosition] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition + 2] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
				break;
			case 1:
				sourcePixel = (sourceData[sourcePosition + 1] & 255) << 24 | (sourceData[sourcePosition + 2] & 255) << 16 | (sourceData[sourcePosition + 3] & 255) << 8 | sourceData[sourcePosition] & 255;
				break;
			case 2:
				sourcePixel = (sourceData[sourcePosition + 2] & 255) << 24 | (sourceData[sourcePosition + 1] & 255) << 16 | (sourceData[sourcePosition] & 255) << 8 | sourceData[sourcePosition + 3] & 255;
				break;
			}
			if(sourcePremultiplied) {
				if((sourcePixel & 255) != 0 && (sourcePixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (sourcePixel & 255);
					sourcePixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | sourcePixel & 255 & 255;
				}
			}
			switch(destFormat) {
			case 0:
				destPixel = (destData[destPosition] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition + 2] & 255) << 8 | destData[destPosition + 3] & 255;
				break;
			case 1:
				destPixel = (destData[destPosition + 1] & 255) << 24 | (destData[destPosition + 2] & 255) << 16 | (destData[destPosition + 3] & 255) << 8 | destData[destPosition] & 255;
				break;
			case 2:
				destPixel = (destData[destPosition + 2] & 255) << 24 | (destData[destPosition + 1] & 255) << 16 | (destData[destPosition] & 255) << 8 | destData[destPosition + 3] & 255;
				break;
			}
			if(destPremultiplied) {
				if((destPixel & 255) != 0 && (destPixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (destPixel & 255);
					destPixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | destPixel & 255 & 255;
				}
			}
			var value = ((sourcePixel >>> 24 & 255) * redMultiplier + (destPixel >>> 24 & 255) * (256 - redMultiplier)) / 256 | 0;
			destPixel = (value & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
			var value1 = ((sourcePixel >>> 16 & 255) * greenMultiplier + (destPixel >>> 16 & 255) * (256 - greenMultiplier)) / 256 | 0;
			destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (value1 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
			var value2 = ((sourcePixel >>> 8 & 255) * blueMultiplier + (destPixel >>> 8 & 255) * (256 - blueMultiplier)) / 256 | 0;
			destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (value2 & 255) << 8 | destPixel & 255 & 255;
			var value3 = ((sourcePixel & 255) * alphaMultiplier + (destPixel & 255) * (256 - alphaMultiplier)) / 256 | 0;
			destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | value3 & 255;
			if(destPremultiplied) {
				if((destPixel & 255) == 0) {
					if(destPixel != 0) {
						destPixel = 0;
					}
				} else if((destPixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[destPixel & 255];
					destPixel = ((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | destPixel & 255 & 255;
				}
			}
			switch(destFormat) {
			case 0:
				destData[destPosition] = destPixel >>> 24 & 255;
				destData[destPosition + 1] = destPixel >>> 16 & 255;
				destData[destPosition + 2] = destPixel >>> 8 & 255;
				destData[destPosition + 3] = destPixel & 255;
				break;
			case 1:
				destData[destPosition] = destPixel & 255;
				destData[destPosition + 1] = destPixel >>> 24 & 255;
				destData[destPosition + 2] = destPixel >>> 16 & 255;
				destData[destPosition + 3] = destPixel >>> 8 & 255;
				break;
			case 2:
				destData[destPosition] = destPixel >>> 8 & 255;
				destData[destPosition + 1] = destPixel >>> 16 & 255;
				destData[destPosition + 2] = destPixel >>> 24 & 255;
				destData[destPosition + 3] = destPixel & 255;
				break;
			}
			sourcePosition += 4;
			destPosition += 4;
		}
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.multiplyAlpha = function(image) {
	var data = image.buffer.data;
	if(data == null || !image.buffer.transparent) {
		return;
	}
	var format = image.buffer.format;
	var length = data.length / 4 | 0;
	var pixel;
	var _g1 = 0;
	var _g = length;
	while(_g1 < _g) {
		var i = _g1++;
		var offset = i * 4;
		switch(format) {
		case 0:
			pixel = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
			break;
		case 1:
			pixel = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
			break;
		case 2:
			pixel = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
			break;
		}
		var offset1 = i * 4;
		if((pixel & 255) == 0) {
			if(pixel != 0) {
				pixel = 0;
			}
		} else if((pixel & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[pixel & 255];
			pixel = ((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | pixel & 255 & 255;
		}
		switch(format) {
		case 0:
			data[offset1] = pixel >>> 24 & 255;
			data[offset1 + 1] = pixel >>> 16 & 255;
			data[offset1 + 2] = pixel >>> 8 & 255;
			data[offset1 + 3] = pixel & 255;
			break;
		case 1:
			data[offset1] = pixel & 255;
			data[offset1 + 1] = pixel >>> 24 & 255;
			data[offset1 + 2] = pixel >>> 16 & 255;
			data[offset1 + 3] = pixel >>> 8 & 255;
			break;
		case 2:
			data[offset1] = pixel >>> 8 & 255;
			data[offset1 + 1] = pixel >>> 16 & 255;
			data[offset1 + 2] = pixel >>> 24 & 255;
			data[offset1 + 3] = pixel & 255;
			break;
		}
	}
	image.buffer.premultiplied = true;
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.resize = function(image,newWidth,newHeight) {
	var buffer = image.buffer;
	if(buffer.width == newWidth && buffer.height == newHeight) {
		return;
	}
	var elements = newWidth * newHeight * 4;
	var this1;
	if(elements != null) {
		this1 = new Uint8Array(elements);
	} else {
		this1 = null;
	}
	var newBuffer = new lime_graphics_ImageBuffer(this1,newWidth,newHeight);
	var imageWidth = image.width;
	var imageHeight = image.height;
	var data = image.get_data();
	var newData = newBuffer.data;
	var sourceIndex;
	var sourceIndexX;
	var sourceIndexY;
	var sourceIndexXY;
	var index;
	var sourceX;
	var sourceY;
	var u;
	var v;
	var uRatio;
	var vRatio;
	var uOpposite;
	var vOpposite;
	var _g1 = 0;
	var _g = newHeight;
	while(_g1 < _g) {
		var y = _g1++;
		var _g3 = 0;
		var _g2 = newWidth;
		while(_g3 < _g2) {
			var x = _g3++;
			u = (x + 0.5) / newWidth * imageWidth - 0.5;
			v = (y + 0.5) / newHeight * imageHeight - 0.5;
			sourceX = u | 0;
			sourceY = v | 0;
			sourceIndex = (sourceY * imageWidth + sourceX) * 4;
			if(sourceX < imageWidth - 1) {
				sourceIndexX = sourceIndex + 4;
			} else {
				sourceIndexX = sourceIndex;
			}
			if(sourceY < imageHeight - 1) {
				sourceIndexY = sourceIndex + imageWidth * 4;
			} else {
				sourceIndexY = sourceIndex;
			}
			if(sourceIndexX != sourceIndex) {
				sourceIndexXY = sourceIndexY + 4;
			} else {
				sourceIndexXY = sourceIndexY;
			}
			index = (y * newWidth + x) * 4;
			uRatio = u - sourceX;
			vRatio = v - sourceY;
			uOpposite = 1 - uRatio;
			vOpposite = 1 - vRatio;
			newData[index] = (_$UInt_UInt_$Impl_$.toFloat(data[sourceIndex]) * uOpposite + _$UInt_UInt_$Impl_$.toFloat(data[sourceIndexX]) * uRatio) * vOpposite + (_$UInt_UInt_$Impl_$.toFloat(data[sourceIndexY]) * uOpposite + _$UInt_UInt_$Impl_$.toFloat(data[sourceIndexXY]) * uRatio) * vRatio | 0;
			newData[index + 1] = (_$UInt_UInt_$Impl_$.toFloat(data[sourceIndex + 1]) * uOpposite + _$UInt_UInt_$Impl_$.toFloat(data[sourceIndexX + 1]) * uRatio) * vOpposite + (_$UInt_UInt_$Impl_$.toFloat(data[sourceIndexY + 1]) * uOpposite + _$UInt_UInt_$Impl_$.toFloat(data[sourceIndexXY + 1]) * uRatio) * vRatio | 0;
			newData[index + 2] = (_$UInt_UInt_$Impl_$.toFloat(data[sourceIndex + 2]) * uOpposite + _$UInt_UInt_$Impl_$.toFloat(data[sourceIndexX + 2]) * uRatio) * vOpposite + (_$UInt_UInt_$Impl_$.toFloat(data[sourceIndexY + 2]) * uOpposite + _$UInt_UInt_$Impl_$.toFloat(data[sourceIndexXY + 2]) * uRatio) * vRatio | 0;
			if(data[sourceIndexX + 3] == 0 || data[sourceIndexY + 3] == 0 || data[sourceIndexXY + 3] == 0) {
				newData[index + 3] = 0;
			} else {
				newData[index + 3] = data[sourceIndex + 3];
			}
		}
	}
	buffer.data = newBuffer.data;
	buffer.width = newWidth;
	buffer.height = newHeight;
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.resizeBuffer = function(image,newWidth,newHeight) {
	var buffer = image.buffer;
	var data = image.get_data();
	var elements = newWidth * newHeight * 4;
	var this1;
	if(elements != null) {
		this1 = new Uint8Array(elements);
	} else {
		this1 = null;
	}
	var newData = this1;
	var sourceIndex;
	var index;
	var _g1 = 0;
	var _g = buffer.height;
	while(_g1 < _g) {
		var y = _g1++;
		var _g3 = 0;
		var _g2 = buffer.width;
		while(_g3 < _g2) {
			var x = _g3++;
			sourceIndex = (y * buffer.width + x) * 4;
			index = (y * newWidth + x) * 4;
			newData[index] = data[sourceIndex];
			newData[index + 1] = data[sourceIndex + 1];
			newData[index + 2] = data[sourceIndex + 2];
			newData[index + 3] = data[sourceIndex + 3];
		}
	}
	buffer.data = newData;
	buffer.width = newWidth;
	buffer.height = newHeight;
};
lime_graphics_utils_ImageDataUtil.setFormat = function(image,format) {
	var data = image.buffer.data;
	if(data == null) {
		return;
	}
	var index;
	var a16;
	var length = data.length / 4 | 0;
	var r1;
	var g1;
	var b1;
	var a1;
	var r2;
	var g2;
	var b2;
	var a2;
	var r;
	var g;
	var b;
	var a;
	var _g = image.get_format();
	switch(_g) {
	case 0:
		r1 = 0;
		g1 = 1;
		b1 = 2;
		a1 = 3;
		break;
	case 1:
		r1 = 1;
		g1 = 2;
		b1 = 3;
		a1 = 0;
		break;
	case 2:
		r1 = 2;
		g1 = 1;
		b1 = 0;
		a1 = 3;
		break;
	}
	switch(format) {
	case 0:
		r2 = 0;
		g2 = 1;
		b2 = 2;
		a2 = 3;
		break;
	case 1:
		r2 = 1;
		g2 = 2;
		b2 = 3;
		a2 = 0;
		break;
	case 2:
		r2 = 2;
		g2 = 1;
		b2 = 0;
		a2 = 3;
		break;
	}
	var _g2 = 0;
	var _g1 = length;
	while(_g2 < _g1) {
		var i = _g2++;
		index = i * 4;
		r = data[index + r1];
		g = data[index + g1];
		b = data[index + b1];
		a = data[index + a1];
		data[index + r2] = r;
		data[index + g2] = g;
		data[index + b2] = b;
		data[index + a2] = a;
	}
	image.buffer.format = format;
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.setPixel = function(image,x,y,color,format) {
	var pixel;
	switch(format) {
	case 1:
		var argb = color;
		var this1 = 0;
		var rgba = this1;
		rgba = (argb >>> 16 & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
		pixel = rgba;
		break;
	case 2:
		var bgra = color;
		var this2 = 0;
		var rgba1 = this2;
		rgba1 = (bgra >>> 8 & 255 & 255) << 24 | (bgra >>> 16 & 255 & 255) << 16 | (bgra >>> 24 & 255 & 255) << 8 | bgra & 255 & 255;
		pixel = rgba1;
		break;
	default:
		pixel = color;
	}
	var this3 = 0;
	var source = this3;
	var data = image.buffer.data;
	var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
	var premultiplied = image.buffer.premultiplied;
	switch(image.buffer.format) {
	case 0:
		source = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
		break;
	case 1:
		source = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
		break;
	case 2:
		source = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
		break;
	}
	if(premultiplied) {
		if((source & 255) != 0 && (source & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (source & 255);
			source = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((source >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((source >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((source >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | source & 255 & 255;
		}
	}
	var value = source & 255;
	pixel = (pixel >>> 24 & 255 & 255) << 24 | (pixel >>> 16 & 255 & 255) << 16 | (pixel >>> 8 & 255 & 255) << 8 | value & 255;
	var data1 = image.buffer.data;
	var offset1 = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
	if(image.buffer.premultiplied) {
		if((pixel & 255) == 0) {
			if(pixel != 0) {
				pixel = 0;
			}
		} else if((pixel & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[pixel & 255];
			pixel = ((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | pixel & 255 & 255;
		}
	}
	switch(image.buffer.format) {
	case 0:
		data1[offset1] = pixel >>> 24 & 255;
		data1[offset1 + 1] = pixel >>> 16 & 255;
		data1[offset1 + 2] = pixel >>> 8 & 255;
		data1[offset1 + 3] = pixel & 255;
		break;
	case 1:
		data1[offset1] = pixel & 255;
		data1[offset1 + 1] = pixel >>> 24 & 255;
		data1[offset1 + 2] = pixel >>> 16 & 255;
		data1[offset1 + 3] = pixel >>> 8 & 255;
		break;
	case 2:
		data1[offset1] = pixel >>> 8 & 255;
		data1[offset1 + 1] = pixel >>> 16 & 255;
		data1[offset1 + 2] = pixel >>> 24 & 255;
		data1[offset1 + 3] = pixel & 255;
		break;
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.setPixel32 = function(image,x,y,color,format) {
	var pixel;
	switch(format) {
	case 1:
		var argb = color;
		var this1 = 0;
		var rgba = this1;
		rgba = (argb >>> 16 & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
		pixel = rgba;
		break;
	case 2:
		var bgra = color;
		var this2 = 0;
		var rgba1 = this2;
		rgba1 = (bgra >>> 8 & 255 & 255) << 24 | (bgra >>> 16 & 255 & 255) << 16 | (bgra >>> 24 & 255 & 255) << 8 | bgra & 255 & 255;
		pixel = rgba1;
		break;
	default:
		pixel = color;
	}
	if(!image.get_transparent()) {
		pixel = (pixel >>> 24 & 255 & 255) << 24 | (pixel >>> 16 & 255 & 255) << 16 | (pixel >>> 8 & 255 & 255) << 8 | 255;
	}
	var data = image.buffer.data;
	var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
	if(image.buffer.premultiplied) {
		if((pixel & 255) == 0) {
			if(pixel != 0) {
				pixel = 0;
			}
		} else if((pixel & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[pixel & 255];
			pixel = ((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | pixel & 255 & 255;
		}
	}
	switch(image.buffer.format) {
	case 0:
		data[offset] = pixel >>> 24 & 255;
		data[offset + 1] = pixel >>> 16 & 255;
		data[offset + 2] = pixel >>> 8 & 255;
		data[offset + 3] = pixel & 255;
		break;
	case 1:
		data[offset] = pixel & 255;
		data[offset + 1] = pixel >>> 24 & 255;
		data[offset + 2] = pixel >>> 16 & 255;
		data[offset + 3] = pixel >>> 8 & 255;
		break;
	case 2:
		data[offset] = pixel >>> 8 & 255;
		data[offset + 1] = pixel >>> 16 & 255;
		data[offset + 2] = pixel >>> 24 & 255;
		data[offset + 3] = pixel & 255;
		break;
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.setPixels = function(image,rect,bytePointer,format,endian) {
	if(image.buffer.data == null) {
		return;
	}
	var data = image.buffer.data;
	var sourceFormat = image.buffer.format;
	var premultiplied = image.buffer.premultiplied;
	var dataView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,rect);
	var row;
	var color;
	var pixel;
	var transparent = image.get_transparent();
	var bytes = bytePointer.bytes;
	var dataPosition = bytePointer.offset;
	var littleEndian = endian != lime_system_Endian.BIG_ENDIAN;
	var _g1 = 0;
	var _g = dataView.height;
	while(_g1 < _g) {
		var y = _g1++;
		row = dataView.byteOffset + dataView.stride * y;
		var _g3 = 0;
		var _g2 = dataView.width;
		while(_g3 < _g2) {
			var x = _g3++;
			if(littleEndian) {
				color = bytes.getInt32(dataPosition);
			} else {
				color = bytes.b[dataPosition + 3] | bytes.b[dataPosition + 2] << 8 | bytes.b[dataPosition + 1] << 16 | bytes.b[dataPosition] << 24;
			}
			dataPosition += 4;
			switch(format) {
			case 1:
				var argb = color;
				var this1 = 0;
				var rgba = this1;
				rgba = (argb >>> 16 & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
				pixel = rgba;
				break;
			case 2:
				var bgra = color;
				var this2 = 0;
				var rgba1 = this2;
				rgba1 = (bgra >>> 8 & 255 & 255) << 24 | (bgra >>> 16 & 255 & 255) << 16 | (bgra >>> 24 & 255 & 255) << 8 | bgra & 255 & 255;
				pixel = rgba1;
				break;
			default:
				pixel = color;
			}
			if(!transparent) {
				pixel = (pixel >>> 24 & 255 & 255) << 24 | (pixel >>> 16 & 255 & 255) << 16 | (pixel >>> 8 & 255 & 255) << 8 | 255;
			}
			var offset = row + x * 4;
			if(premultiplied) {
				if((pixel & 255) == 0) {
					if(pixel != 0) {
						pixel = 0;
					}
				} else if((pixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[pixel & 255];
					pixel = ((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | pixel & 255 & 255;
				}
			}
			switch(sourceFormat) {
			case 0:
				data[offset] = pixel >>> 24 & 255;
				data[offset + 1] = pixel >>> 16 & 255;
				data[offset + 2] = pixel >>> 8 & 255;
				data[offset + 3] = pixel & 255;
				break;
			case 1:
				data[offset] = pixel & 255;
				data[offset + 1] = pixel >>> 24 & 255;
				data[offset + 2] = pixel >>> 16 & 255;
				data[offset + 3] = pixel >>> 8 & 255;
				break;
			case 2:
				data[offset] = pixel >>> 8 & 255;
				data[offset + 1] = pixel >>> 16 & 255;
				data[offset + 2] = pixel >>> 24 & 255;
				data[offset + 3] = pixel & 255;
				break;
			}
		}
	}
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.threshold = function(image,sourceImage,sourceRect,destPoint,operation,threshold,color,mask,copySource,format) {
	var _color;
	var _mask;
	var _threshold;
	switch(format) {
	case 1:
		var argb = color;
		var this1 = 0;
		var rgba = this1;
		rgba = (argb >>> 16 & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
		_color = rgba;
		var argb1 = mask;
		var this2 = 0;
		var rgba1 = this2;
		rgba1 = (argb1 >>> 16 & 255 & 255) << 24 | (argb1 >>> 8 & 255 & 255) << 16 | (argb1 & 255 & 255) << 8 | argb1 >>> 24 & 255 & 255;
		_mask = rgba1;
		var argb2 = threshold;
		var this3 = 0;
		var rgba2 = this3;
		rgba2 = (argb2 >>> 16 & 255 & 255) << 24 | (argb2 >>> 8 & 255 & 255) << 16 | (argb2 & 255 & 255) << 8 | argb2 >>> 24 & 255 & 255;
		_threshold = rgba2;
		break;
	case 2:
		var bgra = color;
		var this4 = 0;
		var rgba3 = this4;
		rgba3 = (bgra >>> 8 & 255 & 255) << 24 | (bgra >>> 16 & 255 & 255) << 16 | (bgra >>> 24 & 255 & 255) << 8 | bgra & 255 & 255;
		_color = rgba3;
		var bgra1 = mask;
		var this5 = 0;
		var rgba4 = this5;
		rgba4 = (bgra1 >>> 8 & 255 & 255) << 24 | (bgra1 >>> 16 & 255 & 255) << 16 | (bgra1 >>> 24 & 255 & 255) << 8 | bgra1 & 255 & 255;
		_mask = rgba4;
		var bgra2 = threshold;
		var this6 = 0;
		var rgba5 = this6;
		rgba5 = (bgra2 >>> 8 & 255 & 255) << 24 | (bgra2 >>> 16 & 255 & 255) << 16 | (bgra2 >>> 24 & 255 & 255) << 8 | bgra2 & 255 & 255;
		_threshold = rgba5;
		break;
	default:
		_color = color;
		_mask = mask;
		_threshold = threshold;
	}
	var _operation;
	switch(operation) {
	case "!=":
		_operation = 0;
		break;
	case "<":
		_operation = 2;
		break;
	case "<=":
		_operation = 3;
		break;
	case "==":
		_operation = 1;
		break;
	case ">":
		_operation = 4;
		break;
	case ">=":
		_operation = 5;
		break;
	default:
		_operation = -1;
	}
	if(_operation == -1) {
		return 0;
	}
	var srcData = sourceImage.buffer.data;
	var destData = image.buffer.data;
	if(srcData == null || destData == null) {
		return 0;
	}
	var hits = 0;
	var srcView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(sourceImage,sourceRect);
	var destView = new lime_graphics_utils__$ImageDataUtil_ImageDataView(image,new lime_math_Rectangle(destPoint.x,destPoint.y,srcView.width,srcView.height));
	var srcFormat = sourceImage.buffer.format;
	var destFormat = image.buffer.format;
	var srcPremultiplied = sourceImage.buffer.premultiplied;
	var destPremultiplied = image.buffer.premultiplied;
	var srcPosition;
	var destPosition;
	var srcPixel;
	var destPixel;
	var pixelMask;
	var test;
	var value;
	var _g1 = 0;
	var _g = destView.height;
	while(_g1 < _g) {
		var y = _g1++;
		srcPosition = srcView.byteOffset + srcView.stride * y;
		destPosition = destView.byteOffset + destView.stride * y;
		var _g3 = 0;
		var _g2 = destView.width;
		while(_g3 < _g2) {
			var x = _g3++;
			switch(srcFormat) {
			case 0:
				srcPixel = (srcData[srcPosition] & 255) << 24 | (srcData[srcPosition + 1] & 255) << 16 | (srcData[srcPosition + 2] & 255) << 8 | srcData[srcPosition + 3] & 255;
				break;
			case 1:
				srcPixel = (srcData[srcPosition + 1] & 255) << 24 | (srcData[srcPosition + 2] & 255) << 16 | (srcData[srcPosition + 3] & 255) << 8 | srcData[srcPosition] & 255;
				break;
			case 2:
				srcPixel = (srcData[srcPosition + 2] & 255) << 24 | (srcData[srcPosition + 1] & 255) << 16 | (srcData[srcPosition] & 255) << 8 | srcData[srcPosition + 3] & 255;
				break;
			}
			if(srcPremultiplied) {
				if((srcPixel & 255) != 0 && (srcPixel & 255) != 255) {
					lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (srcPixel & 255);
					srcPixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((srcPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((srcPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((srcPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | srcPixel & 255 & 255;
				}
			}
			pixelMask = srcPixel & _mask;
			var tmp1;
			var tmp2;
			tmp1 = pixelMask >>> 24 & 255;
			tmp2 = _threshold >>> 24 & 255;
			if(tmp1 != tmp2) {
				if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
					value = 1;
				} else {
					value = -1;
				}
			} else {
				tmp1 = pixelMask >>> 16 & 255;
				tmp2 = _threshold >>> 16 & 255;
				if(tmp1 != tmp2) {
					if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
						value = 1;
					} else {
						value = -1;
					}
				} else {
					tmp1 = pixelMask >>> 8 & 255;
					tmp2 = _threshold >>> 8 & 255;
					if(tmp1 != tmp2) {
						if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
							value = 1;
						} else {
							value = -1;
						}
					} else {
						tmp1 = pixelMask & 255;
						tmp2 = _threshold & 255;
						if(tmp1 != tmp2) {
							if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
								value = 1;
							} else {
								value = -1;
							}
						} else {
							value = 0;
						}
					}
				}
			}
			switch(_operation) {
			case 0:
				test = value != 0;
				break;
			case 1:
				test = value == 0;
				break;
			case 2:
				test = value == -1;
				break;
			case 3:
				if(value != 0) {
					test = value == -1;
				} else {
					test = true;
				}
				break;
			case 4:
				test = value == 1;
				break;
			case 5:
				if(value != 0) {
					test = value == 1;
				} else {
					test = true;
				}
				break;
			default:
				test = false;
			}
			if(test) {
				if(destPremultiplied) {
					if((_color & 255) == 0) {
						if(_color != 0) {
							_color = 0;
						}
					} else if((_color & 255) != 255) {
						lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[_color & 255];
						_color = ((_color >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((_color >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((_color >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | _color & 255 & 255;
					}
				}
				switch(destFormat) {
				case 0:
					destData[destPosition] = _color >>> 24 & 255;
					destData[destPosition + 1] = _color >>> 16 & 255;
					destData[destPosition + 2] = _color >>> 8 & 255;
					destData[destPosition + 3] = _color & 255;
					break;
				case 1:
					destData[destPosition] = _color & 255;
					destData[destPosition + 1] = _color >>> 24 & 255;
					destData[destPosition + 2] = _color >>> 16 & 255;
					destData[destPosition + 3] = _color >>> 8 & 255;
					break;
				case 2:
					destData[destPosition] = _color >>> 8 & 255;
					destData[destPosition + 1] = _color >>> 16 & 255;
					destData[destPosition + 2] = _color >>> 24 & 255;
					destData[destPosition + 3] = _color & 255;
					break;
				}
				++hits;
			} else if(copySource) {
				if(destPremultiplied) {
					if((srcPixel & 255) == 0) {
						if(srcPixel != 0) {
							srcPixel = 0;
						}
					} else if((srcPixel & 255) != 255) {
						lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[srcPixel & 255];
						srcPixel = ((srcPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((srcPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((srcPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | srcPixel & 255 & 255;
					}
				}
				switch(destFormat) {
				case 0:
					destData[destPosition] = srcPixel >>> 24 & 255;
					destData[destPosition + 1] = srcPixel >>> 16 & 255;
					destData[destPosition + 2] = srcPixel >>> 8 & 255;
					destData[destPosition + 3] = srcPixel & 255;
					break;
				case 1:
					destData[destPosition] = srcPixel & 255;
					destData[destPosition + 1] = srcPixel >>> 24 & 255;
					destData[destPosition + 2] = srcPixel >>> 16 & 255;
					destData[destPosition + 3] = srcPixel >>> 8 & 255;
					break;
				case 2:
					destData[destPosition] = srcPixel >>> 8 & 255;
					destData[destPosition + 1] = srcPixel >>> 16 & 255;
					destData[destPosition + 2] = srcPixel >>> 24 & 255;
					destData[destPosition + 3] = srcPixel & 255;
					break;
				}
			}
			srcPosition += 4;
			destPosition += 4;
		}
	}
	if(hits > 0) {
		image.dirty = true;
		image.version++;
	}
	return hits;
};
lime_graphics_utils_ImageDataUtil.unmultiplyAlpha = function(image) {
	var data = image.buffer.data;
	if(data == null) {
		return;
	}
	var format = image.buffer.format;
	var length = data.length / 4 | 0;
	var pixel;
	var _g1 = 0;
	var _g = length;
	while(_g1 < _g) {
		var i = _g1++;
		var offset = i * 4;
		switch(format) {
		case 0:
			pixel = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
			break;
		case 1:
			pixel = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
			break;
		case 2:
			pixel = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
			break;
		}
		if((pixel & 255) != 0 && (pixel & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (pixel & 255);
			pixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((pixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | pixel & 255 & 255;
		}
		var offset1 = i * 4;
		switch(format) {
		case 0:
			data[offset1] = pixel >>> 24 & 255;
			data[offset1 + 1] = pixel >>> 16 & 255;
			data[offset1 + 2] = pixel >>> 8 & 255;
			data[offset1 + 3] = pixel & 255;
			break;
		case 1:
			data[offset1] = pixel & 255;
			data[offset1 + 1] = pixel >>> 24 & 255;
			data[offset1 + 2] = pixel >>> 16 & 255;
			data[offset1 + 3] = pixel >>> 8 & 255;
			break;
		case 2:
			data[offset1] = pixel >>> 8 & 255;
			data[offset1 + 1] = pixel >>> 16 & 255;
			data[offset1 + 2] = pixel >>> 24 & 255;
			data[offset1 + 3] = pixel & 255;
			break;
		}
	}
	image.buffer.premultiplied = false;
	image.dirty = true;
	image.version++;
};
lime_graphics_utils_ImageDataUtil.__pixelCompare = function(n1,n2) {
	var tmp1;
	var tmp2;
	tmp1 = n1 >>> 24 & 255;
	tmp2 = n2 >>> 24 & 255;
	if(tmp1 != tmp2) {
		if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
			return 1;
		} else {
			return -1;
		}
	} else {
		tmp1 = n1 >>> 16 & 255;
		tmp2 = n2 >>> 16 & 255;
		if(tmp1 != tmp2) {
			if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
				return 1;
			} else {
				return -1;
			}
		} else {
			tmp1 = n1 >>> 8 & 255;
			tmp2 = n2 >>> 8 & 255;
			if(tmp1 != tmp2) {
				if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
					return 1;
				} else {
					return -1;
				}
			} else {
				tmp1 = n1 & 255;
				tmp2 = n2 & 255;
				if(tmp1 != tmp2) {
					if(_$UInt_UInt_$Impl_$.gt(tmp1,tmp2)) {
						return 1;
					} else {
						return -1;
					}
				} else {
					return 0;
				}
			}
		}
	}
};
var lime_graphics_utils__$ImageDataUtil_ImageDataView = function(image,rect) {
	this.image = image;
	if(rect == null) {
		this.rect = image.get_rect();
	} else {
		if(rect.x < 0) {
			rect.x = 0;
		}
		if(rect.y < 0) {
			rect.y = 0;
		}
		if(rect.x + rect.width > image.width) {
			rect.width = image.width - rect.x;
		}
		if(rect.y + rect.height > image.height) {
			rect.height = image.height - rect.y;
		}
		if(rect.width < 0) {
			rect.width = 0;
		}
		if(rect.height < 0) {
			rect.height = 0;
		}
		this.rect = rect;
	}
	this.stride = image.buffer.get_stride();
	this.__update();
};
$hxClasses["lime.graphics.utils._ImageDataUtil.ImageDataView"] = lime_graphics_utils__$ImageDataUtil_ImageDataView;
lime_graphics_utils__$ImageDataUtil_ImageDataView.__name__ = ["lime","graphics","utils","_ImageDataUtil","ImageDataView"];
lime_graphics_utils__$ImageDataUtil_ImageDataView.prototype = {
	x: null
	,y: null
	,height: null
	,width: null
	,byteOffset: null
	,image: null
	,rect: null
	,stride: null
	,clip: function(x,y,width,height) {
		this.rect.__contract(x,y,width,height);
		this.__update();
	}
	,hasRow: function(y) {
		if(y >= 0) {
			return y < this.height;
		} else {
			return false;
		}
	}
	,offset: function(x,y) {
		if(x < 0) {
			this.rect.x += x;
			if(this.rect.x < 0) {
				this.rect.x = 0;
			}
		} else {
			this.rect.x += x;
			this.rect.width -= x;
		}
		if(y < 0) {
			this.rect.y += y;
			if(this.rect.y < 0) {
				this.rect.y = 0;
			}
		} else {
			this.rect.y += y;
			this.rect.height -= y;
		}
		this.__update();
	}
	,row: function(y) {
		return this.byteOffset + this.stride * y;
	}
	,__update: function() {
		this.x = Math.ceil(this.rect.x);
		this.y = Math.ceil(this.rect.y);
		this.width = Math.floor(this.rect.width);
		this.height = Math.floor(this.rect.height);
		this.byteOffset = this.stride * (this.y + this.image.offsetY) + (this.x + this.image.offsetX) * 4;
	}
	,__class__: lime_graphics_utils__$ImageDataUtil_ImageDataView
};
var lime_math__$ColorMatrix_ColorMatrix_$Impl_$ = {};
$hxClasses["lime.math._ColorMatrix.ColorMatrix_Impl_"] = lime_math__$ColorMatrix_ColorMatrix_$Impl_$;
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__name__ = ["lime","math","_ColorMatrix","ColorMatrix_Impl_"];
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__properties__ = {set_redOffset:"set_redOffset",get_redOffset:"get_redOffset",set_redMultiplier:"set_redMultiplier",get_redMultiplier:"get_redMultiplier",set_greenOffset:"set_greenOffset",get_greenOffset:"get_greenOffset",set_greenMultiplier:"set_greenMultiplier",get_greenMultiplier:"get_greenMultiplier",set_color:"set_color",get_color:"get_color",set_blueOffset:"set_blueOffset",get_blueOffset:"get_blueOffset",set_blueMultiplier:"set_blueMultiplier",get_blueMultiplier:"get_blueMultiplier",set_alphaOffset:"set_alphaOffset",get_alphaOffset:"get_alphaOffset",set_alphaMultiplier:"set_alphaMultiplier",get_alphaMultiplier:"get_alphaMultiplier"};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$._new = function(data) {
	var this1;
	if(data != null && data.length == 20) {
		this1 = data;
	} else {
		var array = lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__identity;
		var this2;
		if(array != null) {
			this2 = new Float32Array(array);
		} else {
			this2 = null;
		}
		this1 = this2;
	}
	return this1;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.clone = function(this1) {
	var this2;
	if(this1 != null) {
		this2 = new Float32Array(this1);
	} else {
		this2 = null;
	}
	return lime_math__$ColorMatrix_ColorMatrix_$Impl_$._new(this2);
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.concat = function(this1,second) {
	var _g = this1;
	_g[0] += second[0];
	var _g1 = this1;
	_g1[6] += second[6];
	var _g2 = this1;
	_g2[12] += second[12];
	var _g3 = this1;
	_g3[18] += second[18];
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.copyFrom = function(this1,other) {
	this1.set(other);
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.identity = function(this1) {
	this1[0] = 1;
	this1[1] = 0;
	this1[2] = 0;
	this1[3] = 0;
	this1[4] = 0;
	this1[5] = 0;
	this1[6] = 1;
	this1[7] = 0;
	this1[8] = 0;
	this1[9] = 0;
	this1[10] = 0;
	this1[11] = 0;
	this1[12] = 1;
	this1[13] = 0;
	this1[14] = 0;
	this1[15] = 0;
	this1[16] = 0;
	this1[17] = 0;
	this1[18] = 1;
	this1[19] = 0;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getAlphaTable = function(this1) {
	if(lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable == null) {
		var this2 = new Uint8Array(256);
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable = this2;
	}
	var value;
	lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable[0] = 0;
	var _g = 1;
	while(_g < 256) {
		var i = _g++;
		value = Math.floor(i * this1[18] + this1[19] * 255);
		if(value > 255) {
			value = 255;
		}
		if(value < 0) {
			value = 0;
		}
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable[i] = value;
	}
	return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__alphaTable;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getBlueTable = function(this1) {
	if(lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable == null) {
		var this2 = new Uint8Array(256);
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable = this2;
	}
	var value;
	var _g = 0;
	while(_g < 256) {
		var i = _g++;
		value = Math.floor(i * this1[12] + this1[14] * 255);
		if(value > 255) {
			value = 255;
		}
		if(value < 0) {
			value = 0;
		}
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable[i] = value;
	}
	return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__blueTable;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getGreenTable = function(this1) {
	if(lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable == null) {
		var this2 = new Uint8Array(256);
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable = this2;
	}
	var value;
	var _g = 0;
	while(_g < 256) {
		var i = _g++;
		value = Math.floor(i * this1[6] + this1[9] * 255);
		if(value > 255) {
			value = 255;
		}
		if(value < 0) {
			value = 0;
		}
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable[i] = value;
	}
	return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__greenTable;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.getRedTable = function(this1) {
	if(lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable == null) {
		var this2 = new Uint8Array(256);
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable = this2;
	}
	var value;
	var _g = 0;
	while(_g < 256) {
		var i = _g++;
		value = Math.floor(i * this1[0] + this1[4] * 255);
		if(value > 255) {
			value = 255;
		}
		if(value < 0) {
			value = 0;
		}
		lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable[i] = value;
	}
	return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__redTable;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__toFlashColorTransform = function(this1) {
	return null;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_alphaMultiplier = function(this1) {
	return this1[18];
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_alphaMultiplier = function(this1,value) {
	return this1[18] = value;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_alphaOffset = function(this1) {
	return this1[19] * 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_alphaOffset = function(this1,value) {
	return this1[19] = value / 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_blueMultiplier = function(this1) {
	return this1[12];
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_blueMultiplier = function(this1,value) {
	return this1[12] = value;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_blueOffset = function(this1) {
	return this1[14] * 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_blueOffset = function(this1,value) {
	return this1[14] = value / 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_color = function(this1) {
	return (this1[4] * 255 | 0) << 16 | (this1[9] * 255 | 0) << 8 | (this1[14] * 255 | 0);
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_color = function(this1,value) {
	this1[4] = (value >> 16 & 255) / 255;
	this1[9] = (value >> 8 & 255) / 255;
	this1[14] = (value & 255) / 255;
	this1[0] = 0;
	this1[6] = 0;
	this1[12] = 0;
	return lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_color(this1);
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_greenMultiplier = function(this1) {
	return this1[6];
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_greenMultiplier = function(this1,value) {
	return this1[6] = value;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_greenOffset = function(this1) {
	return this1[9] * 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_greenOffset = function(this1,value) {
	return this1[9] = value / 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_redMultiplier = function(this1) {
	return this1[0];
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_redMultiplier = function(this1,value) {
	return this1[0] = value;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get_redOffset = function(this1) {
	return this1[4] * 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set_redOffset = function(this1,value) {
	return this1[4] = value / 255;
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.get = function(this1,index) {
	return this1[index];
};
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.set = function(this1,index,value) {
	return this1[index] = value;
};
var lime_math_Matrix3 = function(a,b,c,d,tx,ty) {
	if(ty == null) {
		ty = 0;
	}
	if(tx == null) {
		tx = 0;
	}
	if(d == null) {
		d = 1;
	}
	if(c == null) {
		c = 0;
	}
	if(b == null) {
		b = 0;
	}
	if(a == null) {
		a = 1;
	}
	this.a = a;
	this.b = b;
	this.c = c;
	this.d = d;
	this.tx = tx;
	this.ty = ty;
};
$hxClasses["lime.math.Matrix3"] = lime_math_Matrix3;
lime_math_Matrix3.__name__ = ["lime","math","Matrix3"];
lime_math_Matrix3.prototype = {
	a: null
	,b: null
	,c: null
	,d: null
	,tx: null
	,ty: null
	,clone: function() {
		return new lime_math_Matrix3(this.a,this.b,this.c,this.d,this.tx,this.ty);
	}
	,concat: function(m) {
		var a1 = this.a * m.a + this.b * m.c;
		this.b = this.a * m.b + this.b * m.d;
		this.a = a1;
		var c1 = this.c * m.a + this.d * m.c;
		this.d = this.c * m.b + this.d * m.d;
		this.c = c1;
		var tx1 = this.tx * m.a + this.ty * m.c + m.tx;
		this.ty = this.tx * m.b + this.ty * m.d + m.ty;
		this.tx = tx1;
	}
	,copyColumnFrom: function(column,vector4) {
		if(column > 2) {
			throw new js__$Boot_HaxeError("Column " + column + " out of bounds (2)");
		} else if(column == 0) {
			this.a = vector4.x;
			this.c = vector4.y;
		} else if(column == 1) {
			this.b = vector4.x;
			this.d = vector4.y;
		} else {
			this.tx = vector4.x;
			this.ty = vector4.y;
		}
	}
	,copyColumnTo: function(column,vector4) {
		if(column > 2) {
			throw new js__$Boot_HaxeError("Column " + column + " out of bounds (2)");
		} else if(column == 0) {
			vector4.x = this.a;
			vector4.y = this.c;
			vector4.z = 0;
		} else if(column == 1) {
			vector4.x = this.b;
			vector4.y = this.d;
			vector4.z = 0;
		} else {
			vector4.x = this.tx;
			vector4.y = this.ty;
			vector4.z = 1;
		}
	}
	,copyFrom: function(sourceMatrix3) {
		this.a = sourceMatrix3.a;
		this.b = sourceMatrix3.b;
		this.c = sourceMatrix3.c;
		this.d = sourceMatrix3.d;
		this.tx = sourceMatrix3.tx;
		this.ty = sourceMatrix3.ty;
	}
	,copyRowFrom: function(row,vector4) {
		if(row > 2) {
			throw new js__$Boot_HaxeError("Row " + row + " out of bounds (2)");
		} else if(row == 0) {
			this.a = vector4.x;
			this.c = vector4.y;
		} else if(row == 1) {
			this.b = vector4.x;
			this.d = vector4.y;
		} else {
			this.tx = vector4.x;
			this.ty = vector4.y;
		}
	}
	,copyRowTo: function(row,vector4) {
		if(row > 2) {
			throw new js__$Boot_HaxeError("Row " + row + " out of bounds (2)");
		} else if(row == 0) {
			vector4.x = this.a;
			vector4.y = this.b;
			vector4.z = this.tx;
		} else if(row == 1) {
			vector4.x = this.c;
			vector4.y = this.d;
			vector4.z = this.ty;
		} else {
			vector4.x = 0;
			vector4.y = 0;
			vector4.z = 1;
		}
	}
	,createBox: function(scaleX,scaleY,rotation,tx,ty) {
		if(ty == null) {
			ty = 0;
		}
		if(tx == null) {
			tx = 0;
		}
		if(rotation == null) {
			rotation = 0;
		}
		this.a = scaleX;
		this.d = scaleY;
		this.b = rotation;
		this.tx = tx;
		this.ty = ty;
	}
	,createGradientBox: function(width,height,rotation,tx,ty) {
		if(ty == null) {
			ty = 0;
		}
		if(tx == null) {
			tx = 0;
		}
		if(rotation == null) {
			rotation = 0;
		}
		this.a = width / 1638.4;
		this.d = height / 1638.4;
		if(rotation != 0) {
			var cos = Math.cos(rotation);
			var sin = Math.sin(rotation);
			this.b = sin * this.d;
			this.c = -sin * this.a;
			this.a *= cos;
			this.d *= cos;
		} else {
			this.b = 0;
			this.c = 0;
		}
		this.tx = tx + width / 2;
		this.ty = ty + height / 2;
	}
	,equals: function(Matrix3) {
		if(Matrix3 != null && this.tx == Matrix3.tx && this.ty == Matrix3.ty && this.a == Matrix3.a && this.b == Matrix3.b && this.c == Matrix3.c) {
			return this.d == Matrix3.d;
		} else {
			return false;
		}
	}
	,deltaTransformVector2: function(Vector2) {
		return new lime_math_Vector2(Vector2.x * this.a + Vector2.y * this.c,Vector2.x * this.b + Vector2.y * this.d);
	}
	,identity: function() {
		this.a = 1;
		this.b = 0;
		this.c = 0;
		this.d = 1;
		this.tx = 0;
		this.ty = 0;
	}
	,invert: function() {
		var norm = this.a * this.d - this.b * this.c;
		if(norm == 0) {
			this.a = this.b = this.c = this.d = 0;
			this.tx = -this.tx;
			this.ty = -this.ty;
		} else {
			norm = 1.0 / norm;
			var a1 = this.d * norm;
			this.d = this.a * norm;
			this.a = a1;
			this.b *= -norm;
			this.c *= -norm;
			var tx1 = -this.a * this.tx - this.c * this.ty;
			this.ty = -this.b * this.tx - this.d * this.ty;
			this.tx = tx1;
		}
		return this;
	}
	,mult: function(m) {
		var result = new lime_math_Matrix3(this.a,this.b,this.c,this.d,this.tx,this.ty);
		result.concat(m);
		return result;
	}
	,rotate: function(theta) {
		var cos = Math.cos(theta);
		var sin = Math.sin(theta);
		var a1 = this.a * cos - this.b * sin;
		this.b = this.a * sin + this.b * cos;
		this.a = a1;
		var c1 = this.c * cos - this.d * sin;
		this.d = this.c * sin + this.d * cos;
		this.c = c1;
		var tx1 = this.tx * cos - this.ty * sin;
		this.ty = this.tx * sin + this.ty * cos;
		this.tx = tx1;
	}
	,scale: function(sx,sy) {
		this.a *= sx;
		this.b *= sy;
		this.c *= sx;
		this.d *= sy;
		this.tx *= sx;
		this.ty *= sy;
	}
	,setRotation: function(theta,scale) {
		if(scale == null) {
			scale = 1;
		}
		this.a = Math.cos(theta) * scale;
		this.c = Math.sin(theta) * scale;
		this.b = -this.c;
		this.d = this.a;
	}
	,setTo: function(a,b,c,d,tx,ty) {
		this.a = a;
		this.b = b;
		this.c = c;
		this.d = d;
		this.tx = tx;
		this.ty = ty;
	}
	,to3DString: function(roundPixels) {
		if(roundPixels == null) {
			roundPixels = false;
		}
		if(roundPixels) {
			return "Matrix33d(" + this.a + ", " + this.b + ", " + "0, 0, " + this.c + ", " + this.d + ", " + "0, 0, 0, 0, 1, 0, " + (this.tx | 0) + ", " + (this.ty | 0) + ", 0, 1)";
		} else {
			return "Matrix33d(" + this.a + ", " + this.b + ", " + "0, 0, " + this.c + ", " + this.d + ", " + "0, 0, 0, 0, 1, 0, " + this.tx + ", " + this.ty + ", 0, 1)";
		}
	}
	,toMozString: function() {
		return "Matrix3(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + "px, " + this.ty + "px)";
	}
	,toString: function() {
		return "Matrix3(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + ", " + this.ty + ")";
	}
	,transformVector2: function(pos) {
		return new lime_math_Vector2(pos.x * this.a + pos.y * this.c + this.tx,pos.x * this.b + pos.y * this.d + this.ty);
	}
	,translate: function(dx,dy) {
		this.tx += dx;
		this.ty += dy;
	}
	,__cleanValues: function() {
		this.a = Math.round(this.a * 1000) / 1000;
		this.b = Math.round(this.b * 1000) / 1000;
		this.c = Math.round(this.c * 1000) / 1000;
		this.d = Math.round(this.d * 1000) / 1000;
		this.tx = Math.round(this.tx * 10) / 10;
		this.ty = Math.round(this.ty * 10) / 10;
	}
	,__transformX: function(pos) {
		return pos.x * this.a + pos.y * this.c + this.tx;
	}
	,__transformY: function(pos) {
		return pos.x * this.b + pos.y * this.d + this.ty;
	}
	,__translateTransformed: function(pos) {
		this.tx = pos.x * this.a + pos.y * this.c + this.tx;
		this.ty = pos.x * this.b + pos.y * this.d + this.ty;
	}
	,__class__: lime_math_Matrix3
};
var lime_math__$Matrix4_Matrix4_$Impl_$ = {};
$hxClasses["lime.math._Matrix4.Matrix4_Impl_"] = lime_math__$Matrix4_Matrix4_$Impl_$;
lime_math__$Matrix4_Matrix4_$Impl_$.__name__ = ["lime","math","_Matrix4","Matrix4_Impl_"];
lime_math__$Matrix4_Matrix4_$Impl_$.__properties__ = {set_position:"set_position",get_position:"get_position",get_determinant:"get_determinant"};
lime_math__$Matrix4_Matrix4_$Impl_$._new = function(data) {
	var this1;
	if(data != null && data.length == 16) {
		this1 = data;
	} else {
		var array = lime_math__$Matrix4_Matrix4_$Impl_$.__identity;
		var this2;
		if(array != null) {
			this2 = new Float32Array(array);
		} else {
			this2 = null;
		}
		this1 = this2;
	}
	return this1;
};
lime_math__$Matrix4_Matrix4_$Impl_$.append = function(this1,lhs) {
	var m111 = this1[0];
	var m121 = this1[4];
	var m131 = this1[8];
	var m141 = this1[12];
	var m112 = this1[1];
	var m122 = this1[5];
	var m132 = this1[9];
	var m142 = this1[13];
	var m113 = this1[2];
	var m123 = this1[6];
	var m133 = this1[10];
	var m143 = this1[14];
	var m114 = this1[3];
	var m124 = this1[7];
	var m134 = this1[11];
	var m144 = this1[15];
	var m211 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,0);
	var m221 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,4);
	var m231 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,8);
	var m241 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,12);
	var m212 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,1);
	var m222 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,5);
	var m232 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,9);
	var m242 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,13);
	var m213 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,2);
	var m223 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,6);
	var m233 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,10);
	var m243 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,14);
	var m214 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,3);
	var m224 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,7);
	var m234 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,11);
	var m244 = lime_math__$Matrix4_Matrix4_$Impl_$.get(lhs,15);
	this1[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
	this1[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
	this1[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
	this1[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
	this1[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
	this1[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
	this1[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
	this1[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
	this1[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
	this1[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
	this1[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
	this1[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
	this1[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
	this1[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
	this1[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
	this1[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
};
lime_math__$Matrix4_Matrix4_$Impl_$.appendRotation = function(this1,degrees,axis,pivotPoint) {
	var m = lime_math__$Matrix4_Matrix4_$Impl_$.__getAxisRotation(this1,axis.x,axis.y,axis.z,degrees);
	if(pivotPoint != null) {
		var p = pivotPoint;
		lime_math__$Matrix4_Matrix4_$Impl_$.appendTranslation(m,p.x,p.y,p.z);
	}
	lime_math__$Matrix4_Matrix4_$Impl_$.append(this1,m);
};
lime_math__$Matrix4_Matrix4_$Impl_$.appendScale = function(this1,xScale,yScale,zScale) {
	var array = [xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0];
	var this2;
	if(array != null) {
		this2 = new Float32Array(array);
	} else {
		this2 = null;
	}
	lime_math__$Matrix4_Matrix4_$Impl_$.append(this1,lime_math__$Matrix4_Matrix4_$Impl_$._new(this2));
};
lime_math__$Matrix4_Matrix4_$Impl_$.appendTranslation = function(this1,x,y,z) {
	this1[12] += x;
	this1[13] += y;
	this1[14] += z;
};
lime_math__$Matrix4_Matrix4_$Impl_$.clone = function(this1) {
	var this2;
	if(this1 != null) {
		this2 = new Float32Array(this1);
	} else {
		this2 = null;
	}
	return lime_math__$Matrix4_Matrix4_$Impl_$._new(this2);
};
lime_math__$Matrix4_Matrix4_$Impl_$.copyColumnFrom = function(this1,column,vector) {
	switch(column) {
	case 0:
		this1[0] = vector.x;
		this1[1] = vector.y;
		this1[2] = vector.z;
		this1[3] = vector.w;
		break;
	case 1:
		this1[4] = vector.x;
		this1[5] = vector.y;
		this1[6] = vector.z;
		this1[7] = vector.w;
		break;
	case 2:
		this1[8] = vector.x;
		this1[9] = vector.y;
		this1[10] = vector.z;
		this1[11] = vector.w;
		break;
	case 3:
		this1[12] = vector.x;
		this1[13] = vector.y;
		this1[14] = vector.z;
		this1[15] = vector.w;
		break;
	default:
		lime_utils_Log.error("Column " + column + " out of bounds [0, ..., 3]",{ fileName : "Matrix4.hx", lineNumber : 139, className : "lime.math._Matrix4.Matrix4_Impl_", methodName : "copyColumnFrom"});
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.copyColumnTo = function(this1,column,vector) {
	switch(column) {
	case 0:
		vector.x = this1[0];
		vector.y = this1[1];
		vector.z = this1[2];
		vector.w = this1[3];
		break;
	case 1:
		vector.x = this1[4];
		vector.y = this1[5];
		vector.z = this1[6];
		vector.w = this1[7];
		break;
	case 2:
		vector.x = this1[8];
		vector.y = this1[9];
		vector.z = this1[10];
		vector.w = this1[11];
		break;
	case 3:
		vector.x = this1[12];
		vector.y = this1[13];
		vector.z = this1[14];
		vector.w = this1[15];
		break;
	default:
		lime_utils_Log.error("Column " + column + " out of bounds [0, ..., 3]",{ fileName : "Matrix4.hx", lineNumber : 180, className : "lime.math._Matrix4.Matrix4_Impl_", methodName : "copyColumnTo"});
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.copyFrom = function(this1,other) {
	this1.set(other);
};
lime_math__$Matrix4_Matrix4_$Impl_$.copythisFrom = function(this1,array,index,transposeValues) {
	if(transposeValues == null) {
		transposeValues = false;
	}
	if(index == null) {
		index = 0;
	}
	if(transposeValues) {
		lime_math__$Matrix4_Matrix4_$Impl_$.transpose(this1);
	}
	var l = array.length - index;
	var _g1 = 0;
	var _g = l;
	while(_g1 < _g) {
		var c = _g1++;
		this1[c] = array[c + index];
	}
	if(transposeValues) {
		lime_math__$Matrix4_Matrix4_$Impl_$.transpose(this1);
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.copythisTo = function(this1,array,index,transposeValues) {
	if(transposeValues == null) {
		transposeValues = false;
	}
	if(index == null) {
		index = 0;
	}
	if(transposeValues) {
		lime_math__$Matrix4_Matrix4_$Impl_$.transpose(this1);
	}
	var l = this1.length;
	var _g1 = 0;
	var _g = l;
	while(_g1 < _g) {
		var c = _g1++;
		array[c + index] = this1[c];
	}
	if(transposeValues) {
		lime_math__$Matrix4_Matrix4_$Impl_$.transpose(this1);
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.copyRowFrom = function(this1,row,vector) {
	switch(row) {
	case 0:
		this1[0] = vector.x;
		this1[4] = vector.y;
		this1[8] = vector.z;
		this1[12] = vector.w;
		break;
	case 1:
		this1[1] = vector.x;
		this1[5] = vector.y;
		this1[9] = vector.z;
		this1[13] = vector.w;
		break;
	case 2:
		this1[2] = vector.x;
		this1[6] = vector.y;
		this1[10] = vector.z;
		this1[14] = vector.w;
		break;
	case 3:
		this1[3] = vector.x;
		this1[7] = vector.y;
		this1[11] = vector.z;
		this1[15] = vector.w;
		break;
	default:
		lime_utils_Log.error("Row " + row + " out of bounds [0, ..., 3]",{ fileName : "Matrix4.hx", lineNumber : 258, className : "lime.math._Matrix4.Matrix4_Impl_", methodName : "copyRowFrom"});
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.create2D = function(x,y,scale,rotation) {
	if(rotation == null) {
		rotation = 0;
	}
	if(scale == null) {
		scale = 1;
	}
	var theta = rotation * Math.PI / 180.0;
	var c = Math.cos(theta);
	var s = Math.sin(theta);
	var array = [c * scale,-s * scale,0,0,s * scale,c * scale,0,0,0,0,1,0,x,y,0,1];
	var this1;
	if(array != null) {
		this1 = new Float32Array(array);
	} else {
		this1 = null;
	}
	return lime_math__$Matrix4_Matrix4_$Impl_$._new(this1);
};
lime_math__$Matrix4_Matrix4_$Impl_$.createABCD = function(a,b,c,d,tx,ty,matrix) {
	if(matrix == null) {
		matrix = lime_math__$Matrix4_Matrix4_$Impl_$._new();
	}
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,0,a);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,1,b);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,2,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,3,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,4,c);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,5,d);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,6,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,7,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,8,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,9,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,10,1);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,11,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,12,tx);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,13,ty);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,14,0);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(matrix,15,1);
	return matrix;
};
lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho = function(x0,x1,y0,y1,zNear,zFar) {
	var sx = 1.0 / (x1 - x0);
	var sy = 1.0 / (y1 - y0);
	var sz = 1.0 / (zFar - zNear);
	var array = [2.0 * sx,0,0,0,0,2.0 * sy,0,0,0,0,-2.0 * sz,0,-(x0 + x1) * sx,-(y0 + y1) * sy,-(zNear + zFar) * sz,1];
	var this1;
	if(array != null) {
		this1 = new Float32Array(array);
	} else {
		this1 = null;
	}
	return lime_math__$Matrix4_Matrix4_$Impl_$._new(this1);
};
lime_math__$Matrix4_Matrix4_$Impl_$.copyRowTo = function(this1,row,vector) {
	switch(row) {
	case 0:
		vector.x = this1[0];
		vector.y = this1[4];
		vector.z = this1[8];
		vector.w = this1[12];
		break;
	case 1:
		vector.x = this1[1];
		vector.y = this1[5];
		vector.z = this1[9];
		vector.w = this1[13];
		break;
	case 2:
		vector.x = this1[2];
		vector.y = this1[6];
		vector.z = this1[10];
		vector.w = this1[14];
		break;
	case 3:
		vector.x = this1[3];
		vector.y = this1[7];
		vector.z = this1[11];
		vector.w = this1[15];
		break;
	default:
		lime_utils_Log.error("Row " + row + " out of bounds [0, ..., 3]",{ fileName : "Matrix4.hx", lineNumber : 360, className : "lime.math._Matrix4.Matrix4_Impl_", methodName : "copyRowTo"});
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.copyToMatrix4 = function(this1,other) {
	(js_Boot.__cast(other , Float32Array)).set(this1);
};
lime_math__$Matrix4_Matrix4_$Impl_$.deltaTransformVector = function(this1,v) {
	var x = v.x;
	var y = v.y;
	var z = v.z;
	return new lime_math_Vector4(x * this1[0] + y * this1[4] + z * this1[8] + this1[3],x * this1[1] + y * this1[5] + z * this1[9] + this1[7],x * this1[2] + y * this1[6] + z * this1[10] + this1[11],0);
};
lime_math__$Matrix4_Matrix4_$Impl_$.identity = function(this1) {
	this1[0] = 1;
	this1[1] = 0;
	this1[2] = 0;
	this1[3] = 0;
	this1[4] = 0;
	this1[5] = 1;
	this1[6] = 0;
	this1[7] = 0;
	this1[8] = 0;
	this1[9] = 0;
	this1[10] = 1;
	this1[11] = 0;
	this1[12] = 0;
	this1[13] = 0;
	this1[14] = 0;
	this1[15] = 1;
};
lime_math__$Matrix4_Matrix4_$Impl_$.interpolate = function(thisMat,toMat,percent) {
	var m = lime_math__$Matrix4_Matrix4_$Impl_$._new();
	var _g = 0;
	while(_g < 16) {
		var i = _g++;
		lime_math__$Matrix4_Matrix4_$Impl_$.set(m,i,lime_math__$Matrix4_Matrix4_$Impl_$.get(thisMat,i) + (lime_math__$Matrix4_Matrix4_$Impl_$.get(toMat,i) - lime_math__$Matrix4_Matrix4_$Impl_$.get(thisMat,i)) * percent);
	}
	return m;
};
lime_math__$Matrix4_Matrix4_$Impl_$.interpolateTo = function(this1,toMat,percent) {
	var _g = 0;
	while(_g < 16) {
		var i = _g++;
		this1[i] += (lime_math__$Matrix4_Matrix4_$Impl_$.get(toMat,i) - this1[i]) * percent;
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.invert = function(this1) {
	var d = lime_math__$Matrix4_Matrix4_$Impl_$.get_determinant(this1);
	var invertable = Math.abs(d) > 0.00000000001;
	if(invertable) {
		d = 1 / d;
		var m11 = this1[0];
		var m21 = this1[4];
		var m31 = this1[8];
		var m41 = this1[12];
		var m12 = this1[1];
		var m22 = this1[5];
		var m32 = this1[9];
		var m42 = this1[13];
		var m13 = this1[2];
		var m23 = this1[6];
		var m33 = this1[10];
		var m43 = this1[14];
		var m14 = this1[3];
		var m24 = this1[7];
		var m34 = this1[11];
		var m44 = this1[15];
		this1[0] = d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24));
		this1[1] = -d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14));
		this1[2] = d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14));
		this1[3] = -d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14));
		this1[4] = -d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24));
		this1[5] = d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14));
		this1[6] = -d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14));
		this1[7] = d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14));
		this1[8] = d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24));
		this1[9] = -d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14));
		this1[10] = d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14));
		this1[11] = -d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14));
		this1[12] = -d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23));
		this1[13] = d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13));
		this1[14] = -d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13));
		this1[15] = d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13));
	}
	return invertable;
};
lime_math__$Matrix4_Matrix4_$Impl_$.pointAt = function(this1,pos,at,up) {
	if(at == null) {
		at = new lime_math_Vector4(0,0,-1);
	}
	if(up == null) {
		up = new lime_math_Vector4(0,-1,0);
	}
	var dir = new lime_math_Vector4(at.x - pos.x,at.y - pos.y,at.z - pos.z);
	var vup = new lime_math_Vector4(up.x,up.y,up.z,up.w);
	var right;
	var l = Math.sqrt(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z);
	if(l != 0) {
		dir.x /= l;
		dir.y /= l;
		dir.z /= l;
	}
	var l1 = Math.sqrt(vup.x * vup.x + vup.y * vup.y + vup.z * vup.z);
	if(l1 != 0) {
		vup.x /= l1;
		vup.y /= l1;
		vup.z /= l1;
	}
	var dir2 = new lime_math_Vector4(dir.x,dir.y,dir.z,dir.w);
	var s = vup.x * dir.x + vup.y * dir.y + vup.z * dir.z;
	dir2.x *= s;
	dir2.y *= s;
	dir2.z *= s;
	vup = new lime_math_Vector4(vup.x - dir2.x,vup.y - dir2.y,vup.z - dir2.z);
	if(Math.sqrt(vup.x * vup.x + vup.y * vup.y + vup.z * vup.z) > 0) {
		var l2 = Math.sqrt(vup.x * vup.x + vup.y * vup.y + vup.z * vup.z);
		if(l2 != 0) {
			vup.x /= l2;
			vup.y /= l2;
			vup.z /= l2;
		}
	} else if(dir.x != 0) {
		vup = new lime_math_Vector4(-dir.y,dir.x,0);
	} else {
		vup = new lime_math_Vector4(1,0,0);
	}
	right = new lime_math_Vector4(vup.y * dir.z - vup.z * dir.y,vup.z * dir.x - vup.x * dir.z,vup.x * dir.y - vup.y * dir.x,1);
	var l3 = Math.sqrt(right.x * right.x + right.y * right.y + right.z * right.z);
	if(l3 != 0) {
		right.x /= l3;
		right.y /= l3;
		right.z /= l3;
	}
	this1[0] = right.x;
	this1[4] = right.y;
	this1[8] = right.z;
	this1[12] = 0.0;
	this1[1] = vup.x;
	this1[5] = vup.y;
	this1[9] = vup.z;
	this1[13] = 0.0;
	this1[2] = dir.x;
	this1[6] = dir.y;
	this1[10] = dir.z;
	this1[14] = 0.0;
	this1[3] = pos.x;
	this1[7] = pos.y;
	this1[11] = pos.z;
	this1[15] = 1.0;
};
lime_math__$Matrix4_Matrix4_$Impl_$.prepend = function(this1,rhs) {
	var m111 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,0);
	var m121 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,4);
	var m131 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,8);
	var m141 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,12);
	var m112 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,1);
	var m122 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,5);
	var m132 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,9);
	var m142 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,13);
	var m113 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,2);
	var m123 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,6);
	var m133 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,10);
	var m143 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,14);
	var m114 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,3);
	var m124 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,7);
	var m134 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,11);
	var m144 = lime_math__$Matrix4_Matrix4_$Impl_$.get(rhs,15);
	var m211 = this1[0];
	var m221 = this1[4];
	var m231 = this1[8];
	var m241 = this1[12];
	var m212 = this1[1];
	var m222 = this1[5];
	var m232 = this1[9];
	var m242 = this1[13];
	var m213 = this1[2];
	var m223 = this1[6];
	var m233 = this1[10];
	var m243 = this1[14];
	var m214 = this1[3];
	var m224 = this1[7];
	var m234 = this1[11];
	var m244 = this1[15];
	this1[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
	this1[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
	this1[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
	this1[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
	this1[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
	this1[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
	this1[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
	this1[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
	this1[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
	this1[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
	this1[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
	this1[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
	this1[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
	this1[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
	this1[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
	this1[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
};
lime_math__$Matrix4_Matrix4_$Impl_$.prependRotation = function(this1,degrees,axis,pivotPoint) {
	var m = lime_math__$Matrix4_Matrix4_$Impl_$.__getAxisRotation(this1,axis.x,axis.y,axis.z,degrees);
	if(pivotPoint != null) {
		var p = pivotPoint;
		lime_math__$Matrix4_Matrix4_$Impl_$.appendTranslation(m,p.x,p.y,p.z);
	}
	lime_math__$Matrix4_Matrix4_$Impl_$.prepend(this1,m);
};
lime_math__$Matrix4_Matrix4_$Impl_$.prependScale = function(this1,xScale,yScale,zScale) {
	var array = [xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0];
	var this2;
	if(array != null) {
		this2 = new Float32Array(array);
	} else {
		this2 = null;
	}
	lime_math__$Matrix4_Matrix4_$Impl_$.prepend(this1,lime_math__$Matrix4_Matrix4_$Impl_$._new(this2));
};
lime_math__$Matrix4_Matrix4_$Impl_$.prependTranslation = function(this1,x,y,z) {
	var m = lime_math__$Matrix4_Matrix4_$Impl_$._new();
	lime_math__$Matrix4_Matrix4_$Impl_$.set_position(m,new lime_math_Vector4(x,y,z));
	lime_math__$Matrix4_Matrix4_$Impl_$.prepend(this1,m);
};
lime_math__$Matrix4_Matrix4_$Impl_$.transformVector = function(this1,v) {
	var x = v.x;
	var y = v.y;
	var z = v.z;
	return new lime_math_Vector4(x * this1[0] + y * this1[4] + z * this1[8] + this1[12],x * this1[1] + y * this1[5] + z * this1[9] + this1[13],x * this1[2] + y * this1[6] + z * this1[10] + this1[14],x * this1[3] + y * this1[7] + z * this1[11] + this1[15]);
};
lime_math__$Matrix4_Matrix4_$Impl_$.transformVectors = function(this1,ain,aout) {
	var i = 0;
	var x;
	var y;
	var z;
	while(i + 3 <= ain.length) {
		x = ain[i];
		y = ain[i + 1];
		z = ain[i + 2];
		aout[i] = x * this1[0] + y * this1[4] + z * this1[8] + this1[12];
		aout[i + 1] = x * this1[1] + y * this1[5] + z * this1[9] + this1[13];
		aout[i + 2] = x * this1[2] + y * this1[6] + z * this1[10] + this1[14];
		i += 3;
	}
};
lime_math__$Matrix4_Matrix4_$Impl_$.transpose = function(this1) {
	var temp = this1[1];
	this1[1] = this1[4];
	this1[4] = temp;
	var temp1 = this1[2];
	this1[2] = this1[8];
	this1[8] = temp1;
	var temp2 = this1[3];
	this1[3] = this1[12];
	this1[12] = temp2;
	var temp3 = this1[6];
	this1[6] = this1[9];
	this1[9] = temp3;
	var temp4 = this1[7];
	this1[7] = this1[13];
	this1[13] = temp4;
	var temp5 = this1[11];
	this1[11] = this1[14];
	this1[14] = temp5;
};
lime_math__$Matrix4_Matrix4_$Impl_$.__getAxisRotation = function(this1,x,y,z,degrees) {
	var m = lime_math__$Matrix4_Matrix4_$Impl_$._new();
	var a1 = new lime_math_Vector4(x,y,z);
	var rad = -degrees * (Math.PI / 180);
	var c = Math.cos(rad);
	var s = Math.sin(rad);
	var t = 1.0 - c;
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,0,c + a1.x * a1.x * t);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,5,c + a1.y * a1.y * t);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,10,c + a1.z * a1.z * t);
	var tmp1 = a1.x * a1.y * t;
	var tmp2 = a1.z * s;
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,4,tmp1 + tmp2);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,1,tmp1 - tmp2);
	tmp1 = a1.x * a1.z * t;
	tmp2 = a1.y * s;
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,8,tmp1 - tmp2);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,2,tmp1 + tmp2);
	tmp1 = a1.y * a1.z * t;
	tmp2 = a1.x * s;
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,9,tmp1 + tmp2);
	lime_math__$Matrix4_Matrix4_$Impl_$.set(m,6,tmp1 - tmp2);
	return m;
};
lime_math__$Matrix4_Matrix4_$Impl_$.__swap = function(this1,a,b) {
	var temp = this1[a];
	this1[a] = this1[b];
	this1[b] = temp;
};
lime_math__$Matrix4_Matrix4_$Impl_$.get_determinant = function(this1) {
	return (this1[0] * this1[5] - this1[4] * this1[1]) * (this1[10] * this1[15] - this1[14] * this1[11]) - (this1[0] * this1[9] - this1[8] * this1[1]) * (this1[6] * this1[15] - this1[14] * this1[7]) + (this1[0] * this1[13] - this1[12] * this1[1]) * (this1[6] * this1[11] - this1[10] * this1[7]) + (this1[4] * this1[9] - this1[8] * this1[5]) * (this1[2] * this1[15] - this1[14] * this1[3]) - (this1[4] * this1[13] - this1[12] * this1[5]) * (this1[2] * this1[11] - this1[10] * this1[3]) + (this1[8] * this1[13] - this1[12] * this1[9]) * (this1[2] * this1[7] - this1[6] * this1[3]);
};
lime_math__$Matrix4_Matrix4_$Impl_$.get_position = function(this1) {
	return new lime_math_Vector4(this1[12],this1[13],this1[14]);
};
lime_math__$Matrix4_Matrix4_$Impl_$.set_position = function(this1,val) {
	this1[12] = val.x;
	this1[13] = val.y;
	this1[14] = val.z;
	return val;
};
lime_math__$Matrix4_Matrix4_$Impl_$.get = function(this1,index) {
	return this1[index];
};
lime_math__$Matrix4_Matrix4_$Impl_$.set = function(this1,index,value) {
	this1[index] = value;
	return value;
};
var lime_math_Rectangle = function(x,y,width,height) {
	if(height == null) {
		height = 0;
	}
	if(width == null) {
		width = 0;
	}
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	this.x = x;
	this.y = y;
	this.width = width;
	this.height = height;
};
$hxClasses["lime.math.Rectangle"] = lime_math_Rectangle;
lime_math_Rectangle.__name__ = ["lime","math","Rectangle"];
lime_math_Rectangle.prototype = {
	height: null
	,width: null
	,x: null
	,y: null
	,clone: function() {
		return new lime_math_Rectangle(this.x,this.y,this.width,this.height);
	}
	,contains: function(x,y) {
		if(x >= this.x && y >= this.y && x < this.get_right()) {
			return y < this.get_bottom();
		} else {
			return false;
		}
	}
	,containsPoint: function(point) {
		return this.contains(point.x,point.y);
	}
	,containsRect: function(rect) {
		if(rect.width <= 0 || rect.height <= 0) {
			if(rect.x > this.x && rect.y > this.y && rect.get_right() < this.get_right()) {
				return rect.get_bottom() < this.get_bottom();
			} else {
				return false;
			}
		} else if(rect.x >= this.x && rect.y >= this.y && rect.get_right() <= this.get_right()) {
			return rect.get_bottom() <= this.get_bottom();
		} else {
			return false;
		}
	}
	,copyFrom: function(sourceRect) {
		this.x = sourceRect.x;
		this.y = sourceRect.y;
		this.width = sourceRect.width;
		this.height = sourceRect.height;
	}
	,equals: function(toCompare) {
		if(toCompare != null && this.x == toCompare.x && this.y == toCompare.y && this.width == toCompare.width) {
			return this.height == toCompare.height;
		} else {
			return false;
		}
	}
	,inflate: function(dx,dy) {
		this.x -= dx;
		this.width += dx * 2;
		this.y -= dy;
		this.height += dy * 2;
	}
	,inflatePoint: function(point) {
		this.inflate(point.x,point.y);
	}
	,intersection: function(toIntersect) {
		var x0 = this.x < toIntersect.x ? toIntersect.x : this.x;
		var x1 = this.get_right() > toIntersect.get_right() ? toIntersect.get_right() : this.get_right();
		if(x1 <= x0) {
			return new lime_math_Rectangle();
		}
		var y0 = this.y < toIntersect.y ? toIntersect.y : this.y;
		var y1 = this.get_bottom() > toIntersect.get_bottom() ? toIntersect.get_bottom() : this.get_bottom();
		if(y1 <= y0) {
			return new lime_math_Rectangle();
		}
		return new lime_math_Rectangle(x0,y0,x1 - x0,y1 - y0);
	}
	,intersects: function(toIntersect) {
		var x0 = this.x < toIntersect.x ? toIntersect.x : this.x;
		var x1 = this.get_right() > toIntersect.get_right() ? toIntersect.get_right() : this.get_right();
		if(x1 <= x0) {
			return false;
		}
		var y0 = this.y < toIntersect.y ? toIntersect.y : this.y;
		var y1 = this.get_bottom() > toIntersect.get_bottom() ? toIntersect.get_bottom() : this.get_bottom();
		return y1 > y0;
	}
	,isEmpty: function() {
		if(!(this.width <= 0)) {
			return this.height <= 0;
		} else {
			return true;
		}
	}
	,offset: function(dx,dy) {
		this.x += dx;
		this.y += dy;
	}
	,offsetPoint: function(point) {
		this.x += point.x;
		this.y += point.y;
	}
	,setEmpty: function() {
		this.x = this.y = this.width = this.height = 0;
	}
	,setTo: function(xa,ya,widtha,heighta) {
		this.x = xa;
		this.y = ya;
		this.width = widtha;
		this.height = heighta;
	}
	,transform: function(m) {
		var tx0 = m.a * this.x + m.c * this.y;
		var tx1 = tx0;
		var ty0 = m.b * this.x + m.d * this.y;
		var ty1 = ty0;
		var tx = m.a * (this.x + this.width) + m.c * this.y;
		var ty = m.b * (this.x + this.width) + m.d * this.y;
		if(tx < tx0) {
			tx0 = tx;
		}
		if(ty < ty0) {
			ty0 = ty;
		}
		if(tx > tx1) {
			tx1 = tx;
		}
		if(ty > ty1) {
			ty1 = ty;
		}
		tx = m.a * (this.x + this.width) + m.c * (this.y + this.height);
		ty = m.b * (this.x + this.width) + m.d * (this.y + this.height);
		if(tx < tx0) {
			tx0 = tx;
		}
		if(ty < ty0) {
			ty0 = ty;
		}
		if(tx > tx1) {
			tx1 = tx;
		}
		if(ty > ty1) {
			ty1 = ty;
		}
		tx = m.a * this.x + m.c * (this.y + this.height);
		ty = m.b * this.x + m.d * (this.y + this.height);
		if(tx < tx0) {
			tx0 = tx;
		}
		if(ty < ty0) {
			ty0 = ty;
		}
		if(tx > tx1) {
			tx1 = tx;
		}
		if(ty > ty1) {
			ty1 = ty;
		}
		return new lime_math_Rectangle(tx0 + m.tx,ty0 + m.ty,tx1 - tx0,ty1 - ty0);
	}
	,union: function(toUnion) {
		if(this.width == 0 || this.height == 0) {
			return toUnion.clone();
		} else if(toUnion.width == 0 || toUnion.height == 0) {
			return this.clone();
		}
		var x0 = this.x > toUnion.x ? toUnion.x : this.x;
		var x1 = this.get_right() < toUnion.get_right() ? toUnion.get_right() : this.get_right();
		var y0 = this.y > toUnion.y ? toUnion.y : this.y;
		var y1 = this.get_bottom() < toUnion.get_bottom() ? toUnion.get_bottom() : this.get_bottom();
		return new lime_math_Rectangle(x0,y0,x1 - x0,y1 - y0);
	}
	,__contract: function(x,y,width,height) {
		if(this.width == 0 && this.height == 0) {
			return;
		}
		if(this.x < x) {
			this.x = x;
		}
		if(this.y < y) {
			this.y = y;
		}
		if(this.get_right() > x + width) {
			this.width = x + width - this.x;
		}
		if(this.get_bottom() > y + height) {
			this.height = y + height - this.y;
		}
	}
	,__expand: function(x,y,width,height) {
		if(this.width == 0 && this.height == 0) {
			this.x = x;
			this.y = y;
			this.width = width;
			this.height = height;
			return;
		}
		var cacheRight = this.get_right();
		var cacheBottom = this.get_bottom();
		if(this.x > x) {
			this.x = x;
		}
		if(this.y > y) {
			this.y = y;
		}
		if(cacheRight < x + width) {
			this.width = x + width - this.x;
		}
		if(cacheBottom < y + height) {
			this.height = y + height - this.y;
		}
	}
	,__toFlashRectangle: function() {
		return null;
	}
	,get_bottom: function() {
		return this.y + this.height;
	}
	,set_bottom: function(b) {
		this.height = b - this.y;
		return b;
	}
	,get_bottomRight: function() {
		return new lime_math_Vector2(this.x + this.width,this.y + this.height);
	}
	,set_bottomRight: function(p) {
		this.width = p.x - this.x;
		this.height = p.y - this.y;
		return p.clone();
	}
	,get_left: function() {
		return this.x;
	}
	,set_left: function(l) {
		this.width -= l - this.x;
		this.x = l;
		return l;
	}
	,get_right: function() {
		return this.x + this.width;
	}
	,set_right: function(r) {
		this.width = r - this.x;
		return r;
	}
	,get_size: function() {
		return new lime_math_Vector2(this.width,this.height);
	}
	,set_size: function(p) {
		this.width = p.x;
		this.height = p.y;
		return p.clone();
	}
	,get_top: function() {
		return this.y;
	}
	,set_top: function(t) {
		this.height -= t - this.y;
		this.y = t;
		return t;
	}
	,get_topLeft: function() {
		return new lime_math_Vector2(this.x,this.y);
	}
	,set_topLeft: function(p) {
		this.x = p.x;
		this.y = p.y;
		return p.clone();
	}
	,__class__: lime_math_Rectangle
	,__properties__: {set_topLeft:"set_topLeft",get_topLeft:"get_topLeft",set_top:"set_top",get_top:"get_top",set_size:"set_size",get_size:"get_size",set_right:"set_right",get_right:"get_right",set_left:"set_left",get_left:"get_left",set_bottomRight:"set_bottomRight",get_bottomRight:"get_bottomRight",set_bottom:"set_bottom",get_bottom:"get_bottom"}
};
var lime_math_Vector2 = function(x,y) {
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	this.x = x;
	this.y = y;
};
$hxClasses["lime.math.Vector2"] = lime_math_Vector2;
lime_math_Vector2.__name__ = ["lime","math","Vector2"];
lime_math_Vector2.distance = function(pt1,pt2) {
	var dx = pt1.x - pt2.x;
	var dy = pt1.y - pt2.y;
	return Math.sqrt(dx * dx + dy * dy);
};
lime_math_Vector2.interpolate = function(pt1,pt2,f) {
	return new lime_math_Vector2(pt2.x + f * (pt1.x - pt2.x),pt2.y + f * (pt1.y - pt2.y));
};
lime_math_Vector2.polar = function(len,angle) {
	return new lime_math_Vector2(len * Math.cos(angle),len * Math.sin(angle));
};
lime_math_Vector2.prototype = {
	length: null
	,x: null
	,y: null
	,add: function(v) {
		return new lime_math_Vector2(v.x + this.x,v.y + this.y);
	}
	,clone: function() {
		return new lime_math_Vector2(this.x,this.y);
	}
	,equals: function(toCompare) {
		if(toCompare != null && toCompare.x == this.x) {
			return toCompare.y == this.y;
		} else {
			return false;
		}
	}
	,normalize: function(thickness) {
		if(this.x == 0 && this.y == 0) {
			return;
		} else {
			var norm = thickness / Math.sqrt(this.x * this.x + this.y * this.y);
			this.x *= norm;
			this.y *= norm;
		}
	}
	,offset: function(dx,dy) {
		this.x += dx;
		this.y += dy;
	}
	,setTo: function(xa,ya) {
		this.x = xa;
		this.y = ya;
	}
	,subtract: function(v) {
		return new lime_math_Vector2(this.x - v.x,this.y - v.y);
	}
	,__toFlashPoint: function() {
		return null;
	}
	,get_length: function() {
		return Math.sqrt(this.x * this.x + this.y * this.y);
	}
	,__class__: lime_math_Vector2
	,__properties__: {get_length:"get_length"}
};
var lime_math_Vector4 = function(x,y,z,w) {
	if(w == null) {
		w = 0.;
	}
	if(z == null) {
		z = 0.;
	}
	if(y == null) {
		y = 0.;
	}
	if(x == null) {
		x = 0.;
	}
	this.w = w;
	this.x = x;
	this.y = y;
	this.z = z;
};
$hxClasses["lime.math.Vector4"] = lime_math_Vector4;
lime_math_Vector4.__name__ = ["lime","math","Vector4"];
lime_math_Vector4.__properties__ = {get_Z_AXIS:"get_Z_AXIS",get_Y_AXIS:"get_Y_AXIS",get_X_AXIS:"get_X_AXIS"};
lime_math_Vector4.angleBetween = function(a,b) {
	var a0 = new lime_math_Vector4(a.x,a.y,a.z,a.w);
	var l = Math.sqrt(a0.x * a0.x + a0.y * a0.y + a0.z * a0.z);
	if(l != 0) {
		a0.x /= l;
		a0.y /= l;
		a0.z /= l;
	}
	var b0 = new lime_math_Vector4(b.x,b.y,b.z,b.w);
	var l1 = Math.sqrt(b0.x * b0.x + b0.y * b0.y + b0.z * b0.z);
	if(l1 != 0) {
		b0.x /= l1;
		b0.y /= l1;
		b0.z /= l1;
	}
	return Math.acos(a0.x * b0.x + a0.y * b0.y + a0.z * b0.z);
};
lime_math_Vector4.distance = function(pt1,pt2) {
	var x = pt2.x - pt1.x;
	var y = pt2.y - pt1.y;
	var z = pt2.z - pt1.z;
	return Math.sqrt(x * x + y * y + z * z);
};
lime_math_Vector4.get_X_AXIS = function() {
	return new lime_math_Vector4(1,0,0);
};
lime_math_Vector4.get_Y_AXIS = function() {
	return new lime_math_Vector4(0,1,0);
};
lime_math_Vector4.get_Z_AXIS = function() {
	return new lime_math_Vector4(0,0,1);
};
lime_math_Vector4.prototype = {
	length: null
	,lengthSquared: null
	,w: null
	,x: null
	,y: null
	,z: null
	,add: function(a) {
		return new lime_math_Vector4(this.x + a.x,this.y + a.y,this.z + a.z);
	}
	,clone: function() {
		return new lime_math_Vector4(this.x,this.y,this.z,this.w);
	}
	,copyFrom: function(sourceVector4) {
		this.x = sourceVector4.x;
		this.y = sourceVector4.y;
		this.z = sourceVector4.z;
	}
	,crossProduct: function(a) {
		return new lime_math_Vector4(this.y * a.z - this.z * a.y,this.z * a.x - this.x * a.z,this.x * a.y - this.y * a.x,1);
	}
	,decrementBy: function(a) {
		this.x -= a.x;
		this.y -= a.y;
		this.z -= a.z;
	}
	,dotProduct: function(a) {
		return this.x * a.x + this.y * a.y + this.z * a.z;
	}
	,equals: function(toCompare,allFour) {
		if(allFour == null) {
			allFour = false;
		}
		if(this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z) {
			if(!(!allFour)) {
				return this.w == toCompare.w;
			} else {
				return true;
			}
		} else {
			return false;
		}
	}
	,incrementBy: function(a) {
		this.x += a.x;
		this.y += a.y;
		this.z += a.z;
	}
	,nearEquals: function(toCompare,tolerance,allFour) {
		if(allFour == null) {
			allFour = false;
		}
		if(Math.abs(this.x - toCompare.x) < tolerance && Math.abs(this.y - toCompare.y) < tolerance && Math.abs(this.z - toCompare.z) < tolerance) {
			if(!(!allFour)) {
				return Math.abs(this.w - toCompare.w) < tolerance;
			} else {
				return true;
			}
		} else {
			return false;
		}
	}
	,negate: function() {
		this.x *= -1;
		this.y *= -1;
		this.z *= -1;
	}
	,normalize: function() {
		var l = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
		if(l != 0) {
			this.x /= l;
			this.y /= l;
			this.z /= l;
		}
		return l;
	}
	,project: function() {
		this.x /= this.w;
		this.y /= this.w;
		this.z /= this.w;
	}
	,scaleBy: function(s) {
		this.x *= s;
		this.y *= s;
		this.z *= s;
	}
	,setTo: function(xa,ya,za) {
		this.x = xa;
		this.y = ya;
		this.z = za;
	}
	,subtract: function(a) {
		return new lime_math_Vector4(this.x - a.x,this.y - a.y,this.z - a.z);
	}
	,toString: function() {
		return "Vector4(" + this.x + ", " + this.y + ", " + this.z + ")";
	}
	,get_length: function() {
		return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
	}
	,get_lengthSquared: function() {
		return this.x * this.x + this.y * this.y + this.z * this.z;
	}
	,__class__: lime_math_Vector4
	,__properties__: {get_lengthSquared:"get_lengthSquared",get_length:"get_length"}
};
var lime_math_color__$ARGB_ARGB_$Impl_$ = {};
$hxClasses["lime.math.color._ARGB.ARGB_Impl_"] = lime_math_color__$ARGB_ARGB_$Impl_$;
lime_math_color__$ARGB_ARGB_$Impl_$.__name__ = ["lime","math","color","_ARGB","ARGB_Impl_"];
lime_math_color__$ARGB_ARGB_$Impl_$.__properties__ = {set_r:"set_r",get_r:"get_r",set_g:"set_g",get_g:"get_g",set_b:"set_b",get_b:"get_b",set_a:"set_a",get_a:"get_a"};
lime_math_color__$ARGB_ARGB_$Impl_$._new = function(argb) {
	if(argb == null) {
		argb = 0;
	}
	var this1 = argb;
	return this1;
};
lime_math_color__$ARGB_ARGB_$Impl_$.create = function(a,r,g,b) {
	var this1 = 0;
	var argb = this1;
	argb = (a & 255) << 24 | (r & 255) << 16 | (g & 255) << 8 | b & 255;
	return argb;
};
lime_math_color__$ARGB_ARGB_$Impl_$.multiplyAlpha = function(this1) {
	if((this1 >>> 24 & 255) == 0) {
		this1 = 0;
	} else if((this1 >>> 24 & 255) != 255) {
		lime_math_color__$ARGB_ARGB_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[this1 >>> 24 & 255];
		this1 = (this1 >>> 24 & 255 & 255) << 24 | ((this1 >>> 16 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.a16 >> 16 & 255) << 16 | ((this1 >>> 8 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.a16 >> 16 & 255) << 8 | (this1 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.a16 >> 16 & 255;
	}
};
lime_math_color__$ARGB_ARGB_$Impl_$.readUInt8 = function(this1,data,offset,format,premultiplied) {
	if(premultiplied == null) {
		premultiplied = false;
	}
	if(format == null) {
		format = 0;
	}
	switch(format) {
	case 0:
		this1 = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
		break;
	case 1:
		this1 = (data[offset + 2] & 255) << 24 | (data[offset + 3] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 1] & 255;
		break;
	case 2:
		this1 = (data[offset + 1] & 255) << 24 | (data[offset] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset + 2] & 255;
		break;
	}
	if(premultiplied) {
		if((this1 >>> 24 & 255) != 0 && (this1 >>> 24 & 255) != 255) {
			lime_math_color__$ARGB_ARGB_$Impl_$.unmult = 255.0 / (this1 >>> 24 & 255);
			this1 = (this1 >>> 24 & 255 & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 16 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 8 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.unmult)] & 255) << 8 | lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.unmult)] & 255;
		}
	}
};
lime_math_color__$ARGB_ARGB_$Impl_$.set = function(this1,a,r,g,b) {
	this1 = (a & 255) << 24 | (r & 255) << 16 | (g & 255) << 8 | b & 255;
};
lime_math_color__$ARGB_ARGB_$Impl_$.unmultiplyAlpha = function(this1) {
	if((this1 >>> 24 & 255) != 0 && (this1 >>> 24 & 255) != 255) {
		lime_math_color__$ARGB_ARGB_$Impl_$.unmult = 255.0 / (this1 >>> 24 & 255);
		this1 = (this1 >>> 24 & 255 & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 16 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 8 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.unmult)] & 255) << 8 | lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.unmult)] & 255;
	}
};
lime_math_color__$ARGB_ARGB_$Impl_$.writeUInt8 = function(this1,data,offset,format,premultiplied) {
	if(premultiplied == null) {
		premultiplied = false;
	}
	if(format == null) {
		format = 0;
	}
	if(premultiplied) {
		if((this1 >>> 24 & 255) == 0) {
			this1 = 0;
		} else if((this1 >>> 24 & 255) != 255) {
			lime_math_color__$ARGB_ARGB_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[this1 >>> 24 & 255];
			this1 = (this1 >>> 24 & 255 & 255) << 24 | ((this1 >>> 16 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.a16 >> 16 & 255) << 16 | ((this1 >>> 8 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.a16 >> 16 & 255) << 8 | (this1 & 255) * lime_math_color__$ARGB_ARGB_$Impl_$.a16 >> 16 & 255;
		}
	}
	switch(format) {
	case 0:
		data[offset] = this1 >>> 16 & 255;
		data[offset + 1] = this1 >>> 8 & 255;
		data[offset + 2] = this1 & 255;
		data[offset + 3] = this1 >>> 24 & 255;
		break;
	case 1:
		data[offset] = this1 >>> 24 & 255;
		data[offset + 1] = this1 >>> 16 & 255;
		data[offset + 2] = this1 >>> 8 & 255;
		data[offset + 3] = this1 & 255;
		break;
	case 2:
		data[offset] = this1 & 255;
		data[offset + 1] = this1 >>> 8 & 255;
		data[offset + 2] = this1 >>> 16 & 255;
		data[offset + 3] = this1 >>> 24 & 255;
		break;
	}
};
lime_math_color__$ARGB_ARGB_$Impl_$.__fromBGRA = function(bgra) {
	var this1 = 0;
	var argb = this1;
	argb = (bgra & 255 & 255) << 24 | (bgra >>> 8 & 255 & 255) << 16 | (bgra >>> 16 & 255 & 255) << 8 | bgra >>> 24 & 255 & 255;
	return argb;
};
lime_math_color__$ARGB_ARGB_$Impl_$.__fromRGBA = function(rgba) {
	var this1 = 0;
	var argb = this1;
	argb = (rgba & 255 & 255) << 24 | (rgba >>> 24 & 255 & 255) << 16 | (rgba >>> 16 & 255 & 255) << 8 | rgba >>> 8 & 255 & 255;
	return argb;
};
lime_math_color__$ARGB_ARGB_$Impl_$.get_a = function(this1) {
	return this1 >>> 24 & 255;
};
lime_math_color__$ARGB_ARGB_$Impl_$.set_a = function(this1,value) {
	this1 = (value & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | this1 & 255 & 255;
	return value;
};
lime_math_color__$ARGB_ARGB_$Impl_$.get_b = function(this1) {
	return this1 & 255;
};
lime_math_color__$ARGB_ARGB_$Impl_$.set_b = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | value & 255;
	return value;
};
lime_math_color__$ARGB_ARGB_$Impl_$.get_g = function(this1) {
	return this1 >>> 8 & 255;
};
lime_math_color__$ARGB_ARGB_$Impl_$.set_g = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (value & 255) << 8 | this1 & 255 & 255;
	return value;
};
lime_math_color__$ARGB_ARGB_$Impl_$.get_r = function(this1) {
	return this1 >>> 16 & 255;
};
lime_math_color__$ARGB_ARGB_$Impl_$.set_r = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (value & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | this1 & 255 & 255;
	return value;
};
var lime_math_color__$BGRA_BGRA_$Impl_$ = {};
$hxClasses["lime.math.color._BGRA.BGRA_Impl_"] = lime_math_color__$BGRA_BGRA_$Impl_$;
lime_math_color__$BGRA_BGRA_$Impl_$.__name__ = ["lime","math","color","_BGRA","BGRA_Impl_"];
lime_math_color__$BGRA_BGRA_$Impl_$.__properties__ = {set_r:"set_r",get_r:"get_r",set_g:"set_g",get_g:"get_g",set_b:"set_b",get_b:"get_b",set_a:"set_a",get_a:"get_a"};
lime_math_color__$BGRA_BGRA_$Impl_$._new = function(bgra) {
	if(bgra == null) {
		bgra = 0;
	}
	var this1 = bgra;
	return this1;
};
lime_math_color__$BGRA_BGRA_$Impl_$.create = function(b,g,r,a) {
	var this1 = 0;
	var bgra = this1;
	bgra = (b & 255) << 24 | (g & 255) << 16 | (r & 255) << 8 | a & 255;
	return bgra;
};
lime_math_color__$BGRA_BGRA_$Impl_$.multiplyAlpha = function(this1) {
	if((this1 & 255) == 0) {
		this1 = 0;
	} else if((this1 & 255) != 255) {
		lime_math_color__$BGRA_BGRA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[this1 & 255];
		this1 = ((this1 >>> 24 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.a16 >> 16 & 255) << 24 | ((this1 >>> 16 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.a16 >> 16 & 255) << 16 | ((this1 >>> 8 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.a16 >> 16 & 255) << 8 | this1 & 255 & 255;
	}
};
lime_math_color__$BGRA_BGRA_$Impl_$.readUInt8 = function(this1,data,offset,format,premultiplied) {
	if(premultiplied == null) {
		premultiplied = false;
	}
	if(format == null) {
		format = 0;
	}
	switch(format) {
	case 0:
		this1 = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
		break;
	case 1:
		this1 = (data[offset + 3] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 1] & 255) << 8 | data[offset] & 255;
		break;
	case 2:
		this1 = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
		break;
	}
	if(premultiplied) {
		if((this1 & 255) != 0 && (this1 & 255) != 255) {
			lime_math_color__$BGRA_BGRA_$Impl_$.unmult = 255.0 / (this1 & 255);
			this1 = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 24 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 16 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 8 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.unmult)] & 255) << 8 | this1 & 255 & 255;
		}
	}
};
lime_math_color__$BGRA_BGRA_$Impl_$.set = function(this1,b,g,r,a) {
	this1 = (b & 255) << 24 | (g & 255) << 16 | (r & 255) << 8 | a & 255;
};
lime_math_color__$BGRA_BGRA_$Impl_$.unmultiplyAlpha = function(this1) {
	if((this1 & 255) != 0 && (this1 & 255) != 255) {
		lime_math_color__$BGRA_BGRA_$Impl_$.unmult = 255.0 / (this1 & 255);
		this1 = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 24 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 16 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.floor((this1 >>> 8 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.unmult)] & 255) << 8 | this1 & 255 & 255;
	}
};
lime_math_color__$BGRA_BGRA_$Impl_$.writeUInt8 = function(this1,data,offset,format,premultiplied) {
	if(premultiplied == null) {
		premultiplied = false;
	}
	if(format == null) {
		format = 0;
	}
	if(premultiplied) {
		if((this1 & 255) == 0) {
			this1 = 0;
		} else if((this1 & 255) != 255) {
			lime_math_color__$BGRA_BGRA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[this1 & 255];
			this1 = ((this1 >>> 24 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.a16 >> 16 & 255) << 24 | ((this1 >>> 16 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.a16 >> 16 & 255) << 16 | ((this1 >>> 8 & 255) * lime_math_color__$BGRA_BGRA_$Impl_$.a16 >> 16 & 255) << 8 | this1 & 255 & 255;
		}
	}
	switch(format) {
	case 0:
		data[offset] = this1 >>> 8 & 255;
		data[offset + 1] = this1 >>> 16 & 255;
		data[offset + 2] = this1 >>> 24 & 255;
		data[offset + 3] = this1 & 255;
		break;
	case 1:
		data[offset] = this1 & 255;
		data[offset + 1] = this1 >>> 8 & 255;
		data[offset + 2] = this1 >>> 16 & 255;
		data[offset + 3] = this1 >>> 24 & 255;
		break;
	case 2:
		data[offset] = this1 >>> 24 & 255;
		data[offset + 1] = this1 >>> 16 & 255;
		data[offset + 2] = this1 >>> 8 & 255;
		data[offset + 3] = this1 & 255;
		break;
	}
};
lime_math_color__$BGRA_BGRA_$Impl_$.__fromARGB = function(argb) {
	var this1 = 0;
	var bgra = this1;
	bgra = (argb & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb >>> 16 & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
	return bgra;
};
lime_math_color__$BGRA_BGRA_$Impl_$.__fromRGBA = function(rgba) {
	var this1 = 0;
	var bgra = this1;
	bgra = (rgba >>> 8 & 255 & 255) << 24 | (rgba >>> 16 & 255 & 255) << 16 | (rgba >>> 24 & 255 & 255) << 8 | rgba & 255 & 255;
	return bgra;
};
lime_math_color__$BGRA_BGRA_$Impl_$.get_a = function(this1) {
	return this1 & 255;
};
lime_math_color__$BGRA_BGRA_$Impl_$.set_a = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | value & 255;
	return value;
};
lime_math_color__$BGRA_BGRA_$Impl_$.get_b = function(this1) {
	return this1 >>> 24 & 255;
};
lime_math_color__$BGRA_BGRA_$Impl_$.set_b = function(this1,value) {
	this1 = (value & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | this1 & 255 & 255;
	return value;
};
lime_math_color__$BGRA_BGRA_$Impl_$.get_g = function(this1) {
	return this1 >>> 16 & 255;
};
lime_math_color__$BGRA_BGRA_$Impl_$.set_g = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (value & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | this1 & 255 & 255;
	return value;
};
lime_math_color__$BGRA_BGRA_$Impl_$.get_r = function(this1) {
	return this1 >>> 8 & 255;
};
lime_math_color__$BGRA_BGRA_$Impl_$.set_r = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (value & 255) << 8 | this1 & 255 & 255;
	return value;
};
var lime_math_color__$RGBA_RGBA_$Impl_$ = {};
$hxClasses["lime.math.color._RGBA.RGBA_Impl_"] = lime_math_color__$RGBA_RGBA_$Impl_$;
lime_math_color__$RGBA_RGBA_$Impl_$.__name__ = ["lime","math","color","_RGBA","RGBA_Impl_"];
lime_math_color__$RGBA_RGBA_$Impl_$.__properties__ = {set_r:"set_r",get_r:"get_r",set_g:"set_g",get_g:"get_g",set_b:"set_b",get_b:"get_b",set_a:"set_a",get_a:"get_a"};
lime_math_color__$RGBA_RGBA_$Impl_$._new = function(rgba) {
	if(rgba == null) {
		rgba = 0;
	}
	var this1 = rgba;
	return this1;
};
lime_math_color__$RGBA_RGBA_$Impl_$.create = function(r,g,b,a) {
	var this1 = 0;
	var rgba = this1;
	rgba = (r & 255) << 24 | (g & 255) << 16 | (b & 255) << 8 | a & 255;
	return rgba;
};
lime_math_color__$RGBA_RGBA_$Impl_$.multiplyAlpha = function(this1) {
	if((this1 & 255) == 0) {
		if(this1 != 0) {
			this1 = 0;
		}
	} else if((this1 & 255) != 255) {
		lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[this1 & 255];
		this1 = ((this1 >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((this1 >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((this1 >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | this1 & 255 & 255;
	}
};
lime_math_color__$RGBA_RGBA_$Impl_$.readUInt8 = function(this1,data,offset,format,premultiplied) {
	if(premultiplied == null) {
		premultiplied = false;
	}
	if(format == null) {
		format = 0;
	}
	switch(format) {
	case 0:
		this1 = (data[offset] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset + 2] & 255) << 8 | data[offset + 3] & 255;
		break;
	case 1:
		this1 = (data[offset + 1] & 255) << 24 | (data[offset + 2] & 255) << 16 | (data[offset + 3] & 255) << 8 | data[offset] & 255;
		break;
	case 2:
		this1 = (data[offset + 2] & 255) << 24 | (data[offset + 1] & 255) << 16 | (data[offset] & 255) << 8 | data[offset + 3] & 255;
		break;
	}
	if(premultiplied) {
		if((this1 & 255) != 0 && (this1 & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (this1 & 255);
			this1 = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((this1 >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((this1 >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((this1 >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | this1 & 255 & 255;
		}
	}
};
lime_math_color__$RGBA_RGBA_$Impl_$.set = function(this1,r,g,b,a) {
	this1 = (r & 255) << 24 | (g & 255) << 16 | (b & 255) << 8 | a & 255;
};
lime_math_color__$RGBA_RGBA_$Impl_$.unmultiplyAlpha = function(this1) {
	if((this1 & 255) != 0 && (this1 & 255) != 255) {
		lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (this1 & 255);
		this1 = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((this1 >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((this1 >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((this1 >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | this1 & 255 & 255;
	}
};
lime_math_color__$RGBA_RGBA_$Impl_$.writeUInt8 = function(this1,data,offset,format,premultiplied) {
	if(premultiplied == null) {
		premultiplied = false;
	}
	if(format == null) {
		format = 0;
	}
	if(premultiplied) {
		if((this1 & 255) == 0) {
			if(this1 != 0) {
				this1 = 0;
			}
		} else if((this1 & 255) != 255) {
			lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[this1 & 255];
			this1 = ((this1 >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((this1 >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((this1 >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | this1 & 255 & 255;
		}
	}
	switch(format) {
	case 0:
		data[offset] = this1 >>> 24 & 255;
		data[offset + 1] = this1 >>> 16 & 255;
		data[offset + 2] = this1 >>> 8 & 255;
		data[offset + 3] = this1 & 255;
		break;
	case 1:
		data[offset] = this1 & 255;
		data[offset + 1] = this1 >>> 24 & 255;
		data[offset + 2] = this1 >>> 16 & 255;
		data[offset + 3] = this1 >>> 8 & 255;
		break;
	case 2:
		data[offset] = this1 >>> 8 & 255;
		data[offset + 1] = this1 >>> 16 & 255;
		data[offset + 2] = this1 >>> 24 & 255;
		data[offset + 3] = this1 & 255;
		break;
	}
};
lime_math_color__$RGBA_RGBA_$Impl_$.__fromARGB = function(argb) {
	var this1 = 0;
	var rgba = this1;
	rgba = (argb >>> 16 & 255 & 255) << 24 | (argb >>> 8 & 255 & 255) << 16 | (argb & 255 & 255) << 8 | argb >>> 24 & 255 & 255;
	return rgba;
};
lime_math_color__$RGBA_RGBA_$Impl_$.__fromBGRA = function(bgra) {
	var this1 = 0;
	var rgba = this1;
	rgba = (bgra >>> 8 & 255 & 255) << 24 | (bgra >>> 16 & 255 & 255) << 16 | (bgra >>> 24 & 255 & 255) << 8 | bgra & 255 & 255;
	return rgba;
};
lime_math_color__$RGBA_RGBA_$Impl_$.get_a = function(this1) {
	return this1 & 255;
};
lime_math_color__$RGBA_RGBA_$Impl_$.set_a = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | value & 255;
	return value;
};
lime_math_color__$RGBA_RGBA_$Impl_$.get_b = function(this1) {
	return this1 >>> 8 & 255;
};
lime_math_color__$RGBA_RGBA_$Impl_$.set_b = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (value & 255) << 8 | this1 & 255 & 255;
	return value;
};
lime_math_color__$RGBA_RGBA_$Impl_$.get_g = function(this1) {
	return this1 >>> 16 & 255;
};
lime_math_color__$RGBA_RGBA_$Impl_$.set_g = function(this1,value) {
	this1 = (this1 >>> 24 & 255 & 255) << 24 | (value & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | this1 & 255 & 255;
	return value;
};
lime_math_color__$RGBA_RGBA_$Impl_$.get_r = function(this1) {
	return this1 >>> 24 & 255;
};
lime_math_color__$RGBA_RGBA_$Impl_$.set_r = function(this1,value) {
	this1 = (value & 255) << 24 | (this1 >>> 16 & 255 & 255) << 16 | (this1 >>> 8 & 255 & 255) << 8 | this1 & 255 & 255;
	return value;
};
var lime_media_ALAudioContext = function() {
	this.EXPONENT_DISTANCE_CLAMPED = 53254;
	this.EXPONENT_DISTANCE = 53253;
	this.LINEAR_DISTANCE_CLAMPED = 53252;
	this.LINEAR_DISTANCE = 53251;
	this.INVERSE_DISTANCE_CLAMPED = 53250;
	this.INVERSE_DISTANCE = 53249;
	this.DISTANCE_MODEL = 53248;
	this.DOPPLER_VELOCITY = 49153;
	this.SPEED_OF_SOUND = 49155;
	this.DOPPLER_FACTOR = 49152;
	this.EXTENSIONS = 45060;
	this.RENDERER = 45059;
	this.VERSION = 45058;
	this.VENDOR = 45057;
	this.OUT_OF_MEMORY = 40965;
	this.INVALID_OPERATION = 40964;
	this.INVALID_VALUE = 40963;
	this.INVALID_ENUM = 40962;
	this.INVALID_NAME = 40961;
	this.NO_ERROR = 0;
	this.SIZE = 8196;
	this.CHANNELS = 8195;
	this.BITS = 8194;
	this.FREQUENCY = 8193;
	this.FORMAT_STEREO16 = 4355;
	this.FORMAT_STEREO8 = 4354;
	this.FORMAT_MONO16 = 4353;
	this.FORMAT_MONO8 = 4352;
	this.UNDETERMINED = 4144;
	this.STREAMING = 4137;
	this.STATIC = 4136;
	this.SOURCE_TYPE = 4135;
	this.BYTE_OFFSET = 4134;
	this.SAMPLE_OFFSET = 4133;
	this.SEC_OFFSET = 4132;
	this.MAX_DISTANCE = 4131;
	this.CONE_OUTER_GAIN = 4130;
	this.ROLLOFF_FACTOR = 4129;
	this.REFERENCE_DISTANCE = 4128;
	this.BUFFERS_PROCESSED = 4118;
	this.BUFFERS_QUEUED = 4117;
	this.STOPPED = 4116;
	this.PAUSED = 4115;
	this.PLAYING = 4114;
	this.INITIAL = 4113;
	this.SOURCE_STATE = 4112;
	this.ORIENTATION = 4111;
	this.MAX_GAIN = 4110;
	this.MIN_GAIN = 4109;
	this.GAIN = 4106;
	this.BUFFER = 4105;
	this.LOOPING = 4103;
	this.VELOCITY = 4102;
	this.DIRECTION = 4101;
	this.POSITION = 4100;
	this.PITCH = 4099;
	this.CONE_OUTER_ANGLE = 4098;
	this.CONE_INNER_ANGLE = 4097;
	this.SOURCE_RELATIVE = 514;
	this.TRUE = 1;
	this.FALSE = 0;
	this.NONE = 0;
};
$hxClasses["lime.media.ALAudioContext"] = lime_media_ALAudioContext;
lime_media_ALAudioContext.__name__ = ["lime","media","ALAudioContext"];
lime_media_ALAudioContext.prototype = {
	NONE: null
	,FALSE: null
	,TRUE: null
	,SOURCE_RELATIVE: null
	,CONE_INNER_ANGLE: null
	,CONE_OUTER_ANGLE: null
	,PITCH: null
	,POSITION: null
	,DIRECTION: null
	,VELOCITY: null
	,LOOPING: null
	,BUFFER: null
	,GAIN: null
	,MIN_GAIN: null
	,MAX_GAIN: null
	,ORIENTATION: null
	,SOURCE_STATE: null
	,INITIAL: null
	,PLAYING: null
	,PAUSED: null
	,STOPPED: null
	,BUFFERS_QUEUED: null
	,BUFFERS_PROCESSED: null
	,REFERENCE_DISTANCE: null
	,ROLLOFF_FACTOR: null
	,CONE_OUTER_GAIN: null
	,MAX_DISTANCE: null
	,SEC_OFFSET: null
	,SAMPLE_OFFSET: null
	,BYTE_OFFSET: null
	,SOURCE_TYPE: null
	,STATIC: null
	,STREAMING: null
	,UNDETERMINED: null
	,FORMAT_MONO8: null
	,FORMAT_MONO16: null
	,FORMAT_STEREO8: null
	,FORMAT_STEREO16: null
	,FREQUENCY: null
	,BITS: null
	,CHANNELS: null
	,SIZE: null
	,NO_ERROR: null
	,INVALID_NAME: null
	,INVALID_ENUM: null
	,INVALID_VALUE: null
	,INVALID_OPERATION: null
	,OUT_OF_MEMORY: null
	,VENDOR: null
	,VERSION: null
	,RENDERER: null
	,EXTENSIONS: null
	,DOPPLER_FACTOR: null
	,SPEED_OF_SOUND: null
	,DOPPLER_VELOCITY: null
	,DISTANCE_MODEL: null
	,INVERSE_DISTANCE: null
	,INVERSE_DISTANCE_CLAMPED: null
	,LINEAR_DISTANCE: null
	,LINEAR_DISTANCE_CLAMPED: null
	,EXPONENT_DISTANCE: null
	,EXPONENT_DISTANCE_CLAMPED: null
	,bufferData: function(buffer,format,data,size,freq) {
		lime_media_openal_AL.bufferData(buffer,format,data,size,freq);
	}
	,buffer3f: function(buffer,param,value1,value2,value3) {
		lime_media_openal_AL.buffer3f(buffer,param,value1,value2,value3);
	}
	,buffer3i: function(buffer,param,value1,value2,value3) {
		lime_media_openal_AL.buffer3i(buffer,param,value1,value2,value3);
	}
	,bufferf: function(buffer,param,value) {
		lime_media_openal_AL.bufferf(buffer,param,value);
	}
	,bufferfv: function(buffer,param,values) {
		lime_media_openal_AL.bufferfv(buffer,param,values);
	}
	,bufferi: function(buffer,param,value) {
		lime_media_openal_AL.bufferi(buffer,param,value);
	}
	,bufferiv: function(buffer,param,values) {
		lime_media_openal_AL.bufferiv(buffer,param,values);
	}
	,createSource: function() {
		return lime_media_openal_AL.createSource();
	}
	,createBuffer: function() {
		return lime_media_openal_AL.createBuffer();
	}
	,deleteBuffer: function(buffer) {
		lime_media_openal_AL.deleteBuffer(buffer);
	}
	,deleteBuffers: function(buffers) {
		lime_media_openal_AL.deleteBuffers(buffers);
	}
	,deleteSource: function(source) {
		lime_media_openal_AL.deleteSource(source);
	}
	,deleteSources: function(sources) {
		lime_media_openal_AL.deleteSources(sources);
	}
	,disable: function(capability) {
		lime_media_openal_AL.disable(capability);
	}
	,distanceModel: function(distanceModel) {
		lime_media_openal_AL.distanceModel(distanceModel);
	}
	,dopplerFactor: function(value) {
		lime_media_openal_AL.dopplerFactor(value);
	}
	,dopplerVelocity: function(value) {
		lime_media_openal_AL.dopplerVelocity(value);
	}
	,enable: function(capability) {
		lime_media_openal_AL.enable(capability);
	}
	,genSource: function() {
		return this.createSource();
	}
	,genSources: function(n) {
		return lime_media_openal_AL.genSources(n);
	}
	,genBuffer: function() {
		return this.createBuffer();
	}
	,genBuffers: function(n) {
		return lime_media_openal_AL.genBuffers(n);
	}
	,getBoolean: function(param) {
		return lime_media_openal_AL.getBoolean(param);
	}
	,getBooleanv: function(param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getBooleanv(param,count);
	}
	,getBuffer3f: function(buffer,param) {
		return lime_media_openal_AL.getBuffer3f(buffer,param);
	}
	,getBuffer3i: function(buffer,param) {
		return lime_media_openal_AL.getBuffer3i(buffer,param);
	}
	,getBufferf: function(buffer,param) {
		return lime_media_openal_AL.getBufferf(buffer,param);
	}
	,getBufferfv: function(buffer,param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getBufferfv(buffer,param,count);
	}
	,getBufferi: function(buffer,param) {
		return lime_media_openal_AL.getBufferi(buffer,param);
	}
	,getBufferiv: function(buffer,param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getBufferiv(buffer,param,count);
	}
	,getDouble: function(param) {
		return lime_media_openal_AL.getDouble(param);
	}
	,getDoublev: function(param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getDoublev(param,count);
	}
	,getEnumValue: function(ename) {
		return lime_media_openal_AL.getEnumValue(ename);
	}
	,getError: function() {
		return lime_media_openal_AL.getError();
	}
	,getErrorString: function() {
		return lime_media_openal_AL.getErrorString();
	}
	,getFloat: function(param) {
		return lime_media_openal_AL.getFloat(param);
	}
	,getFloatv: function(param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getFloatv(param,count);
	}
	,getInteger: function(param) {
		return lime_media_openal_AL.getInteger(param);
	}
	,getIntegerv: function(param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getIntegerv(param,count);
	}
	,getListener3f: function(param) {
		return lime_media_openal_AL.getListener3f(param);
	}
	,getListener3i: function(param) {
		return lime_media_openal_AL.getListener3i(param);
	}
	,getListenerf: function(param) {
		return lime_media_openal_AL.getListenerf(param);
	}
	,getListenerfv: function(param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getListenerfv(param,count);
	}
	,getListeneri: function(param) {
		return lime_media_openal_AL.getListeneri(param);
	}
	,getListeneriv: function(param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getListeneriv(param,count);
	}
	,getProcAddress: function(fname) {
		return lime_media_openal_AL.getProcAddress(fname);
	}
	,getSource3f: function(source,param) {
		return lime_media_openal_AL.getSource3f(source,param);
	}
	,getSourcef: function(source,param) {
		return lime_media_openal_AL.getSourcef(source,param);
	}
	,getSource3i: function(source,param) {
		return lime_media_openal_AL.getSource3i(source,param);
	}
	,getSourcefv: function(source,param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getSourcefv(source,param);
	}
	,getSourcei: function(source,param) {
		return lime_media_openal_AL.getSourcei(source,param);
	}
	,getSourceiv: function(source,param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_AL.getSourceiv(source,param,count);
	}
	,getString: function(param) {
		return lime_media_openal_AL.getString(param);
	}
	,isBuffer: function(buffer) {
		return lime_media_openal_AL.isBuffer(buffer);
	}
	,isEnabled: function(capability) {
		return lime_media_openal_AL.isEnabled(capability);
	}
	,isExtensionPresent: function(extname) {
		return lime_media_openal_AL.isExtensionPresent(extname);
	}
	,isSource: function(source) {
		return lime_media_openal_AL.isSource(source);
	}
	,listener3f: function(param,value1,value2,value3) {
		lime_media_openal_AL.listener3f(param,value1,value2,value3);
	}
	,listener3i: function(param,value1,value2,value3) {
		lime_media_openal_AL.listener3i(param,value1,value2,value3);
	}
	,listenerf: function(param,value) {
		lime_media_openal_AL.listenerf(param,value);
	}
	,listenerfv: function(param,values) {
		lime_media_openal_AL.listenerfv(param,values);
	}
	,listeneri: function(param,value) {
		lime_media_openal_AL.listeneri(param,value);
	}
	,listeneriv: function(param,values) {
		lime_media_openal_AL.listeneriv(param,values);
	}
	,source3f: function(source,param,value1,value2,value3) {
		lime_media_openal_AL.source3f(source,param,value1,value2,value3);
	}
	,source3i: function(source,param,value1,value2,value3) {
		lime_media_openal_AL.source3i(source,param,value1,value2,value3);
	}
	,sourcef: function(source,param,value) {
		lime_media_openal_AL.sourcef(source,param,value);
	}
	,sourcefv: function(source,param,values) {
		lime_media_openal_AL.sourcefv(source,param,values);
	}
	,sourcei: function(source,param,value) {
		lime_media_openal_AL.sourcei(source,param,value);
	}
	,sourceiv: function(source,param,values) {
		lime_media_openal_AL.sourceiv(source,param,values);
	}
	,sourcePlay: function(source) {
		lime_media_openal_AL.sourcePlay(source);
	}
	,sourcePlayv: function(sources) {
		lime_media_openal_AL.sourcePlayv(sources);
	}
	,sourceStop: function(source) {
		lime_media_openal_AL.sourceStop(source);
	}
	,sourceStopv: function(sources) {
		lime_media_openal_AL.sourceStopv(sources);
	}
	,sourceRewind: function(source) {
		lime_media_openal_AL.sourceRewind(source);
	}
	,sourceRewindv: function(sources) {
		lime_media_openal_AL.sourceRewindv(sources);
	}
	,sourcePause: function(source) {
		lime_media_openal_AL.sourcePause(source);
	}
	,sourcePausev: function(sources) {
		lime_media_openal_AL.sourcePausev(sources);
	}
	,sourceQueueBuffer: function(source,buffer) {
		lime_media_openal_AL.sourceQueueBuffer(source,buffer);
	}
	,sourceQueueBuffers: function(source,nb,buffers) {
		lime_media_openal_AL.sourceQueueBuffers(source,nb,buffers);
	}
	,sourceUnqueueBuffer: function(source) {
		return lime_media_openal_AL.sourceUnqueueBuffer(source);
	}
	,sourceUnqueueBuffers: function(source,nb) {
		return lime_media_openal_AL.sourceUnqueueBuffers(source,nb);
	}
	,speedOfSound: function(value) {
		lime_media_openal_AL.speedOfSound(value);
	}
	,__class__: lime_media_ALAudioContext
};
var lime_media_ALCAudioContext = function() {
	this.ALL_DEVICES_SPECIFIER = 4115;
	this.DEFAULT_ALL_DEVICES_SPECIFIER = 4114;
	this.ENUMERATE_ALL_EXT = 1;
	this.EXTENSIONS = 4102;
	this.DEVICE_SPECIFIER = 4101;
	this.DEFAULT_DEVICE_SPECIFIER = 4100;
	this.ALL_ATTRIBUTES = 4099;
	this.ATTRIBUTES_SIZE = 4098;
	this.OUT_OF_MEMORY = 40965;
	this.INVALID_VALUE = 40964;
	this.INVALID_ENUM = 40963;
	this.INVALID_CONTEXT = 40962;
	this.INVALID_DEVICE = 40961;
	this.NO_ERROR = 0;
	this.STEREO_SOURCES = 4113;
	this.MONO_SOURCES = 4112;
	this.SYNC = 4105;
	this.REFRESH = 4104;
	this.FREQUENCY = 4103;
	this.TRUE = 1;
	this.FALSE = 0;
};
$hxClasses["lime.media.ALCAudioContext"] = lime_media_ALCAudioContext;
lime_media_ALCAudioContext.__name__ = ["lime","media","ALCAudioContext"];
lime_media_ALCAudioContext.prototype = {
	FALSE: null
	,TRUE: null
	,FREQUENCY: null
	,REFRESH: null
	,SYNC: null
	,MONO_SOURCES: null
	,STEREO_SOURCES: null
	,NO_ERROR: null
	,INVALID_DEVICE: null
	,INVALID_CONTEXT: null
	,INVALID_ENUM: null
	,INVALID_VALUE: null
	,OUT_OF_MEMORY: null
	,ATTRIBUTES_SIZE: null
	,ALL_ATTRIBUTES: null
	,DEFAULT_DEVICE_SPECIFIER: null
	,DEVICE_SPECIFIER: null
	,EXTENSIONS: null
	,ENUMERATE_ALL_EXT: null
	,DEFAULT_ALL_DEVICES_SPECIFIER: null
	,ALL_DEVICES_SPECIFIER: null
	,closeDevice: function(device) {
		return lime_media_openal_ALC.closeDevice(device);
	}
	,createContext: function(device,attrlist) {
		return lime_media_openal_ALC.createContext(device,attrlist);
	}
	,destroyContext: function(context) {
		lime_media_openal_ALC.destroyContext(context);
	}
	,getContextsDevice: function(context) {
		return lime_media_openal_ALC.getContextsDevice(context);
	}
	,getCurrentContext: function() {
		return lime_media_openal_ALC.getCurrentContext();
	}
	,getError: function(device) {
		return lime_media_openal_ALC.getError(device);
	}
	,getErrorString: function(device) {
		return lime_media_openal_ALC.getErrorString(device);
	}
	,getIntegerv: function(device,param,count) {
		if(count == null) {
			count = 1;
		}
		return lime_media_openal_ALC.getIntegerv(device,param,count);
	}
	,getString: function(device,param) {
		return lime_media_openal_ALC.getString(device,param);
	}
	,makeContextCurrent: function(context) {
		return lime_media_openal_ALC.makeContextCurrent(context);
	}
	,openDevice: function(deviceName) {
		return lime_media_openal_ALC.openDevice(deviceName);
	}
	,pauseDevice: function(device) {
		lime_media_openal_ALC.pauseDevice(device);
	}
	,processContext: function(context) {
		lime_media_openal_ALC.processContext(context);
	}
	,resumeDevice: function(device) {
		lime_media_openal_ALC.resumeDevice(device);
	}
	,suspendContext: function(context) {
		lime_media_openal_ALC.suspendContext(context);
	}
	,__class__: lime_media_ALCAudioContext
};
var lime_media_AudioBuffer = function() {
};
$hxClasses["lime.media.AudioBuffer"] = lime_media_AudioBuffer;
lime_media_AudioBuffer.__name__ = ["lime","media","AudioBuffer"];
lime_media_AudioBuffer.fromBase64 = function(base64String) {
	if(base64String == null) {
		return null;
	}
	return null;
};
lime_media_AudioBuffer.fromBytes = function(bytes) {
	if(bytes == null) {
		return null;
	}
	return null;
};
lime_media_AudioBuffer.fromFile = function(path) {
	if(path == null) {
		return null;
	}
	return null;
};
lime_media_AudioBuffer.fromFiles = function(paths) {
	var buffer = null;
	var _g = 0;
	while(_g < paths.length) {
		var path = paths[_g];
		++_g;
		buffer = lime_media_AudioBuffer.fromFile(path);
		if(buffer != null) {
			break;
		}
	}
	return buffer;
};
lime_media_AudioBuffer.fromVorbisFile = function(vorbisFile) {
	return null;
};
lime_media_AudioBuffer.loadFromFile = function(path) {
	var request = new lime_net__$HTTPRequest_$lime_$media_$AudioBuffer();
	return request.load(path).then(function(buffer) {
		if(buffer != null) {
			return lime_app_Future.withValue(buffer);
		} else {
			return lime_app_Future.withError("");
		}
	});
};
lime_media_AudioBuffer.loadFromFiles = function(paths) {
	var promise = new lime_app_Promise();
	promise.completeWith(new lime_app_Future(function() {
		return lime_media_AudioBuffer.fromFiles(paths);
	},true));
	return promise.future;
};
lime_media_AudioBuffer.__getCodec = function(bytes) {
	var signature = bytes.getString(0,4);
	switch(signature) {
	case "OggS":
		return "audio/ogg";
	case "RIFF":
		if(bytes.getString(8,4) == "WAVE") {
			return "audio/wav";
		} else {
			var _g = bytes.b[2];
			var _g1 = bytes.b[1];
			var _g2 = bytes.b[0];
			switch(_g2) {
			case 73:
				if(_g1 == 68) {
					if(_g == 51) {
						return "audio/mp3";
					}
				}
				break;
			case 255:
				switch(_g1) {
				case 250:case 251:
					return "audio/mp3";
				default:
				}
				break;
			default:
			}
		}
		break;
	case "fLaC":
		return "audio/flac";
	default:
		var _g3 = bytes.b[2];
		var _g11 = bytes.b[1];
		var _g21 = bytes.b[0];
		switch(_g21) {
		case 73:
			if(_g11 == 68) {
				if(_g3 == 51) {
					return "audio/mp3";
				}
			}
			break;
		case 255:
			switch(_g11) {
			case 250:case 251:
				return "audio/mp3";
			default:
			}
			break;
		default:
		}
	}
	lime_utils_Log.error("Unsupported sound format",{ fileName : "AudioBuffer.hx", lineNumber : 493, className : "lime.media.AudioBuffer", methodName : "__getCodec"});
	return null;
};
lime_media_AudioBuffer.prototype = {
	bitsPerSample: null
	,channels: null
	,data: null
	,sampleRate: null
	,__srcAudio: null
	,__srcBuffer: null
	,__srcCustom: null
	,__srcFMODSound: null
	,__srcHowl: null
	,__srcSound: null
	,__srcVorbisFile: null
	,dispose: function() {
	}
	,get_src: function() {
		return this.__srcCustom;
	}
	,set_src: function(value) {
		return this.__srcCustom = value;
	}
	,__class__: lime_media_AudioBuffer
	,__properties__: {set_src:"set_src",get_src:"get_src"}
};
var lime_media_AudioContext = $hxClasses["lime.media.AudioContext"] = { __ename__ : ["lime","media","AudioContext"], __constructs__ : ["OPENAL","HTML5","WEB","FLASH","CUSTOM"] };
lime_media_AudioContext.OPENAL = function(alc,al) { var $x = ["OPENAL",0,alc,al]; $x.__enum__ = lime_media_AudioContext; $x.toString = $estr; return $x; };
lime_media_AudioContext.HTML5 = function(context) { var $x = ["HTML5",1,context]; $x.__enum__ = lime_media_AudioContext; $x.toString = $estr; return $x; };
lime_media_AudioContext.WEB = function(context) { var $x = ["WEB",2,context]; $x.__enum__ = lime_media_AudioContext; $x.toString = $estr; return $x; };
lime_media_AudioContext.FLASH = function(context) { var $x = ["FLASH",3,context]; $x.__enum__ = lime_media_AudioContext; $x.toString = $estr; return $x; };
lime_media_AudioContext.CUSTOM = function(data) { var $x = ["CUSTOM",4,data]; $x.__enum__ = lime_media_AudioContext; $x.toString = $estr; return $x; };
var lime_media_AudioManager = function() { };
$hxClasses["lime.media.AudioManager"] = lime_media_AudioManager;
lime_media_AudioManager.__name__ = ["lime","media","AudioManager"];
lime_media_AudioManager.init = function(context) {
	if(lime_media_AudioManager.context == null) {
		if(context == null) {
			lime_media_AudioManager.context = lime_media_AudioContext.OPENAL(new lime_media_ALCAudioContext(),new lime_media_ALAudioContext());
			var device = lime_media_openal_ALC.openDevice();
			var ctx = lime_media_openal_ALC.createContext(device);
			lime_media_openal_ALC.makeContextCurrent(ctx);
			lime_media_openal_ALC.processContext(ctx);
		} else {
			lime_media_AudioManager.context = context;
		}
	}
};
lime_media_AudioManager.resume = function() {
	if(lime_media_AudioManager.context != null) {
		var _g = lime_media_AudioManager.context;
		if(_g[1] == 0) {
			var al = _g[3];
			var alc = _g[2];
			var currentContext = alc.getCurrentContext();
			if(currentContext != null) {
				var device = alc.getContextsDevice(currentContext);
				alc.resumeDevice(device);
				alc.processContext(currentContext);
			}
		}
	}
};
lime_media_AudioManager.shutdown = function() {
	if(lime_media_AudioManager.context != null) {
		var _g = lime_media_AudioManager.context;
		if(_g[1] == 0) {
			var al = _g[3];
			var alc = _g[2];
			var currentContext = alc.getCurrentContext();
			if(currentContext != null) {
				var device = alc.getContextsDevice(currentContext);
				alc.makeContextCurrent(null);
				alc.destroyContext(currentContext);
				if(device != null) {
					alc.closeDevice(device);
				}
			}
		}
		lime_media_AudioManager.context = null;
	}
};
lime_media_AudioManager.suspend = function() {
	if(lime_media_AudioManager.context != null) {
		var _g = lime_media_AudioManager.context;
		if(_g[1] == 0) {
			var al = _g[3];
			var alc = _g[2];
			var currentContext = alc.getCurrentContext();
			if(currentContext != null) {
				alc.suspendContext(currentContext);
				var device = alc.getContextsDevice(currentContext);
				alc.pauseDevice(device);
			}
		}
	}
};
var lime_media_AudioSource = function(buffer,offset,length,loops) {
	if(loops == null) {
		loops = 0;
	}
	if(offset == null) {
		offset = 0;
	}
	this.onComplete = new lime_app__$Event_$Void_$Void();
	this.buffer = buffer;
	this.offset = offset;
	this.backend = new lime__$backend_native_NativeAudioSource(this);
	if(length != null && length != 0) {
		this.set_length(length);
	}
	this.set_loops(loops);
	if(buffer != null) {
		this.init();
	}
};
$hxClasses["lime.media.AudioSource"] = lime_media_AudioSource;
lime_media_AudioSource.__name__ = ["lime","media","AudioSource"];
lime_media_AudioSource.prototype = {
	onComplete: null
	,buffer: null
	,offset: null
	,backend: null
	,dispose: function() {
		this.backend.dispose();
	}
	,init: function() {
		this.backend.init();
	}
	,play: function() {
		this.backend.play();
	}
	,pause: function() {
		this.backend.pause();
	}
	,stop: function() {
		this.backend.stop();
	}
	,get_currentTime: function() {
		return this.backend.getCurrentTime();
	}
	,set_currentTime: function(value) {
		return this.backend.setCurrentTime(value);
	}
	,get_gain: function() {
		return this.backend.getGain();
	}
	,set_gain: function(value) {
		return this.backend.setGain(value);
	}
	,get_length: function() {
		return this.backend.getLength();
	}
	,set_length: function(value) {
		return this.backend.setLength(value);
	}
	,get_loops: function() {
		return this.backend.getLoops();
	}
	,set_loops: function(value) {
		return this.backend.setLoops(value);
	}
	,get_position: function() {
		return this.backend.getPosition();
	}
	,set_position: function(value) {
		return this.backend.setPosition(value);
	}
	,__class__: lime_media_AudioSource
	,__properties__: {set_position:"set_position",get_position:"get_position",set_loops:"set_loops",get_loops:"get_loops",set_length:"set_length",get_length:"get_length",set_gain:"set_gain",get_gain:"get_gain",set_currentTime:"set_currentTime",get_currentTime:"get_currentTime"}
};
var lime_media_FlashAudioContext = function() {
};
$hxClasses["lime.media.FlashAudioContext"] = lime_media_FlashAudioContext;
lime_media_FlashAudioContext.__name__ = ["lime","media","FlashAudioContext"];
lime_media_FlashAudioContext.prototype = {
	createBuffer: function(stream,context) {
		return null;
	}
	,getBytesLoaded: function(buffer) {
		return 0;
	}
	,getBytesTotal: function(buffer) {
		return 0;
	}
	,getID3: function(buffer) {
		return null;
	}
	,getIsBuffering: function(buffer) {
		return false;
	}
	,getIsURLInaccessible: function(buffer) {
		return false;
	}
	,getLength: function(buffer) {
		return 0;
	}
	,getURL: function(buffer) {
		return null;
	}
	,close: function(buffer) {
	}
	,extract: function(buffer,target,length,startPosition) {
		if(startPosition == null) {
			startPosition = -1;
		}
		return 0;
	}
	,load: function(buffer,stream,context) {
	}
	,loadCompressedDataFromByteArray: function(buffer,bytes,bytesLength) {
	}
	,loadPCMFromByteArray: function(buffer,bytes,samples,format,stereo,sampleRate) {
		if(sampleRate == null) {
			sampleRate = 44100;
		}
		if(stereo == null) {
			stereo = true;
		}
	}
	,play: function(buffer,startTime,loops,sndTransform) {
		if(loops == null) {
			loops = 0;
		}
		if(startTime == null) {
			startTime = 0;
		}
		return null;
	}
	,__class__: lime_media_FlashAudioContext
};
var lime_media_HTML5AudioContext = function() {
	this.NETWORK_NO_SOURCE = 3;
	this.NETWORK_LOADING = 2;
	this.NETWORK_IDLE = 1;
	this.NETWORK_EMPTY = 0;
	this.HAVE_NOTHING = 0;
	this.HAVE_METADATA = 1;
	this.HAVE_FUTURE_DATA = 3;
	this.HAVE_ENOUGH_DATA = 4;
	this.HAVE_CURRENT_DATA = 2;
};
$hxClasses["lime.media.HTML5AudioContext"] = lime_media_HTML5AudioContext;
lime_media_HTML5AudioContext.__name__ = ["lime","media","HTML5AudioContext"];
lime_media_HTML5AudioContext.prototype = {
	HAVE_CURRENT_DATA: null
	,HAVE_ENOUGH_DATA: null
	,HAVE_FUTURE_DATA: null
	,HAVE_METADATA: null
	,HAVE_NOTHING: null
	,NETWORK_EMPTY: null
	,NETWORK_IDLE: null
	,NETWORK_LOADING: null
	,NETWORK_NO_SOURCE: null
	,canPlayType: function(buffer,type) {
		return null;
	}
	,createBuffer: function(urlString) {
		return null;
	}
	,getAutoplay: function(buffer) {
		return false;
	}
	,getBuffered: function(buffer) {
		return null;
	}
	,getCurrentSrc: function(buffer) {
		return null;
	}
	,getCurrentTime: function(buffer) {
		return 0;
	}
	,getDefaultPlaybackRate: function(buffer) {
		return 1;
	}
	,getDuration: function(buffer) {
		return 0;
	}
	,getEnded: function(buffer) {
		return false;
	}
	,getError: function(buffer) {
		return null;
	}
	,getLoop: function(buffer) {
		return false;
	}
	,getMuted: function(buffer) {
		return false;
	}
	,getNetworkState: function(buffer) {
		return 0;
	}
	,getPaused: function(buffer) {
		return false;
	}
	,getPlaybackRate: function(buffer) {
		return 1;
	}
	,getPlayed: function(buffer) {
		return null;
	}
	,getPreload: function(buffer) {
		return null;
	}
	,getReadyState: function(buffer) {
		return 0;
	}
	,getSeekable: function(buffer) {
		return null;
	}
	,getSeeking: function(buffer) {
		return false;
	}
	,getSrc: function(buffer) {
		return null;
	}
	,getStartTime: function(buffer) {
		return 0;
	}
	,getVolume: function(buffer) {
		return 1;
	}
	,load: function(buffer) {
	}
	,pause: function(buffer) {
	}
	,play: function(buffer) {
	}
	,setAutoplay: function(buffer,value) {
	}
	,setCurrentTime: function(buffer,value) {
	}
	,setDefaultPlaybackRate: function(buffer,value) {
	}
	,setLoop: function(buffer,value) {
	}
	,setMuted: function(buffer,value) {
	}
	,setPlaybackRate: function(buffer,value) {
	}
	,setPreload: function(buffer,value) {
	}
	,setSrc: function(buffer,value) {
	}
	,setVolume: function(buffer,value) {
	}
	,__class__: lime_media_HTML5AudioContext
};
var lime_media_WebAudioContext = function() {
};
$hxClasses["lime.media.WebAudioContext"] = lime_media_WebAudioContext;
lime_media_WebAudioContext.__name__ = ["lime","media","WebAudioContext"];
lime_media_WebAudioContext.prototype = {
	activeSourceCount: null
	,currentTime: null
	,destination: null
	,listener: null
	,oncomplete: null
	,sampleRate: null
	,createAnalyser: function() {
		return null;
	}
	,createBiquadFilter: function() {
		return null;
	}
	,createBuffer: function(buffer,mixToMono) {
		return null;
	}
	,createBufferSource: function() {
		return null;
	}
	,createChannelMerger: function(numberOfInputs) {
		return null;
	}
	,createChannelSplitter: function(numberOfOutputs) {
		return null;
	}
	,createConvolver: function() {
		return null;
	}
	,createDelay: function(maxDelayTime) {
		return null;
	}
	,createDynamicsCompressor: function() {
		return null;
	}
	,createGain: function() {
		return null;
	}
	,createMediaElementSource: function(mediaElement) {
		return null;
	}
	,createMediaStreamSource: function(mediaStream) {
		return null;
	}
	,createOscillator: function() {
		return null;
	}
	,createPanner: function() {
		return null;
	}
	,createScriptProcessor: function(bufferSize,numberOfInputChannels,numberOfOutputChannels) {
		return null;
	}
	,createWaveShaper: function() {
		return null;
	}
	,createWaveTable: function(real,imag) {
		return null;
	}
	,decodeAudioData: function(audioData,successCallback,errorCallback) {
	}
	,startRendering: function() {
	}
	,__class__: lime_media_WebAudioContext
};
var lime_media_codecs_vorbis_VorbisComment = function() {
};
$hxClasses["lime.media.codecs.vorbis.VorbisComment"] = lime_media_codecs_vorbis_VorbisComment;
lime_media_codecs_vorbis_VorbisComment.__name__ = ["lime","media","codecs","vorbis","VorbisComment"];
lime_media_codecs_vorbis_VorbisComment.prototype = {
	userComments: null
	,vendor: null
	,__class__: lime_media_codecs_vorbis_VorbisComment
};
var lime_media_codecs_vorbis_VorbisFile = function(handle) {
	this.handle = handle;
};
$hxClasses["lime.media.codecs.vorbis.VorbisFile"] = lime_media_codecs_vorbis_VorbisFile;
lime_media_codecs_vorbis_VorbisFile.__name__ = ["lime","media","codecs","vorbis","VorbisFile"];
lime_media_codecs_vorbis_VorbisFile.fromBytes = function(bytes) {
	return null;
};
lime_media_codecs_vorbis_VorbisFile.fromFile = function(path) {
	return null;
};
lime_media_codecs_vorbis_VorbisFile.prototype = {
	bitstream: null
	,handle: null
	,bitrate: function(bitstream) {
		if(bitstream == null) {
			bitstream = -1;
		}
		return 0;
	}
	,bitrateInstant: function() {
		return 0;
	}
	,clear: function() {
	}
	,comment: function(bitstream) {
		if(bitstream == null) {
			bitstream = -1;
		}
		return null;
	}
	,crosslap: function(other) {
		return 0;
	}
	,info: function(bitstream) {
		if(bitstream == null) {
			bitstream = -1;
		}
		return null;
	}
	,pcmSeek: function(pos) {
		return 0;
	}
	,pcmSeekLap: function(pos) {
		return 0;
	}
	,pcmSeekPage: function(pos) {
		return 0;
	}
	,pcmSeekPageLap: function(pos) {
		return 0;
	}
	,pcmTell: function() {
		var this1 = new haxe__$Int64__$_$_$Int64(0,0);
		return this1;
	}
	,pcmTotal: function(bitstream) {
		if(bitstream == null) {
			bitstream = -1;
		}
		var this1 = new haxe__$Int64__$_$_$Int64(0,0);
		return this1;
	}
	,rawSeek: function(pos) {
		return 0;
	}
	,rawSeekLap: function(pos) {
		return 0;
	}
	,rawTell: function() {
		var this1 = new haxe__$Int64__$_$_$Int64(0,0);
		return this1;
	}
	,rawTotal: function(bitstream) {
		if(bitstream == null) {
			bitstream = -1;
		}
		var this1 = new haxe__$Int64__$_$_$Int64(0,0);
		return this1;
	}
	,read: function(buffer,position,length,bigEndianPacking,wordSize,signed) {
		if(signed == null) {
			signed = true;
		}
		if(wordSize == null) {
			wordSize = 2;
		}
		if(bigEndianPacking == null) {
			bigEndianPacking = false;
		}
		if(length == null) {
			length = 4096;
		}
		return 0;
	}
	,readFloat: function(pcmChannels,samples) {
		return 0;
	}
	,seekable: function() {
		return false;
	}
	,serialNumber: function(bitstream) {
		if(bitstream == null) {
			bitstream = -1;
		}
		return 0;
	}
	,streams: function() {
		return 0;
	}
	,timeSeek: function(s) {
		return 0;
	}
	,timeSeekLap: function(s) {
		return 0;
	}
	,timeSeekPage: function(s) {
		return 0;
	}
	,timeSeekPageLap: function(s) {
		return 0;
	}
	,timeTell: function() {
		return 0;
	}
	,timeTotal: function(bitstream) {
		if(bitstream == null) {
			bitstream = -1;
		}
		return 0;
	}
	,__class__: lime_media_codecs_vorbis_VorbisFile
};
var lime_media_codecs_vorbis_VorbisInfo = function() {
};
$hxClasses["lime.media.codecs.vorbis.VorbisInfo"] = lime_media_codecs_vorbis_VorbisInfo;
lime_media_codecs_vorbis_VorbisInfo.__name__ = ["lime","media","codecs","vorbis","VorbisInfo"];
lime_media_codecs_vorbis_VorbisInfo.prototype = {
	bitrateLower: null
	,bitrateNominal: null
	,bitrateUpper: null
	,channels: null
	,rate: null
	,version: null
	,__class__: lime_media_codecs_vorbis_VorbisInfo
};
var lime_media_openal_AL = function() { };
$hxClasses["lime.media.openal.AL"] = lime_media_openal_AL;
lime_media_openal_AL.__name__ = ["lime","media","openal","AL"];
lime_media_openal_AL.removeDirectFilter = function(source) {
};
lime_media_openal_AL.removeSend = function(source,index) {
};
lime_media_openal_AL.auxf = function(aux,param,value) {
};
lime_media_openal_AL.auxfv = function(aux,param,values) {
};
lime_media_openal_AL.auxi = function(aux,param,value) {
};
lime_media_openal_AL.auxiv = function(aux,param,values) {
};
lime_media_openal_AL.bufferData = function(buffer,format,data,size,freq) {
};
lime_media_openal_AL.buffer3f = function(buffer,param,value1,value2,value3) {
};
lime_media_openal_AL.buffer3i = function(buffer,param,value1,value2,value3) {
};
lime_media_openal_AL.bufferf = function(buffer,param,value) {
};
lime_media_openal_AL.bufferfv = function(buffer,param,values) {
};
lime_media_openal_AL.bufferi = function(buffer,param,value) {
};
lime_media_openal_AL.bufferiv = function(buffer,param,values) {
};
lime_media_openal_AL.createAux = function() {
	return null;
};
lime_media_openal_AL.createBuffer = function() {
	return null;
};
lime_media_openal_AL.createEffect = function() {
	return null;
};
lime_media_openal_AL.createFilter = function() {
	return null;
};
lime_media_openal_AL.createSource = function() {
	return null;
};
lime_media_openal_AL.deleteBuffer = function(buffer) {
};
lime_media_openal_AL.deleteBuffers = function(buffers) {
};
lime_media_openal_AL.deleteSource = function(source) {
};
lime_media_openal_AL.deleteSources = function(sources) {
};
lime_media_openal_AL.disable = function(capability) {
};
lime_media_openal_AL.distanceModel = function(distanceModel) {
};
lime_media_openal_AL.dopplerFactor = function(value) {
};
lime_media_openal_AL.dopplerVelocity = function(value) {
};
lime_media_openal_AL.effectf = function(effect,param,value) {
};
lime_media_openal_AL.effectfv = function(effect,param,values) {
};
lime_media_openal_AL.effecti = function(effect,param,value) {
};
lime_media_openal_AL.effectiv = function(effect,param,values) {
};
lime_media_openal_AL.enable = function(capability) {
};
lime_media_openal_AL.genSource = function() {
	return null;
};
lime_media_openal_AL.genSources = function(n) {
	return null;
};
lime_media_openal_AL.genBuffer = function() {
	return null;
};
lime_media_openal_AL.genBuffers = function(n) {
	return null;
};
lime_media_openal_AL.getBoolean = function(param) {
	return false;
};
lime_media_openal_AL.getBooleanv = function(param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getBuffer3f = function(buffer,param) {
	return null;
};
lime_media_openal_AL.getBuffer3i = function(buffer,param) {
	return null;
};
lime_media_openal_AL.getBufferf = function(buffer,param) {
	return 0;
};
lime_media_openal_AL.getBufferfv = function(buffer,param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getBufferi = function(buffer,param) {
	return 0;
};
lime_media_openal_AL.getBufferiv = function(buffer,param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getDouble = function(param) {
	return 0;
};
lime_media_openal_AL.getDoublev = function(param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getEnumValue = function(ename) {
	return 0;
};
lime_media_openal_AL.getError = function() {
	return 0;
};
lime_media_openal_AL.getErrorString = function() {
	var _g = lime_media_openal_AL.getError();
	switch(_g) {
	case 40961:
		return "INVALID_NAME: Invalid parameter name";
	case 40962:
		return "INVALID_ENUM: Invalid enum value";
	case 40963:
		return "INVALID_VALUE: Invalid parameter value";
	case 40964:
		return "INVALID_OPERATION: Illegal operation or call";
	case 40965:
		return "OUT_OF_MEMORY: OpenAL has run out of memory";
	default:
		return "";
	}
};
lime_media_openal_AL.getFilteri = function(filter,param) {
	return 0;
};
lime_media_openal_AL.getFloat = function(param) {
	return 0;
};
lime_media_openal_AL.getFloatv = function(param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getInteger = function(param) {
	return 0;
};
lime_media_openal_AL.getIntegerv = function(param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getListener3f = function(param) {
	return null;
};
lime_media_openal_AL.getListener3i = function(param) {
	return null;
};
lime_media_openal_AL.getListenerf = function(param) {
	return 0;
};
lime_media_openal_AL.getListenerfv = function(param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getListeneri = function(param) {
	return 0;
};
lime_media_openal_AL.getListeneriv = function(param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getParameter = function(param) {
	return null;
};
lime_media_openal_AL.getProcAddress = function(fname) {
	return null;
};
lime_media_openal_AL.getSource3f = function(source,param) {
	return null;
};
lime_media_openal_AL.getSourcef = function(source,param) {
	return 0;
};
lime_media_openal_AL.getSource3i = function(source,param) {
	return null;
};
lime_media_openal_AL.getSourcefv = function(source,param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getSourcei = function(source,param) {
	return 0;
};
lime_media_openal_AL.getSourceiv = function(source,param,count) {
	if(count == null) {
		count = 1;
	}
	return null;
};
lime_media_openal_AL.getString = function(param) {
	return null;
};
lime_media_openal_AL.isBuffer = function(buffer) {
	return false;
};
lime_media_openal_AL.isEnabled = function(capability) {
	return false;
};
lime_media_openal_AL.isExtensionPresent = function(extname) {
	return false;
};
lime_media_openal_AL.isAux = function(aux) {
	return false;
};
lime_media_openal_AL.isEffect = function(effect) {
	return false;
};
lime_media_openal_AL.isFilter = function(filter) {
	return false;
};
lime_media_openal_AL.isSource = function(source) {
	return false;
};
lime_media_openal_AL.listener3f = function(param,value1,value2,value3) {
};
lime_media_openal_AL.listener3i = function(param,value1,value2,value3) {
};
lime_media_openal_AL.listenerf = function(param,value) {
};
lime_media_openal_AL.listenerfv = function(param,values) {
};
lime_media_openal_AL.listeneri = function(param,value) {
};
lime_media_openal_AL.listeneriv = function(param,values) {
};
lime_media_openal_AL.source3f = function(source,param,value1,value2,value3) {
};
lime_media_openal_AL.source3i = function(source,param,value1,value2,value3) {
};
lime_media_openal_AL.sourcef = function(source,param,value) {
};
lime_media_openal_AL.sourcefv = function(source,param,values) {
};
lime_media_openal_AL.sourcei = function(source,param,value) {
};
lime_media_openal_AL.filteri = function(filter,param,value) {
};
lime_media_openal_AL.filterf = function(filter,param,value) {
};
lime_media_openal_AL.sourceiv = function(source,param,values) {
};
lime_media_openal_AL.sourcePlay = function(source) {
};
lime_media_openal_AL.sourcePlayv = function(sources) {
};
lime_media_openal_AL.sourceStop = function(source) {
};
lime_media_openal_AL.sourceStopv = function(sources) {
};
lime_media_openal_AL.sourceRewind = function(source) {
};
lime_media_openal_AL.sourceRewindv = function(sources) {
};
lime_media_openal_AL.sourcePause = function(source) {
};
lime_media_openal_AL.sourcePausev = function(sources) {
};
lime_media_openal_AL.sourceQueueBuffer = function(source,buffer) {
};
lime_media_openal_AL.sourceQueueBuffers = function(source,nb,buffers) {
};
lime_media_openal_AL.sourceUnqueueBuffer = function(source) {
	return 0;
};
lime_media_openal_AL.sourceUnqueueBuffers = function(source,nb) {
	return null;
};
lime_media_openal_AL.speedOfSound = function(value) {
};
var lime_media_openal__$ALAuxiliaryEffectSlot_ALAuxiliaryEffectSlot_$Impl_$ = {};
$hxClasses["lime.media.openal._ALAuxiliaryEffectSlot.ALAuxiliaryEffectSlot_Impl_"] = lime_media_openal__$ALAuxiliaryEffectSlot_ALAuxiliaryEffectSlot_$Impl_$;
lime_media_openal__$ALAuxiliaryEffectSlot_ALAuxiliaryEffectSlot_$Impl_$.__name__ = ["lime","media","openal","_ALAuxiliaryEffectSlot","ALAuxiliaryEffectSlot_Impl_"];
lime_media_openal__$ALAuxiliaryEffectSlot_ALAuxiliaryEffectSlot_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
var lime_media_openal__$ALBuffer_ALBuffer_$Impl_$ = {};
$hxClasses["lime.media.openal._ALBuffer.ALBuffer_Impl_"] = lime_media_openal__$ALBuffer_ALBuffer_$Impl_$;
lime_media_openal__$ALBuffer_ALBuffer_$Impl_$.__name__ = ["lime","media","openal","_ALBuffer","ALBuffer_Impl_"];
lime_media_openal__$ALBuffer_ALBuffer_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
var lime_media_openal_ALC = function() { };
$hxClasses["lime.media.openal.ALC"] = lime_media_openal_ALC;
lime_media_openal_ALC.__name__ = ["lime","media","openal","ALC"];
lime_media_openal_ALC.closeDevice = function(device) {
	return false;
};
lime_media_openal_ALC.createContext = function(device,attrlist) {
	return null;
};
lime_media_openal_ALC.destroyContext = function(context) {
};
lime_media_openal_ALC.getContextsDevice = function(context) {
	return null;
};
lime_media_openal_ALC.getCurrentContext = function() {
	return null;
};
lime_media_openal_ALC.getError = function(device) {
	return 0;
};
lime_media_openal_ALC.getErrorString = function(device) {
	var _g = lime_media_openal_ALC.getError(device);
	switch(_g) {
	case 40961:
		return "INVALID_DEVICE: Invalid device (or no device?)";
	case 40962:
		return "INVALID_CONTEXT: Invalid context (or no context?)";
	case 40963:
		return "INVALID_ENUM: Invalid enum value";
	case 40964:
		return "INVALID_VALUE: Invalid param value";
	case 40965:
		return "OUT_OF_MEMORY: OpenAL has run out of memory";
	default:
		return "";
	}
};
lime_media_openal_ALC.getIntegerv = function(device,param,size) {
	return null;
};
lime_media_openal_ALC.getString = function(device,param) {
	return null;
};
lime_media_openal_ALC.makeContextCurrent = function(context) {
	return false;
};
lime_media_openal_ALC.openDevice = function(deviceName) {
	return null;
};
lime_media_openal_ALC.pauseDevice = function(device) {
};
lime_media_openal_ALC.processContext = function(context) {
};
lime_media_openal_ALC.resumeDevice = function(device) {
};
lime_media_openal_ALC.suspendContext = function(context) {
};
var lime_media_openal__$ALContext_ALContext_$Impl_$ = {};
$hxClasses["lime.media.openal._ALContext.ALContext_Impl_"] = lime_media_openal__$ALContext_ALContext_$Impl_$;
lime_media_openal__$ALContext_ALContext_$Impl_$.__name__ = ["lime","media","openal","_ALContext","ALContext_Impl_"];
lime_media_openal__$ALContext_ALContext_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
var lime_media_openal__$ALDevice_ALDevice_$Impl_$ = {};
$hxClasses["lime.media.openal._ALDevice.ALDevice_Impl_"] = lime_media_openal__$ALDevice_ALDevice_$Impl_$;
lime_media_openal__$ALDevice_ALDevice_$Impl_$.__name__ = ["lime","media","openal","_ALDevice","ALDevice_Impl_"];
lime_media_openal__$ALDevice_ALDevice_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
var lime_media_openal__$ALEffect_ALEffect_$Impl_$ = {};
$hxClasses["lime.media.openal._ALEffect.ALEffect_Impl_"] = lime_media_openal__$ALEffect_ALEffect_$Impl_$;
lime_media_openal__$ALEffect_ALEffect_$Impl_$.__name__ = ["lime","media","openal","_ALEffect","ALEffect_Impl_"];
lime_media_openal__$ALEffect_ALEffect_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
var lime_media_openal__$ALFilter_ALFilter_$Impl_$ = {};
$hxClasses["lime.media.openal._ALFilter.ALFilter_Impl_"] = lime_media_openal__$ALFilter_ALFilter_$Impl_$;
lime_media_openal__$ALFilter_ALFilter_$Impl_$.__name__ = ["lime","media","openal","_ALFilter","ALFilter_Impl_"];
lime_media_openal__$ALFilter_ALFilter_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
var lime_media_openal__$ALSource_ALSource_$Impl_$ = {};
$hxClasses["lime.media.openal._ALSource.ALSource_Impl_"] = lime_media_openal__$ALSource_ALSource_$Impl_$;
lime_media_openal__$ALSource_ALSource_$Impl_$.__name__ = ["lime","media","openal","_ALSource","ALSource_Impl_"];
lime_media_openal__$ALSource_ALSource_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
var lime_net__$IHTTPRequest = function() { };
$hxClasses["lime.net._IHTTPRequest"] = lime_net__$IHTTPRequest;
lime_net__$IHTTPRequest.__name__ = ["lime","net","_IHTTPRequest"];
lime_net__$IHTTPRequest.prototype = {
	contentType: null
	,data: null
	,enableResponseHeaders: null
	,followRedirects: null
	,formData: null
	,headers: null
	,method: null
	,responseHeaders: null
	,responseStatus: null
	,timeout: null
	,uri: null
	,userAgent: null
	,withCredentials: null
	,cancel: null
	,__class__: lime_net__$IHTTPRequest
};
var lime_net__$HTTPRequest_AbstractHTTPRequest = function(uri) {
	this.uri = uri;
	this.contentType = "application/x-www-form-urlencoded";
	this.followRedirects = true;
	this.enableResponseHeaders = false;
	this.formData = new haxe_ds_StringMap();
	this.headers = [];
	this.method = "GET";
	this.timeout = 30000;
	this.withCredentials = false;
	this.backend = new lime__$backend_native_NativeHTTPRequest();
	this.backend.init(this);
};
$hxClasses["lime.net._HTTPRequest.AbstractHTTPRequest"] = lime_net__$HTTPRequest_AbstractHTTPRequest;
lime_net__$HTTPRequest_AbstractHTTPRequest.__name__ = ["lime","net","_HTTPRequest","AbstractHTTPRequest"];
lime_net__$HTTPRequest_AbstractHTTPRequest.__interfaces__ = [lime_net__$IHTTPRequest];
lime_net__$HTTPRequest_AbstractHTTPRequest.prototype = {
	contentType: null
	,data: null
	,enableResponseHeaders: null
	,followRedirects: null
	,formData: null
	,headers: null
	,method: null
	,responseData: null
	,responseHeaders: null
	,responseStatus: null
	,timeout: null
	,uri: null
	,userAgent: null
	,withCredentials: null
	,backend: null
	,cancel: function() {
		this.backend.cancel();
	}
	,load: function(uri) {
		return null;
	}
	,__class__: lime_net__$HTTPRequest_AbstractHTTPRequest
};
var lime_net_HTTPRequest = function(uri) {
	lime_net__$HTTPRequest_AbstractHTTPRequest.call(this,uri);
};
$hxClasses["lime.net.HTTPRequest"] = lime_net_HTTPRequest;
lime_net_HTTPRequest.__name__ = ["lime","net","HTTPRequest"];
lime_net_HTTPRequest.__super__ = lime_net__$HTTPRequest_AbstractHTTPRequest;
lime_net_HTTPRequest.prototype = $extend(lime_net__$HTTPRequest_AbstractHTTPRequest.prototype,{
	__class__: lime_net_HTTPRequest
});
var lime_net__$HTTPRequest_$Bytes = function(uri) {
	lime_net__$HTTPRequest_AbstractHTTPRequest.call(this,uri);
};
$hxClasses["lime.net._HTTPRequest_Bytes"] = lime_net__$HTTPRequest_$Bytes;
lime_net__$HTTPRequest_$Bytes.__name__ = ["lime","net","_HTTPRequest_Bytes"];
lime_net__$HTTPRequest_$Bytes.__super__ = lime_net__$HTTPRequest_AbstractHTTPRequest;
lime_net__$HTTPRequest_$Bytes.prototype = $extend(lime_net__$HTTPRequest_AbstractHTTPRequest.prototype,{
	fromBytes: function(bytes) {
		return bytes;
	}
	,load: function(uri) {
		var _gthis = this;
		if(uri != null) {
			this.uri = uri;
		}
		var promise = new lime_app_Promise();
		var future = this.backend.loadData(this.uri);
		future.onProgress($bind(promise,promise.progress));
		future.onError($bind(promise,promise.error));
		future.onComplete(function(bytes) {
			_gthis.responseData = _gthis.fromBytes(bytes);
			promise.complete(_gthis.responseData);
		});
		return promise.future;
	}
	,__class__: lime_net__$HTTPRequest_$Bytes
});
var lime_net__$HTTPRequest_$String = function(uri) {
	lime_net__$HTTPRequest_AbstractHTTPRequest.call(this,uri);
};
$hxClasses["lime.net._HTTPRequest_String"] = lime_net__$HTTPRequest_$String;
lime_net__$HTTPRequest_$String.__name__ = ["lime","net","_HTTPRequest_String"];
lime_net__$HTTPRequest_$String.__super__ = lime_net__$HTTPRequest_AbstractHTTPRequest;
lime_net__$HTTPRequest_$String.prototype = $extend(lime_net__$HTTPRequest_AbstractHTTPRequest.prototype,{
	load: function(uri) {
		var _gthis = this;
		if(uri != null) {
			this.uri = uri;
		}
		var promise = new lime_app_Promise();
		var future = this.backend.loadText(this.uri);
		future.onProgress($bind(promise,promise.progress));
		future.onError($bind(promise,promise.error));
		future.onComplete(function(text) {
			_gthis.responseData = text;
			promise.complete(_gthis.responseData);
		});
		return promise.future;
	}
	,__class__: lime_net__$HTTPRequest_$String
});
var lime_net_HTTPRequestHeader = function(name,value) {
	if(value == null) {
		value = "";
	}
	this.name = name;
	this.value = value;
};
$hxClasses["lime.net.HTTPRequestHeader"] = lime_net_HTTPRequestHeader;
lime_net_HTTPRequestHeader.__name__ = ["lime","net","HTTPRequestHeader"];
lime_net_HTTPRequestHeader.prototype = {
	name: null
	,value: null
	,__class__: lime_net_HTTPRequestHeader
};
var lime_net__$HTTPRequest_$lime_$graphics_$Image = function(uri) {
	lime_net__$HTTPRequest_$Bytes.call(this,uri);
};
$hxClasses["lime.net._HTTPRequest_lime_graphics_Image"] = lime_net__$HTTPRequest_$lime_$graphics_$Image;
lime_net__$HTTPRequest_$lime_$graphics_$Image.__name__ = ["lime","net","_HTTPRequest_lime_graphics_Image"];
lime_net__$HTTPRequest_$lime_$graphics_$Image.__super__ = lime_net__$HTTPRequest_$Bytes;
lime_net__$HTTPRequest_$lime_$graphics_$Image.prototype = $extend(lime_net__$HTTPRequest_$Bytes.prototype,{
	fromBytes: function(bytes) {
		return lime_graphics_Image.fromBytes(bytes);
	}
	,__class__: lime_net__$HTTPRequest_$lime_$graphics_$Image
});
var lime_net__$HTTPRequest_$lime_$media_$AudioBuffer = function(uri) {
	lime_net__$HTTPRequest_$Bytes.call(this,uri);
};
$hxClasses["lime.net._HTTPRequest_lime_media_AudioBuffer"] = lime_net__$HTTPRequest_$lime_$media_$AudioBuffer;
lime_net__$HTTPRequest_$lime_$media_$AudioBuffer.__name__ = ["lime","net","_HTTPRequest_lime_media_AudioBuffer"];
lime_net__$HTTPRequest_$lime_$media_$AudioBuffer.__super__ = lime_net__$HTTPRequest_$Bytes;
lime_net__$HTTPRequest_$lime_$media_$AudioBuffer.prototype = $extend(lime_net__$HTTPRequest_$Bytes.prototype,{
	fromBytes: function(bytes) {
		return lime_media_AudioBuffer.fromBytes(bytes);
	}
	,__class__: lime_net__$HTTPRequest_$lime_$media_$AudioBuffer
});
var lime_net__$HTTPRequest_$lime_$text_$Font = function(uri) {
	lime_net__$HTTPRequest_$Bytes.call(this,uri);
};
$hxClasses["lime.net._HTTPRequest_lime_text_Font"] = lime_net__$HTTPRequest_$lime_$text_$Font;
lime_net__$HTTPRequest_$lime_$text_$Font.__name__ = ["lime","net","_HTTPRequest_lime_text_Font"];
lime_net__$HTTPRequest_$lime_$text_$Font.__super__ = lime_net__$HTTPRequest_$Bytes;
lime_net__$HTTPRequest_$lime_$text_$Font.prototype = $extend(lime_net__$HTTPRequest_$Bytes.prototype,{
	fromBytes: function(bytes) {
		return lime_text_Font.fromBytes(bytes);
	}
	,__class__: lime_net__$HTTPRequest_$lime_$text_$Font
});
var lime_net__$HTTPRequest_$lime_$utils_$Bytes = function(uri) {
	lime_net__$HTTPRequest_$Bytes.call(this,uri);
};
$hxClasses["lime.net._HTTPRequest_lime_utils_Bytes"] = lime_net__$HTTPRequest_$lime_$utils_$Bytes;
lime_net__$HTTPRequest_$lime_$utils_$Bytes.__name__ = ["lime","net","_HTTPRequest_lime_utils_Bytes"];
lime_net__$HTTPRequest_$lime_$utils_$Bytes.__super__ = lime_net__$HTTPRequest_$Bytes;
lime_net__$HTTPRequest_$lime_$utils_$Bytes.prototype = $extend(lime_net__$HTTPRequest_$Bytes.prototype,{
	fromBytes: function(bytes) {
		return lime_utils__$Bytes_Bytes_$Impl_$.fromBytes(bytes);
	}
	,__class__: lime_net__$HTTPRequest_$lime_$utils_$Bytes
});
var lime_net__$HTTPRequest_$openfl_$utils_$ByteArray = function(uri) {
	lime_net__$HTTPRequest_$Bytes.call(this,uri);
};
$hxClasses["lime.net._HTTPRequest_openfl_utils_ByteArray"] = lime_net__$HTTPRequest_$openfl_$utils_$ByteArray;
lime_net__$HTTPRequest_$openfl_$utils_$ByteArray.__name__ = ["lime","net","_HTTPRequest_openfl_utils_ByteArray"];
lime_net__$HTTPRequest_$openfl_$utils_$ByteArray.__super__ = lime_net__$HTTPRequest_$Bytes;
lime_net__$HTTPRequest_$openfl_$utils_$ByteArray.prototype = $extend(lime_net__$HTTPRequest_$Bytes.prototype,{
	fromBytes: function(bytes) {
		return openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(bytes);
	}
	,__class__: lime_net__$HTTPRequest_$openfl_$utils_$ByteArray
});
var lime_net_curl_CURL = function(handle) {
	if(handle != null) {
		this.handle = handle;
	}
};
$hxClasses["lime.net.curl.CURL"] = lime_net_curl_CURL;
lime_net_curl_CURL.__name__ = ["lime","net","curl","CURL"];
lime_net_curl_CURL.getDate = function(date,now) {
	return 0;
};
lime_net_curl_CURL.globalCleanup = function() {
};
lime_net_curl_CURL.globalInit = function(flags) {
	return 0;
};
lime_net_curl_CURL.strerror = function(code) {
	return null;
};
lime_net_curl_CURL.version = function() {
	return null;
};
lime_net_curl_CURL.versionInfo = function(type) {
	return null;
};
lime_net_curl_CURL.prototype = {
	handle: null
	,headerBytes: null
	,writeBytes: null
	,cleanup: function() {
	}
	,clone: function() {
		return null;
	}
	,escape: function(url,length) {
		return null;
	}
	,getInfo: function(info) {
		return null;
	}
	,pause: function(bitMask) {
		return 0;
	}
	,perform: function() {
		return 0;
	}
	,reset: function() {
	}
	,setOption: function(option,parameter) {
		return 0;
	}
	,unescape: function(url,inLength,outLength) {
		return null;
	}
	,__class__: lime_net_curl_CURL
};
var lime_project_Architecture = $hxClasses["lime.project.Architecture"] = { __ename__ : ["lime","project","Architecture"], __constructs__ : ["ARMV5","ARMV6","ARMV7","ARMV7S","ARM64","X86","X64","MIPS","MIPSEL"] };
lime_project_Architecture.ARMV5 = ["ARMV5",0];
lime_project_Architecture.ARMV5.toString = $estr;
lime_project_Architecture.ARMV5.__enum__ = lime_project_Architecture;
lime_project_Architecture.ARMV6 = ["ARMV6",1];
lime_project_Architecture.ARMV6.toString = $estr;
lime_project_Architecture.ARMV6.__enum__ = lime_project_Architecture;
lime_project_Architecture.ARMV7 = ["ARMV7",2];
lime_project_Architecture.ARMV7.toString = $estr;
lime_project_Architecture.ARMV7.__enum__ = lime_project_Architecture;
lime_project_Architecture.ARMV7S = ["ARMV7S",3];
lime_project_Architecture.ARMV7S.toString = $estr;
lime_project_Architecture.ARMV7S.__enum__ = lime_project_Architecture;
lime_project_Architecture.ARM64 = ["ARM64",4];
lime_project_Architecture.ARM64.toString = $estr;
lime_project_Architecture.ARM64.__enum__ = lime_project_Architecture;
lime_project_Architecture.X86 = ["X86",5];
lime_project_Architecture.X86.toString = $estr;
lime_project_Architecture.X86.__enum__ = lime_project_Architecture;
lime_project_Architecture.X64 = ["X64",6];
lime_project_Architecture.X64.toString = $estr;
lime_project_Architecture.X64.__enum__ = lime_project_Architecture;
lime_project_Architecture.MIPS = ["MIPS",7];
lime_project_Architecture.MIPS.toString = $estr;
lime_project_Architecture.MIPS.__enum__ = lime_project_Architecture;
lime_project_Architecture.MIPSEL = ["MIPSEL",8];
lime_project_Architecture.MIPSEL.toString = $estr;
lime_project_Architecture.MIPSEL.__enum__ = lime_project_Architecture;
var lime_project_Asset = function(path,rename,type,embed,setDefaults) {
	if(setDefaults == null) {
		setDefaults = true;
	}
	if(rename == null) {
		rename = "";
	}
	if(path == null) {
		path = "";
	}
	if(!setDefaults) {
		return;
	}
	this.embed = embed;
	this.sourcePath = lime_tools_helpers_PathHelper.standardize(path);
	if(rename == "") {
		this.targetPath = path;
	} else {
		this.targetPath = rename;
	}
	this.id = this.targetPath;
	this.resourceName = this.targetPath;
	this.flatName = lime_tools_helpers_StringHelper.getFlatName(this.targetPath);
	this.format = haxe_io_Path.extension(path).toLowerCase();
	this.glyphs = "32-255";
	if(type == null) {
		var extension = haxe_io_Path.extension(path);
		if(extension != null) {
			extension = extension.toLowerCase();
		}
		var _this = lime_tools_helpers_FileHelper.knownExtensions;
		if(__map_reserved[extension] != null ? _this.existsReserved(extension) : _this.h.hasOwnProperty(extension)) {
			var _this1 = lime_tools_helpers_FileHelper.knownExtensions;
			this.type = __map_reserved[extension] != null ? _this1.getReserved(extension) : _this1.h[extension];
		} else {
			switch(extension) {
			case "bundle":
				this.type = lime_project_AssetType.MANIFEST;
				break;
			case "m4a":case "ogg":
				if(sys_FileSystem.exists(path)) {
					var stat = js_node_Fs.statSync(path);
					if(stat.size > 1048576) {
						this.type = lime_project_AssetType.MUSIC;
					} else {
						this.type = lime_project_AssetType.SOUND;
					}
				} else {
					this.type = lime_project_AssetType.SOUND;
				}
				break;
			default:
				if(path != "" && lime_tools_helpers_FileHelper.isText(path)) {
					this.type = lime_project_AssetType.TEXT;
				} else {
					this.type = lime_project_AssetType.BINARY;
				}
			}
		}
	} else {
		this.type = type;
	}
};
$hxClasses["lime.project.Asset"] = lime_project_Asset;
lime_project_Asset.__name__ = ["lime","project","Asset"];
lime_project_Asset.prototype = {
	data: null
	,embed: null
	,encoding: null
	,flatName: null
	,format: null
	,glyphs: null
	,id: null
	,library: null
	,resourceName: null
	,sourcePath: null
	,targetPath: null
	,type: null
	,clone: function() {
		var asset = new lime_project_Asset("","",null,null,false);
		asset.data = this.data;
		asset.embed = this.embed;
		asset.encoding = this.encoding;
		asset.flatName = this.flatName;
		asset.format = this.format;
		asset.glyphs = this.glyphs;
		asset.id = this.id;
		asset.library = this.library;
		asset.resourceName = this.resourceName;
		asset.sourcePath = this.sourcePath;
		asset.targetPath = this.targetPath;
		asset.type = this.type;
		return asset;
	}
	,__class__: lime_project_Asset
};
var lime_project_AssetEncoding = $hxClasses["lime.project.AssetEncoding"] = { __ename__ : ["lime","project","AssetEncoding"], __constructs__ : ["NONE","BASE64"] };
lime_project_AssetEncoding.NONE = ["NONE",0];
lime_project_AssetEncoding.NONE.toString = $estr;
lime_project_AssetEncoding.NONE.__enum__ = lime_project_AssetEncoding;
lime_project_AssetEncoding.BASE64 = ["BASE64",1];
lime_project_AssetEncoding.BASE64.toString = $estr;
lime_project_AssetEncoding.BASE64.__enum__ = lime_project_AssetEncoding;
var lime_project_AssetType = $hxClasses["lime.project.AssetType"] = { __ename__ : ["lime","project","AssetType"], __constructs__ : ["BINARY","FONT","IMAGE","MANIFEST","MOVIE_CLIP","MUSIC","SOUND","TEMPLATE","TEXT"] };
lime_project_AssetType.BINARY = ["BINARY",0];
lime_project_AssetType.BINARY.toString = $estr;
lime_project_AssetType.BINARY.__enum__ = lime_project_AssetType;
lime_project_AssetType.FONT = ["FONT",1];
lime_project_AssetType.FONT.toString = $estr;
lime_project_AssetType.FONT.__enum__ = lime_project_AssetType;
lime_project_AssetType.IMAGE = ["IMAGE",2];
lime_project_AssetType.IMAGE.toString = $estr;
lime_project_AssetType.IMAGE.__enum__ = lime_project_AssetType;
lime_project_AssetType.MANIFEST = ["MANIFEST",3];
lime_project_AssetType.MANIFEST.toString = $estr;
lime_project_AssetType.MANIFEST.__enum__ = lime_project_AssetType;
lime_project_AssetType.MOVIE_CLIP = ["MOVIE_CLIP",4];
lime_project_AssetType.MOVIE_CLIP.toString = $estr;
lime_project_AssetType.MOVIE_CLIP.__enum__ = lime_project_AssetType;
lime_project_AssetType.MUSIC = ["MUSIC",5];
lime_project_AssetType.MUSIC.toString = $estr;
lime_project_AssetType.MUSIC.__enum__ = lime_project_AssetType;
lime_project_AssetType.SOUND = ["SOUND",6];
lime_project_AssetType.SOUND.toString = $estr;
lime_project_AssetType.SOUND.__enum__ = lime_project_AssetType;
lime_project_AssetType.TEMPLATE = ["TEMPLATE",7];
lime_project_AssetType.TEMPLATE.toString = $estr;
lime_project_AssetType.TEMPLATE.__enum__ = lime_project_AssetType;
lime_project_AssetType.TEXT = ["TEXT",8];
lime_project_AssetType.TEXT.toString = $estr;
lime_project_AssetType.TEXT.__enum__ = lime_project_AssetType;
var lime_project_CLICommand = function(command,args) {
	this.command = command;
	this.args = args != null ? args : [];
};
$hxClasses["lime.project.CLICommand"] = lime_project_CLICommand;
lime_project_CLICommand.__name__ = ["lime","project","CLICommand"];
lime_project_CLICommand.prototype = {
	command: null
	,args: null
	,__class__: lime_project_CLICommand
};
var lime_project__$ConfigData_ConfigData_$Impl_$ = {};
$hxClasses["lime.project._ConfigData.ConfigData_Impl_"] = lime_project__$ConfigData_ConfigData_$Impl_$;
lime_project__$ConfigData_ConfigData_$Impl_$.__name__ = ["lime","project","_ConfigData","ConfigData_Impl_"];
lime_project__$ConfigData_ConfigData_$Impl_$._new = function() {
	var this1 = { };
	return this1;
};
lime_project__$ConfigData_ConfigData_$Impl_$.addBucket = function(this1,bucket,parent) {
	if(!Object.prototype.hasOwnProperty.call(parent,bucket)) {
		lime_project__$ConfigData_ConfigData_$Impl_$.log(this1,"config data > adding a bucketType " + bucket);
		parent[bucket] = { };
	}
	return Reflect.field(parent,bucket);
};
lime_project__$ConfigData_ConfigData_$Impl_$.clone = function(this1) {
	return lime_tools_helpers_ObjectHelper.deepCopy(this1);
};
lime_project__$ConfigData_ConfigData_$Impl_$.exists = function(this1,id) {
	var tree = id.split(".");
	if(tree.length <= 1) {
		return Object.prototype.hasOwnProperty.call(this1,id);
	}
	var current = this1;
	var _g = 0;
	while(_g < tree.length) {
		var leaf = tree[_g];
		++_g;
		if(Object.prototype.hasOwnProperty.call(current,leaf)) {
			current = Reflect.field(current,leaf);
		} else {
			return false;
		}
	}
	return true;
};
lime_project__$ConfigData_ConfigData_$Impl_$.get = function(this1,id) {
	var tree = id.split(".");
	if(tree.length <= 1) {
		return Reflect.field(this1,id);
	}
	var current = this1;
	var _g = 0;
	while(_g < tree.length) {
		var leaf = tree[_g];
		++_g;
		current = Reflect.field(current,leaf);
		if(current == null) {
			return null;
		}
	}
	return current;
};
lime_project__$ConfigData_ConfigData_$Impl_$.getArray = function(this1,id,defaultValue) {
	var tree = id.split(".");
	var array = null;
	if(tree.length <= 1) {
		array = Reflect.field(this1,id + "___array");
		if(array == null && Object.prototype.hasOwnProperty.call(this1,id)) {
			array = [Reflect.field(this1,id)];
		}
	} else {
		var current = this1;
		var field = tree.pop();
		var _g = 0;
		while(_g < tree.length) {
			var leaf = tree[_g];
			++_g;
			current = Reflect.field(current,leaf);
			if(current == null) {
				break;
			}
		}
		if(current != null) {
			array = Reflect.field(current,field + "___array");
			if(array == null && Object.prototype.hasOwnProperty.call(current,field)) {
				array = [Reflect.field(current,field)];
			}
		}
	}
	if(array != null) {
		return array;
	}
	if(defaultValue == null) {
		defaultValue = [];
	}
	return defaultValue;
};
lime_project__$ConfigData_ConfigData_$Impl_$.getArrayString = function(this1,id,childField,defaultValue) {
	var array = lime_project__$ConfigData_ConfigData_$Impl_$.getArray(this1,id);
	if(array.length > 0) {
		var value = [];
		if(childField == null) {
			var _g = 0;
			while(_g < array.length) {
				var item = array[_g];
				++_g;
				value.push(Std.string(item));
			}
		} else {
			var _g1 = 0;
			while(_g1 < array.length) {
				var item1 = array[_g1];
				++_g1;
				value.push(Std.string(Reflect.field(item1,childField)));
			}
		}
		return value;
	}
	if(defaultValue == null) {
		defaultValue = [];
	}
	return defaultValue;
};
lime_project__$ConfigData_ConfigData_$Impl_$.getBool = function(this1,id,defaultValue) {
	if(defaultValue == null) {
		defaultValue = true;
	}
	if(lime_project__$ConfigData_ConfigData_$Impl_$.exists(this1,id)) {
		return lime_project__$ConfigData_ConfigData_$Impl_$.get(this1,id) == "true";
	}
	return defaultValue;
};
lime_project__$ConfigData_ConfigData_$Impl_$.getInt = function(this1,id,defaultValue) {
	if(defaultValue == null) {
		defaultValue = 0;
	}
	if(lime_project__$ConfigData_ConfigData_$Impl_$.exists(this1,id)) {
		return Std.parseInt(Std.string(lime_project__$ConfigData_ConfigData_$Impl_$.get(this1,id)));
	}
	return defaultValue;
};
lime_project__$ConfigData_ConfigData_$Impl_$.getFloat = function(this1,id,defaultValue) {
	if(defaultValue == null) {
		defaultValue = 0;
	}
	if(lime_project__$ConfigData_ConfigData_$Impl_$.exists(this1,id)) {
		return parseFloat(Std.string(lime_project__$ConfigData_ConfigData_$Impl_$.get(this1,id)));
	}
	return defaultValue;
};
lime_project__$ConfigData_ConfigData_$Impl_$.getString = function(this1,id,defaultValue) {
	if(defaultValue == null) {
		defaultValue = "";
	}
	if(lime_project__$ConfigData_ConfigData_$Impl_$.exists(this1,id)) {
		return Std.string(lime_project__$ConfigData_ConfigData_$Impl_$.get(this1,id));
	}
	return defaultValue;
};
lime_project__$ConfigData_ConfigData_$Impl_$.log = function(this1,v) {
	var tmp = lime_tools_helpers_LogHelper.verbose;
};
lime_project__$ConfigData_ConfigData_$Impl_$.merge = function(this1,other) {
	if(other != null) {
		lime_project__$ConfigData_ConfigData_$Impl_$.mergeValues(this1,other,this1);
	}
};
lime_project__$ConfigData_ConfigData_$Impl_$.mergeValues = function(this1,source,destination) {
	var _g = 0;
	var _g1 = Reflect.fields(source);
	while(_g < _g1.length) {
		var field = _g1[_g];
		++_g;
		if(StringTools.endsWith(field,"___array")) {
			continue;
		}
		var doCopy = true;
		var exists = Object.prototype.hasOwnProperty.call(destination,field);
		var typeDest = null;
		if(exists) {
			var valueSource = Reflect.field(source,field);
			var valueDest = Reflect.field(destination,field);
			var typeSource = Type["typeof"](valueSource)[0];
			typeDest = Type["typeof"](valueDest)[0];
			if(typeSource != "TObject" && typeDest == "TObject") {
				doCopy = false;
			}
			if(doCopy && Reflect.field(source,field) != Reflect.field(destination,field) && typeSource != "TObject") {
				if(!Object.prototype.hasOwnProperty.call(destination,field + "___array")) {
					destination[field + "___array"] = [lime_tools_helpers_ObjectHelper.deepCopy(Reflect.field(destination,field))];
				}
				var array = Reflect.field(destination,field + "___array");
				if(Object.prototype.hasOwnProperty.call(source,field + "___array")) {
					array = array.concat(Reflect.field(source,field + "___array"));
					destination[field + "___array"] = array;
				} else {
					array.push(Reflect.field(source,field));
				}
				destination[field] = Reflect.field(source,field);
				doCopy = false;
			}
		}
		if(doCopy) {
			if(typeDest == "TObject") {
				lime_project__$ConfigData_ConfigData_$Impl_$.mergeValues(this1,Reflect.field(source,field),Reflect.field(destination,field));
			} else {
				destination[field] = Reflect.field(source,field);
				if(Object.prototype.hasOwnProperty.call(source,field + "___array")) {
					destination[field + "___array"] = Reflect.field(source,field + "___array");
				}
			}
		}
	}
};
lime_project__$ConfigData_ConfigData_$Impl_$.parse = function(this1,elem,substitute) {
	var bucket = this1;
	var bucketType = "";
	if(StringTools.startsWith(elem.get_name(),"config:")) {
		var items = elem.get_name().split(":");
		bucketType = items[1];
	}
	if(elem.has.resolve("type")) {
		bucketType = elem.att.resolve("type");
	}
	if(bucketType != "") {
		bucket = lime_project__$ConfigData_ConfigData_$Impl_$.addBucket(this1,bucketType,this1);
	}
	lime_project__$ConfigData_ConfigData_$Impl_$.parseAttributes(this1,elem,bucket,substitute);
	lime_project__$ConfigData_ConfigData_$Impl_$.parseChildren(this1,elem,bucket,0,substitute);
	lime_project__$ConfigData_ConfigData_$Impl_$.log(this1,"> current config : " + Std.string(this1));
};
lime_project__$ConfigData_ConfigData_$Impl_$.parseAttributes = function(this1,elem,bucket,substitute) {
	var attrName = elem.x.attributes();
	while(attrName.hasNext()) {
		var attrName1 = attrName.next();
		if(attrName1 != "type") {
			var attrValue = elem.x.get(attrName1);
			if(substitute != null) {
				attrValue = substitute(attrValue);
			}
			lime_project__$ConfigData_ConfigData_$Impl_$.setNode(this1,bucket,attrName1,attrValue);
		}
	}
};
lime_project__$ConfigData_ConfigData_$Impl_$.parseChildren = function(this1,elem,bucket,depth,substitute) {
	if(depth == null) {
		depth = 0;
	}
	var child = elem.get_elements();
	while(child.hasNext()) {
		var child1 = child.next();
		if(child1.get_name() != "config") {
			var d = depth + 1;
			var hasChildren = child1.x.elements().hasNext();
			var hasAttributes = child1.x.attributes().hasNext();
			var field = child1.get_name();
			if(Object.prototype.hasOwnProperty.call(bucket,field)) {
				var field1 = child1.get_name() + "___array";
				if(!Object.prototype.hasOwnProperty.call(bucket,field1)) {
					bucket[child1.get_name() + "___array"] = [lime_tools_helpers_ObjectHelper.deepCopy(Reflect.field(bucket,child1.get_name()))];
				}
				var array = Reflect.field(bucket,child1.get_name() + "___array");
				var arrayBucket = { };
				array.push(arrayBucket);
				if(hasAttributes) {
					lime_project__$ConfigData_ConfigData_$Impl_$.parseAttributes(this1,child1,arrayBucket,substitute);
				}
				if(hasChildren) {
					lime_project__$ConfigData_ConfigData_$Impl_$.parseChildren(this1,child1,arrayBucket,d,substitute);
				}
				if(!hasChildren && !hasAttributes) {
					lime_project__$ConfigData_ConfigData_$Impl_$.parseValue(this1,child1,arrayBucket,substitute);
				}
			}
			if(!hasChildren && !hasAttributes) {
				lime_project__$ConfigData_ConfigData_$Impl_$.parseValue(this1,child1,bucket,substitute);
			} else {
				var childBucket = lime_project__$ConfigData_ConfigData_$Impl_$.addBucket(this1,child1.get_name(),bucket);
				if(hasAttributes) {
					lime_project__$ConfigData_ConfigData_$Impl_$.parseAttributes(this1,child1,childBucket,substitute);
				}
				if(hasChildren) {
					lime_project__$ConfigData_ConfigData_$Impl_$.parseChildren(this1,child1,childBucket,d,substitute);
				}
			}
		}
	}
};
lime_project__$ConfigData_ConfigData_$Impl_$.parseValue = function(this1,elem,bucket,substitute) {
	if(elem.get_innerHTML() != "") {
		var value = elem.get_innerHTML();
		if(substitute != null) {
			value = substitute(value);
		}
		lime_project__$ConfigData_ConfigData_$Impl_$.setNode(this1,bucket,elem.get_name(),value);
	}
};
lime_project__$ConfigData_ConfigData_$Impl_$.push = function(this1,id,value) {
	var tree = id.split(".");
	if(tree.length <= 1) {
		if(Object.prototype.hasOwnProperty.call(this1,id)) {
			if(!Object.prototype.hasOwnProperty.call(this1,id + "___array")) {
				this1[id + "___array"] = Object.prototype.hasOwnProperty.call(this1,id) ? [lime_tools_helpers_ObjectHelper.deepCopy(Reflect.field(this1,id))] : [];
			}
			var array = Reflect.field(this1,id + "___array");
			array.push(value);
		}
		this1[id] = value;
		return;
	}
	var current = this1;
	var field = tree.pop();
	var _g = 0;
	while(_g < tree.length) {
		var leaf = tree[_g];
		++_g;
		if(!Object.prototype.hasOwnProperty.call(current,leaf)) {
			current[leaf] = { };
			current = Reflect.field(current,leaf);
		} else {
			current = Reflect.field(current,leaf);
			if(current == null) {
				return;
			}
		}
	}
	if(Object.prototype.hasOwnProperty.call(current,field)) {
		if(!Object.prototype.hasOwnProperty.call(current,field + "___array")) {
			current[field + "___array"] = Object.prototype.hasOwnProperty.call(current,field) ? [lime_tools_helpers_ObjectHelper.deepCopy(Reflect.field(current,field))] : [];
		}
		var array1 = Reflect.field(current,field + "___array");
		array1.push(value);
	}
	current[field] = value;
};
lime_project__$ConfigData_ConfigData_$Impl_$.set = function(this1,id,value) {
	var tree = id.split(".");
	if(tree.length <= 1) {
		this1[id] = value;
		return;
	}
	var current = this1;
	var field = tree.pop();
	var _g = 0;
	while(_g < tree.length) {
		var leaf = tree[_g];
		++_g;
		if(!Object.prototype.hasOwnProperty.call(current,leaf)) {
			current[leaf] = { };
			current = Reflect.field(current,leaf);
		} else {
			current = Reflect.field(current,leaf);
			if(current == null) {
				return;
			}
		}
	}
	current[field] = value;
};
lime_project__$ConfigData_ConfigData_$Impl_$.setNode = function(this1,bucket,node,value) {
	var doCopy = true;
	var exists = Object.prototype.hasOwnProperty.call(bucket,node);
	if(exists) {
		var valueDest = Reflect.field(bucket,node);
		var typeSource = Type["typeof"](value)[0];
		var typeDest = Type["typeof"](valueDest)[0];
		if(typeSource != "TObject" && typeDest == "TObject") {
			doCopy = false;
			lime_project__$ConfigData_ConfigData_$Impl_$.log(this1,node + " not merged by preference over object");
		}
		if(doCopy) {
			if(typeSource != "TObject") {
				if(!Object.prototype.hasOwnProperty.call(bucket,node + "___array")) {
					bucket[node + "___array"] = [lime_tools_helpers_ObjectHelper.deepCopy(Reflect.field(bucket,node))];
				}
				(js_Boot.__cast(Reflect.field(bucket,node + "___array") , Array)).push(value);
			}
			bucket[node] = value;
		}
	} else {
		bucket[node] = value;
	}
};
var lime_project_Dependency = function(name,path) {
	this.name = name;
	this.path = path;
};
$hxClasses["lime.project.Dependency"] = lime_project_Dependency;
lime_project_Dependency.__name__ = ["lime","project","Dependency"];
lime_project_Dependency.prototype = {
	forceLoad: null
	,name: null
	,path: null
	,clone: function() {
		var dependency = new lime_project_Dependency(this.name,this.path);
		dependency.forceLoad = this.forceLoad;
		return dependency;
	}
	,__class__: lime_project_Dependency
};
var lime_project_HXProject = function() {
	lime_project_HXProject.initialize();
	this.command = lime_project_HXProject._command;
	this.config = lime_project__$ConfigData_ConfigData_$Impl_$._new();
	this.debug = lime_project_HXProject._debug;
	this.target = lime_project_HXProject._target;
	this.targetFlags = lime_tools_helpers_StringMapHelper.copy(lime_project_HXProject._targetFlags);
	this.templatePaths = lime_project_HXProject._templatePaths.slice();
	this.defaultMeta = { title : "MyApplication", description : "", packageName : "com.example.myapp", version : "1.0.0", company : "", companyUrl : "", buildNumber : null, companyId : ""};
	this.defaultApp = { main : "Main", file : "MyApplication", path : "bin", preloader : "", swfVersion : 17, url : "", init : null};
	this.defaultWindow = { width : 800, height : 600, parameters : "{}", background : 16777215, fps : 30, hardware : true, display : 0, resizable : true, borderless : false, orientation : lime_project_Orientation.AUTO, vsync : false, fullscreen : false, allowHighDPI : true, alwaysOnTop : false, antialiasing : 0, allowShaders : true, requireShaders : false, depthBuffer : false, stencilBuffer : false, colorDepth : 16, maximized : false, minimized : false, hidden : false};
	this.platformType = lime_project_PlatformType.DESKTOP;
	this.architectures = [];
	var _g = this.target;
	switch(_g) {
	case "air":
		if(this.targetFlags.exists("ios") || this.targetFlags.exists("android")) {
			this.platformType = lime_project_PlatformType.MOBILE;
			this.defaultWindow.width = 0;
			this.defaultWindow.height = 0;
		} else {
			this.platformType = lime_project_PlatformType.DESKTOP;
		}
		this.architectures = [];
		break;
	case "emscripten":
		this.platformType = lime_project_PlatformType.WEB;
		this.architectures = [];
		this.defaultWindow.fps = 60;
		this.defaultWindow.allowHighDPI = false;
		break;
	case "firefox":case "html5":
		this.platformType = lime_project_PlatformType.WEB;
		this.architectures = [];
		this.defaultWindow.width = 0;
		this.defaultWindow.height = 0;
		this.defaultWindow.fps = 60;
		this.defaultWindow.allowHighDPI = false;
		break;
	case "flash":
		this.platformType = lime_project_PlatformType.WEB;
		this.architectures = [];
		break;
	case "linux":case "mac":
		this.platformType = lime_project_PlatformType.DESKTOP;
		this.architectures = [lime_tools_helpers_PlatformHelper.get_hostArchitecture()];
		this.defaultWindow.allowHighDPI = false;
		break;
	case "android":case "blackberry":case "ios":case "tizen":case "tvos":case "webos":
		this.platformType = lime_project_PlatformType.MOBILE;
		if(this.target == "ios") {
			this.architectures = [lime_project_Architecture.ARMV7,lime_project_Architecture.ARM64];
		} else if(this.target == "android") {
			if(this.targetFlags.exists("simulator") || this.targetFlags.exists("emulator")) {
				this.architectures = [lime_project_Architecture.X86];
			} else {
				this.architectures = [lime_project_Architecture.ARMV7];
			}
		} else if(this.target == "tvos") {
			this.architectures = [lime_project_Architecture.ARM64];
		} else {
			this.architectures = [lime_project_Architecture.ARMV6];
		}
		this.defaultWindow.width = 0;
		this.defaultWindow.height = 0;
		this.defaultWindow.fullscreen = true;
		this.defaultWindow.requireShaders = true;
		break;
	case "windows":
		this.platformType = lime_project_PlatformType.DESKTOP;
		if(this.targetFlags.exists("uwp") || this.targetFlags.exists("winjs")) {
			this.architectures = [];
			this.targetFlags.set("uwp","");
			this.targetFlags.set("winjs","");
			this.defaultWindow.width = 0;
			this.defaultWindow.height = 0;
			this.defaultWindow.fps = 60;
		} else {
			this.architectures = [lime_project_Architecture.X86];
		}
		this.defaultWindow.allowHighDPI = false;
		break;
	default:
		this.platformType = lime_project_PlatformType.CONSOLE;
		this.defaultWindow.width = 0;
		this.defaultWindow.height = 0;
		this.defaultWindow.fps = 60;
		this.defaultWindow.fullscreen = true;
	}
	this.defaultArchitectures = this.architectures.slice();
	this.meta = lime_tools_helpers_ObjectHelper.copyFields(this.defaultMeta,{ });
	this.app = lime_tools_helpers_ObjectHelper.copyFields(this.defaultApp,{ });
	this.set_window(lime_tools_helpers_ObjectHelper.copyFields(this.defaultWindow,{ }));
	this.windows = [this.get_window()];
	this.assets = [];
	if(lime_project_HXProject._userDefines != null) {
		this.defines = lime_tools_helpers_StringMapHelper.copy(lime_project_HXProject._userDefines);
	} else {
		this.defines = new haxe_ds_StringMap();
	}
	this.dependencies = [];
	if(lime_project_HXProject._environment != null) {
		this.environment = lime_project_HXProject._environment;
	} else {
		this.environment = Sys.environment();
	}
	this.haxedefs = new haxe_ds_StringMap();
	this.haxeflags = [];
	this.haxelibs = [];
	this.icons = [];
	this.javaPaths = [];
	this.libraries = [];
	this.libraryHandlers = new haxe_ds_StringMap();
	this.modules = new haxe_ds_StringMap();
	this.ndlls = [];
	this.postBuildCallbacks = [];
	this.preBuildCallbacks = [];
	this.sources = [];
	this.samplePaths = [];
	this.splashScreens = [];
	this.targetHandlers = new haxe_ds_StringMap();
};
$hxClasses["lime.project.HXProject"] = lime_project_HXProject;
lime_project_HXProject.__name__ = ["lime","project","HXProject"];
lime_project_HXProject.main = function() {
	var args = process.argv.slice(2);
	if(args.length < 2) {
		return;
	}
	var inputData = haxe_Unserializer.run(js_node_Fs.readFileSync(args[0],{ encoding : "utf8"}));
	var outputFile = args[1];
	lime_project_HXProject._command = inputData.command;
	lime_project_HXProject._target = inputData.target;
	lime_project_HXProject._debug = inputData.debug;
	lime_project_HXProject._targetFlags = inputData.targetFlags;
	lime_project_HXProject._templatePaths = inputData.templatePaths;
	lime_project_HXProject._userDefines = inputData.userDefines;
	lime_project_HXProject._environment = inputData.environment;
	lime_tools_helpers_LogHelper.verbose = inputData.logVerbose;
	lime_tools_helpers_LogHelper.enableColor = inputData.logEnableColor;
	lime_tools_helpers_ProcessHelper.dryRun = inputData.processDryRun;
	lime_tools_helpers_HaxelibHelper.debug = inputData.haxelibDebug;
	lime_project_HXProject.initialize();
	var classRef = Type.resolveClass(inputData.name);
	var instance = Type.createInstance(classRef,[]);
	var serializer = new haxe_Serializer();
	serializer.useCache = true;
	serializer.serialize(instance);
	js_node_Fs.writeFileSync(outputFile,serializer.toString());
};
lime_project_HXProject.fromFile = function(projectFile,userDefines,includePaths) {
	var project = null;
	var relPath = haxe_io_Path.withoutDirectory(projectFile);
	var path;
	try {
		path = js_node_Fs.realpathSync(relPath);
	} catch( e ) {
		haxe_CallStack.lastException = e;
		path = null;
	}
	var name = haxe_io_Path.withoutDirectory(haxe_io_Path.withoutExtension(projectFile));
	name = HxOverrides.substr(name,0,1).toUpperCase() + HxOverrides.substr(name,1,null);
	var tempDirectory = lime_tools_helpers_PathHelper.getTemporaryDirectory();
	var classFile = lime_tools_helpers_PathHelper.combine(tempDirectory,name + ".hx");
	var nekoOutput = lime_tools_helpers_PathHelper.combine(tempDirectory,name + ".n");
	lime_tools_helpers_FileHelper.copyFile(path,classFile);
	var args = [name,"-main","lime.project.HXProject","-cp",tempDirectory,"-neko",nekoOutput,"-cp",lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("lime")),"tools"),"-lib","lime","-D","lime-curl","-D","native","-D","lime-native","-D","lime-cffi"];
	var input = new sys_io_FileInput(js_node_Fs.openSync(classFile,"r"));
	var tag = "@:compiler(";
	try {
		while(true) {
			var line = input.readLine();
			if(StringTools.startsWith(line,tag)) {
				args.push(line.substring(tag.length + 1,line.length - 2));
			}
		}
	} catch( ex ) {
		haxe_CallStack.lastException = ex;
		if (ex instanceof js__$Boot_HaxeError) ex = ex.val;
		if( js_Boot.__instanceof(ex,haxe_io_Eof) ) {
		} else throw(ex);
	}
	input.close();
	var cacheDryRun = lime_tools_helpers_ProcessHelper.dryRun;
	lime_tools_helpers_ProcessHelper.dryRun = false;
	lime_tools_helpers_ProcessHelper.runCommand("","haxe",args);
	var inputFile = lime_tools_helpers_PathHelper.combine(tempDirectory,"input.dat");
	var outputFile = lime_tools_helpers_PathHelper.combine(tempDirectory,"output.dat");
	var inputData = haxe_Serializer.run({ command : lime_project_HXProject._command, name : name, target : lime_project_HXProject._target, debug : lime_project_HXProject._debug, targetFlags : lime_project_HXProject._targetFlags, templatePaths : lime_project_HXProject._templatePaths, userDefines : lime_project_HXProject._userDefines, environment : lime_project_HXProject._environment, logVerbose : lime_tools_helpers_LogHelper.verbose, logEnableColor : lime_tools_helpers_LogHelper.enableColor, processDryRun : cacheDryRun, haxelibDebug : lime_tools_helpers_HaxelibHelper.debug});
	js_node_Fs.writeFileSync(inputFile,inputData);
	try {
		var tmp;
		try {
			tmp = js_node_Fs.realpathSync(nekoOutput);
		} catch( e1 ) {
			haxe_CallStack.lastException = e1;
			tmp = null;
		}
		lime_tools_helpers_ProcessHelper.runCommand("","neko",[tmp,inputFile,outputFile]);
	} catch( e2 ) {
		haxe_CallStack.lastException = e2;
		js_node_Fs.unlinkSync(inputFile);
		process.exit(1);
	}
	lime_tools_helpers_ProcessHelper.dryRun = cacheDryRun;
	var tPaths = [];
	try {
		js_node_Fs.unlinkSync(inputFile);
		var outputPath = lime_tools_helpers_PathHelper.combine(tempDirectory,"output.dat");
		if(sys_FileSystem.exists(outputPath)) {
			var output = js_node_Fs.readFileSync(outputPath,{ encoding : "utf8"});
			var unserializer = new haxe_Unserializer(output);
			unserializer.setResolver({ resolveEnum : Type.resolveEnum, resolveClass : lime_project_HXProject.resolveClass});
			project = unserializer.unserialize();
			tPaths = project.templatePaths;
			project.templatePaths = [];
			js_node_Fs.unlinkSync(outputPath);
		}
	} catch( e3 ) {
		haxe_CallStack.lastException = e3;
	}
	lime_tools_helpers_PathHelper.removeDirectory(tempDirectory);
	if(project != null) {
		var key = project.environment.keys();
		while(key.hasNext()) {
			var key1 = key.next();
			var _this = project.environment;
			var v = __map_reserved[key1] != null ? _this.getReserved(key1) : _this.h[key1];
			process.env[key1] = v;
		}
		var defines = lime_tools_helpers_StringMapHelper.copy(userDefines);
		lime_tools_helpers_StringMapHelper.copyKeys(project.defines,defines);
		lime_project_HXProject.processHaxelibs(project,defines);
		project.templatePaths = lime_tools_helpers_ArrayHelper.concatUnique(project.templatePaths,tPaths,true);
	}
	return project;
};
lime_project_HXProject.fromHaxelib = function(haxelib,userDefines,clearCache) {
	if(clearCache == null) {
		clearCache = false;
	}
	if(haxelib.name == null || haxelib.name == "") {
		return null;
	}
	var path = lime_tools_helpers_PathHelper.getHaxelib(haxelib,false,clearCache);
	if(path == null || path == "") {
		return null;
	}
	return lime_project_HXProject.fromPath(path,userDefines);
};
lime_project_HXProject.fromPath = function(path,userDefines) {
	if(!sys_FileSystem.exists(path) || !sys_FileSystem.isDirectory(path)) {
		return null;
	}
	var files = ["include.lime","include.nmml","include.xml"];
	var projectFile = null;
	var _g = 0;
	while(_g < files.length) {
		var file = files[_g];
		++_g;
		if(projectFile == null && sys_FileSystem.exists(lime_tools_helpers_PathHelper.combine(path,file))) {
			projectFile = lime_tools_helpers_PathHelper.combine(path,file);
		}
	}
	if(projectFile != null) {
		var project = new lime_project_ProjectXMLParser(projectFile,userDefines);
		if(lime_project__$ConfigData_ConfigData_$Impl_$.get(project.config,"project.rebuild.path") == null) {
			lime_project__$ConfigData_ConfigData_$Impl_$.set(project.config,"project.rebuild.path",lime_tools_helpers_PathHelper.combine(path,"project"));
		}
		return project;
	}
	return null;
};
lime_project_HXProject.initialize = function() {
	if(!lime_project_HXProject.initialized) {
		if(lime_project_HXProject._target == null) {
			lime_project_HXProject._target = lime_tools_helpers_PlatformHelper.get_hostPlatform();
		}
		if(lime_project_HXProject._targetFlags == null) {
			lime_project_HXProject._targetFlags = new haxe_ds_StringMap();
		}
		if(lime_project_HXProject._templatePaths == null) {
			lime_project_HXProject._templatePaths = [];
		}
		lime_project_HXProject.initialized = true;
	}
};
lime_project_HXProject.processHaxelibs = function(project,userDefines) {
	var haxelibs = project.haxelibs.slice();
	project.haxelibs = [];
	var _g = 0;
	while(_g < haxelibs.length) {
		var haxelib = haxelibs[_g];
		++_g;
		var validatePath = lime_tools_helpers_PathHelper.getHaxelib(haxelib,true);
		project.haxelibs.push(haxelib);
		var includeProject = lime_project_HXProject.fromHaxelib(haxelib,userDefines);
		if(includeProject != null) {
			var _g1 = 0;
			var _g2 = includeProject.ndlls;
			while(_g1 < _g2.length) {
				var ndll = _g2[_g1];
				++_g1;
				if(ndll.haxelib == null) {
					ndll.haxelib = haxelib;
				}
			}
			project.merge(includeProject);
		}
	}
};
lime_project_HXProject.resolveClass = function(name) {
	var type = Type.resolveClass(name);
	if(type == null) {
		return lime_project_HXProject;
	} else {
		return type;
	}
};
lime_project_HXProject.prototype = {
	app: null
	,architectures: null
	,assets: null
	,command: null
	,config: null
	,debug: null
	,defines: null
	,dependencies: null
	,environment: null
	,haxedefs: null
	,haxeflags: null
	,haxelibs: null
	,host: null
	,icons: null
	,javaPaths: null
	,keystore: null
	,libraries: null
	,libraryHandlers: null
	,meta: null
	,modules: null
	,ndlls: null
	,platformType: null
	,postBuildCallbacks: null
	,preBuildCallbacks: null
	,samplePaths: null
	,sources: null
	,splashScreens: null
	,target: null
	,targetFlags: null
	,targetHandlers: null
	,templateContext: null
	,templatePaths: null
	,window: null
	,windows: null
	,defaultApp: null
	,defaultArchitectures: null
	,defaultMeta: null
	,defaultWindow: null
	,needRerun: null
	,clone: function() {
		var project = new lime_project_HXProject();
		lime_tools_helpers_ObjectHelper.copyFields(this.app,project.app);
		project.architectures = this.architectures.slice();
		project.assets = this.assets.slice();
		var _g1 = 0;
		var _g = this.assets.length;
		while(_g1 < _g) {
			var i = _g1++;
			project.assets[i] = this.assets[i].clone();
		}
		project.command = this.command;
		project.config = lime_project__$ConfigData_ConfigData_$Impl_$.clone(this.config);
		project.debug = this.debug;
		var key = this.defines.keys();
		while(key.hasNext()) {
			var key1 = key.next();
			var _this = this.defines;
			var _this1 = project.defines;
			var value = __map_reserved[key1] != null ? _this.getReserved(key1) : _this.h[key1];
			if(__map_reserved[key1] != null) {
				_this1.setReserved(key1,value);
			} else {
				_this1.h[key1] = value;
			}
		}
		var _g2 = 0;
		var _g11 = this.dependencies;
		while(_g2 < _g11.length) {
			var dependency = _g11[_g2];
			++_g2;
			project.dependencies.push(dependency.clone());
		}
		var key2 = this.environment.keys();
		while(key2.hasNext()) {
			var key3 = key2.next();
			var this1 = project.environment;
			var _this2 = this.environment;
			var value1 = __map_reserved[key3] != null ? _this2.getReserved(key3) : _this2.h[key3];
			var _this3 = this1;
			if(__map_reserved[key3] != null) {
				_this3.setReserved(key3,value1);
			} else {
				_this3.h[key3] = value1;
			}
		}
		var key4 = this.haxedefs.keys();
		while(key4.hasNext()) {
			var key5 = key4.next();
			var _this4 = this.haxedefs;
			var _this5 = project.haxedefs;
			var value2 = __map_reserved[key5] != null ? _this4.getReserved(key5) : _this4.h[key5];
			if(__map_reserved[key5] != null) {
				_this5.setReserved(key5,value2);
			} else {
				_this5.h[key5] = value2;
			}
		}
		project.haxeflags = this.haxeflags.slice();
		var _g3 = 0;
		var _g12 = this.haxelibs;
		while(_g3 < _g12.length) {
			var haxelib = _g12[_g3];
			++_g3;
			project.haxelibs.push(haxelib.clone());
		}
		var _g4 = 0;
		var _g13 = this.icons;
		while(_g4 < _g13.length) {
			var icon = _g13[_g4];
			++_g4;
			project.icons.push(icon.clone());
		}
		project.javaPaths = this.javaPaths.slice();
		if(this.keystore != null) {
			project.keystore = this.keystore.clone();
		}
		var _g5 = 0;
		var _g14 = this.libraries;
		while(_g5 < _g14.length) {
			var library = _g14[_g5];
			++_g5;
			project.libraries.push(library.clone());
		}
		var key6 = this.libraryHandlers.keys();
		while(key6.hasNext()) {
			var key7 = key6.next();
			var this2 = project.libraryHandlers;
			var _this6 = this.libraryHandlers;
			var value3 = __map_reserved[key7] != null ? _this6.getReserved(key7) : _this6.h[key7];
			var _this7 = this2;
			if(__map_reserved[key7] != null) {
				_this7.setReserved(key7,value3);
			} else {
				_this7.h[key7] = value3;
			}
		}
		lime_tools_helpers_ObjectHelper.copyFields(this.meta,project.meta);
		var key8 = this.modules.keys();
		while(key8.hasNext()) {
			var key9 = key8.next();
			var this3 = project.modules;
			var _this8 = this.modules;
			var value4 = (__map_reserved[key9] != null ? _this8.getReserved(key9) : _this8.h[key9]).clone();
			var _this9 = this3;
			if(__map_reserved[key9] != null) {
				_this9.setReserved(key9,value4);
			} else {
				_this9.h[key9] = value4;
			}
		}
		var _g6 = 0;
		var _g15 = this.ndlls;
		while(_g6 < _g15.length) {
			var ndll = _g15[_g6];
			++_g6;
			project.ndlls.push(ndll.clone());
		}
		project.platformType = this.platformType;
		project.postBuildCallbacks = this.postBuildCallbacks.slice();
		project.preBuildCallbacks = this.preBuildCallbacks.slice();
		project.samplePaths = this.samplePaths.slice();
		project.sources = this.sources.slice();
		var _g7 = 0;
		var _g16 = this.splashScreens;
		while(_g7 < _g16.length) {
			var splashScreen = _g16[_g7];
			++_g7;
			project.splashScreens.push(splashScreen.clone());
		}
		project.target = this.target;
		var key10 = this.targetFlags.keys();
		while(key10.hasNext()) {
			var key11 = key10.next();
			var this4 = project.targetFlags;
			var _this10 = this.targetFlags;
			var value5 = __map_reserved[key11] != null ? _this10.getReserved(key11) : _this10.h[key11];
			var _this11 = this4;
			if(__map_reserved[key11] != null) {
				_this11.setReserved(key11,value5);
			} else {
				_this11.h[key11] = value5;
			}
		}
		var key12 = this.targetHandlers.keys();
		while(key12.hasNext()) {
			var key13 = key12.next();
			var this5 = project.targetHandlers;
			var _this12 = this.targetHandlers;
			var value6 = __map_reserved[key13] != null ? _this12.getReserved(key13) : _this12.h[key13];
			var _this13 = this5;
			if(__map_reserved[key13] != null) {
				_this13.setReserved(key13,value6);
			} else {
				_this13.h[key13] = value6;
			}
		}
		project.templatePaths = this.templatePaths.slice();
		var _g17 = 0;
		var _g8 = this.windows.length;
		while(_g17 < _g8) {
			var i1 = _g17++;
			project.windows[i1] = lime_tools_helpers_ObjectHelper.copyFields(this.windows[i1],{ });
		}
		return project;
	}
	,filter: function(text,include,exclude) {
		if(include == null) {
			include = ["*"];
		}
		if(exclude == null) {
			exclude = [];
		}
		var _g = 0;
		while(_g < exclude.length) {
			var filter = exclude[_g];
			++_g;
			if(filter != "") {
				filter = StringTools.replace(filter,".","\\.");
				filter = StringTools.replace(filter,"*",".*");
				var regexp = new EReg("^" + filter + "$","i");
				if(regexp.match(text)) {
					return false;
				}
			}
		}
		var _g1 = 0;
		while(_g1 < include.length) {
			var filter1 = include[_g1];
			++_g1;
			if(filter1 != "") {
				filter1 = StringTools.replace(filter1,".","\\.");
				filter1 = StringTools.replace(filter1,"*",".*");
				var regexp1 = new EReg("^" + filter1,"i");
				if(regexp1.match(text)) {
					return true;
				}
			}
		}
		return false;
	}
	,getHaxelibVersion: function(haxelib) {
		var version = haxelib.version;
		if(version == "" || version == null) {
			var haxelibPath = lime_tools_helpers_PathHelper.getHaxelib(haxelib);
			var jsonPath = lime_tools_helpers_PathHelper.combine(haxelibPath,"haxelib.json");
			try {
				if(sys_FileSystem.exists(jsonPath)) {
					var json = JSON.parse(js_node_Fs.readFileSync(jsonPath,{ encoding : "utf8"}));
					version = json.version;
				}
			} catch( e ) {
				haxe_CallStack.lastException = e;
			}
		}
		return version;
	}
	,include: function(path) {
	}
	,includeAssets: function(path,rename,include,exclude) {
		if(include == null) {
			include = ["*"];
		}
		if(exclude == null) {
			exclude = [];
		}
		exclude = exclude.concat([".*","cvs","thumbs.db","desktop.ini","*.hash"]);
		if(path == "") {
			return;
		}
		var targetPath = "";
		if(rename != null) {
			targetPath = rename;
		} else {
			targetPath = path;
		}
		if(!sys_FileSystem.exists(path)) {
			lime_tools_helpers_LogHelper.error("Could not find asset path \"" + path + "\"");
			return;
		}
		var files = js_node_Fs.readdirSync(path);
		if(targetPath != "") {
			targetPath += "/";
		}
		var _g = 0;
		while(_g < files.length) {
			var file = files[_g];
			++_g;
			if(sys_FileSystem.isDirectory(path + "/" + file)) {
				if(this.filter(file,["*"],exclude)) {
					this.includeAssets(path + "/" + file,targetPath + file,include,exclude);
				}
			} else if(this.filter(file,include,exclude)) {
				this.assets.push(new lime_project_Asset(path + "/" + file,targetPath + file));
			}
		}
	}
	,includeXML: function(xml) {
		var projectXML = new lime_project_ProjectXMLParser();
		projectXML.parseXML(new haxe_xml_Fast(Xml.parse(xml).firstElement()),"");
		this.merge(projectXML);
	}
	,merge: function(project) {
		if(project != null) {
			lime_tools_helpers_ObjectHelper.copyUniqueFields(project.meta,this.meta,project.defaultMeta);
			lime_tools_helpers_ObjectHelper.copyUniqueFields(project.app,this.app,project.defaultApp);
			var _g1 = 0;
			var _g = project.windows.length;
			while(_g1 < _g) {
				var i = _g1++;
				if(i < this.windows.length) {
					lime_tools_helpers_ObjectHelper.copyUniqueFields(project.windows[i],this.windows[i],project.defaultWindow);
				} else {
					this.windows.push(lime_tools_helpers_ObjectHelper.copyFields(project.windows[i],{ }));
				}
			}
			lime_tools_helpers_StringMapHelper.copyUniqueKeys(project.defines,this.defines);
			lime_tools_helpers_StringMapHelper.copyUniqueKeys(project.environment,this.environment);
			lime_tools_helpers_StringMapHelper.copyUniqueKeys(project.haxedefs,this.haxedefs);
			lime_tools_helpers_StringMapHelper.copyUniqueKeys(project.libraryHandlers,this.libraryHandlers);
			lime_tools_helpers_StringMapHelper.copyUniqueKeys(project.targetHandlers,this.targetHandlers);
			lime_project__$ConfigData_ConfigData_$Impl_$.merge(this.config,project.config);
			var _g2 = 0;
			var _g11 = project.architectures;
			while(_g2 < _g11.length) {
				var architecture = _g11[_g2];
				++_g2;
				if(this.defaultArchitectures.indexOf(architecture) == -1) {
					this.architectures.push(architecture);
				}
			}
			if(project.architectures.length > 0) {
				var _g3 = 0;
				var _g12 = this.defaultArchitectures;
				while(_g3 < _g12.length) {
					var architecture1 = _g12[_g3];
					++_g3;
					if(project.architectures.indexOf(architecture1) == -1) {
						HxOverrides.remove(this.architectures,architecture1);
					}
				}
			}
			this.assets = lime_tools_helpers_ArrayHelper.concatUnique(this.assets,project.assets);
			this.dependencies = lime_tools_helpers_ArrayHelper.concatUnique(this.dependencies,project.dependencies,true);
			this.haxeflags = lime_tools_helpers_ArrayHelper.concatUnique(this.haxeflags,project.haxeflags);
			this.haxelibs = lime_tools_helpers_ArrayHelper.concatUnique(this.haxelibs,project.haxelibs,true,"name");
			this.icons = lime_tools_helpers_ArrayHelper.concatUnique(this.icons,project.icons);
			this.javaPaths = lime_tools_helpers_ArrayHelper.concatUnique(this.javaPaths,project.javaPaths,true);
			if(this.keystore == null) {
				this.keystore = project.keystore;
			} else {
				this.keystore.merge(project.keystore);
			}
			this.libraries = lime_tools_helpers_ArrayHelper.concatUnique(this.libraries,project.libraries,true);
			var key = project.modules.keys();
			while(key.hasNext()) {
				var key1 = key.next();
				var _this = this.modules;
				if(__map_reserved[key1] != null ? _this.existsReserved(key1) : _this.h.hasOwnProperty(key1)) {
					var _this1 = this.modules;
					var tmp = __map_reserved[key1] != null ? _this1.getReserved(key1) : _this1.h[key1];
					var _this2 = project.modules;
					tmp.merge(__map_reserved[key1] != null ? _this2.getReserved(key1) : _this2.h[key1]);
				} else {
					var this1 = this.modules;
					var _this3 = project.modules;
					var value = __map_reserved[key1] != null ? _this3.getReserved(key1) : _this3.h[key1];
					var _this4 = this1;
					if(__map_reserved[key1] != null) {
						_this4.setReserved(key1,value);
					} else {
						_this4.h[key1] = value;
					}
				}
			}
			this.ndlls = lime_tools_helpers_ArrayHelper.concatUnique(this.ndlls,project.ndlls);
			this.postBuildCallbacks = this.postBuildCallbacks.concat(project.postBuildCallbacks);
			this.preBuildCallbacks = this.preBuildCallbacks.concat(project.preBuildCallbacks);
			this.samplePaths = lime_tools_helpers_ArrayHelper.concatUnique(this.samplePaths,project.samplePaths,true);
			this.sources = lime_tools_helpers_ArrayHelper.concatUnique(this.sources,project.sources,true);
			this.splashScreens = lime_tools_helpers_ArrayHelper.concatUnique(this.splashScreens,project.splashScreens);
			this.templatePaths = lime_tools_helpers_ArrayHelper.concatUnique(this.templatePaths,project.templatePaths,true);
		}
	}
	,path: function(value) {
		if(this.get_host() == "windows") {
			this.setenv("PATH",value + ";" + process.env["PATH"]);
		} else {
			this.setenv("PATH",value + ":" + process.env["PATH"]);
		}
	}
	,setenv: function(name,value) {
		if(value == null) {
			this.environment.remove(name);
			value = "";
		}
		if(name == "HAXELIB_PATH") {
			var currentPath = lime_tools_helpers_HaxelibHelper.getRepositoryPath();
			process.env[name] = value;
			var newPath = lime_tools_helpers_HaxelibHelper.getRepositoryPath(true);
			if(currentPath != newPath) {
				var valid;
				try {
					if(newPath != null && newPath != "") {
						var valid1;
						try {
							valid1 = js_node_Fs.realpathSync(newPath);
						} catch( e ) {
							haxe_CallStack.lastException = e;
							valid1 = null;
						}
						valid = sys_FileSystem.exists(valid1);
					} else {
						valid = false;
					}
				} catch( e1 ) {
					haxe_CallStack.lastException = e1;
					valid = false;
				}
				if(!valid) {
					lime_tools_helpers_LogHelper.error("The specified haxelib repository path \"" + value + "\" does not exist");
				} else {
					this.needRerun = true;
				}
			}
		} else {
			process.env[name] = value;
		}
		if(value != "") {
			var _this = this.environment;
			if(__map_reserved[name] != null) {
				_this.setReserved(name,value);
			} else {
				_this.h[name] = value;
			}
		}
	}
	,get_host: function() {
		return lime_tools_helpers_PlatformHelper.get_hostPlatform();
	}
	,get_templateContext: function() {
		var context = { };
		if(this.app == null) {
			this.app = { };
		}
		if(this.meta == null) {
			this.meta = { };
		}
		if(this.get_window() == null) {
			this.set_window({ });
			this.windows = [this.get_window()];
		}
		lime_tools_helpers_ObjectHelper.copyMissingFields(this.defaultApp,this.app);
		lime_tools_helpers_ObjectHelper.copyMissingFields(this.defaultMeta,this.meta);
		var _g = 0;
		var _g1 = this.windows;
		while(_g < _g1.length) {
			var item = _g1[_g];
			++_g;
			lime_tools_helpers_ObjectHelper.copyMissingFields(this.defaultWindow,item);
		}
		var _g2 = 0;
		var _g11 = Reflect.fields(this.app);
		while(_g2 < _g11.length) {
			var field = _g11[_g2];
			++_g2;
			context["APP_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(field)] = Reflect.field(this.app,field);
		}
		context.BUILD_DIR = this.app.path;
		var key = this.environment.keys();
		while(key.hasNext()) {
			var key1 = key.next();
			var _this = this.environment;
			context["ENV_" + key1] = __map_reserved[key1] != null ? _this.getReserved(key1) : _this.h[key1];
		}
		context.meta = this.meta;
		var _g3 = 0;
		var _g12 = Reflect.fields(this.meta);
		while(_g3 < _g12.length) {
			var field1 = _g12[_g3];
			++_g3;
			context["APP_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(field1)] = Reflect.field(this.meta,field1);
			context["META_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(field1)] = Reflect.field(this.meta,field1);
		}
		context.APP_PACKAGE = context.META_PACKAGE = this.meta.packageName;
		var _g4 = 0;
		var _g13 = Reflect.fields(this.windows[0]);
		while(_g4 < _g13.length) {
			var field2 = _g13[_g4];
			++_g4;
			context["WIN_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(field2)] = Reflect.field(this.windows[0],field2);
			context["WINDOW_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(field2)] = Reflect.field(this.windows[0],field2);
		}
		if(this.windows[0].orientation == lime_project_Orientation.LANDSCAPE || this.windows[0].orientation == lime_project_Orientation.PORTRAIT) {
			context.WIN_ORIENTATION = Std.string(this.windows[0].orientation).toLowerCase();
			context.WINDOW_ORIENTATION = Std.string(this.windows[0].orientation).toLowerCase();
		} else {
			context.WIN_ORIENTATION = "";
			context.WINDOW_ORIENTATION = "";
		}
		context.windows = this.windows;
		var _g14 = 0;
		var _g5 = this.windows.length;
		while(_g14 < _g5) {
			var i = _g14++;
			var _g21 = 0;
			var _g31 = Reflect.fields(this.windows[i]);
			while(_g21 < _g31.length) {
				var field3 = _g31[_g21];
				++_g21;
				context["WINDOW_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(field3) + "_" + i] = Reflect.field(this.windows[i],field3);
			}
			if(this.windows[i].orientation == lime_project_Orientation.LANDSCAPE || this.windows[i].orientation == lime_project_Orientation.PORTRAIT) {
				context["WINDOW_ORIENTATION_" + i] = Std.string(this.windows[i].orientation).toLowerCase();
			} else {
				context["WINDOW_ORIENTATION_" + i] = "";
			}
			this.windows[i].title = this.meta.title;
		}
		var _g6 = 0;
		var _g15 = this.haxeflags;
		while(_g6 < _g15.length) {
			var haxeflag = _g15[_g6];
			++_g6;
			if(StringTools.startsWith(haxeflag,"-lib")) {
				context["LIB_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(HxOverrides.substr(haxeflag,5,null))] = "true";
			}
		}
		context.assets = [];
		var _g7 = 0;
		var _g16 = this.assets;
		while(_g7 < _g16.length) {
			var asset = _g16[_g7];
			++_g7;
			if(asset.type != lime_project_AssetType.TEMPLATE) {
				var embeddedAsset = { };
				lime_tools_helpers_ObjectHelper.copyFields(asset,embeddedAsset);
				embeddedAsset.sourcePath = lime_tools_helpers_PathHelper.standardize(asset.sourcePath);
				if(asset.embed == null) {
					embeddedAsset.embed = this.platformType == lime_project_PlatformType.WEB || this.target == "air";
				}
				embeddedAsset.type = Std.string(asset.type).toLowerCase();
				if(asset.type == lime_project_AssetType.FONT) {
					try {
						var font = lime_text_Font.fromFile(asset.sourcePath);
						embeddedAsset.fontName = font.name;
						lime_tools_helpers_LogHelper.info(""," - \x1B[1mDetecting font name:\x1B[0m " + asset.sourcePath + " \x1B[3;37m->\x1B[0m \"" + font.name + "\"");
					} catch( e ) {
						haxe_CallStack.lastException = e;
					}
				}
				context.assets.push(embeddedAsset);
			}
		}
		context.libraries = [];
		var embeddedLibraries = new haxe_ds_StringMap();
		var _g8 = 0;
		var _g17 = this.libraries;
		while(_g8 < _g17.length) {
			var library = _g17[_g8];
			++_g8;
			var embeddedLibrary = { };
			lime_tools_helpers_ObjectHelper.copyFields(library,embeddedLibrary);
			context.libraries.push(embeddedLibrary);
			var k = library.name;
			var v = embeddedLibrary;
			var value = v;
			if(__map_reserved[k] != null) {
				embeddedLibraries.setReserved(k,value);
			} else {
				embeddedLibraries.h[k] = value;
			}
		}
		var _g9 = 0;
		var _g18 = this.assets;
		while(_g9 < _g18.length) {
			var asset1 = _g18[_g9];
			++_g9;
			var tmp;
			if(asset1.library != null) {
				var key2 = asset1.library;
				tmp = !(__map_reserved[key2] != null ? embeddedLibraries.existsReserved(key2) : embeddedLibraries.h.hasOwnProperty(key2));
			} else {
				tmp = false;
			}
			if(tmp) {
				var embeddedLibrary1 = { };
				embeddedLibrary1.name = asset1.library;
				context.libraries.push(embeddedLibrary1);
				var k1 = asset1.library;
				var v1 = embeddedLibrary1;
				var value1 = v1;
				if(__map_reserved[k1] != null) {
					embeddedLibraries.setReserved(k1,value1);
				} else {
					embeddedLibraries.h[k1] = value1;
				}
			}
		}
		context.ndlls = [];
		var _g10 = 0;
		var _g19 = this.ndlls;
		while(_g10 < _g19.length) {
			var ndll = _g19[_g10];
			++_g10;
			var templateNDLL = { };
			lime_tools_helpers_ObjectHelper.copyFields(ndll,templateNDLL);
			templateNDLL.nameSafe = StringTools.replace(ndll.name,"-","_");
			context.ndlls.push(templateNDLL);
		}
		context.sslCaCert = "";
		var compilerFlags = [];
		var _g20 = 0;
		var _g110 = this.haxelibs;
		while(_g20 < _g110.length) {
			var haxelib = _g110[_g20];
			++_g20;
			var name = haxelib.name;
			var version = haxelib.version;
			if(version != null && version != "") {
				name += ":" + version;
			}
			var _this1 = lime_tools_helpers_HaxelibHelper.pathOverrides;
			if(__map_reserved[name] != null ? _this1.existsReserved(name) : _this1.h.hasOwnProperty(name)) {
				var _this2 = lime_tools_helpers_HaxelibHelper.pathOverrides;
				var param = "-cp " + (__map_reserved[name] != null ? _this2.getReserved(name) : _this2.h[name]);
				HxOverrides.remove(compilerFlags,param);
				compilerFlags.push(param);
			} else {
				var cache = lime_tools_helpers_LogHelper.verbose;
				lime_tools_helpers_LogHelper.verbose = lime_tools_helpers_HaxelibHelper.debug;
				var output = "";
				try {
					output = lime_tools_helpers_HaxelibHelper.runProcess("",["path",name],true,true,true);
				} catch( e1 ) {
					haxe_CallStack.lastException = e1;
				}
				lime_tools_helpers_LogHelper.verbose = cache;
				var split = output.split("\n");
				var haxelibName = null;
				var _g22 = 0;
				while(_g22 < split.length) {
					var arg = split[_g22];
					++_g22;
					arg = StringTools.trim(arg);
					if(arg != "") {
						if(StringTools.startsWith(arg,"Error: ")) {
							lime_tools_helpers_LogHelper.error(HxOverrides.substr(arg,7,null));
						} else if(!StringTools.startsWith(arg,"-")) {
							var path = lime_tools_helpers_PathHelper.standardize(arg);
							if(path != null && StringTools.trim(path) != "") {
								var param1 = "-cp " + path;
								HxOverrides.remove(compilerFlags,param1);
								compilerFlags.push(param1);
							}
							var version1 = "0.0.0";
							var jsonPath = lime_tools_helpers_PathHelper.combine(path,"haxelib.json");
							try {
								if(sys_FileSystem.exists(jsonPath)) {
									var json = JSON.parse(js_node_Fs.readFileSync(jsonPath,{ encoding : "utf8"}));
									haxelibName = json.name;
									compilerFlags = lime_tools_helpers_ArrayHelper.concatUnique(compilerFlags,["-D " + haxelibName + "=" + json.version],true);
								}
							} catch( e2 ) {
								haxe_CallStack.lastException = e2;
							}
						} else if(StringTools.startsWith(arg,"-D ") && arg.indexOf("=") == -1) {
							var name1 = HxOverrides.substr(arg,3,null);
							if(name1 != haxelibName) {
								compilerFlags = lime_tools_helpers_ArrayHelper.concatUnique(compilerFlags,["-D " + name1],true);
							}
						} else if(!StringTools.startsWith(arg,"-L")) {
							compilerFlags = lime_tools_helpers_ArrayHelper.concatUnique(compilerFlags,[arg],true);
						}
					}
				}
			}
			context["LIB_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(haxelib.name)] = true;
			if(name == "nme") {
				context.EMBED_ASSETS = false;
			}
		}
		var _g23 = 0;
		var _g111 = this.sources;
		while(_g23 < _g111.length) {
			var source = _g111[_g23];
			++_g23;
			if(source != null && StringTools.trim(source) != "") {
				compilerFlags.push("-cp " + source);
			}
		}
		var key3 = this.defines.keys();
		while(key3.hasNext()) {
			var key4 = key3.next();
			var _this3 = this.defines;
			var value2 = __map_reserved[key4] != null ? _this3.getReserved(key4) : _this3.h[key4];
			if(value2 == null || value2 == "") {
				context["SET_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(key4)] = true;
			} else {
				context["SET_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(key4)] = value2;
			}
		}
		var key5 = this.haxedefs.keys();
		while(key5.hasNext()) {
			var key6 = key5.next();
			var _this4 = this.haxedefs;
			var value3 = __map_reserved[key6] != null ? _this4.getReserved(key6) : _this4.h[key6];
			if(value3 == null || value3 == "") {
				compilerFlags.push("-D " + key6);
				context["DEFINE_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(key6)] = true;
			} else {
				compilerFlags.push("-D " + key6 + "=" + Std.string(value3));
				context["DEFINE_" + lime_tools_helpers_StringHelper.formatUppercaseVariable(key6)] = value3;
			}
		}
		if(this.target != "flash") {
			compilerFlags.push("-D " + Std.string(this.target).toLowerCase());
		}
		compilerFlags.push("-D " + Std.string(this.platformType).toLowerCase());
		compilerFlags = compilerFlags.concat(this.haxeflags);
		if(compilerFlags.length == 0) {
			context.HAXE_FLAGS = "";
		} else {
			context.HAXE_FLAGS = "\n" + compilerFlags.join("\n");
		}
		var main = this.app.main;
		if(main == null) {
			main = this.defaultApp.main;
		}
		var indexOfPeriod = main.lastIndexOf(".");
		context.APP_MAIN_PACKAGE = HxOverrides.substr(main,0,indexOfPeriod + 1);
		context.APP_MAIN_CLASS = HxOverrides.substr(main,indexOfPeriod + 1,null);
		var type = "release";
		if(this.debug) {
			type = "debug";
		} else {
			var _this5 = this.targetFlags;
			if(__map_reserved["final"] != null ? _this5.existsReserved("final") : _this5.h.hasOwnProperty("final")) {
				type = "final";
			}
		}
		var hxml = Std.string(this.target).toLowerCase() + "/hxml/" + type + ".hxml";
		var _g24 = 0;
		var _g112 = this.templatePaths;
		while(_g24 < _g112.length) {
			var templatePath = _g112[_g24];
			++_g24;
			var path1 = lime_tools_helpers_PathHelper.combine(templatePath,hxml);
			if(sys_FileSystem.exists(path1)) {
				context.HXML_PATH = path1;
			}
		}
		context.RELEASE = type == "release";
		context.DEBUG = this.debug;
		context.FINAL = type == "final";
		context.SWF_VERSION = this.app.swfVersion;
		context.PRELOADER_NAME = this.app.preloader;
		if(this.keystore != null) {
			context.KEY_STORE = lime_tools_helpers_PathHelper.tryFullPath(this.keystore.path);
			if(this.keystore.password != null) {
				context.KEY_STORE_PASSWORD = this.keystore.password;
			}
			if(this.keystore.alias != null) {
				context.KEY_STORE_ALIAS = this.keystore.alias;
			} else if(this.keystore.path != null) {
				context.KEY_STORE_ALIAS = haxe_io_Path.withoutExtension(haxe_io_Path.withoutDirectory(this.keystore.path));
			}
			if(this.keystore.aliasPassword != null) {
				context.KEY_STORE_ALIAS_PASSWORD = this.keystore.aliasPassword;
			} else if(this.keystore.password != null) {
				context.KEY_STORE_ALIAS_PASSWORD = this.keystore.password;
			}
		}
		context.config = this.config;
		return context;
	}
	,get_window: function() {
		if(this.windows != null) {
			return this.windows[0];
		} else {
			return this.window;
		}
	}
	,set_window: function(value) {
		if(this.windows != null) {
			return this.windows[0] = this.window = value;
		} else {
			return this.window = value;
		}
	}
	,__class__: lime_project_HXProject
	,__properties__: {set_window:"set_window",get_window:"get_window",get_templateContext:"get_templateContext",get_host:"get_host"}
};
var lime_project_Haxelib = function(name,version) {
	if(version == null) {
		version = "";
	}
	this.name = name;
	this.version = version;
};
$hxClasses["lime.project.Haxelib"] = lime_project_Haxelib;
lime_project_Haxelib.__name__ = ["lime","project","Haxelib"];
lime_project_Haxelib.prototype = {
	name: null
	,version: null
	,clone: function() {
		var haxelib = new lime_project_Haxelib(this.name,this.version);
		return haxelib;
	}
	,versionMatches: function(other) {
		if(this.version == "" || this.version == null) {
			return true;
		}
		if(other == "" || other == null) {
			return false;
		}
		var filter = this.version;
		filter = StringTools.replace(filter,".","\\.");
		filter = StringTools.replace(filter,"*",".*");
		var regexp = new EReg("^" + filter,"i");
		return regexp.match(other);
	}
	,__class__: lime_project_Haxelib
};
var lime_project_Icon = function(path,size) {
	if(size == null) {
		size = 0;
	}
	this.path = path;
	this.size = this.height = this.width = size;
};
$hxClasses["lime.project.Icon"] = lime_project_Icon;
lime_project_Icon.__name__ = ["lime","project","Icon"];
lime_project_Icon.prototype = {
	height: null
	,path: null
	,size: null
	,width: null
	,clone: function() {
		var icon = new lime_project_Icon(this.path);
		icon.size = this.size;
		icon.width = this.width;
		icon.height = this.height;
		return icon;
	}
	,__class__: lime_project_Icon
};
var lime_project_Keystore = function(path,password,alias,aliasPassword) {
	this.path = path;
	this.password = password;
	this.alias = alias;
	this.aliasPassword = aliasPassword;
};
$hxClasses["lime.project.Keystore"] = lime_project_Keystore;
lime_project_Keystore.__name__ = ["lime","project","Keystore"];
lime_project_Keystore.prototype = {
	alias: null
	,aliasPassword: null
	,password: null
	,path: null
	,type: null
	,clone: function() {
		return new lime_project_Keystore(this.path,this.password,this.alias,this.aliasPassword);
	}
	,merge: function(keystore) {
		if(keystore != null) {
			if(keystore.path != null && keystore.path != "") {
				this.path = keystore.path;
			}
			if(keystore.password != null) {
				this.path = keystore.password;
			}
			if(keystore.alias != null) {
				this.path = keystore.alias;
			}
			if(keystore.aliasPassword != null) {
				this.path = keystore.aliasPassword;
			}
		}
	}
	,__class__: lime_project_Keystore
};
var lime_project_Library = function(sourcePath,name,type,embed,preload,generate,prefix) {
	if(prefix == null) {
		prefix = "";
	}
	if(generate == null) {
		generate = false;
	}
	if(preload == null) {
		preload = false;
	}
	if(name == null) {
		name = "";
	}
	this.sourcePath = sourcePath;
	if(name == "") {
		this.name = haxe_io_Path.withoutDirectory(haxe_io_Path.withoutExtension(sourcePath));
	} else {
		this.name = name;
	}
	this.type = type;
	this.embed = embed;
	this.preload = preload;
	this.generate = generate;
	this.prefix = prefix;
};
$hxClasses["lime.project.Library"] = lime_project_Library;
lime_project_Library.__name__ = ["lime","project","Library"];
lime_project_Library.prototype = {
	embed: null
	,generate: null
	,name: null
	,prefix: null
	,preload: null
	,sourcePath: null
	,type: null
	,clone: function() {
		return new lime_project_Library(this.sourcePath,this.name,this.type,this.embed,this.preload,this.generate,this.prefix);
	}
	,__class__: lime_project_Library
};
var lime_project_ModuleData = function(name) {
	this.name = name;
	this.classNames = [];
	this.excludeTypes = [];
	this.haxeflags = [];
	this.includeTypes = [];
};
$hxClasses["lime.project.ModuleData"] = lime_project_ModuleData;
lime_project_ModuleData.__name__ = ["lime","project","ModuleData"];
lime_project_ModuleData.prototype = {
	classNames: null
	,excludeTypes: null
	,haxeflags: null
	,includeTypes: null
	,name: null
	,clone: function() {
		var copy = new lime_project_ModuleData(this.name);
		copy.classNames = this.classNames.slice();
		copy.excludeTypes = this.excludeTypes.slice();
		copy.haxeflags = this.haxeflags.slice();
		copy.includeTypes = this.includeTypes.slice();
		return copy;
	}
	,merge: function(other) {
		if(other.name == this.name) {
			this.classNames = lime_tools_helpers_ArrayHelper.concatUnique(this.classNames,other.classNames);
			this.excludeTypes = lime_tools_helpers_ArrayHelper.concatUnique(this.excludeTypes,other.excludeTypes);
			this.haxeflags = lime_tools_helpers_ArrayHelper.concatUnique(this.haxeflags,other.haxeflags);
			this.includeTypes = lime_tools_helpers_ArrayHelper.concatUnique(this.includeTypes,other.includeTypes);
			return true;
		}
		return false;
	}
	,__class__: lime_project_ModuleData
};
var lime_project_NDLL = function(name,haxelib,type,registerStatics) {
	if(registerStatics == null) {
		registerStatics = true;
	}
	this.name = name;
	this.haxelib = haxelib;
	this.type = type == null ? lime_project_NDLLType.AUTO : type;
	this.registerStatics = registerStatics;
};
$hxClasses["lime.project.NDLL"] = lime_project_NDLL;
lime_project_NDLL.__name__ = ["lime","project","NDLL"];
lime_project_NDLL.prototype = {
	extensionPath: null
	,haxelib: null
	,name: null
	,path: null
	,registerStatics: null
	,subdirectory: null
	,type: null
	,clone: function() {
		var ndll = new lime_project_NDLL(this.name,this.haxelib,this.type,this.registerStatics);
		ndll.path = this.path;
		ndll.extensionPath = this.extensionPath;
		ndll.subdirectory = this.subdirectory;
		return ndll;
	}
	,__class__: lime_project_NDLL
};
var lime_project_NDLLType = $hxClasses["lime.project.NDLLType"] = { __ename__ : ["lime","project","NDLLType"], __constructs__ : ["AUTO","DYNAMIC","STATIC"] };
lime_project_NDLLType.AUTO = ["AUTO",0];
lime_project_NDLLType.AUTO.toString = $estr;
lime_project_NDLLType.AUTO.__enum__ = lime_project_NDLLType;
lime_project_NDLLType.DYNAMIC = ["DYNAMIC",1];
lime_project_NDLLType.DYNAMIC.toString = $estr;
lime_project_NDLLType.DYNAMIC.__enum__ = lime_project_NDLLType;
lime_project_NDLLType.STATIC = ["STATIC",2];
lime_project_NDLLType.STATIC.toString = $estr;
lime_project_NDLLType.STATIC.__enum__ = lime_project_NDLLType;
var lime_project_Orientation = $hxClasses["lime.project.Orientation"] = { __ename__ : ["lime","project","Orientation"], __constructs__ : ["PORTRAIT","LANDSCAPE","ALL","AUTO"] };
lime_project_Orientation.PORTRAIT = ["PORTRAIT",0];
lime_project_Orientation.PORTRAIT.toString = $estr;
lime_project_Orientation.PORTRAIT.__enum__ = lime_project_Orientation;
lime_project_Orientation.LANDSCAPE = ["LANDSCAPE",1];
lime_project_Orientation.LANDSCAPE.toString = $estr;
lime_project_Orientation.LANDSCAPE.__enum__ = lime_project_Orientation;
lime_project_Orientation.ALL = ["ALL",2];
lime_project_Orientation.ALL.toString = $estr;
lime_project_Orientation.ALL.__enum__ = lime_project_Orientation;
lime_project_Orientation.AUTO = ["AUTO",3];
lime_project_Orientation.AUTO.toString = $estr;
lime_project_Orientation.AUTO.__enum__ = lime_project_Orientation;
var lime_project_PlatformType = $hxClasses["lime.project.PlatformType"] = { __ename__ : ["lime","project","PlatformType"], __constructs__ : ["DESKTOP","MOBILE","WEB","CONSOLE"] };
lime_project_PlatformType.DESKTOP = ["DESKTOP",0];
lime_project_PlatformType.DESKTOP.toString = $estr;
lime_project_PlatformType.DESKTOP.__enum__ = lime_project_PlatformType;
lime_project_PlatformType.MOBILE = ["MOBILE",1];
lime_project_PlatformType.MOBILE.toString = $estr;
lime_project_PlatformType.MOBILE.__enum__ = lime_project_PlatformType;
lime_project_PlatformType.WEB = ["WEB",2];
lime_project_PlatformType.WEB.toString = $estr;
lime_project_PlatformType.WEB.__enum__ = lime_project_PlatformType;
lime_project_PlatformType.CONSOLE = ["CONSOLE",3];
lime_project_PlatformType.CONSOLE.toString = $estr;
lime_project_PlatformType.CONSOLE.__enum__ = lime_project_PlatformType;
var lime_project_ProjectXMLParser = function(path,defines,includePaths,useExtensionPath) {
	if(useExtensionPath == null) {
		useExtensionPath = false;
	}
	if(path == null) {
		path = "";
	}
	lime_project_HXProject.call(this);
	if(defines != null) {
		this.defines = lime_tools_helpers_StringMapHelper.copy(defines);
	}
	if(includePaths != null) {
		this.includePaths = includePaths;
	} else {
		this.includePaths = [];
	}
	this.initialize();
	if(path != "") {
		this.process(path,useExtensionPath);
	}
};
$hxClasses["lime.project.ProjectXMLParser"] = lime_project_ProjectXMLParser;
lime_project_ProjectXMLParser.__name__ = ["lime","project","ProjectXMLParser"];
lime_project_ProjectXMLParser.fromFile = function(path,defines,includePaths,useExtensionPath) {
	if(useExtensionPath == null) {
		useExtensionPath = false;
	}
	if(path == null) {
		return null;
	}
	if(sys_FileSystem.exists(path)) {
		return new lime_project_ProjectXMLParser(path,defines,includePaths,useExtensionPath);
	}
	return null;
};
lime_project_ProjectXMLParser.__super__ = lime_project_HXProject;
lime_project_ProjectXMLParser.prototype = $extend(lime_project_HXProject.prototype,{
	includePaths: null
	,initialize: function() {
		var _g = this.platformType;
		switch(_g[1]) {
		case 0:
			this.defines.set("platformType","desktop");
			this.defines.set("desktop","1");
			break;
		case 1:
			this.defines.set("platformType","mobile");
			this.defines.set("mobile","1");
			break;
		case 2:
			this.defines.set("platformType","web");
			this.defines.set("web","1");
			break;
		case 3:
			this.defines.set("platformType","console");
			this.defines.set("console","1");
			break;
		}
		var _this = this.targetFlags;
		if(__map_reserved["neko"] != null ? _this.existsReserved("neko") : _this.h.hasOwnProperty("neko")) {
			var _this1 = this.defines;
			if(__map_reserved["targetType"] != null) {
				_this1.setReserved("targetType","neko");
			} else {
				_this1.h["targetType"] = "neko";
			}
			var _this2 = this.defines;
			if(__map_reserved["native"] != null) {
				_this2.setReserved("native","1");
			} else {
				_this2.h["native"] = "1";
			}
			var _this3 = this.defines;
			if(__map_reserved["neko"] != null) {
				_this3.setReserved("neko","1");
			} else {
				_this3.h["neko"] = "1";
			}
		} else {
			var _this4 = this.targetFlags;
			if(__map_reserved["java"] != null ? _this4.existsReserved("java") : _this4.h.hasOwnProperty("java")) {
				var _this5 = this.defines;
				if(__map_reserved["targetType"] != null) {
					_this5.setReserved("targetType","java");
				} else {
					_this5.h["targetType"] = "java";
				}
				var _this6 = this.defines;
				if(__map_reserved["native"] != null) {
					_this6.setReserved("native","1");
				} else {
					_this6.h["native"] = "1";
				}
				var _this7 = this.defines;
				if(__map_reserved["java"] != null) {
					_this7.setReserved("java","1");
				} else {
					_this7.h["java"] = "1";
				}
			} else {
				var _this8 = this.targetFlags;
				if(__map_reserved["nodejs"] != null ? _this8.existsReserved("nodejs") : _this8.h.hasOwnProperty("nodejs")) {
					var _this9 = this.defines;
					if(__map_reserved["targetType"] != null) {
						_this9.setReserved("targetType","nodejs");
					} else {
						_this9.h["targetType"] = "nodejs";
					}
					var _this10 = this.defines;
					if(__map_reserved["native"] != null) {
						_this10.setReserved("native","1");
					} else {
						_this10.h["native"] = "1";
					}
					var _this11 = this.defines;
					if(__map_reserved["nodejs"] != null) {
						_this11.setReserved("nodejs","1");
					} else {
						_this11.h["nodejs"] = "1";
					}
				} else {
					var _this12 = this.targetFlags;
					if(__map_reserved["cs"] != null ? _this12.existsReserved("cs") : _this12.h.hasOwnProperty("cs")) {
						var _this13 = this.defines;
						if(__map_reserved["targetType"] != null) {
							_this13.setReserved("targetType","cs");
						} else {
							_this13.h["targetType"] = "cs";
						}
						var _this14 = this.defines;
						if(__map_reserved["native"] != null) {
							_this14.setReserved("native","1");
						} else {
							_this14.h["native"] = "1";
						}
						var _this15 = this.defines;
						if(__map_reserved["cs"] != null) {
							_this15.setReserved("cs","1");
						} else {
							_this15.h["cs"] = "1";
						}
					} else if(this.target == "firefox") {
						var _this16 = this.defines;
						if(__map_reserved["targetType"] != null) {
							_this16.setReserved("targetType","js");
						} else {
							_this16.h["targetType"] = "js";
						}
						var _this17 = this.defines;
						if(__map_reserved["html5"] != null) {
							_this17.setReserved("html5","1");
						} else {
							_this17.h["html5"] = "1";
						}
					} else if(this.target == "air") {
						var _this18 = this.defines;
						if(__map_reserved["targetType"] != null) {
							_this18.setReserved("targetType","swf");
						} else {
							_this18.h["targetType"] = "swf";
						}
						var _this19 = this.defines;
						if(__map_reserved["flash"] != null) {
							_this19.setReserved("flash","1");
						} else {
							_this19.h["flash"] = "1";
						}
						var _this20 = this.targetFlags;
						if(__map_reserved["ios"] != null ? _this20.existsReserved("ios") : _this20.h.hasOwnProperty("ios")) {
							var _this21 = this.defines;
							if(__map_reserved["ios"] != null) {
								_this21.setReserved("ios","1");
							} else {
								_this21.h["ios"] = "1";
							}
						}
						var _this22 = this.targetFlags;
						if(__map_reserved["android"] != null ? _this22.existsReserved("android") : _this22.h.hasOwnProperty("android")) {
							var _this23 = this.defines;
							if(__map_reserved["android"] != null) {
								_this23.setReserved("android","1");
							} else {
								_this23.h["android"] = "1";
							}
						}
					} else {
						var tmp;
						if(this.target == "windows") {
							var _this24 = this.targetFlags;
							if(!(__map_reserved["uwp"] != null ? _this24.existsReserved("uwp") : _this24.h.hasOwnProperty("uwp"))) {
								var _this25 = this.targetFlags;
								if(__map_reserved["winjs"] != null) {
									tmp = _this25.existsReserved("winjs");
								} else {
									tmp = _this25.h.hasOwnProperty("winjs");
								}
							} else {
								tmp = true;
							}
						} else {
							tmp = false;
						}
						if(tmp) {
							var _this26 = this.targetFlags;
							if(__map_reserved["uwp"] != null) {
								_this26.setReserved("uwp","");
							} else {
								_this26.h["uwp"] = "";
							}
							var _this27 = this.targetFlags;
							if(__map_reserved["winjs"] != null) {
								_this27.setReserved("winjs","");
							} else {
								_this27.h["winjs"] = "";
							}
							var _this28 = this.defines;
							if(__map_reserved["targetType"] != null) {
								_this28.setReserved("targetType","js");
							} else {
								_this28.h["targetType"] = "js";
							}
							var _this29 = this.defines;
							if(__map_reserved["html5"] != null) {
								_this29.setReserved("html5","1");
							} else {
								_this29.h["html5"] = "1";
							}
							var _this30 = this.defines;
							if(__map_reserved["uwp"] != null) {
								_this30.setReserved("uwp","1");
							} else {
								_this30.h["uwp"] = "1";
							}
							var _this31 = this.defines;
							if(__map_reserved["winjs"] != null) {
								_this31.setReserved("winjs","1");
							} else {
								_this31.h["winjs"] = "1";
							}
						} else if(this.platformType == lime_project_PlatformType.DESKTOP && this.target != lime_tools_helpers_PlatformHelper.get_hostPlatform()) {
							var _this32 = this.defines;
							if(__map_reserved["native"] != null) {
								_this32.setReserved("native","1");
							} else {
								_this32.h["native"] = "1";
							}
							if(this.target == "windows") {
								var _this33 = this.defines;
								if(__map_reserved["targetType"] != null) {
									_this33.setReserved("targetType","cpp");
								} else {
									_this33.h["targetType"] = "cpp";
								}
								var _this34 = this.defines;
								if(__map_reserved["cpp"] != null) {
									_this34.setReserved("cpp","1");
								} else {
									_this34.h["cpp"] = "1";
								}
								var _this35 = this.defines;
								if(__map_reserved["mingw"] != null) {
									_this35.setReserved("mingw","1");
								} else {
									_this35.h["mingw"] = "1";
								}
							} else {
								var _this36 = this.defines;
								if(__map_reserved["targetType"] != null) {
									_this36.setReserved("targetType","neko");
								} else {
									_this36.h["targetType"] = "neko";
								}
								var _this37 = this.defines;
								if(__map_reserved["neko"] != null) {
									_this37.setReserved("neko","1");
								} else {
									_this37.h["neko"] = "1";
								}
							}
						} else {
							var tmp1;
							var tmp2;
							var _this38 = this.targetFlags;
							if(!(__map_reserved["cpp"] != null ? _this38.existsReserved("cpp") : _this38.h.hasOwnProperty("cpp"))) {
								if(this.platformType != lime_project_PlatformType.WEB) {
									var _this39 = this.targetFlags;
									tmp2 = !(__map_reserved["html5"] != null ? _this39.existsReserved("html5") : _this39.h.hasOwnProperty("html5"));
								} else {
									tmp2 = false;
								}
							} else {
								tmp2 = true;
							}
							if(!tmp2) {
								tmp1 = this.target == "emscripten";
							} else {
								tmp1 = true;
							}
							if(tmp1) {
								var _this40 = this.defines;
								if(__map_reserved["targetType"] != null) {
									_this40.setReserved("targetType","cpp");
								} else {
									_this40.h["targetType"] = "cpp";
								}
								var _this41 = this.defines;
								if(__map_reserved["native"] != null) {
									_this41.setReserved("native","1");
								} else {
									_this41.h["native"] = "1";
								}
								var _this42 = this.defines;
								if(__map_reserved["cpp"] != null) {
									_this42.setReserved("cpp","1");
								} else {
									_this42.h["cpp"] = "1";
								}
							} else if(this.target == "flash") {
								var _this43 = this.defines;
								if(__map_reserved["targetType"] != null) {
									_this43.setReserved("targetType","swf");
								} else {
									_this43.h["targetType"] = "swf";
								}
							}
						}
					}
				}
			}
		}
		if(this.debug) {
			var _this44 = this.defines;
			if(__map_reserved["buildType"] != null) {
				_this44.setReserved("buildType","debug");
			} else {
				_this44.h["buildType"] = "debug";
			}
			var _this45 = this.defines;
			if(__map_reserved["debug"] != null) {
				_this45.setReserved("debug","1");
			} else {
				_this45.h["debug"] = "1";
			}
		} else {
			var _this46 = this.targetFlags;
			if(__map_reserved["final"] != null ? _this46.existsReserved("final") : _this46.h.hasOwnProperty("final")) {
				var _this47 = this.defines;
				if(__map_reserved["buildType"] != null) {
					_this47.setReserved("buildType","final");
				} else {
					_this47.h["buildType"] = "final";
				}
				var _this48 = this.defines;
				if(__map_reserved["final"] != null) {
					_this48.setReserved("final","1");
				} else {
					_this48.h["final"] = "1";
				}
			} else {
				var _this49 = this.defines;
				if(__map_reserved["buildType"] != null) {
					_this49.setReserved("buildType","release");
				} else {
					_this49.h["buildType"] = "release";
				}
				var _this50 = this.defines;
				if(__map_reserved["release"] != null) {
					_this50.setReserved("release","1");
				} else {
					_this50.h["release"] = "1";
				}
			}
		}
		var _this51 = this.targetFlags;
		if(__map_reserved["static"] != null ? _this51.existsReserved("static") : _this51.h.hasOwnProperty("static")) {
			var _this52 = this.defines;
			if(__map_reserved["static_link"] != null) {
				_this52.setReserved("static_link","1");
			} else {
				_this52.h["static_link"] = "1";
			}
		}
		var _this53 = this.defines;
		if(__map_reserved["SWF_PLAYER"] != null ? _this53.existsReserved("SWF_PLAYER") : _this53.h.hasOwnProperty("SWF_PLAYER")) {
			var this1 = this.environment;
			var _this54 = this.defines;
			var value = __map_reserved["SWF_PLAYER"] != null ? _this54.getReserved("SWF_PLAYER") : _this54.h["SWF_PLAYER"];
			var _this55 = this1;
			if(__map_reserved["SWF_PLAYER"] != null) {
				_this55.setReserved("SWF_PLAYER",value);
			} else {
				_this55.h["SWF_PLAYER"] = value;
			}
		}
		var this2 = this.defines;
		var key = Std.string(this.target).toLowerCase();
		var _this56 = this2;
		if(__map_reserved[key] != null) {
			_this56.setReserved(key,"1");
		} else {
			_this56.h[key] = "1";
		}
		var _this57 = this.defines;
		var value1 = Std.string(this.target).toLowerCase();
		if(__map_reserved["target"] != null) {
			_this57.setReserved("target",value1);
		} else {
			_this57.h["target"] = value1;
		}
		var _this58 = this.defines;
		var _this59 = this.defines;
		var value2 = __map_reserved["target"] != null ? _this58.getReserved("target") : _this58.h["target"];
		if(__map_reserved["platform"] != null) {
			_this59.setReserved("platform",value2);
		} else {
			_this59.h["platform"] = value2;
		}
		var _g1 = lime_tools_helpers_PlatformHelper.get_hostPlatform();
		switch(_g1) {
		case "linux":
			this.defines.set("host","linux");
			break;
		case "mac":
			this.defines.set("host","mac");
			break;
		case "windows":
			this.defines.set("host","windows");
			break;
		default:
			this.defines.set("host","unknown");
		}
	}
	,isValidElement: function(element,section) {
		if(element.x.get("if") != null) {
			var value = element.x.get("if");
			var optionalDefines = value.split("||");
			var matchOptional = false;
			var _g = 0;
			while(_g < optionalDefines.length) {
				var optional = optionalDefines[_g];
				++_g;
				optional = this.substitute(optional);
				var requiredDefines = optional.split(" ");
				var matchRequired = true;
				var _g1 = 0;
				while(_g1 < requiredDefines.length) {
					var required = requiredDefines[_g1];
					++_g1;
					required = this.substitute(required);
					var check = StringTools.trim(required);
					if(check == "false") {
						matchRequired = false;
					} else {
						var tmp;
						var tmp1;
						var tmp2;
						if(check != "" && check != "true") {
							var _this = this.defines;
							tmp2 = !(__map_reserved[check] != null ? _this.existsReserved(check) : _this.h.hasOwnProperty(check));
						} else {
							tmp2 = false;
						}
						if(tmp2) {
							if(this.environment != null) {
								var _this1 = this.environment;
								tmp1 = !(__map_reserved[check] != null ? _this1.existsReserved(check) : _this1.h.hasOwnProperty(check));
							} else {
								tmp1 = true;
							}
						} else {
							tmp1 = false;
						}
						if(tmp1) {
							tmp = check != this.command;
						} else {
							tmp = false;
						}
						if(tmp) {
							matchRequired = false;
						}
					}
				}
				if(matchRequired) {
					matchOptional = true;
				}
			}
			if(optionalDefines.length > 0 && !matchOptional) {
				return false;
			}
		}
		if(element.has.resolve("unless")) {
			var value1 = this.substitute(element.att.resolve("unless"));
			var optionalDefines1 = value1.split("||");
			var matchOptional1 = false;
			var _g2 = 0;
			while(_g2 < optionalDefines1.length) {
				var optional1 = optionalDefines1[_g2];
				++_g2;
				optional1 = this.substitute(optional1);
				var requiredDefines1 = optional1.split(" ");
				var matchRequired1 = true;
				var _g11 = 0;
				while(_g11 < requiredDefines1.length) {
					var required1 = requiredDefines1[_g11];
					++_g11;
					required1 = this.substitute(required1);
					var check1 = StringTools.trim(required1);
					if(check1 == "false") {
						matchRequired1 = false;
					} else {
						var tmp3;
						var tmp4;
						var tmp5;
						if(check1 != "" && check1 != "true") {
							var _this2 = this.defines;
							tmp5 = !(__map_reserved[check1] != null ? _this2.existsReserved(check1) : _this2.h.hasOwnProperty(check1));
						} else {
							tmp5 = false;
						}
						if(tmp5) {
							if(this.environment != null) {
								var _this3 = this.environment;
								tmp4 = !(__map_reserved[check1] != null ? _this3.existsReserved(check1) : _this3.h.hasOwnProperty(check1));
							} else {
								tmp4 = true;
							}
						} else {
							tmp4 = false;
						}
						if(tmp4) {
							tmp3 = check1 != this.command;
						} else {
							tmp3 = false;
						}
						if(tmp3) {
							matchRequired1 = false;
						}
					}
				}
				if(matchRequired1) {
					matchOptional1 = true;
				}
			}
			if(optionalDefines1.length > 0 && matchOptional1) {
				return false;
			}
		}
		if(section != "") {
			if(element.get_name() != "section") {
				return false;
			}
			if(!element.has.resolve("id")) {
				return false;
			}
			if(this.substitute(element.att.resolve("id")) != section) {
				return false;
			}
		}
		return true;
	}
	,findIncludeFile: function(base) {
		if(base == "") {
			return "";
		}
		if(HxOverrides.substr(base,0,1) != "/" && HxOverrides.substr(base,0,1) != "\\" && HxOverrides.substr(base,1,1) != ":" && HxOverrides.substr(base,0,1) != "." && !sys_FileSystem.exists(base)) {
			var _g = 0;
			var _g1 = this.includePaths;
			while(_g < _g1.length) {
				var path = _g1[_g];
				++_g;
				var includePath = path + "/" + base;
				if(sys_FileSystem.exists(includePath)) {
					if(sys_FileSystem.exists(includePath + "/include.lime")) {
						return includePath + "/include.lime";
					} else if(sys_FileSystem.exists(includePath + "/include.nmml")) {
						return includePath + "/include.nmml";
					} else if(sys_FileSystem.exists(includePath + "/include.xml")) {
						return includePath + "/include.xml";
					} else {
						return includePath;
					}
				}
			}
		} else {
			if(HxOverrides.substr(base,-1,1) == "/") {
				base = HxOverrides.substr(base,0,base.length - 1);
			} else if(HxOverrides.substr(base,-1,1) == "\\") {
				base = base.substring(0,base.length - 1);
			}
			if(sys_FileSystem.exists(base)) {
				if(sys_FileSystem.exists(base + "/include.lime")) {
					return base + "/include.lime";
				} else if(sys_FileSystem.exists(base + "/include.nmml")) {
					return base + "/include.nmml";
				} else if(sys_FileSystem.exists(base + "/include.xml")) {
					return base + "/include.xml";
				} else {
					return base;
				}
			}
		}
		return "";
	}
	,formatAttributeName: function(name) {
		var segments = name.toLowerCase().split("-");
		var _g1 = 1;
		var _g = segments.length;
		while(_g1 < _g) {
			var i = _g1++;
			segments[i] = HxOverrides.substr(segments[i],0,1).toUpperCase() + HxOverrides.substr(segments[i],1,null);
		}
		return segments.join("");
	}
	,parseAppElement: function(element,extensionPath) {
		var attribute = element.x.attributes();
		while(attribute.hasNext()) {
			var attribute1 = attribute.next();
			switch(attribute1) {
			case "min-swf-version":
				var version = parseFloat(this.substitute(element.att.resolve("min-swf-version")));
				if(version > this.app.swfVersion) {
					this.app.swfVersion = version;
				}
				break;
			case "path":
				var tmp = this.substitute(element.att.resolve("path"));
				this.app.path = lime_tools_helpers_PathHelper.combine(extensionPath,tmp);
				break;
			case "preloader":
				var tmp1 = element.att.resolve("preloader");
				this.app.preloader = this.substitute(tmp1);
				break;
			case "swf-version":
				var tmp2 = parseFloat(this.substitute(element.att.resolve("swf-version")));
				this.app.swfVersion = tmp2;
				break;
			default:
				var name = this.formatAttributeName(attribute1);
				var value = this.substitute(element.att.resolve(attribute1));
				if(attribute1 == "package") {
					name = "packageName";
				}
				if(Object.prototype.hasOwnProperty.call(this.app,name)) {
					this.app[name] = value;
				} else if(Object.prototype.hasOwnProperty.call(this.meta,name)) {
					this.meta[name] = value;
				}
			}
		}
	}
	,parseAssetsElement: function(element,basePath,isTemplate) {
		if(isTemplate == null) {
			isTemplate = false;
		}
		if(basePath == null) {
			basePath = "";
		}
		var path = "";
		var embed = null;
		var library = null;
		var targetPath = "";
		var glyphs = null;
		var type = null;
		if(element.has.resolve("path")) {
			path = lime_tools_helpers_PathHelper.combine(basePath,this.substitute(element.att.resolve("path")));
		}
		if(element.has.resolve("embed")) {
			embed = this.parseBool(element.att.resolve("embed"));
		}
		if(element.has.resolve("rename")) {
			targetPath = this.substitute(element.att.resolve("rename"));
		} else if(element.has.resolve("path")) {
			targetPath = this.substitute(element.att.resolve("path"));
		}
		if(element.has.resolve("library")) {
			library = this.substitute(element.att.resolve("library"));
		}
		if(element.has.resolve("glyphs")) {
			glyphs = this.substitute(element.att.resolve("glyphs"));
		}
		if(isTemplate) {
			type = lime_project_AssetType.TEMPLATE;
		} else if(element.has.resolve("type")) {
			var typeName = this.substitute(element.att.resolve("type"));
			var field = typeName.toUpperCase();
			if(Object.prototype.hasOwnProperty.call(lime_project_AssetType,field)) {
				type = Reflect.field(lime_project_AssetType,typeName.toUpperCase());
			} else if(typeName == "bytes") {
				type = lime_project_AssetType.BINARY;
			} else {
				lime_tools_helpers_LogHelper.warn("Ignoring unknown asset type \"" + typeName + "\"");
			}
		}
		if(path == "" && (element.has.resolve("include") || element.has.resolve("exclude") || type != null)) {
			lime_tools_helpers_LogHelper.error("In order to use 'include' or 'exclude' on <asset /> nodes, you must specify also specify a 'path' attribute");
			return;
		} else if(!element.get_elements().hasNext()) {
			if(path == "") {
				return;
			}
			if(!sys_FileSystem.exists(path)) {
				lime_tools_helpers_LogHelper.error("Could not find asset path \"" + path + "\"");
				return;
			}
			if(!sys_FileSystem.isDirectory(path)) {
				var asset = new lime_project_Asset(path,targetPath,type,embed);
				asset.library = library;
				if(element.has.resolve("id")) {
					asset.id = this.substitute(element.att.resolve("id"));
				}
				if(glyphs != null) {
					asset.glyphs = glyphs;
				}
				this.assets.push(asset);
			} else if(haxe_io_Path.extension(path) == "bundle") {
				var includePath = this.findIncludeFile(path);
				if(includePath != null && includePath != "" && sys_FileSystem.exists(includePath) && !sys_FileSystem.isDirectory(includePath)) {
					var includeProject = new lime_project_ProjectXMLParser(includePath,this.defines);
					this.merge(includeProject);
					return;
				} else {
					var asset1 = new lime_project_Asset(path,targetPath,type,embed);
					asset1.library = library;
					if(element.has.resolve("id")) {
						asset1.id = this.substitute(element.att.resolve("id"));
					}
					this.assets.push(asset1);
				}
			} else {
				var exclude = ".*|cvs|thumbs.db|desktop.ini|*.fla|*.hash";
				var include = "";
				if(element.has.resolve("exclude")) {
					exclude += "|" + this.substitute(element.att.resolve("exclude"));
				}
				if(element.has.resolve("include")) {
					include = this.substitute(element.att.resolve("include"));
				} else {
					include = "*";
				}
				this.parseAssetsElementDirectory(path,targetPath,include,exclude,type,embed,library,glyphs,true);
			}
		} else {
			if(path != "") {
				path += "/";
			}
			if(targetPath != "") {
				targetPath += "/";
			}
			var childElement = element.get_elements();
			while(childElement.hasNext()) {
				var childElement1 = childElement.next();
				var isValid = this.isValidElement(childElement1,"");
				if(isValid) {
					var childPath = this.substitute(childElement1.has.resolve("name") ? childElement1.att.resolve("name") : childElement1.att.resolve("path"));
					var childTargetPath = childPath;
					var childEmbed = embed;
					var childLibrary = library;
					var childType = type;
					var childGlyphs = glyphs;
					if(childElement1.has.resolve("rename")) {
						childTargetPath = this.substitute(childElement1.att.resolve("rename"));
					}
					if(childElement1.has.resolve("embed")) {
						childEmbed = this.parseBool(childElement1.att.resolve("embed"));
					}
					if(childElement1.has.resolve("library")) {
						childLibrary = this.substitute(childElement1.att.resolve("library"));
					}
					if(childElement1.has.resolve("glyphs")) {
						childGlyphs = this.substitute(childElement1.att.resolve("glyphs"));
					}
					var _g = childElement1.get_name();
					switch(_g) {
					case "font":case "image":case "music":case "sound":case "template":
						childType = Reflect.field(lime_project_AssetType,childElement1.get_name().toUpperCase());
						break;
					case "library":case "manifest":
						childType = lime_project_AssetType.MANIFEST;
						break;
					default:
						if(childElement1.has.resolve("type")) {
							childType = Reflect.field(lime_project_AssetType,this.substitute(childElement1.att.resolve("type")).toUpperCase());
						}
					}
					var id = "";
					if(childElement1.has.resolve("id")) {
						id = this.substitute(childElement1.att.resolve("id"));
					} else if(childElement1.has.resolve("name")) {
						id = this.substitute(childElement1.att.resolve("name"));
					}
					var asset2 = new lime_project_Asset(path + childPath,targetPath + childTargetPath,childType,childEmbed);
					asset2.library = childLibrary;
					asset2.id = id;
					if(childGlyphs != null) {
						asset2.glyphs = childGlyphs;
					}
					this.assets.push(asset2);
				}
			}
		}
	}
	,parseAssetsElementDirectory: function(path,targetPath,include,exclude,type,embed,library,glyphs,recursive) {
		var files = js_node_Fs.readdirSync(path);
		if(targetPath != "") {
			targetPath += "/";
		}
		var _g = 0;
		while(_g < files.length) {
			var file = files[_g];
			++_g;
			if(sys_FileSystem.isDirectory(path + "/" + file) && recursive) {
				if(this.filter(file,["*"],exclude.split("|"))) {
					this.parseAssetsElementDirectory(path + "/" + file,targetPath + file,include,exclude,type,embed,library,glyphs,true);
				}
			} else if(this.filter(file,include.split("|"),exclude.split("|"))) {
				var asset = new lime_project_Asset(path + "/" + file,targetPath + file,type,embed);
				asset.library = library;
				if(glyphs != null) {
					asset.glyphs = glyphs;
				}
				this.assets.push(asset);
			}
		}
	}
	,parseBool: function(attribute) {
		return this.substitute(attribute) == "true";
	}
	,parseCommandElement: function(element,commandList) {
		var command = null;
		if(element.has.resolve("haxe")) {
			command = lime_tools_helpers_CommandHelper.interpretHaxe(this.substitute(element.att.resolve("haxe")));
		}
		if(element.has.resolve("open")) {
			command = lime_tools_helpers_CommandHelper.openFile(this.substitute(element.att.resolve("open")));
		}
		if(element.has.resolve("command")) {
			command = lime_tools_helpers_CommandHelper.fromSingleString(this.substitute(element.att.resolve("command")));
		}
		if(element.has.resolve("cmd")) {
			command = lime_tools_helpers_CommandHelper.fromSingleString(this.substitute(element.att.resolve("cmd")));
		}
		if(command != null) {
			var arg = element.get_elements();
			while(arg.hasNext()) {
				var arg1 = arg.next();
				if(arg1.get_name() == "arg") {
					command.args.push(arg1.get_innerData());
				}
			}
			commandList.push(command);
		}
	}
	,parseMetaElement: function(element) {
		var attribute = element.x.attributes();
		while(attribute.hasNext()) {
			var attribute1 = attribute.next();
			switch(attribute1) {
			case "build-number":case "company":case "company-id":case "company-url":case "description":case "package":case "title":case "version":
				var value = this.substitute(element.att.resolve(attribute1));
				this.defines.set("APP_" + StringTools.replace(attribute1,"-","_").toUpperCase(),value);
				var name = this.formatAttributeName(attribute1);
				if(attribute1 == "package") {
					name = "packageName";
				}
				if(Object.prototype.hasOwnProperty.call(this.meta,name)) {
					this.meta[name] = value;
				}
				break;
			}
		}
	}
	,parseModuleElement: function(element,basePath,moduleData) {
		if(basePath == null) {
			basePath = "";
		}
		var topLevel = moduleData == null;
		var exclude = "";
		var include = "*";
		if(element.has.resolve("include")) {
			include = this.substitute(element.att.resolve("include"));
		}
		if(element.has.resolve("exclude")) {
			exclude = this.substitute(element.att.resolve("exclude"));
		}
		if(moduleData == null) {
			var name = this.substitute(element.att.resolve("name"));
			var _this = this.modules;
			if(__map_reserved[name] != null ? _this.existsReserved(name) : _this.h.hasOwnProperty(name)) {
				var _this1 = this.modules;
				if(__map_reserved[name] != null) {
					moduleData = _this1.getReserved(name);
				} else {
					moduleData = _this1.h[name];
				}
			} else {
				moduleData = new lime_project_ModuleData(name);
				var _this2 = this.modules;
				if(__map_reserved[name] != null) {
					_this2.setReserved(name,moduleData);
				} else {
					_this2.h[name] = moduleData;
				}
			}
		}
		var _g = element.get_name();
		switch(_g) {
		case "class":
			if(element.has.resolve("remove")) {
				HxOverrides.remove(moduleData.classNames,this.substitute(element.att.resolve("remove")));
			} else {
				moduleData.classNames.push(this.substitute(element.att.resolve("name")));
			}
			break;
		case "exclude":
			moduleData.excludeTypes.push(this.substitute(element.att.resolve("type")));
			break;
		case "haxedef":
			var value = this.substitute(element.att.resolve("name"));
			if(element.has.resolve("value")) {
				value += "=" + this.substitute(element.att.resolve("value"));
			}
			moduleData.haxeflags.push("-D " + value);
			break;
		case "haxeflag":
			var flag = this.substitute(element.att.resolve("name"));
			if(element.has.resolve("value")) {
				flag += " " + this.substitute(element.att.resolve("value"));
			}
			moduleData.haxeflags.push(this.substitute(flag));
			break;
		case "include":
			moduleData.includeTypes.push(this.substitute(element.att.resolve("type")));
			break;
		case "module":case "source":
			var sourceAttribute = element.get_name() == "module" ? "source" : "path";
			if(element.has.resolve(sourceAttribute)) {
				var source = lime_tools_helpers_PathHelper.combine(basePath,this.substitute(element.att.resolve(sourceAttribute)));
				var packageName = "";
				if(element.has.resolve("package")) {
					packageName = element.att.resolve("package");
				}
				lime_tools_helpers_ModuleHelper.addModuleSource(source,moduleData,include.split("|"),exclude.split("|"),packageName);
			}
			break;
		}
		if(topLevel) {
			var childElement = element.get_elements();
			while(childElement.hasNext()) {
				var childElement1 = childElement.next();
				if(this.isValidElement(childElement1,"")) {
					this.parseModuleElement(childElement1,basePath,moduleData);
				}
			}
		}
	}
	,parseOutputElement: function(element,extensionPath) {
		if(element.has.resolve("name")) {
			var tmp = element.att.resolve("name");
			this.app.file = this.substitute(tmp);
		}
		if(element.has.resolve("path")) {
			var tmp1 = this.substitute(element.att.resolve("path"));
			this.app.path = lime_tools_helpers_PathHelper.combine(extensionPath,tmp1);
		}
		if(element.has.resolve("swf-version")) {
			var tmp2 = parseFloat(this.substitute(element.att.resolve("swf-version")));
			this.app.swfVersion = tmp2;
		}
	}
	,parseXML: function(xml,section,extensionPath) {
		if(extensionPath == null) {
			extensionPath = "";
		}
		var element = xml.get_elements();
		while(element.hasNext()) {
			var element1 = element.next();
			var isValid = this.isValidElement(element1,section);
			if(isValid) {
				var _g = element1.get_name();
				switch(_g) {
				case "android":
					var attribute = element1.x.attributes();
					while(attribute.hasNext()) {
						var attribute1 = attribute.next();
						var name = attribute1;
						var value = this.substitute(element1.att.resolve(attribute1));
						switch(name) {
						case "extension":
							var extensions = lime_project__$ConfigData_ConfigData_$Impl_$.getArrayString(this.config,"android.extension");
							if(extensions == null || extensions.indexOf(value) == -1) {
								lime_project__$ConfigData_ConfigData_$Impl_$.push(this.config,"android.extension",value);
							}
							break;
						case "gradle-version":
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"android.gradle-version",value);
							break;
						case "install-location":
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"android.install-location",value);
							break;
						case "minimum-sdk-version":
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"android.minimum-sdk-version",Std.parseInt(value));
							break;
						case "permission":
							var permissions = lime_project__$ConfigData_ConfigData_$Impl_$.getArrayString(this.config,"android.permission");
							if(permissions == null || permissions.indexOf(value) == -1) {
								lime_project__$ConfigData_ConfigData_$Impl_$.push(this.config,"android.permission",value);
							}
							break;
						case "target-sdk-version":
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"android.target-sdk-version",Std.parseInt(value));
							break;
						default:
							name = this.formatAttributeName(attribute1);
						}
					}
					break;
				case "app":
					this.parseAppElement(element1,extensionPath);
					break;
				case "architecture":
					if(element1.has.resolve("name")) {
						var name1 = this.substitute(element1.att.resolve("name"));
						var field = name1.toUpperCase();
						if(Object.prototype.hasOwnProperty.call(lime_project_Architecture,field)) {
							lime_tools_helpers_ArrayHelper.addUnique(this.architectures,Reflect.field(lime_project_Architecture,name1.toUpperCase()));
						}
					}
					if(element1.has.resolve("exclude")) {
						var exclude = this.substitute(element1.att.resolve("exclude"));
						var field1 = exclude.toUpperCase();
						if(Object.prototype.hasOwnProperty.call(lime_project_Architecture,field1)) {
							HxOverrides.remove(this.architectures,Reflect.field(lime_project_Architecture,exclude.toUpperCase()));
						}
					}
					break;
				case "assets":
					this.parseAssetsElement(element1,extensionPath);
					break;
				case "certificate":
					var path = null;
					if(element1.has.resolve("path")) {
						path = element1.att.resolve("path");
					} else if(element1.has.resolve("keystore")) {
						path = element1.att.resolve("keystore");
					}
					if(path != null) {
						this.keystore = new lime_project_Keystore(lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path"))));
						if(element1.has.resolve("type")) {
							var tmp = element1.att.resolve("type");
							this.keystore.type = this.substitute(tmp);
						}
						if(element1.has.resolve("password")) {
							var tmp1 = element1.att.resolve("password");
							this.keystore.password = this.substitute(tmp1);
						}
						if(element1.has.resolve("alias")) {
							var tmp2 = element1.att.resolve("alias");
							this.keystore.alias = this.substitute(tmp2);
						}
						if(element1.has.resolve("alias-password")) {
							var tmp3 = element1.att.resolve("alias-password");
							this.keystore.aliasPassword = this.substitute(tmp3);
						} else if(element1.has.resolve("alias_password")) {
							var tmp4 = element1.att.resolve("alias_password");
							this.keystore.aliasPassword = this.substitute(tmp4);
						}
					}
					if(element1.has.resolve("identity")) {
						lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"ios.identity",element1.att.resolve("identity"));
						lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"tvos.identity",element1.att.resolve("identity"));
					}
					if(element1.has.resolve("team-id")) {
						lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"ios.team-id",element1.att.resolve("team-id"));
						lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"tvos.team-id",element1.att.resolve("team-id"));
					}
					break;
				case "classpath":case "source":
					var path1 = "";
					if(element1.has.resolve("path")) {
						path1 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path")));
					} else {
						path1 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("name")));
					}
					this.sources.push(path1);
					break;
				case "config":
					lime_project__$ConfigData_ConfigData_$Impl_$.parse(this.config,element1,$bind(this,this.substitute));
					break;
				case "cpp":
					var attribute2 = element1.x.attributes();
					while(attribute2.hasNext()) {
						var attribute3 = attribute2.next();
						var name2 = attribute3;
						var value1 = this.substitute(element1.att.resolve(attribute3));
						if(name2 == "build-library") {
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"cpp.buildLibrary",value1);
						} else {
							name2 = this.formatAttributeName(attribute3);
						}
					}
					break;
				case "define":
					var name3 = element1.att.resolve("name");
					var value2 = "";
					if(element1.has.resolve("value")) {
						value2 = this.substitute(element1.att.resolve("value"));
					}
					this.defines.set(name3,value2);
					this.haxedefs.set(name3,value2);
					break;
				case "dependency":
					var name4 = "";
					var path2 = "";
					if(element1.has.resolve("path")) {
						path2 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path")));
					}
					if(element1.has.resolve("name")) {
						var foundName = this.substitute(element1.att.resolve("name"));
						if(StringTools.endsWith(foundName,".a") || StringTools.endsWith(foundName,".dll")) {
							path2 = lime_tools_helpers_PathHelper.combine(extensionPath,foundName);
						} else {
							name4 = foundName;
						}
					}
					var dependency = new lime_project_Dependency(name4,path2);
					if(element1.has.resolve("force-load")) {
						dependency.forceLoad = this.substitute(element1.att.resolve("force-load")) == "true";
					}
					var i = this.dependencies.length;
					while(i-- > 0) if(name4 != "" && this.dependencies[i].name == name4 || path2 != "" && this.dependencies[i].path == path2) {
						this.dependencies.splice(i,1);
					}
					this.dependencies.push(dependency);
					break;
				case "echo":
					lime_tools_helpers_LogHelper.println(this.substitute(element1.att.resolve("value")));
					break;
				case "error":
					lime_tools_helpers_LogHelper.error(this.substitute(element1.att.resolve("value")));
					break;
				case "extension":
					break;
				case "haxedef":
					if(element1.has.resolve("remove")) {
						this.haxedefs.remove(this.substitute(element1.att.resolve("remove")));
					} else {
						var name5 = this.substitute(element1.att.resolve("name"));
						var value3 = "";
						if(element1.has.resolve("value")) {
							value3 = this.substitute(element1.att.resolve("value"));
						}
						this.haxedefs.set(name5,value3);
					}
					break;
				case "compilerflag":case "haxeflag":
					var flag = this.substitute(element1.att.resolve("name"));
					if(element1.has.resolve("value")) {
						flag += " " + this.substitute(element1.att.resolve("value"));
					}
					this.haxeflags.push(this.substitute(flag));
					break;
				case "haxelib":
					if(element1.has.resolve("repository")) {
						this.setenv("HAXELIB_PATH",lime_tools_helpers_PathHelper.combine(process.cwd(),element1.att.resolve("repository")));
						if(this.needRerun) {
							return;
						}
						continue;
					}
					var name6 = this.substitute(element1.att.resolve("name"));
					var version = "";
					var optional = false;
					var path3 = null;
					if(element1.has.resolve("version")) {
						version = this.substitute(element1.att.resolve("version"));
					}
					if(element1.has.resolve("optional")) {
						optional = this.parseBool(element1.att.resolve("optional"));
					}
					if(element1.has.resolve("path")) {
						path3 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path")));
					}
					var haxelib = new lime_project_Haxelib(name6,version);
					if(version != "" && this.defines.exists(name6) && !haxelib.versionMatches(this.defines.get(name6))) {
						lime_tools_helpers_LogHelper.warn("Ignoring requested haxelib \"" + name6 + "\" version \"" + version + "\" (version \"" + Std.string(this.defines.get(name6)) + "\" was already included)");
						continue;
					}
					if(path3 == null) {
						if(this.defines.exists("setup")) {
							path3 = lime_tools_helpers_HaxelibHelper.getPath(haxelib);
						} else {
							path3 = lime_tools_helpers_HaxelibHelper.getPath(haxelib,!optional);
							if(optional && path3 == "") {
								continue;
							}
						}
					} else {
						path3 = lime_tools_helpers_PathHelper.tryFullPath(lime_tools_helpers_PathHelper.combine(extensionPath,path3));
						if(version != "") {
							lime_tools_helpers_HaxelibHelper.pathOverrides.set(name6 + ":" + version,path3);
						} else {
							lime_tools_helpers_HaxelibHelper.pathOverrides.set(name6,path3);
						}
					}
					if(!this.defines.exists(haxelib.name)) {
						this.defines.set(haxelib.name,lime_project__$Version_Version_$Impl_$.toString(lime_tools_helpers_HaxelibHelper.getVersion(haxelib)));
					}
					this.haxelibs.push(haxelib);
					var includeProject = lime_project_HXProject.fromHaxelib(haxelib,this.defines);
					if(includeProject != null) {
						var _g1 = 0;
						var _g11 = includeProject.ndlls;
						while(_g1 < _g11.length) {
							var ndll = _g11[_g1];
							++_g1;
							if(ndll.haxelib == null) {
								ndll.haxelib = haxelib;
							}
						}
						this.merge(includeProject);
					}
					break;
				case "icon":
					var path4 = "";
					if(element1.has.resolve("path")) {
						path4 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path")));
					} else {
						path4 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("name")));
					}
					var icon = new lime_project_Icon(path4);
					if(element1.has.resolve("size")) {
						icon.size = icon.width = icon.height = Std.parseInt(this.substitute(element1.att.resolve("size")));
					}
					if(element1.has.resolve("width")) {
						icon.width = Std.parseInt(this.substitute(element1.att.resolve("width")));
					}
					if(element1.has.resolve("height")) {
						icon.height = Std.parseInt(this.substitute(element1.att.resolve("height")));
					}
					this.icons.push(icon);
					break;
				case "include":
					var path5 = "";
					var addSourcePath = true;
					var haxelib1 = null;
					if(element1.has.resolve("haxelib")) {
						haxelib1 = new lime_project_Haxelib(this.substitute(element1.att.resolve("haxelib")));
						path5 = this.findIncludeFile(lime_tools_helpers_HaxelibHelper.getPath(haxelib1,true));
						addSourcePath = false;
					} else if(element1.has.resolve("path")) {
						var subPath = this.substitute(element1.att.resolve("path"));
						if(subPath == "") {
							subPath = element1.att.resolve("path");
						}
						path5 = this.findIncludeFile(lime_tools_helpers_PathHelper.combine(extensionPath,subPath));
					} else {
						path5 = this.findIncludeFile(lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("name"))));
					}
					if(path5 != null && path5 != "" && sys_FileSystem.exists(path5) && !sys_FileSystem.isDirectory(path5)) {
						var includeProject1 = new lime_project_ProjectXMLParser(path5,this.defines);
						if(includeProject1 != null && haxelib1 != null) {
							var _g2 = 0;
							var _g12 = includeProject1.ndlls;
							while(_g2 < _g12.length) {
								var ndll1 = _g12[_g2];
								++_g2;
								if(ndll1.haxelib == null) {
									ndll1.haxelib = haxelib1;
								}
							}
						}
						if(addSourcePath) {
							var dir = haxe_io_Path.directory(path5);
							if(dir != "") {
								includeProject1.sources.unshift(dir);
							}
						}
						this.merge(includeProject1);
					} else if(!element1.has.resolve("noerror")) {
						if(path5 == "" || sys_FileSystem.isDirectory(path5)) {
							var errorPath = "";
							if(element1.has.resolve("path")) {
								errorPath = element1.att.resolve("path");
							} else if(element1.has.resolve("name")) {
								errorPath = element1.att.resolve("name");
							} else {
								errorPath = Std.string(element1);
							}
							lime_tools_helpers_LogHelper.error("\"" + errorPath + "\" does not appear to be a valid <include /> path");
						} else {
							lime_tools_helpers_LogHelper.error("Could not find include file \"" + path5 + "\"");
						}
					}
					break;
				case "ios":
					if(this.target == "ios") {
						if(element1.has.resolve("deployment")) {
							var deployment = parseFloat(this.substitute(element1.att.resolve("deployment")));
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"ios.deployment",deployment);
						}
						if(element1.has.resolve("binaries")) {
							var binaries = this.substitute(element1.att.resolve("binaries"));
							switch(binaries) {
							case "armv6":
								lime_tools_helpers_ArrayHelper.addUnique(this.architectures,lime_project_Architecture.ARMV6);
								HxOverrides.remove(this.architectures,lime_project_Architecture.ARMV7);
								break;
							case "armv7":
								lime_tools_helpers_ArrayHelper.addUnique(this.architectures,lime_project_Architecture.ARMV7);
								HxOverrides.remove(this.architectures,lime_project_Architecture.ARMV6);
								break;
							case "fat":
								lime_tools_helpers_ArrayHelper.addUnique(this.architectures,lime_project_Architecture.ARMV6);
								lime_tools_helpers_ArrayHelper.addUnique(this.architectures,lime_project_Architecture.ARMV7);
								break;
							}
						}
						if(element1.has.resolve("devices")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"ios.device",this.substitute(element1.att.resolve("devices")).toLowerCase());
						}
						if(element1.has.resolve("compiler")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"ios.compiler",this.substitute(element1.att.resolve("compiler")));
						}
						if(element1.has.resolve("prerendered-icon")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"ios.prerenderedIcon",this.substitute(element1.att.resolve("prerendered-icon")));
						}
						if(element1.has.resolve("linker-flags")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.push(this.config,"ios.linker-flags",this.substitute(element1.att.resolve("linker-flags")));
						}
					}
					break;
				case "java":
					this.javaPaths.push(lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path"))));
					break;
				case "library":case "swf":
					if(element1.has.resolve("handler")) {
						if(element1.has.resolve("type")) {
							this.libraryHandlers.set(this.substitute(element1.att.resolve("type")),this.substitute(element1.att.resolve("handler")));
						}
					} else {
						var path6 = null;
						var name7 = "";
						var type = null;
						var embed = null;
						var preload = false;
						var generate = false;
						var prefix = "";
						if(element1.has.resolve("path")) {
							path6 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path")));
						}
						if(element1.has.resolve("name")) {
							name7 = this.substitute(element1.att.resolve("name"));
						}
						if(element1.has.resolve("id")) {
							name7 = this.substitute(element1.att.resolve("id"));
						}
						if(element1.has.resolve("type")) {
							type = this.substitute(element1.att.resolve("type"));
						}
						if(element1.has.resolve("embed")) {
							embed = this.parseBool(element1.att.resolve("embed"));
						}
						if(element1.has.resolve("preload")) {
							preload = this.parseBool(element1.att.resolve("preload"));
						}
						if(element1.has.resolve("generate")) {
							generate = this.parseBool(element1.att.resolve("generate"));
						}
						if(element1.has.resolve("prefix")) {
							prefix = this.substitute(element1.att.resolve("prefix"));
						}
						this.libraries.push(new lime_project_Library(path6,name7,type,embed,preload,generate,prefix));
					}
					break;
				case "log":
					var verbose = "";
					if(element1.has.resolve("verbose")) {
						verbose = this.substitute(element1.att.resolve("verbose"));
					}
					if(element1.has.resolve("error")) {
						lime_tools_helpers_LogHelper.error(this.substitute(element1.att.resolve("error")),verbose);
					} else if(element1.has.resolve("warn")) {
						lime_tools_helpers_LogHelper.warn(this.substitute(element1.att.resolve("warn")),verbose);
					} else if(element1.has.resolve("info")) {
						lime_tools_helpers_LogHelper.info(this.substitute(element1.att.resolve("info")),verbose);
					} else if(element1.has.resolve("value")) {
						lime_tools_helpers_LogHelper.info(this.substitute(element1.att.resolve("value")),verbose);
					} else if(verbose != "") {
						lime_tools_helpers_LogHelper.info("",verbose);
					}
					break;
				case "meta":
					this.parseMetaElement(element1);
					break;
				case "module":
					this.parseModuleElement(element1,extensionPath);
					break;
				case "ndll":
					var name8 = this.substitute(element1.att.resolve("name"));
					var haxelib2 = null;
					var type1 = lime_project_NDLLType.AUTO;
					var registerStatics = true;
					var subdirectory = null;
					if(element1.has.resolve("haxelib")) {
						haxelib2 = new lime_project_Haxelib(this.substitute(element1.att.resolve("haxelib")));
					}
					if(element1.has.resolve("dir")) {
						subdirectory = this.substitute(element1.att.resolve("dir"));
					}
					if(haxelib2 == null && (name8 == "std" || name8 == "regexp" || name8 == "zlib")) {
						haxelib2 = new lime_project_Haxelib(lime_project__$ConfigData_ConfigData_$Impl_$.getString(this.config,"cpp.buildLibrary","hxcpp"));
					}
					if(element1.has.resolve("type")) {
						type1 = Reflect.field(lime_project_NDLLType,this.substitute(element1.att.resolve("type")).toUpperCase());
					}
					if(element1.has.resolve("register")) {
						registerStatics = this.parseBool(element1.att.resolve("register"));
					}
					var ndll2 = new lime_project_NDLL(name8,haxelib2,type1,registerStatics);
					ndll2.extensionPath = extensionPath;
					ndll2.subdirectory = subdirectory;
					this.ndlls.push(ndll2);
					break;
				case "output":
					this.parseOutputElement(element1,extensionPath);
					break;
				case "path":
					var value4 = "";
					if(element1.has.resolve("value")) {
						value4 = this.substitute(element1.att.resolve("value"));
					} else {
						value4 = this.substitute(element1.att.resolve("name"));
					}
					this.path(value4);
					break;
				case "postbuild":
					this.parseCommandElement(element1,this.postBuildCallbacks);
					break;
				case "prebuild":
					this.parseCommandElement(element1,this.preBuildCallbacks);
					break;
				case "preloader":
					var tmp5 = element1.att.resolve("name");
					this.app.preloader = this.substitute(tmp5);
					break;
				case "sample":
					this.samplePaths.push(lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path"))));
					break;
				case "section":
					this.parseXML(element1,"",extensionPath);
					break;
				case "set":
					var name9 = element1.att.resolve("name");
					var value5 = "";
					if(element1.has.resolve("value")) {
						value5 = this.substitute(element1.att.resolve("value"));
					}
					switch(name9) {
					case "ANDROID_INSTALL_LOCATION":
						lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"android.install-location",value5);
						break;
					case "BUILD_DIR":
						this.app.path = value5;
						break;
					case "PRERENDERED_ICON":
						lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"ios.prerenderedIcon",value5);
						break;
					case "SWF_VERSION":
						this.app.swfVersion = parseFloat(value5);
						break;
					}
					this.defines.set(name9,value5);
					this.environment.set(name9,value5);
					break;
				case "setenv":
					var value6 = "";
					if(element1.has.resolve("value")) {
						value6 = this.substitute(element1.att.resolve("value"));
					} else {
						value6 = "1";
					}
					var name10 = this.substitute(element1.att.resolve("name"));
					this.defines.set(name10,value6);
					this.environment.set(name10,value6);
					this.setenv(name10,value6);
					if(this.needRerun) {
						return;
					}
					break;
				case "launchImage":case "splashScreen":case "splashscreen":
					var path7 = "";
					if(element1.has.resolve("path")) {
						path7 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path")));
					} else {
						path7 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("name")));
					}
					var splashScreen = new lime_project_SplashScreen(path7);
					if(element1.has.resolve("width")) {
						splashScreen.width = Std.parseInt(this.substitute(element1.att.resolve("width")));
					}
					if(element1.has.resolve("height")) {
						splashScreen.height = Std.parseInt(this.substitute(element1.att.resolve("height")));
					}
					this.splashScreens.push(splashScreen);
					break;
				case "ssl":
					break;
				case "target":
					if(element1.has.resolve("handler")) {
						if(element1.has.resolve("name")) {
							this.targetHandlers.set(this.substitute(element1.att.resolve("name")),this.substitute(element1.att.resolve("handler")));
						}
					}
					break;
				case "template":
					if(element1.has.resolve("path")) {
						if(element1.has.resolve("haxelib")) {
							var haxelibPath = lime_tools_helpers_HaxelibHelper.getPath(new lime_project_Haxelib(this.substitute(element1.att.resolve("haxelib"))),true);
							var path8 = lime_tools_helpers_PathHelper.combine(haxelibPath,this.substitute(element1.att.resolve("path")));
							this.templatePaths.push(path8);
						} else {
							var path9 = lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("path")));
							if(sys_FileSystem.exists(path9) && !sys_FileSystem.isDirectory(path9)) {
								this.parseAssetsElement(element1,extensionPath,true);
							} else {
								this.templatePaths.push(path9);
							}
						}
					} else {
						this.parseAssetsElement(element1,extensionPath,true);
					}
					break;
				case "templatePath":
					this.templatePaths.push(lime_tools_helpers_PathHelper.combine(extensionPath,this.substitute(element1.att.resolve("name"))));
					break;
				case "tvos":
					if(this.target == "tvos") {
						if(element1.has.resolve("deployment")) {
							var deployment1 = parseFloat(this.substitute(element1.att.resolve("deployment")));
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"tvos.deployment",deployment1);
						}
						if(element1.has.resolve("binaries")) {
							var binaries1 = this.substitute(element1.att.resolve("binaries"));
							if(binaries1 == "arm64") {
								lime_tools_helpers_ArrayHelper.addUnique(this.architectures,lime_project_Architecture.ARM64);
							}
						}
						if(element1.has.resolve("devices")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"tvos.device",this.substitute(element1.att.resolve("devices")).toLowerCase());
						}
						if(element1.has.resolve("compiler")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"tvos.compiler",this.substitute(element1.att.resolve("compiler")));
						}
						if(element1.has.resolve("prerendered-icon")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.set(this.config,"tvos.prerenderedIcon",this.substitute(element1.att.resolve("prerendered-icon")));
						}
						if(element1.has.resolve("linker-flags")) {
							lime_project__$ConfigData_ConfigData_$Impl_$.push(this.config,"tvos.linker-flags",this.substitute(element1.att.resolve("linker-flags")));
						}
					}
					break;
				case "unset":
					this.defines.remove(element1.att.resolve("name"));
					this.environment.remove(element1.att.resolve("name"));
					break;
				case "window":
					this.parseWindowElement(element1);
					break;
				default:
					if(StringTools.startsWith(element1.get_name(),"config:")) {
						lime_project__$ConfigData_ConfigData_$Impl_$.parse(this.config,element1,$bind(this,this.substitute));
					}
				}
			}
		}
	}
	,parseWindowElement: function(element) {
		var id = 0;
		if(element.has.resolve("id")) {
			id = Std.parseInt(this.substitute(element.att.resolve("id")));
		}
		while(id >= this.windows.length) this.windows.push(lime_tools_helpers_ObjectHelper.copyFields(this.defaultWindow,{ }));
		var attribute = element.x.attributes();
		while(attribute.hasNext()) {
			var attribute1 = attribute.next();
			var name = attribute1;
			var value = this.substitute(element.att.resolve(attribute1));
			switch(name) {
			case "allow-high-dpi":
				if(Object.prototype.hasOwnProperty.call(this.windows[id],"allowHighDPI")) {
					this.windows[id]["allowHighDPI"] = value == "true";
				}
				break;
			case "background":
				value = StringTools.replace(value,"#","");
				if(value.indexOf("0x") == -1) {
					value = "0x" + value;
				}
				if(value == "0x" || value.length == 10 && StringTools.startsWith(value,"0x00")) {
					this.windows[id].background = null;
				} else {
					this.windows[id].background = Std.parseInt(value);
				}
				break;
			case "color-depth":
				if(Object.prototype.hasOwnProperty.call(this.windows[id],"colorDepth")) {
					this.windows[id]["colorDepth"] = Std.parseInt(value);
				}
				break;
			case "antialiasing":case "fps":case "height":case "width":
				if(Object.prototype.hasOwnProperty.call(this.windows[id],name)) {
					this.windows[id][name] = Std.parseInt(value);
				}
				break;
			case "orientation":
				var orientation = Reflect.field(lime_project_Orientation,(value == null ? "null" : "" + value).toUpperCase());
				if(orientation != null) {
					this.windows[id].orientation = orientation;
				}
				break;
			case "parameters":
				if(Object.prototype.hasOwnProperty.call(this.windows[id],name)) {
					this.windows[id][name] = value == null ? "null" : "" + value;
				}
				break;
			default:
				if(Object.prototype.hasOwnProperty.call(this.windows[id],name)) {
					this.windows[id][name] = value == "true";
				} else {
					var o = this.windows[id];
					var field = this.formatAttributeName(name);
					if(Object.prototype.hasOwnProperty.call(o,field)) {
						this.windows[id][this.formatAttributeName(name)] = value == "true";
					}
				}
			}
		}
	}
	,process: function(projectFile,useExtensionPath) {
		var xml = null;
		var extensionPath = "";
		try {
			xml = new haxe_xml_Fast(Xml.parse(js_node_Fs.readFileSync(projectFile,{ encoding : "utf8"})).firstElement());
			extensionPath = haxe_io_Path.directory(projectFile);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			lime_tools_helpers_LogHelper.error("\"" + projectFile + "\" contains invalid XML data",e);
		}
		this.parseXML(xml,"",extensionPath);
	}
	,substitute: function(string) {
		var newString = string;
		while(lime_project_ProjectXMLParser.doubleVarMatch.match(newString)) newString = lime_project_ProjectXMLParser.doubleVarMatch.matchedLeft() + "${" + lime_tools_helpers_StringHelper.replaceVariable(this,lime_project_ProjectXMLParser.doubleVarMatch.matched(1)) + "}" + lime_project_ProjectXMLParser.doubleVarMatch.matchedRight();
		while(lime_project_ProjectXMLParser.varMatch.match(newString)) newString = lime_project_ProjectXMLParser.varMatch.matchedLeft() + lime_tools_helpers_StringHelper.replaceVariable(this,lime_project_ProjectXMLParser.varMatch.matched(1)) + lime_project_ProjectXMLParser.varMatch.matchedRight();
		return newString;
	}
	,__class__: lime_project_ProjectXMLParser
});
var lime_project_SplashScreen = function(path,width,height) {
	if(height == null) {
		height = 0;
	}
	if(width == null) {
		width = 0;
	}
	this.path = path;
	this.width = width;
	this.height = height;
};
$hxClasses["lime.project.SplashScreen"] = lime_project_SplashScreen;
lime_project_SplashScreen.__name__ = ["lime","project","SplashScreen"];
lime_project_SplashScreen.prototype = {
	height: null
	,path: null
	,width: null
	,clone: function() {
		var splashScreen = new lime_project_SplashScreen(this.path);
		splashScreen.width = this.width;
		splashScreen.height = this.height;
		return splashScreen;
	}
	,__class__: lime_project_SplashScreen
};
var lime_project__$Version_Version_$Impl_$ = {};
$hxClasses["lime.project._Version.Version_Impl_"] = lime_project__$Version_Version_$Impl_$;
lime_project__$Version_Version_$Impl_$.__name__ = ["lime","project","_Version","Version_Impl_"];
lime_project__$Version_Version_$Impl_$.__properties__ = {get_hasBuild:"get_hasBuild",get_build:"get_build",get_hasPre:"get_hasPre",get_pre:"get_pre",get_patch:"get_patch",get_minor:"get_minor",get_major:"get_major"};
lime_project__$Version_Version_$Impl_$.stringToVersion = function(s) {
	if(s == null || !lime_project__$Version_Version_$Impl_$.VERSION.match(s)) {
		throw new js__$Boot_HaxeError("Invalid SemVer format for \"" + s + "\"");
	}
	var major = Std.parseInt(lime_project__$Version_Version_$Impl_$.VERSION.matched(1));
	var minor = Std.parseInt(lime_project__$Version_Version_$Impl_$.VERSION.matched(2));
	var patch = Std.parseInt(lime_project__$Version_Version_$Impl_$.VERSION.matched(3));
	var pre = lime_project__$Version_Version_$Impl_$.parseIdentifiers(lime_project__$Version_Version_$Impl_$.VERSION.matched(4));
	var build = lime_project__$Version_Version_$Impl_$.parseIdentifiers(lime_project__$Version_Version_$Impl_$.VERSION.matched(5));
	var this1 = { version : [major,minor,patch], pre : pre, build : build};
	return this1;
};
lime_project__$Version_Version_$Impl_$.arrayToVersion = function(a) {
	a = (null == a ? [] : a).map(function(v) {
		if(v < 0) {
			return -v;
		} else {
			return v;
		}
	}).concat([0,0,0]).slice(0,3);
	var this1 = { version : [a[0],a[1],a[2]], pre : [], build : []};
	return this1;
};
lime_project__$Version_Version_$Impl_$._new = function(major,minor,patch,pre,build) {
	var this1 = { version : [major,minor,patch], pre : pre, build : build};
	return this1;
};
lime_project__$Version_Version_$Impl_$.nextMajor = function(this1) {
	var this2 = { version : [this1.version[0] + 1,0,0], pre : [], build : []};
	return this2;
};
lime_project__$Version_Version_$Impl_$.nextMinor = function(this1) {
	var this2 = { version : [this1.version[0],this1.version[1] + 1,0], pre : [], build : []};
	return this2;
};
lime_project__$Version_Version_$Impl_$.nextPatch = function(this1) {
	var this2 = { version : [this1.version[0],this1.version[1],this1.version[2] + 1], pre : [], build : []};
	return this2;
};
lime_project__$Version_Version_$Impl_$.nextPre = function(this1) {
	var this2 = { version : [this1.version[0],this1.version[1],this1.version[2]], pre : lime_project__$Version_Version_$Impl_$.nextIdentifiers(this1.pre), build : []};
	return this2;
};
lime_project__$Version_Version_$Impl_$.nextBuild = function(this1) {
	var this2 = { version : [this1.version[0],this1.version[1],this1.version[2]], pre : this1.pre, build : lime_project__$Version_Version_$Impl_$.nextIdentifiers(this1.build)};
	return this2;
};
lime_project__$Version_Version_$Impl_$.withPre = function(this1,pre,build) {
	var this2 = { version : [this1.version[0],this1.version[1],this1.version[2]], pre : lime_project__$Version_Version_$Impl_$.parseIdentifiers(pre), build : lime_project__$Version_Version_$Impl_$.parseIdentifiers(build)};
	return this2;
};
lime_project__$Version_Version_$Impl_$.withBuild = function(this1,build) {
	var this2 = { version : [this1.version[0],this1.version[1],this1.version[2]], pre : this1.pre, build : lime_project__$Version_Version_$Impl_$.parseIdentifiers(build)};
	return this2;
};
lime_project__$Version_Version_$Impl_$.satisfies = function(this1,rule) {
	return lime_project__$Version_VersionRule_$Impl_$.isSatisfiedBy(rule,this1);
};
lime_project__$Version_Version_$Impl_$.toString = function(this1) {
	if(this1 == null || this1.version == null) {
		return null;
	}
	var v = this1.version.join(".");
	if(this1.pre.length > 0) {
		v += "-" + lime_project__$Version_Version_$Impl_$.identifiersToString(this1.pre);
	}
	if(this1.build.length > 0) {
		v += "+" + lime_project__$Version_Version_$Impl_$.identifiersToString(this1.build);
	}
	return v;
};
lime_project__$Version_Version_$Impl_$.equals = function(this1,other) {
	if(this1.version[0] != other.version[0] || this1.version[1] != other.version[1] || this1.version[2] != other.version[2]) {
		return false;
	}
	return lime_project__$Version_Version_$Impl_$.equalsIdentifiers(this1.pre,other.pre);
};
lime_project__$Version_Version_$Impl_$.different = function(this1,other) {
	return !lime_project__$Version_Version_$Impl_$.equals(other,this1);
};
lime_project__$Version_Version_$Impl_$.greaterThan = function(this1,other) {
	if(this1.pre.length > 0 && other.pre.length > 0) {
		if(this1.version[0] == other.version[0] && this1.version[1] == other.version[1] && this1.version[2] == other.version[2]) {
			return lime_project__$Version_Version_$Impl_$.greaterThanIdentifiers(this1.pre,other.pre);
		} else {
			return false;
		}
	} else if(other.pre.length > 0) {
		if(this1.version[0] != other.version[0]) {
			return this1.version[0] > other.version[0];
		}
		if(this1.version[1] != other.version[1]) {
			return this1.version[1] > other.version[1];
		}
		if(this1.version[2] != other.version[2]) {
			return this1.version[2] > other.version[2];
		}
		if(this1.pre.length > 0) {
			return lime_project__$Version_Version_$Impl_$.greaterThanIdentifiers(this1.pre,other.pre);
		} else {
			return true;
		}
	} else if(this1.pre.length <= 0) {
		if(this1.version[0] != other.version[0]) {
			return this1.version[0] > other.version[0];
		}
		if(this1.version[1] != other.version[1]) {
			return this1.version[1] > other.version[1];
		}
		if(this1.version[2] != other.version[2]) {
			return this1.version[2] > other.version[2];
		}
		return lime_project__$Version_Version_$Impl_$.greaterThanIdentifiers(this1.pre,other.pre);
	} else {
		return false;
	}
};
lime_project__$Version_Version_$Impl_$.greaterThanOrEqual = function(this1,other) {
	if(!lime_project__$Version_Version_$Impl_$.equals(this1,other)) {
		return lime_project__$Version_Version_$Impl_$.greaterThan(this1,other);
	} else {
		return true;
	}
};
lime_project__$Version_Version_$Impl_$.lessThan = function(this1,other) {
	return !lime_project__$Version_Version_$Impl_$.greaterThanOrEqual(this1,other);
};
lime_project__$Version_Version_$Impl_$.lessThanOrEqual = function(this1,other) {
	return !lime_project__$Version_Version_$Impl_$.greaterThan(this1,other);
};
lime_project__$Version_Version_$Impl_$.get_major = function(this1) {
	return this1.version[0];
};
lime_project__$Version_Version_$Impl_$.get_minor = function(this1) {
	return this1.version[1];
};
lime_project__$Version_Version_$Impl_$.get_patch = function(this1) {
	return this1.version[2];
};
lime_project__$Version_Version_$Impl_$.get_pre = function(this1) {
	return lime_project__$Version_Version_$Impl_$.identifiersToString(this1.pre);
};
lime_project__$Version_Version_$Impl_$.get_hasPre = function(this1) {
	return this1.pre.length > 0;
};
lime_project__$Version_Version_$Impl_$.get_build = function(this1) {
	return lime_project__$Version_Version_$Impl_$.identifiersToString(this1.build);
};
lime_project__$Version_Version_$Impl_$.get_hasBuild = function(this1) {
	return this1.pre.length > 0;
};
lime_project__$Version_Version_$Impl_$.identifiersToString = function(ids) {
	return ids.map(function(id) {
		switch(id[1]) {
		case 0:
			var s = id[2];
			return s;
		case 1:
			var i = id[2];
			return "" + i;
		}
	}).join(".");
};
lime_project__$Version_Version_$Impl_$.parseIdentifiers = function(s) {
	return (null == s ? "" : s).split(".").map(lime_project__$Version_Version_$Impl_$.sanitize).filter(function(s1) {
		return s1 != "";
	}).map(lime_project__$Version_Version_$Impl_$.parseIdentifier);
};
lime_project__$Version_Version_$Impl_$.parseIdentifier = function(s) {
	var i = Std.parseInt(s);
	if(null == i) {
		return lime_project_Identifier.StringId(s);
	} else {
		return lime_project_Identifier.IntId(i);
	}
};
lime_project__$Version_Version_$Impl_$.equalsIdentifiers = function(a,b) {
	if(a.length != b.length) {
		return false;
	}
	var _g1 = 0;
	var _g = a.length;
	while(_g1 < _g) {
		var i = _g1++;
		var _g2 = b[i];
		var _g3 = a[i];
		switch(_g3[1]) {
		case 0:
			if(_g2[1] == 0) {
				var a1 = _g3[2];
				var b1 = _g2[2];
				if(a1 != b1) {
					return false;
				}
			}
			break;
		case 1:
			if(_g2[1] == 1) {
				var a2 = _g3[2];
				var b2 = _g2[2];
				if(a2 != b2) {
					return false;
				}
			}
			break;
		default:
		}
	}
	return true;
};
lime_project__$Version_Version_$Impl_$.greaterThanIdentifiers = function(a,b) {
	var _g1 = 0;
	var _g = a.length;
	while(_g1 < _g) {
		var i = _g1++;
		var _g2 = b[i];
		var _g3 = a[i];
		switch(_g3[1]) {
		case 0:
			switch(_g2[1]) {
			case 0:
				var a1 = _g3[2];
				var b1 = _g2[2];
				if(a1 == b1) {
					continue;
				} else {
					var a2 = _g3[2];
					var b2 = _g2[2];
					if(a2 > b2) {
						return true;
					} else {
						return false;
					}
				}
				break;
			case 1:
				return true;
			default:
				return false;
			}
			break;
		case 1:
			if(_g2[1] == 1) {
				var a3 = _g3[2];
				var b3 = _g2[2];
				if(a3 == b3) {
					continue;
				} else {
					var a4 = _g3[2];
					var b4 = _g2[2];
					if(a4 > b4) {
						return true;
					} else {
						return false;
					}
				}
			} else {
				return false;
			}
			break;
		default:
			return false;
		}
	}
	return false;
};
lime_project__$Version_Version_$Impl_$.nextIdentifiers = function(identifiers) {
	var identifiers1 = identifiers.slice();
	var i = identifiers1.length;
	while(--i >= 0) {
		var _g = identifiers1[i];
		if(_g[1] == 1) {
			var id = _g[2];
			identifiers1[i] = lime_project_Identifier.IntId(id + 1);
			break;
		}
	}
	if(i < 0) {
		throw new js__$Boot_HaxeError("no numeric identifier found in " + Std.string(identifiers1));
	}
	return identifiers1;
};
lime_project__$Version_Version_$Impl_$.sanitize = function(s) {
	return s.replace(lime_project__$Version_Version_$Impl_$.SANITIZER.r,"");
};
var lime_project_Identifier = $hxClasses["lime.project.Identifier"] = { __ename__ : ["lime","project","Identifier"], __constructs__ : ["StringId","IntId"] };
lime_project_Identifier.StringId = function(value) { var $x = ["StringId",0,value]; $x.__enum__ = lime_project_Identifier; $x.toString = $estr; return $x; };
lime_project_Identifier.IntId = function(value) { var $x = ["IntId",1,value]; $x.__enum__ = lime_project_Identifier; $x.toString = $estr; return $x; };
var lime_project__$Version_VersionRule_$Impl_$ = {};
$hxClasses["lime.project._Version.VersionRule_Impl_"] = lime_project__$Version_VersionRule_$Impl_$;
lime_project__$Version_VersionRule_$Impl_$.__name__ = ["lime","project","_Version","VersionRule_Impl_"];
lime_project__$Version_VersionRule_$Impl_$.stringToVersionRule = function(s) {
	var ors = s.split("||").map(function(comp) {
		comp = StringTools.trim(comp);
		var p = comp.split(" - ");
		if(p.length == 1) {
			comp = StringTools.trim(comp);
			p = new EReg("\\s+","").split(comp);
			if(p.length == 1) {
				if(comp.length == 0) {
					return lime_project_VersionComparator.GreaterThanOrEqualVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion([0,0,0]),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
				} else if(!lime_project__$Version_VersionRule_$Impl_$.VERSION.match(comp)) {
					throw new js__$Boot_HaxeError("invalid single pattern \"" + comp + "\"");
				} else {
					var v = lime_project__$Version_VersionRule_$Impl_$.versionArray(lime_project__$Version_VersionRule_$Impl_$.VERSION);
					var vf = v.concat([0,0,0]).slice(0,3);
					var _g = v.length;
					var _g1 = lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(1);
					if(_g1 == null) {
						switch(_g) {
						case 0:
							return lime_project_VersionComparator.GreaterThanOrEqualVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
						case 1:
							var version = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
							return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version),lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.nextMajor(version)));
						case 2:
							var version1 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
							return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version1),lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.nextMinor(version1)));
						case 3:
							return lime_project_VersionComparator.EqualVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
						default:
							var p1 = _g1;
							throw new js__$Boot_HaxeError("invalid prefix \"" + p1 + "\" for rule " + comp);
						}
					} else {
						switch(_g1) {
						case "<":
							return lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
						case "<=":
							return lime_project_VersionComparator.LessThanOrEqualVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
						case ">":
							return lime_project_VersionComparator.GreaterThanVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
						case ">=":
							return lime_project_VersionComparator.GreaterThanOrEqualVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
						case "^":
							switch(_g) {
							case 1:
								var version2 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
								return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version2),lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.nextMajor(version2)));
							case 2:
								var version3 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
								return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version3),lime_project_VersionComparator.LessThanVersion(version3.version[0] == 0 ? lime_project__$Version_Version_$Impl_$.nextMinor(version3) : lime_project__$Version_Version_$Impl_$.nextMajor(version3)));
							case 3:
								var version4 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
								return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version4),lime_project_VersionComparator.LessThanVersion(version4.version[0] == 0 ? version4.version[1] == 0 ? lime_project__$Version_Version_$Impl_$.nextPatch(version4) : lime_project__$Version_Version_$Impl_$.nextMinor(version4) : lime_project__$Version_Version_$Impl_$.nextMajor(version4)));
							default:
								var p2 = _g1;
								throw new js__$Boot_HaxeError("invalid prefix \"" + p2 + "\" for rule " + comp);
							}
							break;
						case "":case "=":case "v":
							switch(_g) {
							case 0:
								return lime_project_VersionComparator.GreaterThanOrEqualVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
							case 1:
								var version5 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
								return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version5),lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.nextMajor(version5)));
							case 2:
								var version6 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
								return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version6),lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.nextMinor(version6)));
							case 3:
								return lime_project_VersionComparator.EqualVersion(lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6)));
							default:
								var p3 = _g1;
								throw new js__$Boot_HaxeError("invalid prefix \"" + p3 + "\" for rule " + comp);
							}
							break;
						case "~":
							switch(_g) {
							case 1:
								var version7 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
								return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version7),lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.nextMajor(version7)));
							case 2:case 3:
								var version8 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(vf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
								return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(version8),lime_project_VersionComparator.LessThanVersion(lime_project__$Version_Version_$Impl_$.nextMinor(version8)));
							default:
								var p4 = _g1;
								throw new js__$Boot_HaxeError("invalid prefix \"" + p4 + "\" for rule " + comp);
							}
							break;
						default:
							var p5 = _g1;
							throw new js__$Boot_HaxeError("invalid prefix \"" + p5 + "\" for rule " + comp);
						}
					}
				}
			} else if(p.length == 2) {
				if(!lime_project__$Version_VersionRule_$Impl_$.VERSION.match(p[0])) {
					throw new js__$Boot_HaxeError("left hand parameter is not a valid version rule \"" + p[0] + "\"");
				}
				var lp = lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(1);
				var lva = lime_project__$Version_VersionRule_$Impl_$.versionArray(lime_project__$Version_VersionRule_$Impl_$.VERSION);
				var lvf = lva.concat([0,0,0]).slice(0,3);
				var lv = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(lvf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
				if(lp != ">" && lp != ">=") {
					throw new js__$Boot_HaxeError("invalid left parameter version prefix \"" + p[0] + "\", should be either > or >=");
				}
				if(!lime_project__$Version_VersionRule_$Impl_$.VERSION.match(p[1])) {
					throw new js__$Boot_HaxeError("left hand parameter is not a valid version rule \"" + p[0] + "\"");
				}
				var rp = lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(1);
				var rva = lime_project__$Version_VersionRule_$Impl_$.versionArray(lime_project__$Version_VersionRule_$Impl_$.VERSION);
				var rvf = rva.concat([0,0,0]).slice(0,3);
				var rv = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(rvf),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
				if(rp != "<" && rp != "<=") {
					throw new js__$Boot_HaxeError("invalid right parameter version prefix \"" + p[1] + "\", should be either < or <=");
				}
				return lime_project_VersionComparator.AndRule(lp == ">" ? lime_project_VersionComparator.GreaterThanVersion(lv) : lime_project_VersionComparator.GreaterThanOrEqualVersion(lv),rp == "<" ? lime_project_VersionComparator.LessThanVersion(rv) : lime_project_VersionComparator.LessThanOrEqualVersion(rv));
			} else {
				throw new js__$Boot_HaxeError("invalid multi pattern " + comp);
			}
		} else if(p.length == 2) {
			if(!lime_project__$Version_VersionRule_$Impl_$.VERSION.match(p[0])) {
				throw new js__$Boot_HaxeError("left range parameter is not a valid version rule \"" + p[0] + "\"");
			}
			if(lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(1) != null && lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(1) != "") {
				throw new js__$Boot_HaxeError("left range parameter should not be prefixed \"" + p[0] + "\"");
			}
			var lv1 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(lime_project__$Version_VersionRule_$Impl_$.versionArray(lime_project__$Version_VersionRule_$Impl_$.VERSION).concat([0,0,0]).slice(0,3)),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
			if(!lime_project__$Version_VersionRule_$Impl_$.VERSION.match(p[1])) {
				throw new js__$Boot_HaxeError("right range parameter is not a valid version rule \"" + p[1] + "\"");
			}
			if(lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(1) != null && lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(1) != "") {
				throw new js__$Boot_HaxeError("right range parameter should not be prefixed \"" + p[1] + "\"");
			}
			var rva1 = lime_project__$Version_VersionRule_$Impl_$.versionArray(lime_project__$Version_VersionRule_$Impl_$.VERSION);
			var rv1 = lime_project__$Version_Version_$Impl_$.withPre(lime_project__$Version_Version_$Impl_$.arrayToVersion(rva1.concat([0,0,0]).slice(0,3)),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(5),lime_project__$Version_VersionRule_$Impl_$.VERSION.matched(6));
			if(rva1.length == 1) {
				rv1 = lime_project__$Version_Version_$Impl_$.nextMajor(rv1);
			} else if(rva1.length == 2) {
				rv1 = lime_project__$Version_Version_$Impl_$.nextMinor(rv1);
			}
			return lime_project_VersionComparator.AndRule(lime_project_VersionComparator.GreaterThanOrEqualVersion(lv1),rva1.length == 3 ? lime_project_VersionComparator.LessThanOrEqualVersion(rv1) : lime_project_VersionComparator.LessThanVersion(rv1));
		} else {
			throw new js__$Boot_HaxeError("invalid pattern \"" + comp + "\"");
		}
	});
	var rule = null;
	while(ors.length > 0) {
		var r = ors.pop();
		if(null == rule) {
			rule = r;
		} else {
			rule = lime_project_VersionComparator.OrRule(r,rule);
		}
	}
	return rule;
};
lime_project__$Version_VersionRule_$Impl_$.versionArray = function(re) {
	var arr = [];
	var t;
	var _g = 2;
	while(_g < 5) {
		var i = _g++;
		t = re.matched(i);
		if(null != t && lime_project__$Version_VersionRule_$Impl_$.IS_DIGITS.match(t)) {
			arr.push(Std.parseInt(t));
		} else {
			break;
		}
	}
	return arr;
};
lime_project__$Version_VersionRule_$Impl_$.versionRuleIsValid = function(rule) {
	try {
		return lime_project__$Version_VersionRule_$Impl_$.stringToVersionRule(rule) != null;
	} catch( e ) {
		haxe_CallStack.lastException = e;
		return false;
	}
};
lime_project__$Version_VersionRule_$Impl_$.isSatisfiedBy = function(this1,version) {
	switch(this1[1]) {
	case 0:
		var ver = this1[2];
		return lime_project__$Version_Version_$Impl_$.equals(version,ver);
	case 1:
		var ver1 = this1[2];
		return lime_project__$Version_Version_$Impl_$.greaterThan(version,ver1);
	case 2:
		var ver2 = this1[2];
		return lime_project__$Version_Version_$Impl_$.greaterThanOrEqual(version,ver2);
	case 3:
		var ver3 = this1[2];
		return lime_project__$Version_Version_$Impl_$.lessThan(version,ver3);
	case 4:
		var ver4 = this1[2];
		return lime_project__$Version_Version_$Impl_$.lessThanOrEqual(version,ver4);
	case 5:
		var b = this1[3];
		var a = this1[2];
		if(lime_project__$Version_VersionRule_$Impl_$.isSatisfiedBy(a,version)) {
			return lime_project__$Version_VersionRule_$Impl_$.isSatisfiedBy(b,version);
		} else {
			return false;
		}
		break;
	case 6:
		var b1 = this1[3];
		var a1 = this1[2];
		if(!lime_project__$Version_VersionRule_$Impl_$.isSatisfiedBy(a1,version)) {
			return lime_project__$Version_VersionRule_$Impl_$.isSatisfiedBy(b1,version);
		} else {
			return true;
		}
		break;
	}
};
lime_project__$Version_VersionRule_$Impl_$.toString = function(this1) {
	var _g = this1;
	switch(_g[1]) {
	case 0:
		var ver = _g[2];
		return lime_project__$Version_Version_$Impl_$.toString(ver);
	case 1:
		var ver1 = _g[2];
		return ">" + lime_project__$Version_Version_$Impl_$.toString(ver1);
	case 2:
		var ver2 = _g[2];
		return ">=" + lime_project__$Version_Version_$Impl_$.toString(ver2);
	case 3:
		var ver3 = _g[2];
		return "<" + lime_project__$Version_Version_$Impl_$.toString(ver3);
	case 4:
		var ver4 = _g[2];
		return "<=" + lime_project__$Version_Version_$Impl_$.toString(ver4);
	case 5:
		var b = _g[3];
		var a = _g[2];
		return lime_project__$Version_VersionRule_$Impl_$.toString(a) + " " + lime_project__$Version_VersionRule_$Impl_$.toString(b);
	case 6:
		var b1 = _g[3];
		var a1 = _g[2];
		return lime_project__$Version_VersionRule_$Impl_$.toString(a1) + " || " + lime_project__$Version_VersionRule_$Impl_$.toString(b1);
	}
};
var lime_project_VersionComparator = $hxClasses["lime.project.VersionComparator"] = { __ename__ : ["lime","project","VersionComparator"], __constructs__ : ["EqualVersion","GreaterThanVersion","GreaterThanOrEqualVersion","LessThanVersion","LessThanOrEqualVersion","AndRule","OrRule"] };
lime_project_VersionComparator.EqualVersion = function(ver) { var $x = ["EqualVersion",0,ver]; $x.__enum__ = lime_project_VersionComparator; $x.toString = $estr; return $x; };
lime_project_VersionComparator.GreaterThanVersion = function(ver) { var $x = ["GreaterThanVersion",1,ver]; $x.__enum__ = lime_project_VersionComparator; $x.toString = $estr; return $x; };
lime_project_VersionComparator.GreaterThanOrEqualVersion = function(ver) { var $x = ["GreaterThanOrEqualVersion",2,ver]; $x.__enum__ = lime_project_VersionComparator; $x.toString = $estr; return $x; };
lime_project_VersionComparator.LessThanVersion = function(ver) { var $x = ["LessThanVersion",3,ver]; $x.__enum__ = lime_project_VersionComparator; $x.toString = $estr; return $x; };
lime_project_VersionComparator.LessThanOrEqualVersion = function(ver) { var $x = ["LessThanOrEqualVersion",4,ver]; $x.__enum__ = lime_project_VersionComparator; $x.toString = $estr; return $x; };
lime_project_VersionComparator.AndRule = function(a,b) { var $x = ["AndRule",5,a,b]; $x.__enum__ = lime_project_VersionComparator; $x.toString = $estr; return $x; };
lime_project_VersionComparator.OrRule = function(a,b) { var $x = ["OrRule",6,a,b]; $x.__enum__ = lime_project_VersionComparator; $x.toString = $estr; return $x; };
var lime_system_CFFI = function() { };
$hxClasses["lime.system.CFFI"] = lime_system_CFFI;
lime_system_CFFI.__name__ = ["lime","system","CFFI"];
lime_system_CFFI.load = function(library,method,args,lazy) {
	if(lazy == null) {
		lazy = false;
	}
	if(args == null) {
		args = 0;
	}
	var enabled = false;
	if(!enabled) {
		return Reflect.makeVarArgs(function(__) {
			return { };
		});
	}
	var result = null;
	result = function(_,_1,_2,_3,_4,_5) {
		return { };
	};
	return result;
};
lime_system_CFFI.__findHaxelib = function(library) {
	return "";
};
lime_system_CFFI.__loaderTrace = function(message) {
};
lime_system_CFFI.__sysName = function() {
	return null;
};
lime_system_CFFI.__tryLoad = function(name,library,func,args) {
	return null;
};
var lime_system__$CFFIPointer_CFFIPointer_$Impl_$ = {};
$hxClasses["lime.system._CFFIPointer.CFFIPointer_Impl_"] = lime_system__$CFFIPointer_CFFIPointer_$Impl_$;
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.__name__ = ["lime","system","_CFFIPointer","CFFIPointer_Impl_"];
lime_system__$CFFIPointer_CFFIPointer_$Impl_$._new = function(handle) {
	var this1 = handle;
	return this1;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get = function(this1) {
	var tmp = this1 != null;
	return 0;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.equals = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) == b;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.equalsPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) == lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.greaterThan = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) > b;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.greaterThanPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) > lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.greaterThanOrEqual = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) >= b;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.greaterThanOrEqualPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) >= lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.lessThan = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) < b;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.lessThanPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) < lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.lessThanOrEqual = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) <= b;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.lessThanOrEqualPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) <= lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.notEquals = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) != b;
};
lime_system__$CFFIPointer_CFFIPointer_$Impl_$.notEqualsPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) != lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
var lime_system_Clipboard = function() { };
$hxClasses["lime.system.Clipboard"] = lime_system_Clipboard;
lime_system_Clipboard.__name__ = ["lime","system","Clipboard"];
lime_system_Clipboard.__properties__ = {set_text:"set_text",get_text:"get_text"};
lime_system_Clipboard.__update = function() {
	var cacheText = lime_system_Clipboard._text;
	if(lime_system_Clipboard._text != cacheText) {
		lime_system_Clipboard.onUpdate.dispatch();
	}
};
lime_system_Clipboard.get_text = function() {
	return lime_system_Clipboard._text;
};
lime_system_Clipboard.set_text = function(value) {
	var cacheText = lime_system_Clipboard._text;
	lime_system_Clipboard._text = value;
	if(lime_system_Clipboard._text != cacheText) {
		lime_system_Clipboard.onUpdate.dispatch();
	}
	return value;
};
var lime_system_Display = function() {
};
$hxClasses["lime.system.Display"] = lime_system_Display;
lime_system_Display.__name__ = ["lime","system","Display"];
lime_system_Display.prototype = {
	bounds: null
	,currentMode: null
	,id: null
	,dpi: null
	,name: null
	,supportedModes: null
	,__class__: lime_system_Display
};
var lime_system_DisplayMode = function(width,height,refreshRate,pixelFormat) {
	this.width = width;
	this.height = height;
	this.refreshRate = refreshRate;
	this.pixelFormat = pixelFormat;
};
$hxClasses["lime.system.DisplayMode"] = lime_system_DisplayMode;
lime_system_DisplayMode.__name__ = ["lime","system","DisplayMode"];
lime_system_DisplayMode.prototype = {
	height: null
	,pixelFormat: null
	,refreshRate: null
	,width: null
	,__class__: lime_system_DisplayMode
};
var lime_system_Endian = $hxClasses["lime.system.Endian"] = { __ename__ : ["lime","system","Endian"], __constructs__ : ["LITTLE_ENDIAN","BIG_ENDIAN"] };
lime_system_Endian.LITTLE_ENDIAN = ["LITTLE_ENDIAN",0];
lime_system_Endian.LITTLE_ENDIAN.toString = $estr;
lime_system_Endian.LITTLE_ENDIAN.__enum__ = lime_system_Endian;
lime_system_Endian.BIG_ENDIAN = ["BIG_ENDIAN",1];
lime_system_Endian.BIG_ENDIAN.toString = $estr;
lime_system_Endian.BIG_ENDIAN.__enum__ = lime_system_Endian;
var lime_system_JNI = function() { };
$hxClasses["lime.system.JNI"] = lime_system_JNI;
lime_system_JNI.__name__ = ["lime","system","JNI"];
lime_system_JNI.callMember = function(method,jobject,a) {
	var _g = a.length;
	switch(_g) {
	case 0:
		return method(jobject);
	case 1:
		return method(jobject,a[0]);
	case 2:
		return method(jobject,a[0],a[1]);
	case 3:
		return method(jobject,a[0],a[1],a[2]);
	case 4:
		return method(jobject,a[0],a[1],a[2],a[3]);
	case 5:
		return method(jobject,a[0],a[1],a[2],a[3],a[4]);
	case 6:
		return method(jobject,a[0],a[1],a[2],a[3],a[4],a[5]);
	case 7:
		return method(jobject,a[0],a[1],a[2],a[3],a[4],a[5],a[6]);
	default:
		return null;
	}
};
lime_system_JNI.callStatic = function(method,a) {
	var _g = a.length;
	switch(_g) {
	case 0:
		return method();
	case 1:
		return method(a[0]);
	case 2:
		return method(a[0],a[1]);
	case 3:
		return method(a[0],a[1],a[2]);
	case 4:
		return method(a[0],a[1],a[2],a[3]);
	case 5:
		return method(a[0],a[1],a[2],a[3],a[4]);
	case 6:
		return method(a[0],a[1],a[2],a[3],a[4],a[5]);
	case 7:
		return method(a[0],a[1],a[2],a[3],a[4],a[5],a[6]);
	default:
		return null;
	}
};
lime_system_JNI.createMemberField = function(className,memberName,signature) {
	lime_system_JNI.init();
	return null;
};
lime_system_JNI.createMemberMethod = function(className,memberName,signature,useArray,quietFail) {
	if(quietFail == null) {
		quietFail = false;
	}
	if(useArray == null) {
		useArray = false;
	}
	lime_system_JNI.init();
	return null;
};
lime_system_JNI.createStaticField = function(className,memberName,signature) {
	lime_system_JNI.init();
	return null;
};
lime_system_JNI.createStaticMethod = function(className,memberName,signature,useArray,quietFail) {
	if(quietFail == null) {
		quietFail = false;
	}
	if(useArray == null) {
		useArray = false;
	}
	lime_system_JNI.init();
	return null;
};
lime_system_JNI.getEnv = function() {
	lime_system_JNI.init();
	return null;
};
lime_system_JNI.init = function() {
	if(!lime_system_JNI.initialized) {
		lime_system_JNI.initialized = true;
	}
};
lime_system_JNI.onCallback = function(object,method,args) {
	var field = Reflect.field(object,method);
	if(field != null) {
		if(args == null) {
			args = [];
		}
		return field.apply(object,args);
	}
	haxe_Log.trace("onCallback - unknown field " + method,{ fileName : "JNI.hx", lineNumber : 184, className : "lime.system.JNI", methodName : "onCallback"});
	return null;
};
lime_system_JNI.postUICallback = function(callback) {
	callback();
};
var lime_system_JNIMemberField = function(field) {
	this.field = field;
};
$hxClasses["lime.system.JNIMemberField"] = lime_system_JNIMemberField;
lime_system_JNIMemberField.__name__ = ["lime","system","JNIMemberField"];
lime_system_JNIMemberField.prototype = {
	field: null
	,get: function(jobject) {
		return null;
	}
	,set: function(jobject,value) {
		return value;
	}
	,__class__: lime_system_JNIMemberField
};
var lime_system_JNIStaticField = function(field) {
	this.field = field;
};
$hxClasses["lime.system.JNIStaticField"] = lime_system_JNIStaticField;
lime_system_JNIStaticField.__name__ = ["lime","system","JNIStaticField"];
lime_system_JNIStaticField.prototype = {
	field: null
	,get: function() {
		return null;
	}
	,set: function(value) {
		return value;
	}
	,__class__: lime_system_JNIStaticField
};
var lime_system_JNIMethod = function(method) {
	this.method = method;
};
$hxClasses["lime.system.JNIMethod"] = lime_system_JNIMethod;
lime_system_JNIMethod.__name__ = ["lime","system","JNIMethod"];
lime_system_JNIMethod.prototype = {
	method: null
	,callMember: function(args) {
		return null;
	}
	,callStatic: function(args) {
		return null;
	}
	,getMemberMethod: function(useArray) {
		if(useArray) {
			return $bind(this,this.callMember);
		} else {
			return Reflect.makeVarArgs($bind(this,this.callMember));
		}
	}
	,getStaticMethod: function(useArray) {
		if(useArray) {
			return $bind(this,this.callStatic);
		} else {
			return Reflect.makeVarArgs($bind(this,this.callStatic));
		}
	}
	,__class__: lime_system_JNIMethod
};
var lime_system_Sensor = function(type,id) {
	this.onUpdate = new lime_app__$Event_$Float_$Float_$Float_$Void();
	this.type = type;
	this.id = id;
};
$hxClasses["lime.system.Sensor"] = lime_system_Sensor;
lime_system_Sensor.__name__ = ["lime","system","Sensor"];
lime_system_Sensor.getSensors = function(type) {
	if(type == null) {
		return lime_system_Sensor.sensors.slice();
	} else {
		var result = [];
		var _g = 0;
		var _g1 = lime_system_Sensor.sensors;
		while(_g < _g1.length) {
			var sensor = _g1[_g];
			++_g;
			if(sensor.type == type) {
				result.push(sensor);
			}
		}
		return result;
	}
};
lime_system_Sensor.registerSensor = function(type,id) {
	var sensor = new lime_system_Sensor(type,id);
	lime_system_Sensor.sensors.push(sensor);
	lime_system_Sensor.sensorByID.h[id] = sensor;
};
lime_system_Sensor.prototype = {
	id: null
	,onUpdate: null
	,type: null
	,__class__: lime_system_Sensor
};
var lime_system_SensorType = $hxClasses["lime.system.SensorType"] = { __ename__ : ["lime","system","SensorType"], __constructs__ : ["ACCELEROMETER"] };
lime_system_SensorType.ACCELEROMETER = ["ACCELEROMETER",0];
lime_system_SensorType.ACCELEROMETER.toString = $estr;
lime_system_SensorType.ACCELEROMETER.__enum__ = lime_system_SensorType;
var lime_system_System = function() { };
$hxClasses["lime.system.System"] = lime_system_System;
lime_system_System.__name__ = ["lime","system","System"];
lime_system_System.__properties__ = {get_userDirectory:"get_userDirectory",get_platformVersion:"get_platformVersion",get_platformName:"get_platformName",get_platformLabel:"get_platformLabel",get_numDisplays:"get_numDisplays",get_fontsDirectory:"get_fontsDirectory",get_endianness:"get_endianness",get_documentsDirectory:"get_documentsDirectory",get_deviceVendor:"get_deviceVendor",get_deviceModel:"get_deviceModel",get_desktopDirectory:"get_desktopDirectory",get_applicationStorageDirectory:"get_applicationStorageDirectory",get_applicationDirectory:"get_applicationDirectory",set_allowScreenTimeout:"set_allowScreenTimeout",get_allowScreenTimeout:"get_allowScreenTimeout"};
lime_system_System.exit = function(code) {
};
lime_system_System.getDisplay = function(id) {
	return null;
};
lime_system_System.getTimer = function() {
	return 0;
};
lime_system_System.load = function(library,method,args,lazy) {
	if(lazy == null) {
		lazy = false;
	}
	if(args == null) {
		args = 0;
	}
	return lime_system_CFFI.load(library,method,args,lazy);
};
lime_system_System.openFile = function(path) {
	var tmp = path != null;
};
lime_system_System.openURL = function(url,target) {
	if(target == null) {
		target = "_blank";
	}
	var tmp = url != null;
};
lime_system_System.__copyMissingFields = function(target,source) {
	if(source == null || target == null) {
		return;
	}
	var _g = 0;
	var _g1 = Reflect.fields(source);
	while(_g < _g1.length) {
		var field = _g1[_g];
		++_g;
		if(!Object.prototype.hasOwnProperty.call(target,field)) {
			target[field] = Reflect.field(source,field);
		}
	}
};
lime_system_System.__getDirectory = function(type) {
	return null;
};
lime_system_System.__registerEntryPoint = function(projectName,entryPoint,config) {
	if(lime_system_System.__applicationConfig == null) {
		lime_system_System.__applicationConfig = new haxe_ds_StringMap();
	}
	if(lime_system_System.__applicationEntryPoint == null) {
		lime_system_System.__applicationEntryPoint = new haxe_ds_StringMap();
	}
	var _this = lime_system_System.__applicationEntryPoint;
	if(__map_reserved[projectName] != null) {
		_this.setReserved(projectName,entryPoint);
	} else {
		_this.h[projectName] = entryPoint;
	}
	var _this1 = lime_system_System.__applicationConfig;
	if(__map_reserved[projectName] != null) {
		_this1.setReserved(projectName,config);
	} else {
		_this1.h[projectName] = config;
	}
};
lime_system_System.__runProcess = function(command,args) {
	return null;
};
lime_system_System.get_allowScreenTimeout = function() {
	return true;
};
lime_system_System.set_allowScreenTimeout = function(value) {
	return true;
};
lime_system_System.get_applicationDirectory = function() {
	if(lime_system_System.__applicationDirectory == null) {
		lime_system_System.__applicationDirectory = lime_system_System.__getDirectory(0);
	}
	return lime_system_System.__applicationDirectory;
};
lime_system_System.get_applicationStorageDirectory = function() {
	if(lime_system_System.__applicationStorageDirectory == null) {
		lime_system_System.__applicationStorageDirectory = lime_system_System.__getDirectory(1);
	}
	return lime_system_System.__applicationStorageDirectory;
};
lime_system_System.get_deviceModel = function() {
	var tmp = lime_system_System.__deviceModel == null;
	return lime_system_System.__deviceModel;
};
lime_system_System.get_deviceVendor = function() {
	var tmp = lime_system_System.__deviceVendor == null;
	return lime_system_System.__deviceVendor;
};
lime_system_System.get_desktopDirectory = function() {
	if(lime_system_System.__desktopDirectory == null) {
		lime_system_System.__desktopDirectory = lime_system_System.__getDirectory(2);
	}
	return lime_system_System.__desktopDirectory;
};
lime_system_System.get_documentsDirectory = function() {
	if(lime_system_System.__documentsDirectory == null) {
		lime_system_System.__documentsDirectory = lime_system_System.__getDirectory(3);
	}
	return lime_system_System.__documentsDirectory;
};
lime_system_System.get_endianness = function() {
	if(lime_system_System.__endianness == null) {
		var arrayBuffer = new ArrayBuffer(2);
		var this1;
		if(arrayBuffer != null) {
			this1 = new Uint8Array(arrayBuffer,0);
		} else {
			this1 = null;
		}
		var uint8Array = this1;
		var this2;
		if(arrayBuffer != null) {
			this2 = new Uint16Array(arrayBuffer,0);
		} else {
			this2 = null;
		}
		var uint16array = this2;
		uint8Array[0] = 170;
		uint8Array[1] = 187;
		if(uint16array[0] == 43707) {
			lime_system_System.__endianness = lime_system_Endian.BIG_ENDIAN;
		} else {
			lime_system_System.__endianness = lime_system_Endian.LITTLE_ENDIAN;
		}
	}
	return lime_system_System.__endianness;
};
lime_system_System.get_fontsDirectory = function() {
	if(lime_system_System.__fontsDirectory == null) {
		lime_system_System.__fontsDirectory = lime_system_System.__getDirectory(4);
	}
	return lime_system_System.__fontsDirectory;
};
lime_system_System.get_numDisplays = function() {
	return 1;
};
lime_system_System.get_platformLabel = function() {
	if(lime_system_System.__platformLabel == null) {
		var name = lime_system_System.get_platformName();
		var version = lime_system_System.get_platformVersion();
		if(name != null && version != null) {
			lime_system_System.__platformLabel = name + " " + version;
		} else if(name != null) {
			lime_system_System.__platformLabel = name;
		}
	}
	return lime_system_System.__platformLabel;
};
lime_system_System.get_platformName = function() {
	if(lime_system_System.__platformName == null) {
		lime_system_System.__platformName = "Node.js";
	}
	return lime_system_System.__platformName;
};
lime_system_System.get_platformVersion = function() {
	var tmp = lime_system_System.__platformVersion == null;
	return lime_system_System.__platformVersion;
};
lime_system_System.get_userDirectory = function() {
	if(lime_system_System.__userDirectory == null) {
		lime_system_System.__userDirectory = lime_system_System.__getDirectory(5);
	}
	return lime_system_System.__userDirectory;
};
var lime_system_ThreadPool = function(minThreads,maxThreads) {
	if(maxThreads == null) {
		maxThreads = 1;
	}
	if(minThreads == null) {
		minThreads = 0;
	}
	this.onRun = new lime_app__$Event_$haxe_$Function_$Void();
	this.onProgress = new lime_app__$Event_$haxe_$Function_$Void();
	this.onError = new lime_app__$Event_$haxe_$Function_$Void();
	this.onComplete = new lime_app__$Event_$haxe_$Function_$Void();
	this.doWork = new lime_app__$Event_$haxe_$Function_$Void();
	this.minThreads = minThreads;
	this.maxThreads = maxThreads;
	this.currentThreads = 0;
};
$hxClasses["lime.system.ThreadPool"] = lime_system_ThreadPool;
lime_system_ThreadPool.__name__ = ["lime","system","ThreadPool"];
lime_system_ThreadPool.prototype = {
	currentThreads: null
	,doWork: null
	,maxThreads: null
	,minThreads: null
	,onComplete: null
	,onError: null
	,onProgress: null
	,onRun: null
	,queue: function(state) {
		this.runWork(state);
	}
	,sendComplete: function(state) {
		this.onComplete.dispatch(state);
	}
	,sendError: function(state) {
		this.onError.dispatch(state);
	}
	,sendProgress: function(state) {
		this.onProgress.dispatch(state);
	}
	,runWork: function(state) {
		this.onRun.dispatch(state);
		this.doWork.dispatch(state);
	}
	,__class__: lime_system_ThreadPool
};
var lime_system__$ThreadPool_ThreadPoolMessageType = $hxClasses["lime.system._ThreadPool.ThreadPoolMessageType"] = { __ename__ : ["lime","system","_ThreadPool","ThreadPoolMessageType"], __constructs__ : ["COMPLETE","ERROR","EXIT","PROGRESS","WORK"] };
lime_system__$ThreadPool_ThreadPoolMessageType.COMPLETE = ["COMPLETE",0];
lime_system__$ThreadPool_ThreadPoolMessageType.COMPLETE.toString = $estr;
lime_system__$ThreadPool_ThreadPoolMessageType.COMPLETE.__enum__ = lime_system__$ThreadPool_ThreadPoolMessageType;
lime_system__$ThreadPool_ThreadPoolMessageType.ERROR = ["ERROR",1];
lime_system__$ThreadPool_ThreadPoolMessageType.ERROR.toString = $estr;
lime_system__$ThreadPool_ThreadPoolMessageType.ERROR.__enum__ = lime_system__$ThreadPool_ThreadPoolMessageType;
lime_system__$ThreadPool_ThreadPoolMessageType.EXIT = ["EXIT",2];
lime_system__$ThreadPool_ThreadPoolMessageType.EXIT.toString = $estr;
lime_system__$ThreadPool_ThreadPoolMessageType.EXIT.__enum__ = lime_system__$ThreadPool_ThreadPoolMessageType;
lime_system__$ThreadPool_ThreadPoolMessageType.PROGRESS = ["PROGRESS",3];
lime_system__$ThreadPool_ThreadPoolMessageType.PROGRESS.toString = $estr;
lime_system__$ThreadPool_ThreadPoolMessageType.PROGRESS.__enum__ = lime_system__$ThreadPool_ThreadPoolMessageType;
lime_system__$ThreadPool_ThreadPoolMessageType.WORK = ["WORK",4];
lime_system__$ThreadPool_ThreadPoolMessageType.WORK.toString = $estr;
lime_system__$ThreadPool_ThreadPoolMessageType.WORK.__enum__ = lime_system__$ThreadPool_ThreadPoolMessageType;
var lime_system__$ThreadPool_ThreadPoolMessage = function(type,state) {
	this.type = type;
	this.state = state;
};
$hxClasses["lime.system._ThreadPool.ThreadPoolMessage"] = lime_system__$ThreadPool_ThreadPoolMessage;
lime_system__$ThreadPool_ThreadPoolMessage.__name__ = ["lime","system","_ThreadPool","ThreadPoolMessage"];
lime_system__$ThreadPool_ThreadPoolMessage.prototype = {
	state: null
	,type: null
	,__class__: lime_system__$ThreadPool_ThreadPoolMessage
};
var lime_text_Font = function(name) {
	if(name != null) {
		this.name = name;
	}
	if(this.__fontID != null) {
		if(lime_utils_Assets.isLocal(this.__fontID)) {
			this.__fromBytes(lime_utils_Assets.getBytes(this.__fontID));
		}
	} else if(this.__fontPath != null) {
		this.__fromFile(this.__fontPath);
	}
};
$hxClasses["lime.text.Font"] = lime_text_Font;
lime_text_Font.__name__ = ["lime","text","Font"];
lime_text_Font.fromBytes = function(bytes) {
	if(bytes == null) {
		return null;
	}
	var font = new lime_text_Font();
	font.__fromBytes(bytes);
	return font;
};
lime_text_Font.fromFile = function(path) {
	if(path == null) {
		return null;
	}
	var font = new lime_text_Font();
	font.__fromFile(path);
	return font;
};
lime_text_Font.loadFromBytes = function(bytes) {
	return lime_app_Future.withValue(lime_text_Font.fromBytes(bytes));
};
lime_text_Font.loadFromFile = function(path) {
	var request = new lime_net__$HTTPRequest_$lime_$text_$Font();
	return request.load(path).then(function(font) {
		if(font != null) {
			return lime_app_Future.withValue(font);
		} else {
			return lime_app_Future.withError("");
		}
	});
};
lime_text_Font.loadFromName = function(path) {
	return lime_app_Future.withError("");
};
lime_text_Font.prototype = {
	ascender: null
	,descender: null
	,height: null
	,name: null
	,numGlyphs: null
	,src: null
	,underlinePosition: null
	,underlineThickness: null
	,unitsPerEM: null
	,__fontID: null
	,__fontPath: null
	,decompose: function() {
		return null;
	}
	,getGlyph: function(character) {
		return -1;
	}
	,getGlyphs: function(characters) {
		if(characters == null) {
			characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^`'\"/\\&*()[]{}<>|:;_-+=?,. ";
		}
		return null;
	}
	,getGlyphMetrics: function(glyph) {
		return null;
	}
	,renderGlyph: function(glyph,fontSize) {
		return null;
	}
	,renderGlyphs: function(glyphs,fontSize) {
		return null;
	}
	,__copyFrom: function(other) {
		if(other != null) {
			this.ascender = other.ascender;
			this.descender = other.descender;
			this.height = other.height;
			this.name = other.name;
			this.numGlyphs = other.numGlyphs;
			this.src = other.src;
			this.underlinePosition = other.underlinePosition;
			this.underlineThickness = other.underlineThickness;
			this.unitsPerEM = other.unitsPerEM;
			this.__fontID = other.__fontID;
			this.__fontPath = other.__fontPath;
		}
	}
	,__fromBytes: function(bytes) {
		this.__fontPath = null;
	}
	,__fromFile: function(path) {
		this.__fontPath = path;
	}
	,__initializeSource: function() {
	}
	,__loadFromName: function(name) {
		var promise = new lime_app_Promise();
		promise.error("");
		return promise.future;
	}
	,__setSize: function(size) {
	}
	,__class__: lime_text_Font
};
var lime_text__$Glyph_Glyph_$Impl_$ = {};
$hxClasses["lime.text._Glyph.Glyph_Impl_"] = lime_text__$Glyph_Glyph_$Impl_$;
lime_text__$Glyph_Glyph_$Impl_$.__name__ = ["lime","text","_Glyph","Glyph_Impl_"];
lime_text__$Glyph_Glyph_$Impl_$._new = function(i) {
	var this1 = i;
	return this1;
};
var lime_text_GlyphMetrics = function() {
};
$hxClasses["lime.text.GlyphMetrics"] = lime_text_GlyphMetrics;
lime_text_GlyphMetrics.__name__ = ["lime","text","GlyphMetrics"];
lime_text_GlyphMetrics.prototype = {
	advance: null
	,height: null
	,horizontalBearing: null
	,verticalBearing: null
	,__class__: lime_text_GlyphMetrics
};
var lime_text_GlyphPosition = function(glyph,advance,offset) {
	this.glyph = glyph;
	this.advance = advance;
	if(offset != null) {
		this.offset = offset;
	} else {
		this.offset = new lime_math_Vector2();
	}
};
$hxClasses["lime.text.GlyphPosition"] = lime_text_GlyphPosition;
lime_text_GlyphPosition.__name__ = ["lime","text","GlyphPosition"];
lime_text_GlyphPosition.prototype = {
	advance: null
	,glyph: null
	,offset: null
	,__class__: lime_text_GlyphPosition
};
var lime_text__$TextDirection_TextDirection_$Impl_$ = {};
$hxClasses["lime.text._TextDirection.TextDirection_Impl_"] = lime_text__$TextDirection_TextDirection_$Impl_$;
lime_text__$TextDirection_TextDirection_$Impl_$.__name__ = ["lime","text","_TextDirection","TextDirection_Impl_"];
lime_text__$TextDirection_TextDirection_$Impl_$.__properties__ = {get_vertical:"get_vertical",get_horizontal:"get_horizontal",get_forward:"get_forward",get_backward:"get_backward"};
lime_text__$TextDirection_TextDirection_$Impl_$.reverse = function(this1) {
	this1 ^= 1;
};
lime_text__$TextDirection_TextDirection_$Impl_$.toString = function(this1) {
	switch(this1) {
	case 4:
		return "leftToRight";
	case 5:
		return "rightToLeft";
	case 6:
		return "topToBottom";
	case 7:
		return "bottomToTop";
	default:
		return "";
	}
};
lime_text__$TextDirection_TextDirection_$Impl_$.get_backward = function(this1) {
	return (this1 & -3) == 5;
};
lime_text__$TextDirection_TextDirection_$Impl_$.get_forward = function(this1) {
	return (this1 & -3) == 4;
};
lime_text__$TextDirection_TextDirection_$Impl_$.get_horizontal = function(this1) {
	return (this1 & -2) == 4;
};
lime_text__$TextDirection_TextDirection_$Impl_$.get_vertical = function(this1) {
	return (this1 & -2) == 6;
};
var lime_text_TextLayout = function(text,font,size,direction,script,language) {
	if(language == null) {
		language = "en";
	}
	if(script == null) {
		script = "Zyyy";
	}
	if(direction == null) {
		direction = 4;
	}
	if(size == null) {
		size = 12;
	}
	if(text == null) {
		text = "";
	}
	this.set_text(text);
	this.set_font(font);
	this.set_size(size);
	this.__direction = direction;
	this.__script = script;
	this.__language = language;
	this.positions = [];
	this.__dirty = true;
};
$hxClasses["lime.text.TextLayout"] = lime_text_TextLayout;
lime_text_TextLayout.__name__ = ["lime","text","TextLayout"];
lime_text_TextLayout.prototype = {
	font: null
	,glyphs: null
	,positions: null
	,size: null
	,text: null
	,__dirty: null
	,__buffer: null
	,__direction: null
	,__handle: null
	,__language: null
	,__script: null
	,__position: function() {
		this.positions = [];
	}
	,get_positions: function() {
		if(this.__dirty) {
			this.__dirty = false;
			this.__position();
		}
		return this.positions;
	}
	,get_direction: function() {
		return this.__direction;
	}
	,set_direction: function(value) {
		if(value == this.__direction) {
			return value;
		}
		this.__direction = value;
		this.__dirty = true;
		return value;
	}
	,set_font: function(value) {
		if(value == this.font) {
			return value;
		}
		this.font = value;
		this.__dirty = true;
		return value;
	}
	,get_glyphs: function() {
		var glyphs = [];
		var _g = 0;
		var _g1 = this.get_positions();
		while(_g < _g1.length) {
			var position = _g1[_g];
			++_g;
			glyphs.push(position.glyph);
		}
		return glyphs;
	}
	,get_language: function() {
		return this.__language;
	}
	,set_language: function(value) {
		if(value == this.__language) {
			return value;
		}
		this.__language = value;
		this.__dirty = true;
		return value;
	}
	,get_script: function() {
		return this.__script;
	}
	,set_script: function(value) {
		if(value == this.__script) {
			return value;
		}
		this.__script = value;
		this.__dirty = true;
		return value;
	}
	,set_size: function(value) {
		if(value == this.size) {
			return value;
		}
		this.size = value;
		this.__dirty = true;
		return value;
	}
	,set_text: function(value) {
		if(value == this.text) {
			return value;
		}
		this.text = value;
		this.__dirty = true;
		return value;
	}
	,__class__: lime_text_TextLayout
	,__properties__: {set_text:"set_text",set_size:"set_size",set_script:"set_script",get_script:"get_script",get_positions:"get_positions",set_language:"set_language",get_language:"get_language",get_glyphs:"get_glyphs",set_font:"set_font",set_direction:"set_direction",get_direction:"get_direction"}
};
var lime_text__$TextScript_TextScript_$Impl_$ = {};
$hxClasses["lime.text._TextScript.TextScript_Impl_"] = lime_text__$TextScript_TextScript_$Impl_$;
lime_text__$TextScript_TextScript_$Impl_$.__name__ = ["lime","text","_TextScript","TextScript_Impl_"];
lime_text__$TextScript_TextScript_$Impl_$.__properties__ = {get_rightToLeft:"get_rightToLeft"};
lime_text__$TextScript_TextScript_$Impl_$.get_rightToLeft = function(this1) {
	switch(this1) {
	case "Arab":case "Armi":case "Avst":case "Cprt":case "Hebr":case "Khar":case "Lydi":case "Mand":case "Nkoo":case "Orkh":case "Phli":case "Phlp":case "Phnx":case "Samr":case "Sarb":case "Syrc":case "Thaa":
		return true;
	default:
		return false;
	}
};
var lime_text__$UTF8String_UTF8String_$Impl_$ = {};
$hxClasses["lime.text._UTF8String.UTF8String_Impl_"] = lime_text__$UTF8String_UTF8String_$Impl_$;
lime_text__$UTF8String_UTF8String_$Impl_$.__name__ = ["lime","text","_UTF8String","UTF8String_Impl_"];
lime_text__$UTF8String_UTF8String_$Impl_$.__properties__ = {get_length:"get_length"};
lime_text__$UTF8String_UTF8String_$Impl_$._new = function(str) {
	var this1 = new String(str);
	return this1;
};
lime_text__$UTF8String_UTF8String_$Impl_$.charAt = function(this1,index) {
	var this2 = this1;
	var this3 = this2;
	var this4 = this3;
	var i;
	if(index >= 0) {
		var index1 = 0;
		var len = this4.length;
		var i1 = 0;
		while(i1 < index && index1 < len) {
			var c = this4.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i1;
		}
		i = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -index && 0 < index2) {
			var c1 = this4.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		i = index2;
	}
	var this5 = this1;
	var this6 = this5;
	var this7 = this6;
	var c2 = this7.charCodeAt(i);
	var this8 = HxOverrides.substr(this7,i,!(55296 <= c2 && c2 <= 56319) ? 1 : 2);
	var this9 = this8;
	return this9;
};
lime_text__$UTF8String_UTF8String_$Impl_$.charCodeAt = function(this1,index) {
	var tmp;
	if(index >= 0) {
		var this2 = this1;
		var this3 = this2;
		tmp = index >= lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount(this3,0,this1.length);
	} else {
		tmp = true;
	}
	if(tmp) {
		return null;
	}
	var this4 = this1;
	var this5 = this4;
	var this6 = this5;
	var i;
	if(index >= 0) {
		var index1 = 0;
		var len = this6.length;
		var i1 = 0;
		while(i1 < index && index1 < len) {
			var c = this6.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i1;
		}
		i = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -index && 0 < index2) {
			var c1 = this6.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		i = index2;
	}
	var this7 = this1;
	var this8 = this7;
	return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt(this8,i);
};
lime_text__$UTF8String_UTF8String_$Impl_$.fromCharCode = function(code) {
	if(!(0 <= code && code <= 1114111 && !(55296 <= code && code <= 56319) && !(56320 <= code && code <= 57343))) {
		throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodePoint(code));
	}
	var this1 = code;
	var this2 = this1;
	var this3;
	if(this2 <= 65535) {
		var this4 = String.fromCharCode(this2);
		var this5 = this4;
		this3 = this5;
	} else {
		var this6 = String.fromCharCode((this2 >> 10) + 55232) + String.fromCharCode(this2 & 1023 | 56320);
		var this7 = this6;
		this3 = this7;
	}
	return this3;
};
lime_text__$UTF8String_UTF8String_$Impl_$.fromCharCodes = function(codes) {
	var s = "";
	var _g = 0;
	while(_g < codes.length) {
		var code = codes[_g];
		++_g;
		if(!(0 <= code && code <= 1114111 && !(55296 <= code && code <= 56319) && !(56320 <= code && code <= 57343))) {
			throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodePoint(code));
		}
		var this1 = code;
		var b = this1;
		var this2;
		if(b <= 65535) {
			var this3 = String.fromCharCode(b);
			var this4 = this3;
			this2 = this4;
		} else {
			var this5 = String.fromCharCode((b >> 10) + 55232) + String.fromCharCode(b & 1023 | 56320);
			var this6 = this5;
			this2 = this6;
		}
		s += this2;
	}
	return s;
};
lime_text__$UTF8String_UTF8String_$Impl_$.indexOf = function(this1,str,startIndex) {
	if(startIndex == null) {
		startIndex = 0;
	}
	var this2 = this1;
	var this3 = this2;
	var this4 = this3;
	var index;
	if(startIndex >= 0) {
		var index1 = 0;
		var len = this4.length;
		var i = 0;
		while(i < startIndex && index1 < len) {
			var c = this4.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		index = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -startIndex && 0 < index2) {
			var c1 = this4.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		index = index2;
	}
	var index3 = this1.indexOf(str,index);
	if(index3 >= 0) {
		var this5 = this1;
		var this6 = this5;
		return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount(this6,0,index3);
	} else {
		return -1;
	}
};
lime_text__$UTF8String_UTF8String_$Impl_$.lastIndexOf = function(this1,str,startIndex) {
	var startIndex1 = startIndex;
	if(startIndex1 == null) {
		startIndex1 = this1.length - 1;
	}
	var this2 = this1;
	var this3 = this2;
	var this4 = this3;
	var index;
	if(startIndex1 >= 0) {
		var index1 = 0;
		var len = this4.length;
		var i = 0;
		while(i < startIndex1 && index1 < len) {
			var c = this4.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		index = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -startIndex1 && 0 < index2) {
			var c1 = this4.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		index = index2;
	}
	var index3 = this1.lastIndexOf(str,index);
	if(index3 >= 0) {
		var this5 = this1;
		var this6 = this5;
		return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount(this6,0,index3);
	} else {
		return -1;
	}
};
lime_text__$UTF8String_UTF8String_$Impl_$.split = function(this1,delimiter) {
	if(delimiter.length == 0) {
		var _g = [];
		var _g1_string;
		var _g1_index;
		var _g1_i;
		var _g1_endIndex;
		_g1_i = 0;
		_g1_string = this1;
		_g1_index = 0;
		_g1_endIndex = this1.length;
		while(_g1_index < _g1_endIndex) {
			_g1_i = _g1_index;
			var this2 = _g1_string;
			var this3 = this2;
			var c = this3.charCodeAt(_g1_index);
			_g1_index += !(55296 <= c && c <= 56319) ? 1 : 2;
			var i = _g1_i;
			var this4 = this1;
			var this5 = this4;
			var this6 = this5;
			var c1 = this6.charCodeAt(i);
			var this7 = HxOverrides.substr(this6,i,!(55296 <= c1 && c1 <= 56319) ? 1 : 2);
			var this8 = this7;
			_g.push(this8);
		}
		return _g;
	} else {
		return this1.split(delimiter);
	}
};
lime_text__$UTF8String_UTF8String_$Impl_$.substr = function(this1,pos,len) {
	return HxOverrides.substr(this1,pos,len);
};
lime_text__$UTF8String_UTF8String_$Impl_$.substring = function(this1,startIndex,endIndex) {
	var si;
	if(startIndex < 0) {
		si = 0;
	} else {
		var this2 = this1;
		var this3 = this2;
		var this4 = this3;
		if(startIndex >= 0) {
			var index = 0;
			var len = this4.length;
			var i = 0;
			while(i < startIndex && index < len) {
				var c = this4.charCodeAt(index);
				index += !(55296 <= c && c <= 56319) ? 1 : 2;
				++i;
			}
			si = index;
		} else {
			var index1 = 0;
			var count = 0;
			while(count < -startIndex && 0 < index1) {
				var c1 = this4.charCodeAt(index1 - 1);
				index1 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
				++count;
			}
			si = index1;
		}
	}
	var ei;
	if(endIndex == null) {
		ei = this1.length;
	} else if(endIndex < 0) {
		ei = 0;
	} else {
		var this5 = this1;
		var this6 = this5;
		var this7 = this6;
		if(endIndex >= 0) {
			var index2 = 0;
			var len1 = this7.length;
			var i1 = 0;
			while(i1 < endIndex && index2 < len1) {
				var c2 = this7.charCodeAt(index2);
				index2 += !(55296 <= c2 && c2 <= 56319) ? 1 : 2;
				++i1;
			}
			ei = index2;
		} else {
			var index3 = 0;
			var count1 = 0;
			while(count1 < -endIndex && 0 < index3) {
				var c3 = this7.charCodeAt(index3 - 1);
				index3 -= !(56320 <= c3 && c3 <= 57343) ? 1 : 2;
				++count1;
			}
			ei = index3;
		}
	}
	return this1.substring(si,ei);
};
lime_text__$UTF8String_UTF8String_$Impl_$.toLowerCase = function(this1) {
	return this1.toLowerCase();
};
lime_text__$UTF8String_UTF8String_$Impl_$.toString = function(this1) {
	return this1;
};
lime_text__$UTF8String_UTF8String_$Impl_$.toUpperCase = function(this1) {
	return this1.toUpperCase();
};
lime_text__$UTF8String_UTF8String_$Impl_$.equals = function(a,b) {
	if(a == null || b == null) {
		return a == b;
	}
	return lime_text_unifill_Unifill.uCompare(a,b) == 0;
};
lime_text__$UTF8String_UTF8String_$Impl_$.lt = function(a,b) {
	if(b == null) {
		return false;
	}
	if(a == null) {
		return true;
	}
	return lime_text_unifill_Unifill.uCompare(a,b) == -1;
};
lime_text__$UTF8String_UTF8String_$Impl_$.gt = function(a,b) {
	if(a == null) {
		return false;
	}
	if(b == null) {
		return true;
	}
	return lime_text_unifill_Unifill.uCompare(a,b) == 1;
};
lime_text__$UTF8String_UTF8String_$Impl_$.lteq = function(a,b) {
	if(b == null) {
		return a == null;
	}
	if(a == null) {
		return true;
	}
	return lime_text_unifill_Unifill.uCompare(a,b) != 1;
};
lime_text__$UTF8String_UTF8String_$Impl_$.gteq = function(a,b) {
	if(a == null) {
		return b == null;
	}
	if(b == null) {
		return true;
	}
	return lime_text_unifill_Unifill.uCompare(a,b) != -1;
};
lime_text__$UTF8String_UTF8String_$Impl_$.plus = function(a,b) {
	if(a == null && b == null) {
		return null;
	}
	if(a == null) {
		return b;
	}
	if(b == null) {
		return a;
	}
	var sb_b = "";
	sb_b += Std.string(lime_text__$UTF8String_UTF8String_$Impl_$.toString(a));
	sb_b += Std.string(lime_text__$UTF8String_UTF8String_$Impl_$.toString(b));
	return sb_b;
};
lime_text__$UTF8String_UTF8String_$Impl_$.fromDynamic = function(value) {
	return Std.string(value);
};
lime_text__$UTF8String_UTF8String_$Impl_$.get_length = function(this1) {
	if(this1 == null) {
		return 0;
	} else {
		return this1.length;
	}
};
var lime_text__$UTF8String_Utf8Ext = function() { };
$hxClasses["lime.text._UTF8String.Utf8Ext"] = lime_text__$UTF8String_Utf8Ext;
lime_text__$UTF8String_Utf8Ext.__name__ = ["lime","text","_UTF8String","Utf8Ext"];
lime_text__$UTF8String_Utf8Ext.fillUpperToLowerMap = function(map) {
	var i = 0;
	var _g = 0;
	while(_g < 26) {
		var i1 = _g++;
		var v = 97 + i1;
		map.h[65 + i1] = v;
	}
	var _g1 = 0;
	while(_g1 < 23) {
		var i2 = _g1++;
		var v1 = 224 + i2;
		map.h[192 + i2] = v1;
	}
	var _g2 = 0;
	while(_g2 < 7) {
		var i3 = _g2++;
		var v2 = 248 + i3;
		map.h[216 + i3] = v2;
	}
	while(i < 48) {
		var v3 = 257 + i;
		map.h[256 + i] = v3;
		i += 2;
	}
	i = 0;
	map.h[304] = 105;
	while(i < 6) {
		var v4 = 307 + i;
		map.h[306 + i] = v4;
		i += 2;
	}
	i = 0;
	while(i < 16) {
		var v5 = 314 + i;
		map.h[313 + i] = v5;
		i += 2;
	}
	i = 0;
	while(i < 46) {
		var v6 = 331 + i;
		map.h[330 + i] = v6;
		i += 2;
	}
	i = 0;
	map.h[376] = 255;
	while(i < 6) {
		var v7 = 378 + i;
		map.h[377 + i] = v7;
		i += 2;
	}
	i = 0;
	map.h[385] = 595;
	while(i < 4) {
		var v8 = 387 + i;
		map.h[386 + i] = v8;
		i += 2;
	}
	i = 0;
	map.h[390] = 596;
	map.h[391] = 392;
	var _g3 = 0;
	while(_g3 < 2) {
		var i4 = _g3++;
		var v9 = 598 + i4;
		map.h[393 + i4] = v9;
	}
	map.h[395] = 396;
	map.h[398] = 477;
	map.h[399] = 601;
	map.h[400] = 603;
	map.h[401] = 402;
	map.h[403] = 608;
	map.h[404] = 611;
	map.h[406] = 617;
	map.h[407] = 616;
	map.h[408] = 409;
	map.h[412] = 623;
	map.h[413] = 626;
	map.h[415] = 629;
	while(i < 6) {
		var v10 = 417 + i;
		map.h[416 + i] = v10;
		i += 2;
	}
	i = 0;
	map.h[422] = 640;
	map.h[423] = 424;
	map.h[425] = 643;
	map.h[428] = 429;
	map.h[430] = 648;
	map.h[431] = 432;
	var _g4 = 0;
	while(_g4 < 2) {
		var i5 = _g4++;
		var v11 = 650 + i5;
		map.h[433 + i5] = v11;
	}
	while(i < 4) {
		var v12 = 436 + i;
		map.h[435 + i] = v12;
		i += 2;
	}
	i = 0;
	map.h[439] = 658;
	map.h[440] = 441;
	map.h[444] = 445;
	map.h[452] = 454;
	map.h[455] = 457;
	map.h[458] = 460;
	while(i < 16) {
		var v13 = 462 + i;
		map.h[461 + i] = v13;
		i += 2;
	}
	i = 0;
	while(i < 18) {
		var v14 = 479 + i;
		map.h[478 + i] = v14;
		i += 2;
	}
	i = 0;
	map.h[497] = 499;
	map.h[500] = 501;
	map.h[502] = 405;
	map.h[503] = 447;
	while(i < 40) {
		var v15 = 505 + i;
		map.h[504 + i] = v15;
		i += 2;
	}
	i = 0;
	map.h[544] = 414;
	while(i < 18) {
		var v16 = 547 + i;
		map.h[546 + i] = v16;
		i += 2;
	}
	i = 0;
	map.h[570] = 11365;
	map.h[571] = 572;
	map.h[573] = 410;
	map.h[574] = 11366;
	map.h[577] = 578;
	map.h[579] = 384;
	map.h[580] = 649;
	map.h[581] = 652;
	while(i < 10) {
		var v17 = 583 + i;
		map.h[582 + i] = v17;
		i += 2;
	}
	i = 0;
	while(i < 4) {
		var v18 = 881 + i;
		map.h[880 + i] = v18;
		i += 2;
	}
	i = 0;
	map.h[886] = 887;
	map.h[895] = 1011;
	map.h[902] = 940;
	var _g5 = 0;
	while(_g5 < 3) {
		var i6 = _g5++;
		var v19 = 941 + i6;
		map.h[904 + i6] = v19;
	}
	map.h[908] = 972;
	var _g6 = 0;
	while(_g6 < 2) {
		var i7 = _g6++;
		var v20 = 973 + i7;
		map.h[910 + i7] = v20;
	}
	var _g7 = 0;
	while(_g7 < 17) {
		var i8 = _g7++;
		var v21 = 945 + i8;
		map.h[913 + i8] = v21;
	}
	var _g8 = 0;
	while(_g8 < 9) {
		var i9 = _g8++;
		var v22 = 963 + i9;
		map.h[931 + i9] = v22;
	}
	map.h[975] = 983;
	while(i < 24) {
		var v23 = 985 + i;
		map.h[984 + i] = v23;
		i += 2;
	}
	i = 0;
	map.h[1012] = 952;
	map.h[1015] = 1016;
	map.h[1017] = 1010;
	map.h[1018] = 1019;
	var _g9 = 0;
	while(_g9 < 3) {
		var i10 = _g9++;
		var v24 = 891 + i10;
		map.h[1021 + i10] = v24;
	}
	var _g10 = 0;
	while(_g10 < 16) {
		var i11 = _g10++;
		var v25 = 1104 + i11;
		map.h[1024 + i11] = v25;
	}
	var _g11 = 0;
	while(_g11 < 32) {
		var i12 = _g11++;
		var v26 = 1072 + i12;
		map.h[1040 + i12] = v26;
	}
	while(i < 34) {
		var v27 = 1121 + i;
		map.h[1120 + i] = v27;
		i += 2;
	}
	i = 0;
	while(i < 54) {
		var v28 = 1163 + i;
		map.h[1162 + i] = v28;
		i += 2;
	}
	i = 0;
	map.h[1216] = 1231;
	while(i < 14) {
		var v29 = 1218 + i;
		map.h[1217 + i] = v29;
		i += 2;
	}
	i = 0;
	while(i < 96) {
		var v30 = 1233 + i;
		map.h[1232 + i] = v30;
		i += 2;
	}
	i = 0;
	var _g12 = 0;
	while(_g12 < 38) {
		var i13 = _g12++;
		var v31 = 1377 + i13;
		map.h[1329 + i13] = v31;
	}
	var _g13 = 0;
	while(_g13 < 38) {
		var i14 = _g13++;
		var v32 = 11520 + i14;
		map.h[4256 + i14] = v32;
	}
	map.h[4295] = 11559;
	map.h[4301] = 11565;
	var _g14 = 0;
	while(_g14 < 80) {
		var i15 = _g14++;
		var v33 = 43888 + i15;
		map.h[5024 + i15] = v33;
	}
	var _g15 = 0;
	while(_g15 < 6) {
		var i16 = _g15++;
		var v34 = 5112 + i16;
		map.h[5104 + i16] = v34;
	}
	while(i < 150) {
		var v35 = 7681 + i;
		map.h[7680 + i] = v35;
		i += 2;
	}
	i = 0;
	map.h[7838] = 223;
	while(i < 96) {
		var v36 = 7841 + i;
		map.h[7840 + i] = v36;
		i += 2;
	}
	i = 0;
	var _g16 = 0;
	while(_g16 < 8) {
		var i17 = _g16++;
		var v37 = 7936 + i17;
		map.h[7944 + i17] = v37;
	}
	var _g17 = 0;
	while(_g17 < 6) {
		var i18 = _g17++;
		var v38 = 7952 + i18;
		map.h[7960 + i18] = v38;
	}
	var _g18 = 0;
	while(_g18 < 8) {
		var i19 = _g18++;
		var v39 = 7968 + i19;
		map.h[7976 + i19] = v39;
	}
	var _g19 = 0;
	while(_g19 < 8) {
		var i20 = _g19++;
		var v40 = 7984 + i20;
		map.h[7992 + i20] = v40;
	}
	var _g20 = 0;
	while(_g20 < 6) {
		var i21 = _g20++;
		var v41 = 8000 + i21;
		map.h[8008 + i21] = v41;
	}
	while(i < 8) {
		var v42 = 8017 + i;
		map.h[8025 + i] = v42;
		i += 2;
	}
	i = 0;
	var _g21 = 0;
	while(_g21 < 8) {
		var i22 = _g21++;
		var v43 = 8032 + i22;
		map.h[8040 + i22] = v43;
	}
	var _g22 = 0;
	while(_g22 < 2) {
		var i23 = _g22++;
		var v44 = 8112 + i23;
		map.h[8120 + i23] = v44;
	}
	var _g23 = 0;
	while(_g23 < 2) {
		var i24 = _g23++;
		var v45 = 8048 + i24;
		map.h[8122 + i24] = v45;
	}
	var _g24 = 0;
	while(_g24 < 4) {
		var i25 = _g24++;
		var v46 = 8050 + i25;
		map.h[8136 + i25] = v46;
	}
	var _g25 = 0;
	while(_g25 < 2) {
		var i26 = _g25++;
		var v47 = 8144 + i26;
		map.h[8152 + i26] = v47;
	}
	var _g26 = 0;
	while(_g26 < 2) {
		var i27 = _g26++;
		var v48 = 8054 + i27;
		map.h[8154 + i27] = v48;
	}
	var _g27 = 0;
	while(_g27 < 2) {
		var i28 = _g27++;
		var v49 = 8160 + i28;
		map.h[8168 + i28] = v49;
	}
	var _g28 = 0;
	while(_g28 < 2) {
		var i29 = _g28++;
		var v50 = 8058 + i29;
		map.h[8170 + i29] = v50;
	}
	map.h[8172] = 8165;
	var _g29 = 0;
	while(_g29 < 2) {
		var i30 = _g29++;
		var v51 = 8056 + i30;
		map.h[8184 + i30] = v51;
	}
	var _g30 = 0;
	while(_g30 < 2) {
		var i31 = _g30++;
		var v52 = 8060 + i31;
		map.h[8186 + i31] = v52;
	}
	map.h[8486] = 969;
	map.h[8490] = 107;
	map.h[8491] = 229;
	map.h[8498] = 8526;
	map.h[8579] = 8580;
	var _g31 = 0;
	while(_g31 < 47) {
		var i32 = _g31++;
		var v53 = 11312 + i32;
		map.h[11264 + i32] = v53;
	}
	map.h[11360] = 11361;
	map.h[11362] = 619;
	map.h[11363] = 7549;
	map.h[11364] = 637;
	while(i < 6) {
		var v54 = 11368 + i;
		map.h[11367 + i] = v54;
		i += 2;
	}
	i = 0;
	map.h[11373] = 593;
	map.h[11374] = 625;
	map.h[11375] = 592;
	map.h[11376] = 594;
	map.h[11378] = 11379;
	map.h[11381] = 11382;
	var _g32 = 0;
	while(_g32 < 2) {
		var i33 = _g32++;
		var v55 = 575 + i33;
		map.h[11390 + i33] = v55;
	}
	while(i < 100) {
		var v56 = 11393 + i;
		map.h[11392 + i] = v56;
		i += 2;
	}
	i = 0;
	while(i < 4) {
		var v57 = 11500 + i;
		map.h[11499 + i] = v57;
		i += 2;
	}
	i = 0;
	map.h[11506] = 11507;
	while(i < 46) {
		var v58 = 42561 + i;
		map.h[42560 + i] = v58;
		i += 2;
	}
	i = 0;
	while(i < 28) {
		var v59 = 42625 + i;
		map.h[42624 + i] = v59;
		i += 2;
	}
	i = 0;
	while(i < 14) {
		var v60 = 42787 + i;
		map.h[42786 + i] = v60;
		i += 2;
	}
	i = 0;
	while(i < 62) {
		var v61 = 42803 + i;
		map.h[42802 + i] = v61;
		i += 2;
	}
	i = 0;
	while(i < 4) {
		var v62 = 42874 + i;
		map.h[42873 + i] = v62;
		i += 2;
	}
	i = 0;
	map.h[42877] = 7545;
	while(i < 10) {
		var v63 = 42879 + i;
		map.h[42878 + i] = v63;
		i += 2;
	}
	i = 0;
	map.h[42891] = 42892;
	map.h[42893] = 613;
	while(i < 4) {
		var v64 = 42897 + i;
		map.h[42896 + i] = v64;
		i += 2;
	}
	i = 0;
	while(i < 20) {
		var v65 = 42903 + i;
		map.h[42902 + i] = v65;
		i += 2;
	}
	i = 0;
	map.h[42922] = 614;
	map.h[42923] = 604;
	map.h[42924] = 609;
	map.h[42925] = 620;
	map.h[42926] = 618;
	map.h[42928] = 670;
	map.h[42929] = 647;
	map.h[42930] = 669;
	map.h[42931] = 43859;
	while(i < 4) {
		var v66 = 42933 + i;
		map.h[42932 + i] = v66;
		i += 2;
	}
	i = 0;
	var _g33 = 0;
	while(_g33 < 26) {
		var i34 = _g33++;
		var v67 = 65345 + i34;
		map.h[65313 + i34] = v67;
	}
	var _g34 = 0;
	while(_g34 < 40) {
		var i35 = _g34++;
		var v68 = 66600 + i35;
		map.h[66560 + i35] = v68;
	}
	var _g35 = 0;
	while(_g35 < 36) {
		var i36 = _g35++;
		var v69 = 66776 + i36;
		map.h[66736 + i36] = v69;
	}
	var _g36 = 0;
	while(_g36 < 51) {
		var i37 = _g36++;
		var v70 = 68800 + i37;
		map.h[68736 + i37] = v70;
	}
	var _g37 = 0;
	while(_g37 < 32) {
		var i38 = _g37++;
		var v71 = 71872 + i38;
		map.h[71840 + i38] = v71;
	}
	var _g38 = 0;
	while(_g38 < 34) {
		var i39 = _g38++;
		var v72 = 125218 + i39;
		map.h[125184 + i39] = v72;
	}
};
lime_text__$UTF8String_Utf8Ext.fillLowerToUpperMap = function(map) {
	var i = 0;
	var _g = 0;
	while(_g < 26) {
		var i1 = _g++;
		var v = 65 + i1;
		map.h[97 + i1] = v;
	}
	map.h[181] = 924;
	var _g1 = 0;
	while(_g1 < 23) {
		var i2 = _g1++;
		var v1 = 192 + i2;
		map.h[224 + i2] = v1;
	}
	var _g2 = 0;
	while(_g2 < 7) {
		var i3 = _g2++;
		var v2 = 216 + i3;
		map.h[248 + i3] = v2;
	}
	map.h[255] = 376;
	while(i < 48) {
		var v3 = 256 + i;
		map.h[257 + i] = v3;
		i += 2;
	}
	i = 0;
	map.h[305] = 73;
	while(i < 6) {
		var v4 = 306 + i;
		map.h[307 + i] = v4;
		i += 2;
	}
	i = 0;
	while(i < 16) {
		var v5 = 313 + i;
		map.h[314 + i] = v5;
		i += 2;
	}
	i = 0;
	while(i < 46) {
		var v6 = 330 + i;
		map.h[331 + i] = v6;
		i += 2;
	}
	i = 0;
	while(i < 6) {
		var v7 = 377 + i;
		map.h[378 + i] = v7;
		i += 2;
	}
	i = 0;
	map.h[383] = 83;
	map.h[384] = 579;
	while(i < 4) {
		var v8 = 386 + i;
		map.h[387 + i] = v8;
		i += 2;
	}
	i = 0;
	map.h[392] = 391;
	map.h[396] = 395;
	map.h[402] = 401;
	map.h[405] = 502;
	map.h[409] = 408;
	map.h[410] = 573;
	map.h[414] = 544;
	while(i < 6) {
		var v9 = 416 + i;
		map.h[417 + i] = v9;
		i += 2;
	}
	i = 0;
	map.h[424] = 423;
	map.h[429] = 428;
	map.h[432] = 431;
	while(i < 4) {
		var v10 = 435 + i;
		map.h[436 + i] = v10;
		i += 2;
	}
	i = 0;
	map.h[441] = 440;
	map.h[445] = 444;
	map.h[447] = 503;
	map.h[454] = 452;
	map.h[457] = 455;
	map.h[460] = 458;
	while(i < 16) {
		var v11 = 461 + i;
		map.h[462 + i] = v11;
		i += 2;
	}
	i = 0;
	map.h[477] = 398;
	while(i < 18) {
		var v12 = 478 + i;
		map.h[479 + i] = v12;
		i += 2;
	}
	i = 0;
	map.h[496] = 74;
	map.h[499] = 497;
	map.h[501] = 500;
	while(i < 40) {
		var v13 = 504 + i;
		map.h[505 + i] = v13;
		i += 2;
	}
	i = 0;
	while(i < 18) {
		var v14 = 546 + i;
		map.h[547 + i] = v14;
		i += 2;
	}
	i = 0;
	map.h[572] = 571;
	var _g3 = 0;
	while(_g3 < 2) {
		var i4 = _g3++;
		var v15 = 11390 + i4;
		map.h[575 + i4] = v15;
	}
	map.h[578] = 577;
	while(i < 10) {
		var v16 = 582 + i;
		map.h[583 + i] = v16;
		i += 2;
	}
	i = 0;
	map.h[592] = 11375;
	map.h[593] = 11373;
	map.h[594] = 11376;
	map.h[595] = 385;
	map.h[596] = 390;
	var _g4 = 0;
	while(_g4 < 2) {
		var i5 = _g4++;
		var v17 = 393 + i5;
		map.h[598 + i5] = v17;
	}
	map.h[601] = 399;
	map.h[603] = 400;
	map.h[604] = 42923;
	map.h[608] = 403;
	map.h[609] = 42924;
	map.h[611] = 404;
	map.h[613] = 42893;
	map.h[614] = 42922;
	map.h[616] = 407;
	map.h[617] = 406;
	map.h[618] = 42926;
	map.h[619] = 11362;
	map.h[620] = 42925;
	map.h[623] = 412;
	map.h[625] = 11374;
	map.h[626] = 413;
	map.h[629] = 415;
	map.h[637] = 11364;
	map.h[640] = 422;
	map.h[643] = 425;
	map.h[647] = 42929;
	map.h[648] = 430;
	map.h[649] = 580;
	var _g5 = 0;
	while(_g5 < 2) {
		var i6 = _g5++;
		var v18 = 433 + i6;
		map.h[650 + i6] = v18;
	}
	map.h[652] = 581;
	map.h[658] = 439;
	map.h[669] = 42930;
	map.h[670] = 42928;
	while(i < 4) {
		var v19 = 880 + i;
		map.h[881 + i] = v19;
		i += 2;
	}
	i = 0;
	map.h[887] = 886;
	var _g6 = 0;
	while(_g6 < 3) {
		var i7 = _g6++;
		var v20 = 1021 + i7;
		map.h[891 + i7] = v20;
	}
	map.h[912] = 938;
	map.h[940] = 902;
	var _g7 = 0;
	while(_g7 < 3) {
		var i8 = _g7++;
		var v21 = 904 + i8;
		map.h[941 + i8] = v21;
	}
	map.h[944] = 939;
	var _g8 = 0;
	while(_g8 < 17) {
		var i9 = _g8++;
		var v22 = 913 + i9;
		map.h[945 + i9] = v22;
	}
	map.h[962] = 931;
	var _g9 = 0;
	while(_g9 < 9) {
		var i10 = _g9++;
		var v23 = 931 + i10;
		map.h[963 + i10] = v23;
	}
	map.h[972] = 908;
	var _g10 = 0;
	while(_g10 < 2) {
		var i11 = _g10++;
		var v24 = 910 + i11;
		map.h[973 + i11] = v24;
	}
	map.h[976] = 914;
	map.h[977] = 920;
	map.h[981] = 934;
	map.h[982] = 928;
	map.h[983] = 975;
	while(i < 24) {
		var v25 = 984 + i;
		map.h[985 + i] = v25;
		i += 2;
	}
	i = 0;
	map.h[1008] = 922;
	map.h[1009] = 929;
	map.h[1010] = 1017;
	map.h[1011] = 895;
	map.h[1013] = 917;
	map.h[1016] = 1015;
	map.h[1019] = 1018;
	var _g11 = 0;
	while(_g11 < 32) {
		var i12 = _g11++;
		var v26 = 1040 + i12;
		map.h[1072 + i12] = v26;
	}
	var _g12 = 0;
	while(_g12 < 16) {
		var i13 = _g12++;
		var v27 = 1024 + i13;
		map.h[1104 + i13] = v27;
	}
	while(i < 34) {
		var v28 = 1120 + i;
		map.h[1121 + i] = v28;
		i += 2;
	}
	i = 0;
	while(i < 54) {
		var v29 = 1162 + i;
		map.h[1163 + i] = v29;
		i += 2;
	}
	i = 0;
	while(i < 14) {
		var v30 = 1217 + i;
		map.h[1218 + i] = v30;
		i += 2;
	}
	i = 0;
	map.h[1231] = 1216;
	while(i < 96) {
		var v31 = 1232 + i;
		map.h[1233 + i] = v31;
		i += 2;
	}
	i = 0;
	var _g13 = 0;
	while(_g13 < 38) {
		var i14 = _g13++;
		var v32 = 1329 + i14;
		map.h[1377 + i14] = v32;
	}
	var _g14 = 0;
	while(_g14 < 6) {
		var i15 = _g14++;
		var v33 = 5104 + i15;
		map.h[5112 + i15] = v33;
	}
	map.h[7296] = 1042;
	map.h[7297] = 1044;
	map.h[7298] = 1054;
	var _g15 = 0;
	while(_g15 < 2) {
		var i16 = _g15++;
		var v34 = 1057 + i16;
		map.h[7299 + i16] = v34;
	}
	map.h[7301] = 1058;
	map.h[7302] = 1066;
	map.h[7303] = 1122;
	map.h[7304] = 42570;
	map.h[7545] = 42877;
	map.h[7549] = 11363;
	while(i < 150) {
		var v35 = 7680 + i;
		map.h[7681 + i] = v35;
		i += 2;
	}
	i = 0;
	map.h[7830] = 72;
	map.h[7831] = 84;
	map.h[7832] = 87;
	map.h[7833] = 89;
	map.h[7835] = 7776;
	while(i < 96) {
		var v36 = 7840 + i;
		map.h[7841 + i] = v36;
		i += 2;
	}
	i = 0;
	var _g16 = 0;
	while(_g16 < 8) {
		var i17 = _g16++;
		var v37 = 7944 + i17;
		map.h[7936 + i17] = v37;
	}
	var _g17 = 0;
	while(_g17 < 6) {
		var i18 = _g17++;
		var v38 = 7960 + i18;
		map.h[7952 + i18] = v38;
	}
	var _g18 = 0;
	while(_g18 < 8) {
		var i19 = _g18++;
		var v39 = 7976 + i19;
		map.h[7968 + i19] = v39;
	}
	var _g19 = 0;
	while(_g19 < 8) {
		var i20 = _g19++;
		var v40 = 7992 + i20;
		map.h[7984 + i20] = v40;
	}
	var _g20 = 0;
	while(_g20 < 6) {
		var i21 = _g20++;
		var v41 = 8008 + i21;
		map.h[8000 + i21] = v41;
	}
	map.h[8016] = 933;
	map.h[8017] = 8025;
	map.h[8018] = 933;
	map.h[8019] = 8027;
	map.h[8020] = 933;
	map.h[8021] = 8029;
	map.h[8022] = 933;
	map.h[8023] = 8031;
	var _g21 = 0;
	while(_g21 < 8) {
		var i22 = _g21++;
		var v42 = 8040 + i22;
		map.h[8032 + i22] = v42;
	}
	var _g22 = 0;
	while(_g22 < 2) {
		var i23 = _g22++;
		var v43 = 8122 + i23;
		map.h[8048 + i23] = v43;
	}
	var _g23 = 0;
	while(_g23 < 4) {
		var i24 = _g23++;
		var v44 = 8136 + i24;
		map.h[8050 + i24] = v44;
	}
	var _g24 = 0;
	while(_g24 < 2) {
		var i25 = _g24++;
		var v45 = 8154 + i25;
		map.h[8054 + i25] = v45;
	}
	var _g25 = 0;
	while(_g25 < 2) {
		var i26 = _g25++;
		var v46 = 8184 + i26;
		map.h[8056 + i26] = v46;
	}
	var _g26 = 0;
	while(_g26 < 2) {
		var i27 = _g26++;
		var v47 = 8170 + i27;
		map.h[8058 + i27] = v47;
	}
	var _g27 = 0;
	while(_g27 < 2) {
		var i28 = _g27++;
		var v48 = 8186 + i28;
		map.h[8060 + i28] = v48;
	}
	var _g28 = 0;
	while(_g28 < 8) {
		var i29 = _g28++;
		var v49 = 8072 + i29;
		map.h[8064 + i29] = v49;
	}
	var _g29 = 0;
	while(_g29 < 8) {
		var i30 = _g29++;
		var v50 = 8088 + i30;
		map.h[8080 + i30] = v50;
	}
	var _g30 = 0;
	while(_g30 < 8) {
		var i31 = _g30++;
		var v51 = 8104 + i31;
		map.h[8096 + i31] = v51;
	}
	var _g31 = 0;
	while(_g31 < 3) {
		var i32 = _g31++;
		var v52 = 8120 + i32;
		map.h[8112 + i32] = v52;
	}
	map.h[8115] = 8124;
	map.h[8116] = 902;
	map.h[8118] = 913;
	map.h[8119] = 913;
	map.h[8126] = 921;
	map.h[8130] = 8138;
	map.h[8131] = 8140;
	map.h[8132] = 905;
	map.h[8134] = 919;
	map.h[8135] = 919;
	var _g32 = 0;
	while(_g32 < 2) {
		var i33 = _g32++;
		var v53 = 8152 + i33;
		map.h[8144 + i33] = v53;
	}
	map.h[8146] = 938;
	map.h[8147] = 938;
	map.h[8150] = 921;
	map.h[8151] = 938;
	var _g33 = 0;
	while(_g33 < 2) {
		var i34 = _g33++;
		var v54 = 8168 + i34;
		map.h[8160 + i34] = v54;
	}
	map.h[8162] = 939;
	map.h[8163] = 939;
	map.h[8164] = 929;
	map.h[8165] = 8172;
	map.h[8166] = 933;
	map.h[8167] = 939;
	map.h[8178] = 8186;
	map.h[8179] = 8188;
	map.h[8180] = 911;
	map.h[8182] = 937;
	map.h[8183] = 937;
	map.h[8526] = 8498;
	map.h[8580] = 8579;
	var _g34 = 0;
	while(_g34 < 47) {
		var i35 = _g34++;
		var v55 = 11264 + i35;
		map.h[11312 + i35] = v55;
	}
	map.h[11361] = 11360;
	map.h[11365] = 570;
	map.h[11366] = 574;
	while(i < 6) {
		var v56 = 11367 + i;
		map.h[11368 + i] = v56;
		i += 2;
	}
	i = 0;
	map.h[11379] = 11378;
	map.h[11382] = 11381;
	while(i < 100) {
		var v57 = 11392 + i;
		map.h[11393 + i] = v57;
		i += 2;
	}
	i = 0;
	while(i < 4) {
		var v58 = 11499 + i;
		map.h[11500 + i] = v58;
		i += 2;
	}
	i = 0;
	map.h[11507] = 11506;
	var _g35 = 0;
	while(_g35 < 38) {
		var i36 = _g35++;
		var v59 = 4256 + i36;
		map.h[11520 + i36] = v59;
	}
	map.h[11559] = 4295;
	map.h[11565] = 4301;
	while(i < 46) {
		var v60 = 42560 + i;
		map.h[42561 + i] = v60;
		i += 2;
	}
	i = 0;
	while(i < 28) {
		var v61 = 42624 + i;
		map.h[42625 + i] = v61;
		i += 2;
	}
	i = 0;
	while(i < 14) {
		var v62 = 42786 + i;
		map.h[42787 + i] = v62;
		i += 2;
	}
	i = 0;
	while(i < 62) {
		var v63 = 42802 + i;
		map.h[42803 + i] = v63;
		i += 2;
	}
	i = 0;
	while(i < 4) {
		var v64 = 42873 + i;
		map.h[42874 + i] = v64;
		i += 2;
	}
	i = 0;
	while(i < 10) {
		var v65 = 42878 + i;
		map.h[42879 + i] = v65;
		i += 2;
	}
	i = 0;
	map.h[42892] = 42891;
	while(i < 4) {
		var v66 = 42896 + i;
		map.h[42897 + i] = v66;
		i += 2;
	}
	i = 0;
	while(i < 20) {
		var v67 = 42902 + i;
		map.h[42903 + i] = v67;
		i += 2;
	}
	i = 0;
	while(i < 4) {
		var v68 = 42932 + i;
		map.h[42933 + i] = v68;
		i += 2;
	}
	i = 0;
	map.h[43859] = 42931;
	var _g36 = 0;
	while(_g36 < 80) {
		var i37 = _g36++;
		var v69 = 5024 + i37;
		map.h[43888 + i37] = v69;
	}
	var _g37 = 0;
	while(_g37 < 26) {
		var i38 = _g37++;
		var v70 = 65313 + i38;
		map.h[65345 + i38] = v70;
	}
	var _g38 = 0;
	while(_g38 < 40) {
		var i39 = _g38++;
		var v71 = 66560 + i39;
		map.h[66600 + i39] = v71;
	}
	var _g39 = 0;
	while(_g39 < 36) {
		var i40 = _g39++;
		var v72 = 66736 + i40;
		map.h[66776 + i40] = v72;
	}
	var _g40 = 0;
	while(_g40 < 51) {
		var i41 = _g40++;
		var v73 = 68736 + i41;
		map.h[68800 + i41] = v73;
	}
	var _g41 = 0;
	while(_g41 < 32) {
		var i42 = _g41++;
		var v74 = 71840 + i42;
		map.h[71872 + i42] = v74;
	}
	var _g42 = 0;
	while(_g42 < 34) {
		var i43 = _g42++;
		var v75 = 125184 + i43;
		map.h[125218 + i43] = v75;
	}
};
var lime_text_unifill__$CodePoint_CodePoint_$Impl_$ = {};
$hxClasses["lime.text.unifill._CodePoint.CodePoint_Impl_"] = lime_text_unifill__$CodePoint_CodePoint_$Impl_$;
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.__name__ = ["lime","text","unifill","_CodePoint","CodePoint_Impl_"];
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.fromInt = function(code) {
	if(!(0 <= code && code <= 1114111 && !(55296 <= code && code <= 56319) && !(56320 <= code && code <= 57343))) {
		throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodePoint(code));
	}
	var this1 = code;
	return this1;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.cons = function(a,b) {
	var this1;
	if(a <= 65535) {
		var this2 = String.fromCharCode(a);
		var this3 = this2;
		this1 = this3;
	} else {
		var this4 = String.fromCharCode((a >> 10) + 55232) + String.fromCharCode(a & 1023 | 56320);
		var this5 = this4;
		this1 = this5;
	}
	return this1 + b;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.snoc = function(a,b) {
	var this1;
	if(b <= 65535) {
		var this2 = String.fromCharCode(b);
		var this3 = this2;
		this1 = this3;
	} else {
		var this4 = String.fromCharCode((b >> 10) + 55232) + String.fromCharCode(b & 1023 | 56320);
		var this5 = this4;
		this1 = this5;
	}
	return a + this1;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.addInt = function(a,b) {
	var code = a + b;
	if(!(0 <= code && code <= 1114111 && !(55296 <= code && code <= 56319) && !(56320 <= code && code <= 57343))) {
		throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodePoint(code));
	}
	var this1 = code;
	return this1;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.sub = function(a,b) {
	return a - b;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.subInt = function(a,b) {
	var code = a - b;
	if(!(0 <= code && code <= 1114111 && !(55296 <= code && code <= 56319) && !(56320 <= code && code <= 57343))) {
		throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodePoint(code));
	}
	var this1 = code;
	return this1;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$._new = function(code) {
	var this1 = code;
	return this1;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.toString = function(this1) {
	var this2;
	if(this1 <= 65535) {
		var this3 = String.fromCharCode(this1);
		var this4 = this3;
		this2 = this4;
	} else {
		var this5 = String.fromCharCode((this1 >> 10) + 55232) + String.fromCharCode(this1 & 1023 | 56320);
		var this6 = this5;
		this2 = this6;
	}
	return this2;
};
lime_text_unifill__$CodePoint_CodePoint_$Impl_$.toInt = function(this1) {
	return this1;
};
var lime_text_unifill_CodePointIter = function(s) {
	this.i = 0;
	this.string = s;
	this.index = 0;
	this.endIndex = s.length;
};
$hxClasses["lime.text.unifill.CodePointIter"] = lime_text_unifill_CodePointIter;
lime_text_unifill_CodePointIter.__name__ = ["lime","text","unifill","CodePointIter"];
lime_text_unifill_CodePointIter.prototype = {
	string: null
	,index: null
	,endIndex: null
	,hasNext: function() {
		return this.index < this.endIndex;
	}
	,i: null
	,next: function() {
		this.i = this.index;
		var tmp = this;
		var tmp1 = tmp.index;
		var this1 = this.string;
		var this2 = this1;
		var c = this2.charCodeAt(this.index);
		tmp.index = tmp1 + (!(55296 <= c && c <= 56319) ? 1 : 2);
		var this3 = this.string;
		var this4 = this3;
		return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt(this4,this.i);
	}
	,__class__: lime_text_unifill_CodePointIter
};
var lime_text_unifill_Exception = function() {
};
$hxClasses["lime.text.unifill.Exception"] = lime_text_unifill_Exception;
lime_text_unifill_Exception.__name__ = ["lime","text","unifill","Exception"];
lime_text_unifill_Exception.prototype = {
	toString: function() {
		throw new js__$Boot_HaxeError(null);
	}
	,__class__: lime_text_unifill_Exception
};
var lime_text_unifill_InvalidCodePoint = function(code) {
	lime_text_unifill_Exception.call(this);
	this.code = code;
};
$hxClasses["lime.text.unifill.InvalidCodePoint"] = lime_text_unifill_InvalidCodePoint;
lime_text_unifill_InvalidCodePoint.__name__ = ["lime","text","unifill","InvalidCodePoint"];
lime_text_unifill_InvalidCodePoint.__super__ = lime_text_unifill_Exception;
lime_text_unifill_InvalidCodePoint.prototype = $extend(lime_text_unifill_Exception.prototype,{
	code: null
	,toString: function() {
		return "InvalidCodePoint(code: " + this.code + ")";
	}
	,__class__: lime_text_unifill_InvalidCodePoint
});
var lime_text_unifill_InvalidCodeUnitSequence = function(index) {
	lime_text_unifill_Exception.call(this);
	this.index = index;
};
$hxClasses["lime.text.unifill.InvalidCodeUnitSequence"] = lime_text_unifill_InvalidCodeUnitSequence;
lime_text_unifill_InvalidCodeUnitSequence.__name__ = ["lime","text","unifill","InvalidCodeUnitSequence"];
lime_text_unifill_InvalidCodeUnitSequence.__super__ = lime_text_unifill_Exception;
lime_text_unifill_InvalidCodeUnitSequence.prototype = $extend(lime_text_unifill_Exception.prototype,{
	index: null
	,toString: function() {
		return "InvalidCodeUnitSequence(index: " + this.index + ")";
	}
	,__class__: lime_text_unifill_InvalidCodeUnitSequence
});
var lime_text_unifill_InternalEncoding = function() { };
$hxClasses["lime.text.unifill.InternalEncoding"] = lime_text_unifill_InternalEncoding;
lime_text_unifill_InternalEncoding.__name__ = ["lime","text","unifill","InternalEncoding"];
lime_text_unifill_InternalEncoding.__properties__ = {get_internalEncoding:"get_internalEncoding"};
lime_text_unifill_InternalEncoding.get_internalEncoding = function() {
	return "UTF-16";
};
lime_text_unifill_InternalEncoding.codeUnitAt = function(s,index) {
	var this1 = s;
	var this2 = this1;
	return this2.charCodeAt(index);
};
lime_text_unifill_InternalEncoding.codePointAt = function(s,index) {
	var this1 = s;
	var this2 = this1;
	return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt(this2,index);
};
lime_text_unifill_InternalEncoding.charAt = function(s,index) {
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var c = this3.charCodeAt(index);
	var this4 = HxOverrides.substr(this3,index,!(55296 <= c && c <= 56319) ? 1 : 2);
	var this5 = this4;
	return this5;
};
lime_text_unifill_InternalEncoding.codePointCount = function(s,beginIndex,endIndex) {
	var this1 = s;
	var this2 = this1;
	return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount(this2,beginIndex,endIndex);
};
lime_text_unifill_InternalEncoding.codePointWidthAt = function(s,index) {
	var this1 = s;
	var this2 = this1;
	var c = this2.charCodeAt(index);
	if(!(55296 <= c && c <= 56319)) {
		return 1;
	} else {
		return 2;
	}
};
lime_text_unifill_InternalEncoding.codePointWidthBefore = function(s,index) {
	var this1 = s;
	var this2 = this1;
	var c = this2.charCodeAt(index - 1);
	if(!(56320 <= c && c <= 57343)) {
		return 1;
	} else {
		return 2;
	}
};
lime_text_unifill_InternalEncoding.offsetByCodePoints = function(s,index,codePointOffset) {
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	if(codePointOffset >= 0) {
		var index1 = index;
		var len = this3.length;
		var i = 0;
		while(i < codePointOffset && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		return index1;
	} else {
		var index2 = index;
		var count = 0;
		while(count < -codePointOffset && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		return index2;
	}
};
lime_text_unifill_InternalEncoding.backwardOffsetByCodePoints = function(s,index,codePointOffset) {
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var codePointOffset1 = -codePointOffset;
	if(codePointOffset1 >= 0) {
		var index1 = index;
		var len = this3.length;
		var i = 0;
		while(i < codePointOffset1 && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		return index1;
	} else {
		var index2 = index;
		var count = 0;
		while(count < -codePointOffset1 && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		return index2;
	}
};
lime_text_unifill_InternalEncoding.fromCodePoint = function(codePoint) {
	var this1;
	if(codePoint <= 65535) {
		var this2 = String.fromCharCode(codePoint);
		var this3 = this2;
		this1 = this3;
	} else {
		var this4 = String.fromCharCode((codePoint >> 10) + 55232) + String.fromCharCode(codePoint & 1023 | 56320);
		var this5 = this4;
		this1 = this5;
	}
	return this1;
};
lime_text_unifill_InternalEncoding.fromCodePoints = function(codePoints) {
	var this1 = new StringBuf();
	var buf = this1;
	var c = $iterator(codePoints)();
	while(c.hasNext()) {
		var c1 = c.next();
		if(c1 <= 65535) {
			buf.b += String.fromCharCode(c1);
		} else {
			buf.b += String.fromCharCode((c1 >> 10) + 55232);
			buf.b += String.fromCharCode(c1 & 1023 | 56320);
		}
	}
	var this2 = buf.b;
	var this3 = this2;
	return this3;
};
lime_text_unifill_InternalEncoding.validate = function(s) {
	var this1 = s;
	var this2 = this1;
	lime_text_unifill__$Utf16_Utf16_$Impl_$.validate(this2);
};
lime_text_unifill_InternalEncoding.isValidString = function(s) {
	try {
		var this1 = s;
		var this2 = this1;
		lime_text_unifill__$Utf16_Utf16_$Impl_$.validate(this2);
		return true;
	} catch( e ) {
		haxe_CallStack.lastException = e;
		if (e instanceof js__$Boot_HaxeError) e = e.val;
		if( js_Boot.__instanceof(e,lime_text_unifill_InvalidCodeUnitSequence) ) {
			return false;
		} else throw(e);
	}
};
lime_text_unifill_InternalEncoding.encodeWith = function(f,c) {
	if(c <= 65535) {
		f(c);
	} else {
		f((c >> 10) + 55232);
		f(c & 1023 | 56320);
	}
};
var lime_text_unifill_InternalEncodingIter = function(s,beginIndex,endIndex) {
	this.i = 0;
	this.string = s;
	this.index = beginIndex;
	this.endIndex = endIndex;
};
$hxClasses["lime.text.unifill.InternalEncodingIter"] = lime_text_unifill_InternalEncodingIter;
lime_text_unifill_InternalEncodingIter.__name__ = ["lime","text","unifill","InternalEncodingIter"];
lime_text_unifill_InternalEncodingIter.prototype = {
	string: null
	,index: null
	,endIndex: null
	,hasNext: function() {
		return this.index < this.endIndex;
	}
	,i: null
	,next: function() {
		this.i = this.index;
		var tmp = this;
		var tmp1 = tmp.index;
		var this1 = this.string;
		var this2 = this1;
		var c = this2.charCodeAt(this.index);
		tmp.index = tmp1 + (!(55296 <= c && c <= 56319) ? 1 : 2);
		return this.i;
	}
	,__class__: lime_text_unifill_InternalEncodingIter
};
var lime_text_unifill_Unicode = function() { };
$hxClasses["lime.text.unifill.Unicode"] = lime_text_unifill_Unicode;
lime_text_unifill_Unicode.__name__ = ["lime","text","unifill","Unicode"];
lime_text_unifill_Unicode.decodeSurrogate = function(hi,lo) {
	return hi - 55232 << 10 | lo & 1023;
};
lime_text_unifill_Unicode.encodeHighSurrogate = function(c) {
	return (c >> 10) + 55232;
};
lime_text_unifill_Unicode.encodeLowSurrogate = function(c) {
	return c & 1023 | 56320;
};
lime_text_unifill_Unicode.isScalar = function(code) {
	if(0 <= code && code <= 1114111 && !(55296 <= code && code <= 56319)) {
		return !(56320 <= code && code <= 57343);
	} else {
		return false;
	}
};
lime_text_unifill_Unicode.isHighSurrogate = function(code) {
	if(55296 <= code) {
		return code <= 56319;
	} else {
		return false;
	}
};
lime_text_unifill_Unicode.isLowSurrogate = function(code) {
	if(56320 <= code) {
		return code <= 57343;
	} else {
		return false;
	}
};
var lime_text_unifill_Unifill = function() { };
$hxClasses["lime.text.unifill.Unifill"] = lime_text_unifill_Unifill;
lime_text_unifill_Unifill.__name__ = ["lime","text","unifill","Unifill"];
lime_text_unifill_Unifill.uLength = function(s) {
	var this1 = s;
	var this2 = this1;
	return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount(this2,0,s.length);
};
lime_text_unifill_Unifill.uCharAt = function(s,index) {
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var i;
	if(index >= 0) {
		var index1 = 0;
		var len = this3.length;
		var i1 = 0;
		while(i1 < index && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i1;
		}
		i = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -index && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		i = index2;
	}
	var this4 = s;
	var this5 = this4;
	var this6 = this5;
	var c2 = this6.charCodeAt(i);
	var this7 = HxOverrides.substr(this6,i,!(55296 <= c2 && c2 <= 56319) ? 1 : 2);
	var this8 = this7;
	return this8;
};
lime_text_unifill_Unifill.uCharCodeAt = function(s,index) {
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var i;
	if(index >= 0) {
		var index1 = 0;
		var len = this3.length;
		var i1 = 0;
		while(i1 < index && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i1;
		}
		i = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -index && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		i = index2;
	}
	var this4 = s;
	var this5 = this4;
	return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt(this5,i);
};
lime_text_unifill_Unifill.uCodePointAt = function(s,index) {
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var i;
	if(index >= 0) {
		var index1 = 0;
		var len = this3.length;
		var i1 = 0;
		while(i1 < index && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i1;
		}
		i = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -index && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		i = index2;
	}
	var this4 = s;
	var this5 = this4;
	return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt(this5,i);
};
lime_text_unifill_Unifill.uIndexOf = function(s,value,startIndex) {
	if(startIndex == null) {
		startIndex = 0;
	}
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var index;
	if(startIndex >= 0) {
		var index1 = 0;
		var len = this3.length;
		var i = 0;
		while(i < startIndex && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		index = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -startIndex && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		index = index2;
	}
	var index3 = s.indexOf(value,index);
	if(index3 >= 0) {
		var this4 = s;
		var this5 = this4;
		return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount(this5,0,index3);
	} else {
		return -1;
	}
};
lime_text_unifill_Unifill.uLastIndexOf = function(s,value,startIndex) {
	if(startIndex == null) {
		startIndex = s.length - 1;
	}
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var index;
	if(startIndex >= 0) {
		var index1 = 0;
		var len = this3.length;
		var i = 0;
		while(i < startIndex && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		index = index1;
	} else {
		var index2 = 0;
		var count = 0;
		while(count < -startIndex && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		index = index2;
	}
	var index3 = s.lastIndexOf(value,index);
	if(index3 >= 0) {
		var this4 = s;
		var this5 = this4;
		return lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount(this5,0,index3);
	} else {
		return -1;
	}
};
lime_text_unifill_Unifill.uSplit = function(s,delimiter) {
	if(delimiter.length == 0) {
		var _g = [];
		var _g1_string;
		var _g1_index;
		var _g1_i;
		var _g1_endIndex;
		_g1_i = 0;
		_g1_string = s;
		_g1_index = 0;
		_g1_endIndex = s.length;
		while(_g1_index < _g1_endIndex) {
			_g1_i = _g1_index;
			var this1 = _g1_string;
			var this2 = this1;
			var c = this2.charCodeAt(_g1_index);
			_g1_index += !(55296 <= c && c <= 56319) ? 1 : 2;
			var i = _g1_i;
			var this3 = s;
			var this4 = this3;
			var this5 = this4;
			var c1 = this5.charCodeAt(i);
			var this6 = HxOverrides.substr(this5,i,!(55296 <= c1 && c1 <= 56319) ? 1 : 2);
			var this7 = this6;
			_g.push(this7);
		}
		return _g;
	} else {
		return s.split(delimiter);
	}
};
lime_text_unifill_Unifill.uSubstr = function(s,startIndex,length) {
	var index = startIndex >= 0 ? 0 : s.length;
	var this1 = s;
	var this2 = this1;
	var this3 = this2;
	var si;
	if(startIndex >= 0) {
		var index1 = index;
		var len = this3.length;
		var i = 0;
		while(i < startIndex && index1 < len) {
			var c = this3.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		si = index1;
	} else {
		var index2 = index;
		var count = 0;
		while(count < -startIndex && 0 < index2) {
			var c1 = this3.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		si = index2;
	}
	var ei;
	if(length == null) {
		ei = s.length;
	} else if(length < 0) {
		ei = si;
	} else {
		var this4 = s;
		var this5 = this4;
		var this6 = this5;
		if(length >= 0) {
			var index3 = si;
			var len1 = this6.length;
			var i1 = 0;
			while(i1 < length && index3 < len1) {
				var c2 = this6.charCodeAt(index3);
				index3 += !(55296 <= c2 && c2 <= 56319) ? 1 : 2;
				++i1;
			}
			ei = index3;
		} else {
			var index4 = si;
			var count1 = 0;
			while(count1 < -length && 0 < index4) {
				var c3 = this6.charCodeAt(index4 - 1);
				index4 -= !(56320 <= c3 && c3 <= 57343) ? 1 : 2;
				++count1;
			}
			ei = index4;
		}
	}
	return s.substring(si,ei);
};
lime_text_unifill_Unifill.uSubstring = function(s,startIndex,endIndex) {
	var si;
	if(startIndex < 0) {
		si = 0;
	} else {
		var this1 = s;
		var this2 = this1;
		var this3 = this2;
		if(startIndex >= 0) {
			var index = 0;
			var len = this3.length;
			var i = 0;
			while(i < startIndex && index < len) {
				var c = this3.charCodeAt(index);
				index += !(55296 <= c && c <= 56319) ? 1 : 2;
				++i;
			}
			si = index;
		} else {
			var index1 = 0;
			var count = 0;
			while(count < -startIndex && 0 < index1) {
				var c1 = this3.charCodeAt(index1 - 1);
				index1 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
				++count;
			}
			si = index1;
		}
	}
	var ei;
	if(endIndex == null) {
		ei = s.length;
	} else if(endIndex < 0) {
		ei = 0;
	} else {
		var this4 = s;
		var this5 = this4;
		var this6 = this5;
		if(endIndex >= 0) {
			var index2 = 0;
			var len1 = this6.length;
			var i1 = 0;
			while(i1 < endIndex && index2 < len1) {
				var c2 = this6.charCodeAt(index2);
				index2 += !(55296 <= c2 && c2 <= 56319) ? 1 : 2;
				++i1;
			}
			ei = index2;
		} else {
			var index3 = 0;
			var count1 = 0;
			while(count1 < -endIndex && 0 < index3) {
				var c3 = this6.charCodeAt(index3 - 1);
				index3 -= !(56320 <= c3 && c3 <= 57343) ? 1 : 2;
				++count1;
			}
			ei = index3;
		}
	}
	return s.substring(si,ei);
};
lime_text_unifill_Unifill.uIterator = function(s) {
	return new lime_text_unifill_CodePointIter(s);
};
lime_text_unifill_Unifill.uCompare = function(a,b) {
	var aiter_string;
	var aiter_index;
	var aiter_i;
	var aiter_endIndex;
	aiter_i = 0;
	aiter_string = a;
	aiter_index = 0;
	aiter_endIndex = a.length;
	var biter_string;
	var biter_index;
	var biter_i;
	var biter_endIndex;
	biter_i = 0;
	biter_string = b;
	biter_index = 0;
	biter_endIndex = b.length;
	while(aiter_index < aiter_endIndex && biter_index < biter_endIndex) {
		aiter_i = aiter_index;
		var this1 = aiter_string;
		var this2 = this1;
		var c = this2.charCodeAt(aiter_index);
		aiter_index += !(55296 <= c && c <= 56319) ? 1 : 2;
		var this3 = a;
		var this4 = this3;
		var acode = lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt(this4,aiter_i);
		biter_i = biter_index;
		var this5 = biter_string;
		var this6 = this5;
		var c1 = this6.charCodeAt(biter_index);
		biter_index += !(55296 <= c1 && c1 <= 56319) ? 1 : 2;
		var this7 = b;
		var this8 = this7;
		var bcode = lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt(this8,biter_i);
		if(acode < bcode) {
			return -1;
		}
		if(acode > bcode) {
			return 1;
		}
	}
	if(biter_index < biter_endIndex) {
		return -1;
	}
	if(aiter_index < aiter_endIndex) {
		return 1;
	}
	return 0;
};
lime_text_unifill_Unifill.uToString = function(codePoints) {
	var this1 = new StringBuf();
	var buf = this1;
	var c = $iterator(codePoints)();
	while(c.hasNext()) {
		var c1 = c.next();
		if(c1 <= 65535) {
			buf.b += String.fromCharCode(c1);
		} else {
			buf.b += String.fromCharCode((c1 >> 10) + 55232);
			buf.b += String.fromCharCode(c1 & 1023 | 56320);
		}
	}
	var this2 = buf.b;
	var this3 = this2;
	return this3;
};
lime_text_unifill_Unifill.uAddChar = function(sb,c) {
	var c1 = c;
	if(c1 <= 65535) {
		sb.b += String.fromCharCode(c1);
	} else {
		sb.b += String.fromCharCode((c1 >> 10) + 55232);
		sb.b += String.fromCharCode(c1 & 1023 | 56320);
	}
};
var lime_text_unifill__$Utf16_Utf16_$Impl_$ = {};
$hxClasses["lime.text.unifill._Utf16.Utf16_Impl_"] = lime_text_unifill__$Utf16_Utf16_$Impl_$;
lime_text_unifill__$Utf16_Utf16_$Impl_$.__name__ = ["lime","text","unifill","_Utf16","Utf16_Impl_"];
lime_text_unifill__$Utf16_Utf16_$Impl_$.__properties__ = {get_length:"get_length"};
lime_text_unifill__$Utf16_Utf16_$Impl_$.fromCodePoint = function(codePoint) {
	if(codePoint <= 65535) {
		var this1 = String.fromCharCode(codePoint);
		var this2 = this1;
		return this2;
	} else {
		var this3 = String.fromCharCode((codePoint >> 10) + 55232) + String.fromCharCode(codePoint & 1023 | 56320);
		var this4 = this3;
		return this4;
	}
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.fromCodePoints = function(codePoints) {
	var this1 = new StringBuf();
	var buf = this1;
	var c = $iterator(codePoints)();
	while(c.hasNext()) {
		var c1 = c.next();
		if(c1 <= 65535) {
			buf.b += String.fromCharCode(c1);
		} else {
			buf.b += String.fromCharCode((c1 >> 10) + 55232);
			buf.b += String.fromCharCode(c1 & 1023 | 56320);
		}
	}
	var this2 = buf.b;
	var this3 = this2;
	return this3;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.fromString = function(s) {
	var this1 = s;
	var this2 = this1;
	return this2;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.fromArray = function(a) {
	var buf_b = "";
	var _g = 0;
	while(_g < a.length) {
		var x = a[_g];
		++_g;
		buf_b += String.fromCharCode(x);
	}
	var this1 = buf_b;
	var this2 = this1;
	return this2;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.encodeWith = function(f,c) {
	if(c <= 65535) {
		f(c);
	} else {
		f((c >> 10) + 55232);
		f(c & 1023 | 56320);
	}
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.codeUnitAt = function(this1,index) {
	return this1.charCodeAt(index);
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointAt = function(this1,index) {
	return lime_text_unifill__$Utf16_Utf16Impl.decode_code_point(this1.length,function(i) {
		return this1.charCodeAt(i);
	},index);
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.charAt = function(this1,index) {
	var c = this1.charCodeAt(index);
	var this2 = HxOverrides.substr(this1,index,!(55296 <= c && c <= 56319) ? 1 : 2);
	var this3 = this2;
	return this3;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointCount = function(this1,beginIndex,endIndex) {
	var index = beginIndex;
	var i = 0;
	while(index < endIndex) {
		var c = this1.charCodeAt(index);
		index += !(55296 <= c && c <= 56319) ? 1 : 2;
		++i;
	}
	return i;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointWidthAt = function(this1,index) {
	var c = this1.charCodeAt(index);
	if(!(55296 <= c && c <= 56319)) {
		return 1;
	} else {
		return 2;
	}
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.codePointWidthBefore = function(this1,index) {
	var c = this1.charCodeAt(index - 1);
	if(!(56320 <= c && c <= 57343)) {
		return 1;
	} else {
		return 2;
	}
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.offsetByCodePoints = function(this1,index,codePointOffset) {
	if(codePointOffset >= 0) {
		var index1 = index;
		var len = this1.length;
		var i = 0;
		while(i < codePointOffset && index1 < len) {
			var c = this1.charCodeAt(index1);
			index1 += !(55296 <= c && c <= 56319) ? 1 : 2;
			++i;
		}
		return index1;
	} else {
		var index2 = index;
		var count = 0;
		while(count < -codePointOffset && 0 < index2) {
			var c1 = this1.charCodeAt(index2 - 1);
			index2 -= !(56320 <= c1 && c1 <= 57343) ? 1 : 2;
			++count;
		}
		return index2;
	}
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.substr = function(this1,index,len) {
	var this2 = HxOverrides.substr(this1,index,len);
	var this3 = this2;
	return this3;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.validate = function(this1) {
	var len = this1.length;
	var accessor = function(i) {
		return this1.charCodeAt(i);
	};
	var i1 = 0;
	while(i1 < len) {
		lime_text_unifill__$Utf16_Utf16Impl.decode_code_point(len,accessor,i1);
		var c = this1.charCodeAt(i1);
		i1 += !(55296 <= c && c <= 56319) ? 1 : 2;
	}
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.toString = function(this1) {
	return this1;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.toArray = function(this1) {
	var i = 0;
	var len = this1.length;
	var _g = [];
	while(i < len) _g.push(this1.charCodeAt(i++));
	return _g;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$._new = function(s) {
	var this1 = s;
	return this1;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.get_length = function(this1) {
	return this1.length;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.forward_offset_by_code_points = function(this1,index,codePointOffset) {
	var len = this1.length;
	var i = 0;
	while(i < codePointOffset && index < len) {
		var c = this1.charCodeAt(index);
		index += !(55296 <= c && c <= 56319) ? 1 : 2;
		++i;
	}
	return index;
};
lime_text_unifill__$Utf16_Utf16_$Impl_$.backward_offset_by_code_points = function(this1,index,codePointOffset) {
	var count = 0;
	while(count < codePointOffset && 0 < index) {
		var c = this1.charCodeAt(index - 1);
		index -= !(56320 <= c && c <= 57343) ? 1 : 2;
		++count;
	}
	return index;
};
var lime_text_unifill__$Utf16_Utf16Impl = function() { };
$hxClasses["lime.text.unifill._Utf16.Utf16Impl"] = lime_text_unifill__$Utf16_Utf16Impl;
lime_text_unifill__$Utf16_Utf16Impl.__name__ = ["lime","text","unifill","_Utf16","Utf16Impl"];
lime_text_unifill__$Utf16_Utf16Impl.code_point_width = function(c) {
	if(!(55296 <= c && c <= 56319)) {
		return 1;
	} else {
		return 2;
	}
};
lime_text_unifill__$Utf16_Utf16Impl.find_prev_code_point = function(accessor,index) {
	var c = accessor(index - 1);
	if(!(56320 <= c && c <= 57343)) {
		return 1;
	} else {
		return 2;
	}
};
lime_text_unifill__$Utf16_Utf16Impl.encode_code_point = function(addUnit,codePoint) {
	if(codePoint <= 65535) {
		addUnit(codePoint);
	} else {
		addUnit((codePoint >> 10) + 55232);
		addUnit(codePoint & 1023 | 56320);
	}
};
lime_text_unifill__$Utf16_Utf16Impl.decode_code_point = function(len,accessor,index) {
	if(index < 0 || len <= index) {
		throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodeUnitSequence(index));
	}
	var hi = accessor(index);
	if(55296 <= hi && hi <= 56319) {
		if(index + 1 < 0 || len <= index + 1) {
			throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodeUnitSequence(index));
		}
		var lo = accessor(index + 1);
		if(56320 <= lo && lo <= 57343) {
			return hi - 55232 << 10 | lo & 1023;
		} else {
			throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodeUnitSequence(index));
		}
	} else if(56320 <= hi && hi <= 57343) {
		throw new js__$Boot_HaxeError(new lime_text_unifill_InvalidCodeUnitSequence(index));
	} else {
		return hi;
	}
};
var lime_text_unifill__$Utf16_StringU16Buffer_$Impl_$ = {};
$hxClasses["lime.text.unifill._Utf16.StringU16Buffer_Impl_"] = lime_text_unifill__$Utf16_StringU16Buffer_$Impl_$;
lime_text_unifill__$Utf16_StringU16Buffer_$Impl_$.__name__ = ["lime","text","unifill","_Utf16","StringU16Buffer_Impl_"];
lime_text_unifill__$Utf16_StringU16Buffer_$Impl_$._new = function() {
	var this1 = new StringBuf();
	return this1;
};
lime_text_unifill__$Utf16_StringU16Buffer_$Impl_$.addUnit = function(this1,unit) {
	this1.b += String.fromCharCode(unit);
};
lime_text_unifill__$Utf16_StringU16Buffer_$Impl_$.getStringU16 = function(this1) {
	var this2 = this1.b;
	return this2;
};
var lime_text_unifill__$Utf16_StringU16_$Impl_$ = {};
$hxClasses["lime.text.unifill._Utf16.StringU16_Impl_"] = lime_text_unifill__$Utf16_StringU16_$Impl_$;
lime_text_unifill__$Utf16_StringU16_$Impl_$.__name__ = ["lime","text","unifill","_Utf16","StringU16_Impl_"];
lime_text_unifill__$Utf16_StringU16_$Impl_$.__properties__ = {get_length:"get_length"};
lime_text_unifill__$Utf16_StringU16_$Impl_$.fromString = function(s) {
	var this1 = s;
	return this1;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.fromCodeUnit = function(u) {
	var this1 = String.fromCharCode(u);
	return this1;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.fromTwoCodeUnits = function(u0,u1) {
	var this1 = String.fromCharCode(u0) + String.fromCharCode(u1);
	return this1;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.ofArray = function(a) {
	var buf_b = "";
	var _g = 0;
	while(_g < a.length) {
		var x = a[_g];
		++_g;
		buf_b += String.fromCharCode(x);
	}
	var this1 = buf_b;
	return this1;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.fromArray = function(a) {
	var buf_b = "";
	var _g = 0;
	while(_g < a.length) {
		var x = a[_g];
		++_g;
		buf_b += String.fromCharCode(x);
	}
	var this1 = buf_b;
	return this1;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.codeUnitAt = function(this1,index) {
	return this1.charCodeAt(index);
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.substr = function(this1,index,len) {
	var this2 = HxOverrides.substr(this1,index,len);
	return this2;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.toString = function(this1) {
	return this1;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.toArray = function(this1) {
	var i = 0;
	var len = this1.length;
	var _g = [];
	while(i < len) _g.push(this1.charCodeAt(i++));
	return _g;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$._new = function(s) {
	var this1 = s;
	return this1;
};
lime_text_unifill__$Utf16_StringU16_$Impl_$.get_length = function(this1) {
	return this1.length;
};
var lime_tools_helpers_ArrayHelper = function() { };
$hxClasses["lime.tools.helpers.ArrayHelper"] = lime_tools_helpers_ArrayHelper;
lime_tools_helpers_ArrayHelper.__name__ = ["lime","tools","helpers","ArrayHelper"];
lime_tools_helpers_ArrayHelper.addUnique = function(array,value) {
	var exists = false;
	var _g = 0;
	while(_g < array.length) {
		var arrayValue = array[_g];
		++_g;
		if(arrayValue == value) {
			exists = true;
			break;
		}
	}
	if(!exists) {
		array.push(value);
	}
	return value;
};
lime_tools_helpers_ArrayHelper.concatUnique = function(a,b,adjustOrder,key) {
	if(adjustOrder == null) {
		adjustOrder = false;
	}
	if(a == null && b == null) {
		return [];
	} else if(a == null && b != null) {
		return b;
	}
	var concat = a.slice();
	var _g = 0;
	while(_g < b.length) {
		var bValue = b[_g];
		++_g;
		var hasValue = false;
		var _g1 = 0;
		while(_g1 < a.length) {
			var aValue = a[_g1];
			++_g1;
			if(key != null) {
				if(Reflect.field(aValue,key) == Reflect.field(bValue,key)) {
					if(adjustOrder) {
						HxOverrides.remove(concat,aValue);
					} else {
						hasValue = true;
					}
				}
			} else if(aValue == bValue) {
				hasValue = true;
			}
		}
		if(adjustOrder && hasValue) {
			HxOverrides.remove(concat,bValue);
			hasValue = false;
		}
		if(!hasValue) {
			concat.push(bValue);
		}
	}
	return concat;
};
lime_tools_helpers_ArrayHelper.containsValue = function(array,value) {
	var _g = 0;
	while(_g < array.length) {
		var arrayValue = array[_g];
		++_g;
		if(arrayValue == value) {
			return true;
		}
	}
	return false;
};
lime_tools_helpers_ArrayHelper.getUnique = function(a,b,key) {
	if(a == null && b == null) {
		return [];
	} else if(a == null && b != null) {
		return b;
	}
	var concat = [];
	var _g = 0;
	while(_g < b.length) {
		var bValue = b[_g];
		++_g;
		var hasValue = false;
		var _g1 = 0;
		while(_g1 < a.length) {
			var aValue = a[_g1];
			++_g1;
			if(key != null) {
				if(Reflect.field(aValue,key) == Reflect.field(bValue,key)) {
					hasValue = true;
				}
			} else if(aValue == bValue) {
				hasValue = true;
			}
		}
		if(!hasValue) {
			concat.push(bValue);
		}
	}
	return concat;
};
var lime_tools_helpers_AssetHelper = function() { };
$hxClasses["lime.tools.helpers.AssetHelper"] = lime_tools_helpers_AssetHelper;
lime_tools_helpers_AssetHelper.__name__ = ["lime","tools","helpers","AssetHelper"];
lime_tools_helpers_AssetHelper.createManifest = function(project,library,targetPath) {
	var manifest = new lime_utils_AssetManifest();
	var pathGroups = new haxe_ds_StringMap();
	var libraries = new haxe_ds_StringMap();
	if(library == null) {
		library = lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME;
	}
	var _g = 0;
	var _g1 = project.libraries;
	while(_g < _g1.length) {
		var lib = _g1[_g];
		++_g;
		var k = lib.name;
		if(__map_reserved[k] != null) {
			libraries.setReserved(k,lib);
		} else {
			libraries.h[k] = lib;
		}
	}
	var assetData;
	var _g2 = 0;
	var _g11 = project.assets;
	while(_g2 < _g11.length) {
		var asset = _g11[_g2];
		++_g2;
		assetData = lime_tools_helpers_AssetHelper.getAssetData(project,pathGroups,libraries,library,asset);
		if(assetData != null) {
			manifest.assets.push(assetData);
		}
	}
	if(targetPath != null) {
		lime_tools_helpers_PathHelper.mkdir(haxe_io_Path.directory(targetPath));
		js_node_Fs.writeFileSync(targetPath,manifest.serialize());
	}
	return manifest;
};
lime_tools_helpers_AssetHelper.createManifests = function(project,targetDirectory) {
	var libraryNames = new haxe_ds_StringMap();
	var _g = 0;
	var _g1 = project.assets;
	while(_g < _g1.length) {
		var asset = _g1[_g];
		++_g;
		var tmp;
		if(asset.library != null) {
			var key = asset.library;
			tmp = !(__map_reserved[key] != null ? libraryNames.existsReserved(key) : libraryNames.h.hasOwnProperty(key));
		} else {
			tmp = false;
		}
		if(tmp) {
			var k = asset.library;
			if(__map_reserved[k] != null) {
				libraryNames.setReserved(k,true);
			} else {
				libraryNames.h[k] = true;
			}
		}
	}
	var manifest = lime_tools_helpers_AssetHelper.createManifest(project);
	manifest.name = lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME;
	var manifests = [manifest];
	var library = libraryNames.keys();
	while(library.hasNext()) {
		var library1 = library.next();
		manifest = lime_tools_helpers_AssetHelper.createManifest(project,library1);
		manifest.name = library1;
		manifests.push(manifest);
	}
	if(targetDirectory != null) {
		lime_tools_helpers_PathHelper.mkdir(targetDirectory);
		var _g2 = 0;
		while(_g2 < manifests.length) {
			var manifest1 = manifests[_g2];
			++_g2;
			js_node_Fs.writeFileSync(lime_tools_helpers_PathHelper.combine(targetDirectory,manifest1.name + ".json"),manifest1.serialize());
		}
	}
	return manifests;
};
lime_tools_helpers_AssetHelper.getAssetData = function(project,pathGroups,libraries,library,asset) {
	if(asset.library != null && asset.library != library || asset.type == lime_project_AssetType.TEMPLATE) {
		return null;
	}
	if(asset.library == null && library != lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME) {
		return null;
	}
	var size = 100;
	if(sys_FileSystem.exists(asset.sourcePath)) {
		size = js_node_Fs.statSync(asset.sourcePath).size;
	}
	var assetData = { id : asset.id, size : size, type : Std.string(asset.type)};
	if(project.target == "flash" || project.target == "air") {
		if(asset.embed != false || asset.type == lime_project_AssetType.FONT) {
			assetData.className = "__ASSET__" + asset.flatName;
		} else {
			assetData.path = asset.resourceName;
		}
		var tmp;
		if(asset.embed == false && asset.library != null) {
			var key = asset.library;
			if(__map_reserved[key] != null) {
				tmp = libraries.existsReserved(key);
			} else {
				tmp = libraries.h.hasOwnProperty(key);
			}
		} else {
			tmp = false;
		}
		if(tmp) {
			var key1 = asset.library;
			assetData.preload = (__map_reserved[key1] != null ? libraries.getReserved(key1) : libraries.h[key1]).preload;
		}
	} else if(project.target == "html5") {
		if(asset.type == lime_project_AssetType.FONT) {
			assetData.className = "__ASSET__" + asset.flatName;
			assetData.preload = true;
		} else {
			assetData.path = asset.resourceName;
			var tmp1;
			if(asset.embed == false) {
				var tmp2;
				if(asset.library != null) {
					var key2 = asset.library;
					if(__map_reserved[key2] != null) {
						tmp2 = libraries.existsReserved(key2);
					} else {
						tmp2 = libraries.h.hasOwnProperty(key2);
					}
				} else {
					tmp2 = false;
				}
				if(tmp2) {
					var key3 = asset.library;
					tmp1 = (__map_reserved[key3] != null ? libraries.getReserved(key3) : libraries.h[key3]).preload;
				} else {
					tmp1 = false;
				}
			} else {
				tmp1 = true;
			}
			if(tmp1) {
				assetData.preload = true;
			}
			if(asset.type == lime_project_AssetType.MUSIC || asset.type == lime_project_AssetType.SOUND) {
				var soundName = haxe_io_Path.withoutExtension(assetData.path);
				if(!(__map_reserved[soundName] != null ? pathGroups.existsReserved(soundName) : pathGroups.h.hasOwnProperty(soundName))) {
					var value = [assetData.path];
					if(__map_reserved[soundName] != null) {
						pathGroups.setReserved(soundName,value);
					} else {
						pathGroups.h[soundName] = value;
					}
				} else {
					(__map_reserved[soundName] != null ? pathGroups.getReserved(soundName) : pathGroups.h[soundName]).push(assetData.path);
					Reflect.deleteField(assetData,"preload");
				}
				Reflect.deleteField(assetData,"path");
				assetData.pathGroup = __map_reserved[soundName] != null ? pathGroups.getReserved(soundName) : pathGroups.h[soundName];
			}
		}
	} else {
		var tmp3;
		if(project.target == "emscripten") {
			if(asset.embed == false) {
				var tmp4;
				if(asset.library != null) {
					var key4 = asset.library;
					if(__map_reserved[key4] != null) {
						tmp4 = libraries.existsReserved(key4);
					} else {
						tmp4 = libraries.h.hasOwnProperty(key4);
					}
				} else {
					tmp4 = false;
				}
				if(tmp4) {
					var key5 = asset.library;
					tmp3 = (__map_reserved[key5] != null ? libraries.getReserved(key5) : libraries.h[key5]).preload;
				} else {
					tmp3 = false;
				}
			} else {
				tmp3 = true;
			}
		} else {
			tmp3 = false;
		}
		if(tmp3) {
			assetData.preload = true;
		}
		if(asset.embed == true || asset.type == lime_project_AssetType.FONT) {
			assetData.className = "__ASSET__" + asset.flatName;
		} else {
			assetData.path = asset.resourceName;
		}
	}
	return assetData;
};
lime_tools_helpers_AssetHelper.getPackedAssetData = function(project,output,pathGroups,libraries,library,asset) {
	if(project.target == "html5" && (asset.type == lime_project_AssetType.MUSIC || asset.type == lime_project_AssetType.SOUND || asset.type == lime_project_AssetType.FONT)) {
		return lime_tools_helpers_AssetHelper.getAssetData(project,pathGroups,libraries,library.name,asset);
	}
	if(asset.type == lime_project_AssetType.TEMPLATE) {
		return null;
	}
	if(asset.library == library.name || asset.library == null && library.name == lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME) {
		var assetData = { id : asset.id, size : 0, type : Std.string(asset.type), position : output.tell()};
		if(project.target == "html5" && asset.type == lime_project_AssetType.FONT) {
			assetData.className = "__ASSET__" + asset.flatName;
			assetData.preload = true;
		} else {
			var _g = library.type;
			switch(_g) {
			case "deflate":case "zip":
				if(asset.data != null) {
					output.writeBytes(lime_utils_compress_Deflate.compress(asset.data),0,asset.data.length);
				} else if(asset.sourcePath != null) {
					var tempBytes = js_node_buffer__$Buffer_Helper.bytesOfBuffer(js_node_Fs.readFileSync(asset.sourcePath));
					tempBytes = lime_utils_compress_Deflate.compress(tempBytes);
					output.writeBytes(tempBytes,0,tempBytes.length);
				}
				break;
			case "gzip":
				if(asset.data != null) {
					output.writeBytes(lime_utils_compress_GZip.compress(asset.data),0,asset.data.length);
				} else if(asset.sourcePath != null) {
					var tempBytes1 = js_node_buffer__$Buffer_Helper.bytesOfBuffer(js_node_Fs.readFileSync(asset.sourcePath));
					tempBytes1 = lime_utils_compress_GZip.compress(tempBytes1);
					output.writeBytes(tempBytes1,0,tempBytes1.length);
				}
				break;
			default:
				if(asset.data != null) {
					output.writeBytes(asset.data,0,asset.data.length);
				} else if(asset.sourcePath != null) {
					var input = new sys_io_FileInput(js_node_Fs.openSync(asset.sourcePath,"r"));
					output.writeInput(input);
					input.close();
				}
			}
		}
		if(project.target == "html5" && asset.type == lime_project_AssetType.IMAGE) {
			assetData.preload = true;
		}
		var position = output.tell();
		assetData.length = position - assetData.position;
		asset.library = library.name;
		if(project.target != "html5" || asset.type != lime_project_AssetType.FONT) {
			asset.targetPath = null;
		}
		asset.data = null;
		return assetData;
	} else {
		return null;
	}
};
lime_tools_helpers_AssetHelper.isPackedLibrary = function(project,library) {
	if(project.target == "flash" && library.embed != false) {
		return false;
	}
	var _g = library.type;
	switch(_g) {
	case "deflate":case "gzip":case "pack":case "pak":case "zip":
		return true;
	default:
		return false;
	}
};
lime_tools_helpers_AssetHelper.processLibraries = function(project,targetDirectory) {
	var libraryMap = new haxe_ds_StringMap();
	var _g = 0;
	var _g1 = project.libraries;
	while(_g < _g1.length) {
		var library = _g1[_g];
		++_g;
		var k = library.name;
		if(__map_reserved[k] != null) {
			libraryMap.setReserved(k,true);
		} else {
			libraryMap.h[k] = true;
		}
	}
	var library1;
	var _g2 = 0;
	var _g11 = project.assets;
	while(_g2 < _g11.length) {
		var asset = _g11[_g2];
		++_g2;
		var tmp;
		if(asset.library != null && asset.library != lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME) {
			var key = asset.library;
			tmp = !(__map_reserved[key] != null ? libraryMap.existsReserved(key) : libraryMap.h.hasOwnProperty(key));
		} else {
			tmp = false;
		}
		if(tmp) {
			library1 = new lime_project_Library(null,asset.library);
			project.libraries.push(library1);
			var k1 = asset.library;
			if(__map_reserved[k1] != null) {
				libraryMap.setReserved(k1,true);
			} else {
				libraryMap.h[k1] = true;
			}
		}
	}
	var key1 = lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME;
	if(!(__map_reserved[key1] != null ? libraryMap.existsReserved(key1) : libraryMap.h.hasOwnProperty(key1))) {
		library1 = new lime_project_Library(null,lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME);
		project.libraries.push(library1);
	}
	var handlers = [];
	var hasPackedLibraries = false;
	var type;
	var _g3 = 0;
	var _g12 = project.libraries;
	while(_g3 < _g12.length) {
		var library2 = _g12[_g3];
		++_g3;
		type = library2.type;
		if(library2.sourcePath != null || type != null) {
			if(type == null) {
				type = haxe_io_Path.extension(library2.sourcePath).toLowerCase();
			}
			var _this = project.libraryHandlers;
			if(__map_reserved[type] != null ? _this.existsReserved(type) : _this.h.hasOwnProperty(type)) {
				var _this1 = project.libraryHandlers;
				var handler = __map_reserved[type] != null ? _this1.getReserved(type) : _this1.h[type];
				HxOverrides.remove(handlers,handler);
				handlers.push(handler);
				library2.type = type;
			} else if(lime_tools_helpers_AssetHelper.isPackedLibrary(project,library2)) {
				hasPackedLibraries = true;
			}
		}
	}
	if(handlers.length > 0) {
		var projectData = haxe_Serializer.run(project);
		var temporaryFile = lime_tools_helpers_PathHelper.getTemporaryFile();
		js_node_Fs.writeFileSync(temporaryFile,projectData);
		var _g4 = 0;
		while(_g4 < handlers.length) {
			var handler1 = handlers[_g4];
			++_g4;
			var outputFile = lime_tools_helpers_PathHelper.getTemporaryFile();
			var args = ["run",handler1,"process",temporaryFile,outputFile];
			if(lime_tools_helpers_LogHelper.verbose) {
				args.push("-verbose");
			}
			if(targetDirectory != null) {
				args.push("--targetDirectory=" + lime_tools_helpers_PathHelper.tryFullPath(targetDirectory));
			}
			lime_tools_helpers_HaxelibHelper.runCommand("",args);
			if(sys_FileSystem.exists(outputFile)) {
				try {
					var output = js_node_Fs.readFileSync(outputFile,{ encoding : "utf8"});
					var data = haxe_Unserializer.run(output);
					project.merge(data);
				} catch( e ) {
					haxe_CallStack.lastException = e;
					if (e instanceof js__$Boot_HaxeError) e = e.val;
					lime_tools_helpers_LogHelper.error(e);
				}
				try {
					js_node_Fs.unlinkSync(outputFile);
				} catch( e1 ) {
					haxe_CallStack.lastException = e1;
				}
			}
		}
		try {
			js_node_Fs.unlinkSync(temporaryFile);
		} catch( e2 ) {
			haxe_CallStack.lastException = e2;
		}
	}
	if(hasPackedLibraries) {
		lime_tools_helpers_AssetHelper.processPackedLibraries(project,targetDirectory);
	}
	var manifest;
	var asset1;
	var _g5 = 0;
	var _g13 = project.libraries;
	while(_g5 < _g13.length) {
		var library3 = _g13[_g5];
		++_g5;
		if(library3.type == null || project.target == "flash" && library3.embed != false && ["pak","pack","gzip","zip","deflate"].indexOf(library3.type) > -1) {
			manifest = lime_tools_helpers_AssetHelper.createManifest(project,library3.name != lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME ? library3.name : null);
			if(library3.name == lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME) {
				library3.preload = true;
			}
			asset1 = new lime_project_Asset("","manifest/" + library3.name + ".json",lime_project_AssetType.MANIFEST);
			asset1.library = library3.name;
			asset1.data = manifest.serialize();
			if(manifest.assets.length == 0) {
				asset1.embed = true;
			} else {
				var allEmbedded = true;
				var _g21 = 0;
				var _g31 = manifest.assets;
				while(_g21 < _g31.length) {
					var childAsset = _g31[_g21];
					++_g21;
					if(!Object.prototype.hasOwnProperty.call(childAsset,"className") || childAsset.className == null) {
						allEmbedded = false;
						break;
					}
				}
				if(allEmbedded) {
					asset1.embed = true;
				}
			}
			project.assets.push(asset1);
		}
	}
};
lime_tools_helpers_AssetHelper.processPackedLibraries = function(project,targetDirectory) {
	var type;
	var asset;
	var cacheAvailable;
	var cacheDirectory;
	var filename;
	var output;
	var manifest;
	var position;
	var assetData;
	var input;
	var embeddedLibrary = false;
	var pathGroups = new haxe_ds_StringMap();
	var libraries = new haxe_ds_StringMap();
	var _g = 0;
	var _g1 = project.libraries;
	while(_g < _g1.length) {
		var lib = _g1[_g];
		++_g;
		var k = lib.name;
		if(__map_reserved[k] != null) {
			libraries.setReserved(k,lib);
		} else {
			libraries.h[k] = lib;
		}
	}
	var _g2 = 0;
	var _g11 = project.libraries;
	while(_g2 < _g11.length) {
		var library = _g11[_g2];
		++_g2;
		type = library.type;
		var tmp = lime_tools_helpers_AssetHelper.isPackedLibrary(project,library);
	}
	if(embeddedLibrary) {
		project.haxeflags.push("lime.utils.PackedAssetLibrary");
	}
};
var lime_tools_helpers_CommandHelper = function() { };
$hxClasses["lime.tools.helpers.CommandHelper"] = lime_tools_helpers_CommandHelper;
lime_tools_helpers_CommandHelper.__name__ = ["lime","tools","helpers","CommandHelper"];
lime_tools_helpers_CommandHelper.executeCommands = function(commands) {
	var _g = 0;
	while(_g < commands.length) {
		var c = commands[_g];
		++_g;
		var cmd = c.command;
		var args = c.args;
		if(args == null) {
			js_node_ChildProcess.spawnSync(cmd,{ shell : true, stdio : "inherit"});
		} else {
			js_node_ChildProcess.spawnSync(cmd,args,{ stdio : "inherit"});
		}
	}
};
lime_tools_helpers_CommandHelper.openFile = function(file) {
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows") {
		return new lime_project_CLICommand("start",[file]);
	} else if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "mac") {
		return new lime_project_CLICommand("/usr/bin/open",[file]);
	} else {
		return new lime_project_CLICommand("/usr/bin/xdg-open",[file]);
	}
};
lime_tools_helpers_CommandHelper.interpretHaxe = function(mainFile) {
	return new lime_project_CLICommand("haxe",["-main",mainFile,"--interp"]);
};
lime_tools_helpers_CommandHelper.fromSingleString = function(command) {
	var args = command.split(" ");
	command = args.shift();
	return new lime_project_CLICommand(command,args);
};
var lime_tools_helpers_CompatibilityHelper = function() { };
$hxClasses["lime.tools.helpers.CompatibilityHelper"] = lime_tools_helpers_CompatibilityHelper;
lime_tools_helpers_CompatibilityHelper.__name__ = ["lime","tools","helpers","CompatibilityHelper"];
lime_tools_helpers_CompatibilityHelper.patchAssetLibrary = function(project,haxelib,targetPath,context) {
	if(haxelib.name != "openfl") {
		return;
	}
	try {
		var json = JSON.parse(js_node_Fs.readFileSync(lime_tools_helpers_PathHelper.getHaxelib(haxelib) + "/haxelib.json",{ encoding : "utf8"}));
		if(Std.parseInt(json.version.charAt(0)) < 3 && Std.parseInt(json.version.charAt(2)) < 1) {
			lime_tools_helpers_FileHelper.copyFile(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("lime")) + "/templates/compatibility/DefaultAssetLibrary.hx",targetPath,context);
		}
	} catch( e ) {
		haxe_CallStack.lastException = e;
	}
};
lime_tools_helpers_CompatibilityHelper.patchProject = function(project,haxelib,version) {
	if(haxelib.name == "openfl" && Std.parseInt(version.charAt(0)) < 3 && Std.parseInt(version.charAt(2)) < 1) {
		if(project.app.preloader == "") {
			project.app.preloader = "NMEPreloader";
		}
	}
};
var lime_tools_helpers_FileHelper = function() { };
$hxClasses["lime.tools.helpers.FileHelper"] = lime_tools_helpers_FileHelper;
lime_tools_helpers_FileHelper.__name__ = ["lime","tools","helpers","FileHelper"];
lime_tools_helpers_FileHelper.copyAsset = function(asset,destination,context) {
	if(asset.sourcePath != "") {
		lime_tools_helpers_FileHelper.copyFile(asset.sourcePath,destination,context,asset.type == lime_project_AssetType.TEMPLATE);
	} else {
		try {
			if(asset.encoding == lime_project_AssetEncoding.BASE64) {
				var bytes = lime_tools_helpers_StringHelper.base64Decode(asset.data);
				var data = bytes.b;
				js_node_Fs.writeFileSync(destination,new js_node_buffer_Buffer(data.buffer,data.byteOffset,bytes.length));
			} else if(js_Boot.__instanceof(asset.data,haxe_io_Bytes)) {
				var bytes1 = asset.data;
				var data1 = bytes1.b;
				js_node_Fs.writeFileSync(destination,new js_node_buffer_Buffer(data1.buffer,data1.byteOffset,bytes1.length));
			} else {
				js_node_Fs.writeFileSync(destination,Std.string(asset.data));
			}
		} catch( e ) {
			haxe_CallStack.lastException = e;
			lime_tools_helpers_LogHelper.error("Cannot write to file \"" + destination + "\"");
		}
	}
};
lime_tools_helpers_FileHelper.copyAssetIfNewer = function(asset,destination) {
	if(asset.sourcePath != "") {
		if(lime_tools_helpers_FileHelper.isNewer(asset.sourcePath,destination)) {
			lime_tools_helpers_FileHelper.copyFile(asset.sourcePath,destination,null,asset.type == lime_project_AssetType.TEMPLATE);
		}
	} else {
		lime_tools_helpers_PathHelper.mkdir(haxe_io_Path.directory(destination));
		try {
			if(asset.encoding == lime_project_AssetEncoding.BASE64) {
				var bytes = lime_tools_helpers_StringHelper.base64Decode(asset.data);
				var data = bytes.b;
				js_node_Fs.writeFileSync(destination,new js_node_buffer_Buffer(data.buffer,data.byteOffset,bytes.length));
			} else if(js_Boot.__instanceof(asset.data,haxe_io_Bytes)) {
				var bytes1 = asset.data;
				var data1 = bytes1.b;
				js_node_Fs.writeFileSync(destination,new js_node_buffer_Buffer(data1.buffer,data1.byteOffset,bytes1.length));
			} else {
				js_node_Fs.writeFileSync(destination,Std.string(asset.data));
			}
		} catch( e ) {
			haxe_CallStack.lastException = e;
			lime_tools_helpers_LogHelper.error("Cannot write to file \"" + destination + "\"");
		}
	}
};
lime_tools_helpers_FileHelper.copyFile = function(source,destination,context,process) {
	if(process == null) {
		process = true;
	}
	var extension = haxe_io_Path.extension(source);
	if(process && context != null) {
		var tmp;
		var _this = lime_tools_helpers_FileHelper.knownExtensions;
		if(__map_reserved[extension] != null ? _this.existsReserved(extension) : _this.h.hasOwnProperty(extension)) {
			var _this1 = lime_tools_helpers_FileHelper.knownExtensions;
			tmp = (__map_reserved[extension] != null ? _this1.getReserved(extension) : _this1.h[extension]) != lime_project_AssetType.TEXT;
		} else {
			tmp = false;
		}
		if(tmp) {
			lime_tools_helpers_FileHelper.copyIfNewer(source,destination);
			return;
		}
		var _isText = false;
		var tmp1;
		var _this2 = lime_tools_helpers_FileHelper.knownExtensions;
		if(__map_reserved[extension] != null ? _this2.existsReserved(extension) : _this2.h.hasOwnProperty(extension)) {
			var _this3 = lime_tools_helpers_FileHelper.knownExtensions;
			tmp1 = (__map_reserved[extension] != null ? _this3.getReserved(extension) : _this3.h[extension]) == lime_project_AssetType.TEXT;
		} else {
			tmp1 = false;
		}
		if(tmp1) {
			_isText = true;
		} else {
			_isText = lime_tools_helpers_FileHelper.isText(source);
		}
		if(_isText) {
			var fileContents = js_node_Fs.readFileSync(source,{ encoding : "utf8"});
			var template = new haxe_Template(fileContents);
			var result = template.execute(context,{ toJSON : function(_,s) {
				return JSON.stringify(s);
			}, upper : function(_1,s1) {
				return s1.toUpperCase();
			}, replace : function(_2,s2,sub,by) {
				return StringTools.replace(s2,sub,by);
			}});
			try {
				if(sys_FileSystem.exists(destination)) {
					var existingContent = js_node_Fs.readFileSync(destination,{ encoding : "utf8"});
					if(result == existingContent) {
						return;
					}
				}
			} catch( e ) {
				haxe_CallStack.lastException = e;
			}
			lime_tools_helpers_PathHelper.mkdir(haxe_io_Path.directory(destination));
			lime_tools_helpers_LogHelper.info(""," - \x1B[1mCopying template file:\x1B[0m " + source + " \x1B[3;37m->\x1B[0m " + destination);
			try {
				js_node_Fs.writeFileSync(destination,result);
			} catch( e1 ) {
				haxe_CallStack.lastException = e1;
				lime_tools_helpers_LogHelper.error("Cannot write to file \"" + destination + "\"");
			}
			return;
		}
	}
	lime_tools_helpers_FileHelper.copyIfNewer(source,destination);
};
lime_tools_helpers_FileHelper.copyFileTemplate = function(templatePaths,source,destination,context,process,warnIfNotFound) {
	if(warnIfNotFound == null) {
		warnIfNotFound = true;
	}
	if(process == null) {
		process = true;
	}
	var path = lime_tools_helpers_PathHelper.findTemplate(templatePaths,source,warnIfNotFound);
	if(path != null) {
		lime_tools_helpers_FileHelper.copyFile(path,destination,context,process);
	}
};
lime_tools_helpers_FileHelper.copyIfNewer = function(source,destination) {
	if(!lime_tools_helpers_FileHelper.isNewer(source,destination)) {
		return;
	}
	lime_tools_helpers_PathHelper.mkdir(haxe_io_Path.directory(destination));
	lime_tools_helpers_LogHelper.info(""," - \x1B[1mCopying file:\x1B[0m " + source + " \x1B[3;37m->\x1B[0m " + destination);
	try {
		sys_io_File.copy(source,destination);
	} catch( e ) {
		haxe_CallStack.lastException = e;
		try {
			if(sys_FileSystem.exists(destination)) {
				lime_tools_helpers_LogHelper.error("Cannot copy to \"" + destination + "\", is the file in use?");
				return;
			}
		} catch( e1 ) {
			haxe_CallStack.lastException = e1;
		}
		lime_tools_helpers_LogHelper.error("Cannot open \"" + destination + "\" for writing, do you have correct access permissions?");
	}
};
lime_tools_helpers_FileHelper.copyLibrary = function(project,ndll,directoryName,namePrefix,nameSuffix,targetDirectory,allowDebug,targetSuffix) {
	if(allowDebug == null) {
		allowDebug = false;
	}
	var path = lime_tools_helpers_PathHelper.getLibraryPath(ndll,directoryName,namePrefix,nameSuffix,allowDebug);
	if(sys_FileSystem.exists(path)) {
		var targetPath = lime_tools_helpers_PathHelper.combine(targetDirectory,namePrefix + ndll.name);
		if(targetSuffix != null) {
			targetPath += targetSuffix;
		} else {
			targetPath += nameSuffix;
		}
		if(lime_project__$ConfigData_ConfigData_$Impl_$.getBool(project.config,"tools.copy-ndlls")) {
			lime_tools_helpers_LogHelper.info(""," - \x1B[1mCopying library file:\x1B[0m " + path + " \x1B[3;37m->\x1B[0m " + targetPath);
			lime_tools_helpers_PathHelper.mkdir(targetDirectory);
			try {
				sys_io_File.copy(path,targetPath);
			} catch( e ) {
				haxe_CallStack.lastException = e;
				lime_tools_helpers_LogHelper.error("Cannot copy to \"" + targetPath + "\", is the file in use?");
			}
		} else {
			lime_tools_helpers_LogHelper.info(""," - \x1B[1mSkipping library file:\x1B[0m " + path + " \x1B[3;37m->\x1B[0m " + targetPath);
		}
	} else {
		lime_tools_helpers_LogHelper.error("Source path \"" + path + "\" does not exist");
	}
};
lime_tools_helpers_FileHelper.getLastModified = function(source) {
	if(sys_FileSystem.exists(source)) {
		return js_node_Fs.statSync(source).mtime.getTime();
	}
	return -1;
};
lime_tools_helpers_FileHelper.linkFile = function(source,destination,symbolic,overwrite) {
	if(overwrite == null) {
		overwrite = false;
	}
	if(symbolic == null) {
		symbolic = true;
	}
	if(!lime_tools_helpers_FileHelper.isNewer(source,destination)) {
		return;
	}
	if(sys_FileSystem.exists(destination)) {
		js_node_Fs.unlinkSync(destination);
	}
	if(!sys_FileSystem.exists(destination)) {
		try {
			var command = "/bin/ln";
			var args = [];
			if(symbolic) {
				args.push("-s");
			}
			if(overwrite) {
				args.push("-f");
			}
			args.push(source);
			args.push(destination);
			lime_tools_helpers_ProcessHelper.runCommand(".",command,args);
		} catch( e ) {
			haxe_CallStack.lastException = e;
		}
	}
};
lime_tools_helpers_FileHelper.recursiveCopy = function(source,destination,context,process) {
	if(process == null) {
		process = true;
	}
	lime_tools_helpers_PathHelper.mkdir(destination);
	var files = null;
	try {
		files = js_node_Fs.readdirSync(source);
	} catch( e ) {
		haxe_CallStack.lastException = e;
		lime_tools_helpers_LogHelper.error("Could not find source directory \"" + source + "\"");
	}
	var _g = 0;
	while(_g < files.length) {
		var file = files[_g];
		++_g;
		if(HxOverrides.substr(file,0,1) != ".") {
			var itemDestination = destination + "/" + file;
			var itemSource = source + "/" + file;
			if(sys_FileSystem.isDirectory(itemSource)) {
				lime_tools_helpers_FileHelper.recursiveCopy(itemSource,itemDestination,context,process);
			} else {
				lime_tools_helpers_FileHelper.copyFile(itemSource,itemDestination,context,process);
			}
		}
	}
};
lime_tools_helpers_FileHelper.recursiveCopyTemplate = function(templatePaths,source,destination,context,process,warnIfNotFound) {
	if(warnIfNotFound == null) {
		warnIfNotFound = true;
	}
	if(process == null) {
		process = true;
	}
	var destinations = [];
	var paths = lime_tools_helpers_PathHelper.findTemplateRecursive(templatePaths,source,warnIfNotFound,destinations);
	if(paths != null) {
		lime_tools_helpers_PathHelper.mkdir(destination);
		var itemDestination;
		var _g1 = 0;
		var _g = paths.length;
		while(_g1 < _g) {
			var i = _g1++;
			itemDestination = lime_tools_helpers_PathHelper.combine(destination,destinations[i]);
			lime_tools_helpers_FileHelper.copyFile(paths[i],itemDestination,context,process);
		}
	}
};
lime_tools_helpers_FileHelper.recursiveSmartCopyTemplate = function(project,source,destination,context,process,warnIfNotFound) {
	if(warnIfNotFound == null) {
		warnIfNotFound = true;
	}
	if(process == null) {
		process = true;
	}
	var destinations = [];
	var paths = lime_tools_helpers_PathHelper.findTemplateRecursive(project.templatePaths,source,warnIfNotFound,destinations);
	if(paths != null) {
		lime_tools_helpers_PathHelper.mkdir(destination);
		var itemDestination;
		var _g1 = 0;
		var _g = paths.length;
		while(_g1 < _g) {
			var i = _g1++;
			itemDestination = lime_tools_helpers_PathHelper.combine(destination,lime_tools_helpers_PathHelper.substitutePath(project,destinations[i]));
			lime_tools_helpers_FileHelper.copyFile(paths[i],itemDestination,context,process);
		}
	}
};
lime_tools_helpers_FileHelper.isNewer = function(source,destination) {
	if(source == null || !sys_FileSystem.exists(source)) {
		lime_tools_helpers_LogHelper.error("Source path \"" + source + "\" does not exist");
		return false;
	}
	if(sys_FileSystem.exists(destination)) {
		if(js_node_Fs.statSync(source).mtime.getTime() < js_node_Fs.statSync(destination).mtime.getTime()) {
			return false;
		}
	}
	return true;
};
lime_tools_helpers_FileHelper.isText = function(source) {
	if(!sys_FileSystem.exists(source)) {
		return false;
	}
	var input = new sys_io_FileInput(js_node_Fs.openSync(source,"r"));
	var numChars = 0;
	var numBytes = 0;
	var byteHeader = [];
	var zeroBytes = 0;
	try {
		while(numBytes < 512) {
			var $byte = input.readByte();
			if(numBytes < 3) {
				byteHeader.push($byte);
			} else if(byteHeader != null) {
				if(byteHeader[0] == 255 && byteHeader[1] == 254) {
					return true;
				}
				if(byteHeader[0] == 254 && byteHeader[1] == 255) {
					return true;
				}
				if(byteHeader[0] == 239 && byteHeader[1] == 187 && byteHeader[2] == 191) {
					return true;
				}
				byteHeader = null;
			}
			++numBytes;
			if($byte == 0) {
				++zeroBytes;
			}
			if($byte > 8 && $byte < 16 || $byte > 32 && $byte < 256 || $byte > 287) {
				++numChars;
			}
		}
	} catch( e ) {
		haxe_CallStack.lastException = e;
	}
	input.close();
	if(numBytes == 0 || numChars / numBytes > 0.9 || zeroBytes / numBytes < 0.015 && numChars / numBytes > 0.5) {
		return true;
	}
	return false;
};
var lime_tools_helpers_HTML5Helper = function() { };
$hxClasses["lime.tools.helpers.HTML5Helper"] = lime_tools_helpers_HTML5Helper;
lime_tools_helpers_HTML5Helper.__name__ = ["lime","tools","helpers","HTML5Helper"];
lime_tools_helpers_HTML5Helper.generateFontData = function(project,font) {
	var sourcePath = font.sourcePath;
	var tmp;
	try {
		tmp = js_node_Fs.realpathSync(sourcePath);
	} catch( e ) {
		haxe_CallStack.lastException = e;
		tmp = null;
	}
	if(!sys_FileSystem.exists(tmp + ".hash")) {
		var templatePaths = [lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("lime")),"templates")].concat(project.templatePaths);
		var tmp1 = haxe_io_Path.directory(sourcePath);
		var tmp2 = lime_tools_helpers_PathHelper.findTemplate(templatePaths,"bin/hxswfml.n");
		var tmp3 = haxe_io_Path.withoutDirectory(sourcePath);
		var tmp4;
		try {
			tmp4 = js_node_Fs.realpathSync(sourcePath);
		} catch( e1 ) {
			haxe_CallStack.lastException = e1;
			tmp4 = null;
		}
		lime_tools_helpers_ProcessHelper.runCommand(tmp1,"neko",[tmp2,"ttf2hash2",tmp3,tmp4 + ".hash","-glyphs",font.glyphs]);
	}
	var tmp5;
	try {
		tmp5 = js_node_Fs.realpathSync(sourcePath);
	} catch( e2 ) {
		haxe_CallStack.lastException = e2;
		tmp5 = null;
	}
	return "-resource " + tmp5 + ".hash@__ASSET__" + font.flatName;
};
lime_tools_helpers_HTML5Helper.generateWebfonts = function(project,font) {
	var suffix;
	var _g = lime_tools_helpers_PlatformHelper.get_hostPlatform();
	switch(_g) {
	case "linux":
		suffix = "-linux";
		break;
	case "mac":
		suffix = "-mac";
		break;
	case "windows":
		suffix = "-windows.exe";
		break;
	default:
		return;
	}
	if(suffix == "-linux") {
		if(lime_tools_helpers_PlatformHelper.get_hostArchitecture() == lime_project_Architecture.X86) {
			suffix += "32";
		} else {
			suffix += "64";
		}
	}
	var templatePaths = [lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("lime")),"templates")].concat(project.templatePaths);
	var webify = lime_tools_helpers_PathHelper.findTemplate(templatePaths,"bin/webify" + suffix);
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() != "windows") {
		var args = ["+x",webify];
		if(args == null) {
			js_node_ChildProcess.spawnSync("chmod",{ shell : true, stdio : "inherit"});
		} else {
			js_node_ChildProcess.spawnSync("chmod",args,{ stdio : "inherit"});
		}
	}
	if(lime_tools_helpers_LogHelper.verbose) {
		var relPath = font.sourcePath;
		var tmp;
		try {
			tmp = js_node_Fs.realpathSync(relPath);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			tmp = null;
		}
		lime_tools_helpers_ProcessHelper.runCommand("",webify,[tmp]);
	} else {
		var relPath1 = font.sourcePath;
		var tmp1;
		try {
			tmp1 = js_node_Fs.realpathSync(relPath1);
		} catch( e1 ) {
			haxe_CallStack.lastException = e1;
			tmp1 = null;
		}
		lime_tools_helpers_ProcessHelper.runProcess("",webify,[tmp1],true,true,true);
	}
};
lime_tools_helpers_HTML5Helper.launch = function(project,path,port) {
	if(port == null) {
		port = 3000;
	}
	if(project.app.url != null && project.app.url != "") {
		lime_tools_helpers_ProcessHelper.openURL(project.app.url);
	} else {
		var suffix;
		var _g = lime_tools_helpers_PlatformHelper.get_hostPlatform();
		switch(_g) {
		case "linux":
			suffix = "-linux";
			break;
		case "mac":
			suffix = "-mac";
			break;
		case "windows":
			suffix = "-windows.exe";
			break;
		default:
			return;
		}
		if(suffix == "-linux") {
			if(lime_tools_helpers_PlatformHelper.get_hostArchitecture() == lime_project_Architecture.X86) {
				suffix += "32";
			} else {
				suffix += "64";
			}
		}
		var templatePaths = [lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("lime")),"templates")].concat(project.templatePaths);
		var node = lime_tools_helpers_PathHelper.findTemplate(templatePaths,"bin/node/node" + suffix);
		var server = lime_tools_helpers_PathHelper.findTemplate(templatePaths,"bin/node/http-server/bin/http-server");
		if(lime_tools_helpers_PlatformHelper.get_hostPlatform() != "windows") {
			var args = ["+x",node];
			if(args == null) {
				js_node_ChildProcess.spawnSync("chmod",{ shell : true, stdio : "inherit"});
			} else {
				js_node_ChildProcess.spawnSync("chmod",args,{ stdio : "inherit"});
			}
		}
		var _this = project.targetFlags;
		if(__map_reserved["port"] != null ? _this.existsReserved("port") : _this.h.hasOwnProperty("port")) {
			var _this1 = project.targetFlags;
			port = Std.parseInt(__map_reserved["port"] != null ? _this1.getReserved("port") : _this1.h["port"]);
		}
		lime_tools_helpers_LogHelper.info(""," - \x1B[1mStarting local web server:\x1B[0m http://localhost:" + port);
		var args1 = [server,path,"-p",port == null ? "null" : "" + port,"-c-1","--cors"];
		var _this2 = project.targetFlags;
		if(__map_reserved["nolaunch"] != null ? _this2.existsReserved("nolaunch") : _this2.h.hasOwnProperty("nolaunch")) {
			lime_tools_helpers_LogHelper.info("\x1B[1mStarting local web server:\x1B[0m http://localhost:" + port);
		} else {
			args1.push("-o");
		}
		if(!lime_tools_helpers_LogHelper.verbose) {
			args1.push("--silent");
		}
		lime_tools_helpers_ProcessHelper.runCommand("",node,args1);
	}
};
lime_tools_helpers_HTML5Helper.minify = function(project,sourceFile) {
	if(sys_FileSystem.exists(sourceFile)) {
		var tempFile = lime_tools_helpers_PathHelper.getTemporaryFile(".js");
		var _this = project.targetFlags;
		if(__map_reserved["yui"] != null ? _this.existsReserved("yui") : _this.h.hasOwnProperty("yui")) {
			var templatePaths = [lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("lime")),"templates")].concat(project.templatePaths);
			lime_tools_helpers_ProcessHelper.runCommand("","java",["-Dapple.awt.UIElement=true","-jar",lime_tools_helpers_PathHelper.findTemplate(templatePaths,"bin/yuicompressor-2.4.7.jar"),"-o",tempFile,sourceFile]);
		} else {
			var templatePaths1 = [lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(new lime_project_Haxelib("lime")),"templates")].concat(project.templatePaths);
			var args = ["-Dapple.awt.UIElement=true","-jar",lime_tools_helpers_PathHelper.findTemplate(templatePaths1,"bin/compiler.jar"),"--js",sourceFile,"--js_output_file",tempFile];
			var _this1 = project.targetFlags;
			if(__map_reserved["advanced"] != null ? _this1.existsReserved("advanced") : _this1.h.hasOwnProperty("advanced")) {
				args.push("--compilation_level");
				args.push("ADVANCED_OPTIMIZATIONS");
			}
			var tmp;
			if(!project.debug) {
				var _this2 = project.targetFlags;
				if(__map_reserved["source-map"] != null) {
					tmp = _this2.existsReserved("source-map");
				} else {
					tmp = _this2.h.hasOwnProperty("source-map");
				}
			} else {
				tmp = true;
			}
			if(tmp) {
				args.push("--create_source_map");
				args.push(tempFile + ".map");
				if(sys_FileSystem.exists(sourceFile + ".map")) {
					args.push("--source_map_input");
					args.push(sourceFile + "|" + sourceFile + ".map");
				}
			}
			if(!lime_tools_helpers_LogHelper.verbose) {
				args.push("--jscomp_off=uselessCode");
			}
			lime_tools_helpers_ProcessHelper.runCommand("","java",args);
			var tmp1;
			if(!project.debug) {
				var _this3 = project.targetFlags;
				if(__map_reserved["source-map"] != null) {
					tmp1 = _this3.existsReserved("source-map");
				} else {
					tmp1 = _this3.h.hasOwnProperty("source-map");
				}
			} else {
				tmp1 = true;
			}
			if(tmp1) {
				sys_io_File.copy(tempFile + ".map",sourceFile + ".map");
				js_node_Fs.unlinkSync(tempFile + ".map");
			}
		}
		js_node_Fs.unlinkSync(sourceFile);
		sys_io_File.copy(tempFile,sourceFile);
		js_node_Fs.unlinkSync(tempFile);
		return true;
	}
	return false;
};
var lime_tools_helpers_HaxelibHelper = function() { };
$hxClasses["lime.tools.helpers.HaxelibHelper"] = lime_tools_helpers_HaxelibHelper;
lime_tools_helpers_HaxelibHelper.__name__ = ["lime","tools","helpers","HaxelibHelper"];
lime_tools_helpers_HaxelibHelper.findFolderMatch = function(haxelib,directory) {
	var versions = [];
	var version;
	try {
		var _g = 0;
		var _g1 = js_node_Fs.readdirSync(directory);
		while(_g < _g1.length) {
			var file = _g1[_g];
			++_g;
			try {
				version = lime_project__$Version_Version_$Impl_$.stringToVersion(StringTools.replace(file,",","."));
				versions.push(version);
			} catch( e ) {
				haxe_CallStack.lastException = e;
			}
		}
	} catch( e1 ) {
		haxe_CallStack.lastException = e1;
	}
	return lime_tools_helpers_HaxelibHelper.findMatch(haxelib,versions);
};
lime_tools_helpers_HaxelibHelper.findMatch = function(haxelib,otherVersions) {
	var matches = [];
	var _g = 0;
	while(_g < otherVersions.length) {
		var otherVersion = otherVersions[_g];
		++_g;
		if(haxelib.versionMatches(lime_project__$Version_Version_$Impl_$.toString(otherVersion))) {
			matches.push(otherVersion);
		}
	}
	if(matches.length == 0) {
		return null;
	}
	var bestMatch = null;
	var _g1 = 0;
	while(_g1 < matches.length) {
		var match = matches[_g1];
		++_g1;
		if(bestMatch == null || lime_project__$Version_Version_$Impl_$.greaterThan(match,bestMatch)) {
			bestMatch = match;
		}
	}
	return bestMatch;
};
lime_tools_helpers_HaxelibHelper.getRepositoryPath = function(clearCache) {
	if(clearCache == null) {
		clearCache = false;
	}
	if(lime_tools_helpers_HaxelibHelper.repositoryPath == null || clearCache) {
		var cache = lime_tools_helpers_LogHelper.verbose;
		lime_tools_helpers_LogHelper.verbose = lime_tools_helpers_HaxelibHelper.debug;
		var output = "";
		try {
			var cacheDryRun = lime_tools_helpers_ProcessHelper.dryRun;
			lime_tools_helpers_ProcessHelper.dryRun = false;
			output = lime_tools_helpers_HaxelibHelper.runProcess(lime_tools_helpers_HaxelibHelper.workingDirectory,["config"],true,true,true);
			if(output == null) {
				output = "";
			}
			lime_tools_helpers_ProcessHelper.dryRun = cacheDryRun;
		} catch( e ) {
			haxe_CallStack.lastException = e;
		}
		lime_tools_helpers_LogHelper.verbose = cache;
		lime_tools_helpers_HaxelibHelper.repositoryPath = StringTools.trim(output);
	}
	return lime_tools_helpers_HaxelibHelper.repositoryPath;
};
lime_tools_helpers_HaxelibHelper.getPath = function(haxelib,validate,clearCache) {
	if(clearCache == null) {
		clearCache = false;
	}
	if(validate == null) {
		validate = false;
	}
	var name = haxelib.name;
	var _this = lime_tools_helpers_HaxelibHelper.pathOverrides;
	if(__map_reserved[name] != null ? _this.existsReserved(name) : _this.h.hasOwnProperty(name)) {
		var _this1 = lime_tools_helpers_HaxelibHelper.versions;
		if(!(__map_reserved[name] != null ? _this1.existsReserved(name) : _this1.h.hasOwnProperty(name))) {
			var this1 = lime_tools_helpers_HaxelibHelper.versions;
			var _this2 = lime_tools_helpers_HaxelibHelper.pathOverrides;
			var value = lime_tools_helpers_HaxelibHelper.getPathVersion(__map_reserved[name] != null ? _this2.getReserved(name) : _this2.h[name]);
			var _this3 = this1;
			if(__map_reserved[name] != null) {
				_this3.setReserved(name,value);
			} else {
				_this3.h[name] = value;
			}
		}
		var _this4 = lime_tools_helpers_HaxelibHelper.pathOverrides;
		if(__map_reserved[name] != null) {
			return _this4.getReserved(name);
		} else {
			return _this4.h[name];
		}
	}
	if(haxelib.version != null && haxelib.version != "") {
		name += ":" + haxelib.version;
	}
	var _this5 = lime_tools_helpers_HaxelibHelper.pathOverrides;
	if(__map_reserved[name] != null ? _this5.existsReserved(name) : _this5.h.hasOwnProperty(name)) {
		var _this6 = lime_tools_helpers_HaxelibHelper.versions;
		if(!(__map_reserved[name] != null ? _this6.existsReserved(name) : _this6.h.hasOwnProperty(name))) {
			var _this7 = lime_tools_helpers_HaxelibHelper.pathOverrides;
			var version = lime_tools_helpers_HaxelibHelper.getPathVersion(__map_reserved[name] != null ? _this7.getReserved(name) : _this7.h[name]);
			var key = haxelib.name;
			var _this8 = lime_tools_helpers_HaxelibHelper.versions;
			if(__map_reserved[key] != null) {
				_this8.setReserved(key,version);
			} else {
				_this8.h[key] = version;
			}
			var _this9 = lime_tools_helpers_HaxelibHelper.versions;
			if(__map_reserved[name] != null) {
				_this9.setReserved(name,version);
			} else {
				_this9.h[name] = version;
			}
		}
		var _this10 = lime_tools_helpers_HaxelibHelper.pathOverrides;
		if(__map_reserved[name] != null) {
			return _this10.getReserved(name);
		} else {
			return _this10.h[name];
		}
	}
	if(clearCache) {
		lime_tools_helpers_HaxelibHelper.paths.remove(name);
		lime_tools_helpers_HaxelibHelper.versions.remove(name);
	}
	var _this11 = lime_tools_helpers_HaxelibHelper.paths;
	if(!(__map_reserved[name] != null ? _this11.existsReserved(name) : _this11.h.hasOwnProperty(name))) {
		var cache = lime_tools_helpers_LogHelper.verbose;
		lime_tools_helpers_LogHelper.verbose = lime_tools_helpers_HaxelibHelper.debug;
		var output = "";
		try {
			var cacheDryRun = lime_tools_helpers_ProcessHelper.dryRun;
			lime_tools_helpers_ProcessHelper.dryRun = false;
			output = lime_tools_helpers_HaxelibHelper.runProcess(lime_tools_helpers_HaxelibHelper.workingDirectory,["path",name],true,true,true);
			if(output == null) {
				output = "";
			}
			lime_tools_helpers_ProcessHelper.dryRun = cacheDryRun;
		} catch( e ) {
			haxe_CallStack.lastException = e;
		}
		lime_tools_helpers_LogHelper.verbose = cache;
		var lines = output.split("\n");
		var result = "";
		var _g1 = 1;
		var _g = lines.length;
		while(_g1 < _g) {
			var i = _g1++;
			var trim = StringTools.trim(lines[i]);
			if(trim == "-D " + haxelib.name || StringTools.startsWith(trim,"-D " + haxelib.name + "=")) {
				result = StringTools.trim(lines[i - 1]);
			}
		}
		if(result == "") {
			try {
				var _g2 = 0;
				while(_g2 < lines.length) {
					var line = lines[_g2];
					++_g2;
					if(line != "" && HxOverrides.substr(line,0,1) != "-") {
						if(sys_FileSystem.exists(line)) {
							result = line;
							break;
						}
					}
				}
			} catch( e1 ) {
				haxe_CallStack.lastException = e1;
			}
		}
		if(validate) {
			if(result == "") {
				if(output.indexOf("does not have") > -1) {
					var directoryName = "";
					if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows") {
						directoryName = "Windows";
					} else if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "mac") {
						if(lime_tools_helpers_PlatformHelper.get_hostArchitecture() == lime_project_Architecture.X64) {
							directoryName = "Mac64";
						} else {
							directoryName = "Mac";
						}
					} else if(lime_tools_helpers_PlatformHelper.get_hostArchitecture() == lime_project_Architecture.X64) {
						directoryName = "Linux64";
					} else {
						directoryName = "Linux";
					}
					lime_tools_helpers_LogHelper.error("haxelib \"" + haxelib.name + "\" does not have an \"ndll/" + directoryName + "\" directory");
				} else if(output.indexOf("haxelib install ") > -1 && output.indexOf("haxelib install " + haxelib.name) == -1) {
					var start = output.indexOf("haxelib install ") + 16;
					var end = output.lastIndexOf("'");
					var dependencyName = output.substring(start,end);
					lime_tools_helpers_LogHelper.error("Could not find haxelib \"" + dependencyName + "\" (dependency of \"" + haxelib.name + "\"), does it need to be installed?");
				} else if(haxelib.version != "") {
					lime_tools_helpers_LogHelper.error("Could not find haxelib \"" + haxelib.name + "\" version \"" + haxelib.version + "\", does it need to be installed?");
				} else {
					lime_tools_helpers_LogHelper.error("Could not find haxelib \"" + haxelib.name + "\", does it need to be installed?");
				}
			}
		}
		var standardizedPath = lime_tools_helpers_PathHelper.standardize(result,false);
		var pathSplit = standardizedPath.split("/");
		var hasHaxelibJSON = false;
		while(!hasHaxelibJSON && pathSplit.length > 0) {
			var path = pathSplit.join("/");
			var jsonPath = lime_tools_helpers_PathHelper.combine(path,"haxelib.json");
			if(sys_FileSystem.exists(jsonPath)) {
				var _this12 = lime_tools_helpers_HaxelibHelper.paths;
				if(__map_reserved[name] != null) {
					_this12.setReserved(name,path);
				} else {
					_this12.h[name] = path;
				}
				if(haxelib.version != "" && haxelib.version != null) {
					var key1 = haxelib.name;
					var _this13 = lime_tools_helpers_HaxelibHelper.paths;
					if(__map_reserved[key1] != null) {
						_this13.setReserved(key1,path);
					} else {
						_this13.h[key1] = path;
					}
					var version1 = lime_tools_helpers_HaxelibHelper.getPathVersion(path);
					var _this14 = lime_tools_helpers_HaxelibHelper.versions;
					if(__map_reserved[name] != null) {
						_this14.setReserved(name,version1);
					} else {
						_this14.h[name] = version1;
					}
					var key2 = haxelib.name;
					var _this15 = lime_tools_helpers_HaxelibHelper.versions;
					if(__map_reserved[key2] != null) {
						_this15.setReserved(key2,version1);
					} else {
						_this15.h[key2] = version1;
					}
				} else {
					var this2 = lime_tools_helpers_HaxelibHelper.versions;
					var value1 = lime_tools_helpers_HaxelibHelper.getPathVersion(path);
					var _this16 = this2;
					if(__map_reserved[name] != null) {
						_this16.setReserved(name,value1);
					} else {
						_this16.h[name] = value1;
					}
				}
				hasHaxelibJSON = true;
			} else {
				pathSplit.pop();
			}
		}
		if(!hasHaxelibJSON) {
			var _this17 = lime_tools_helpers_HaxelibHelper.paths;
			if(__map_reserved[name] != null) {
				_this17.setReserved(name,result);
			} else {
				_this17.h[name] = result;
			}
		}
	}
	var _this18 = lime_tools_helpers_HaxelibHelper.paths;
	if(__map_reserved[name] != null) {
		return _this18.getReserved(name);
	} else {
		return _this18.h[name];
	}
};
lime_tools_helpers_HaxelibHelper.getPathVersion = function(path) {
	path = lime_tools_helpers_PathHelper.combine(path,"haxelib.json");
	if(sys_FileSystem.exists(path)) {
		try {
			var json = JSON.parse(js_node_Fs.readFileSync(path,{ encoding : "utf8"}));
			var versionString = json.version;
			var version = lime_project__$Version_Version_$Impl_$.stringToVersion(versionString);
			return version;
		} catch( e ) {
			haxe_CallStack.lastException = e;
		}
	}
	return null;
};
lime_tools_helpers_HaxelibHelper.getVersion = function(haxelib) {
	var clearCache = false;
	if(haxelib == null) {
		haxelib = new lime_project_Haxelib("lime");
		clearCache = true;
	}
	lime_tools_helpers_HaxelibHelper.getPath(haxelib,true,clearCache);
	var key = haxelib.name;
	var _this = lime_tools_helpers_HaxelibHelper.versions;
	if(__map_reserved[key] != null) {
		return _this.getReserved(key);
	} else {
		return _this.h[key];
	}
};
lime_tools_helpers_HaxelibHelper.runCommand = function(path,args,safeExecute,ignoreErrors,print) {
	if(print == null) {
		print = false;
	}
	if(ignoreErrors == null) {
		ignoreErrors = false;
	}
	if(safeExecute == null) {
		safeExecute = true;
	}
	var _this = lime_tools_helpers_HaxelibHelper.pathOverrides;
	if(__map_reserved["haxelib"] != null ? _this.existsReserved("haxelib") : _this.h.hasOwnProperty("haxelib")) {
		var _this1 = lime_tools_helpers_HaxelibHelper.pathOverrides;
		var script = lime_tools_helpers_PathHelper.combine(__map_reserved["haxelib"] != null ? _this1.getReserved("haxelib") : _this1.h["haxelib"],"run.n");
		if(!sys_FileSystem.exists(script)) {
			lime_tools_helpers_LogHelper.error("Cannot find haxelib script: " + script);
		}
		return lime_tools_helpers_ProcessHelper.runCommand(path,"neko",[script].concat(args),safeExecute,ignoreErrors,print);
	} else {
		var command = "haxelib";
		return lime_tools_helpers_ProcessHelper.runCommand(path,command,args,safeExecute,ignoreErrors,print);
	}
};
lime_tools_helpers_HaxelibHelper.runProcess = function(path,args,waitForOutput,safeExecute,ignoreErrors,print,returnErrorValue) {
	if(returnErrorValue == null) {
		returnErrorValue = false;
	}
	if(print == null) {
		print = false;
	}
	if(ignoreErrors == null) {
		ignoreErrors = false;
	}
	if(safeExecute == null) {
		safeExecute = true;
	}
	if(waitForOutput == null) {
		waitForOutput = true;
	}
	var _this = lime_tools_helpers_HaxelibHelper.pathOverrides;
	if(__map_reserved["haxelib"] != null ? _this.existsReserved("haxelib") : _this.h.hasOwnProperty("haxelib")) {
		var _this1 = lime_tools_helpers_HaxelibHelper.pathOverrides;
		var script = lime_tools_helpers_PathHelper.combine(__map_reserved["haxelib"] != null ? _this1.getReserved("haxelib") : _this1.h["haxelib"],"run.n");
		if(!sys_FileSystem.exists(script)) {
			lime_tools_helpers_LogHelper.error("Cannot find haxelib script: " + script);
		}
		return lime_tools_helpers_ProcessHelper.runProcess(path,"neko",[script].concat(args),waitForOutput,safeExecute,ignoreErrors,print,returnErrorValue);
	} else {
		var command = "haxelib";
		return lime_tools_helpers_ProcessHelper.runProcess(path,command,args,waitForOutput,safeExecute,ignoreErrors,print,returnErrorValue);
	}
};
lime_tools_helpers_HaxelibHelper.setOverridePath = function(haxelib,path) {
	var name = haxelib.name;
	var version = lime_tools_helpers_HaxelibHelper.getPathVersion(path);
	var _this = lime_tools_helpers_HaxelibHelper.pathOverrides;
	if(__map_reserved[name] != null) {
		_this.setReserved(name,path);
	} else {
		_this.h[name] = path;
	}
	var this1 = lime_tools_helpers_HaxelibHelper.pathOverrides;
	var key = name + ":" + lime_project__$Version_Version_$Impl_$.toString(version);
	var _this1 = this1;
	if(__map_reserved[key] != null) {
		_this1.setReserved(key,path);
	} else {
		_this1.h[key] = path;
	}
	var _this2 = lime_tools_helpers_HaxelibHelper.versions;
	if(__map_reserved[name] != null) {
		_this2.setReserved(name,version);
	} else {
		_this2.h[name] = version;
	}
	var this2 = lime_tools_helpers_HaxelibHelper.versions;
	var key1 = name + ":" + lime_project__$Version_Version_$Impl_$.toString(version);
	var _this3 = this2;
	if(__map_reserved[key1] != null) {
		_this3.setReserved(key1,version);
	} else {
		_this3.h[key1] = version;
	}
};
var lime_tools_helpers_LogHelper = function() { };
$hxClasses["lime.tools.helpers.LogHelper"] = lime_tools_helpers_LogHelper;
lime_tools_helpers_LogHelper.__name__ = ["lime","tools","helpers","LogHelper"];
lime_tools_helpers_LogHelper.error = function(message,verboseMessage,e) {
	if(verboseMessage == null) {
		verboseMessage = "";
	}
	if(message != "" && !lime_tools_helpers_LogHelper.mute) {
		var output;
		if(lime_tools_helpers_LogHelper.verbose && verboseMessage != "") {
			output = "\x1B[31;1mError:\x1B[0m\x1B[1m " + verboseMessage + "\x1B[0m\n";
		} else {
			output = "\x1B[31;1mError:\x1B[0m \x1B[1m" + message + "\x1B[0m\n";
		}
		new _$Sys_FileOutput(2).write(haxe_io_Bytes.ofString(lime_tools_helpers_LogHelper.stripColor(output)));
	}
	if(lime_tools_helpers_LogHelper.verbose && e != null) {
		throw new js__$Boot_HaxeError(e);
	}
	process.exit(1);
};
lime_tools_helpers_LogHelper.info = function(message,verboseMessage) {
	if(verboseMessage == null) {
		verboseMessage = "";
	}
	if(!lime_tools_helpers_LogHelper.mute) {
		if(lime_tools_helpers_LogHelper.verbose && verboseMessage != "") {
			lime_tools_helpers_LogHelper.println(verboseMessage);
		} else if(message != "") {
			lime_tools_helpers_LogHelper.println(message);
		}
	}
};
lime_tools_helpers_LogHelper.print = function(message) {
	var v = lime_tools_helpers_LogHelper.stripColor(message);
	process.stdout.write(Std.string(v));
};
lime_tools_helpers_LogHelper.println = function(message) {
	var v = lime_tools_helpers_LogHelper.stripColor(message);
	process.stdout.write(Std.string(v));
	process.stdout.write("\n");
};
lime_tools_helpers_LogHelper.stripColor = function(output) {
	if(lime_tools_helpers_LogHelper.colorSupported == null) {
		if(lime_tools_helpers_PlatformHelper.get_hostPlatform() != "windows") {
			var result = -1;
			try {
				var $process = new sys.io.Process("tput",["colors"]);
				result = $process.exitCode();
				$process.close();
			} catch( e ) {
				haxe_CallStack.lastException = e;
			}
			lime_tools_helpers_LogHelper.colorSupported = result == 0;
		} else {
			lime_tools_helpers_LogHelper.colorSupported = false;
			if(process.env["TERM"] == "xterm" || process.env["ANSICON"] != null) {
				lime_tools_helpers_LogHelper.colorSupported = true;
			} else if(lime_system_CFFI.enabled) {
				var getConsoleMode = lime_system_CFFI.load("lime","lime_system_get_windows_console_mode",1);
				var setConsoleMode = lime_system_CFFI.load("lime","lime_system_set_windows_console_mode",2);
				var STD_INPUT_HANDLE = -10;
				var STD_OUTPUT_HANDLE = -11;
				var STD_ERROR_HANDLE = -12;
				var ENABLE_VIRTUAL_TERMINAL_INPUT = 512;
				var ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4;
				var DISABLE_NEWLINE_AUTO_RETURN = 8;
				var outputMode = getConsoleMode(STD_OUTPUT_HANDLE);
				var errorMode = getConsoleMode(STD_ERROR_HANDLE);
				if((outputMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING) != 0) {
					lime_tools_helpers_LogHelper.colorSupported = true;
				} else {
					outputMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING | DISABLE_NEWLINE_AUTO_RETURN;
					lime_tools_helpers_LogHelper.colorSupported = setConsoleMode(STD_OUTPUT_HANDLE,outputMode);
				}
				if(lime_tools_helpers_LogHelper.colorSupported) {
					if((errorMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING) == 0) {
						errorMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING | DISABLE_NEWLINE_AUTO_RETURN;
						lime_tools_helpers_LogHelper.colorSupported = setConsoleMode(STD_ERROR_HANDLE,errorMode);
					}
					if(lime_tools_helpers_LogHelper.colorSupported) {
						process.env["ANSICON"] = "1";
					}
				}
			}
		}
	}
	if(lime_tools_helpers_LogHelper.enableColor && lime_tools_helpers_LogHelper.colorSupported) {
		return output;
	} else {
		return output.replace(lime_tools_helpers_LogHelper.colorCodes.r,"");
	}
};
lime_tools_helpers_LogHelper.warn = function(message,verboseMessage,allowRepeat) {
	if(allowRepeat == null) {
		allowRepeat = false;
	}
	if(verboseMessage == null) {
		verboseMessage = "";
	}
	if(!lime_tools_helpers_LogHelper.mute) {
		var output = "";
		if(lime_tools_helpers_LogHelper.verbose && verboseMessage != "") {
			output = "\x1B[33;1mWarning:\x1B[0m \x1B[1m" + verboseMessage + "\x1B[0m";
		} else if(message != "") {
			output = "\x1B[33;1mWarning:\x1B[0m \x1B[1m" + message + "\x1B[0m";
		}
		var tmp;
		if(!allowRepeat) {
			var _this = lime_tools_helpers_LogHelper.sentWarnings;
			if(__map_reserved[output] != null) {
				tmp = _this.existsReserved(output);
			} else {
				tmp = _this.h.hasOwnProperty(output);
			}
		} else {
			tmp = false;
		}
		if(tmp) {
			return;
		}
		var _this1 = lime_tools_helpers_LogHelper.sentWarnings;
		if(__map_reserved[output] != null) {
			_this1.setReserved(output,true);
		} else {
			_this1.h[output] = true;
		}
		lime_tools_helpers_LogHelper.println(output);
	}
};
var lime_tools_helpers_ModuleHelper = function() { };
$hxClasses["lime.tools.helpers.ModuleHelper"] = lime_tools_helpers_ModuleHelper;
lime_tools_helpers_ModuleHelper.__name__ = ["lime","tools","helpers","ModuleHelper"];
lime_tools_helpers_ModuleHelper.addModuleSource = function(source,moduleData,include,exclude,packageName) {
	if(!sys_FileSystem.exists(source)) {
		lime_tools_helpers_LogHelper.error("Could not find module source \"" + source + "\"");
		return;
	}
	moduleData.haxeflags.push("-cp " + source);
	var path = source;
	if(packageName != null && packageName.length > 0) {
		path = lime_tools_helpers_PathHelper.combine(source,StringTools.replace(packageName,".","/"));
	}
	lime_tools_helpers_ModuleHelper.parseModuleSource(source,moduleData,include,exclude,path);
};
lime_tools_helpers_ModuleHelper.buildModules = function(project,tempDirectory,outputDirectory) {
	tempDirectory = lime_tools_helpers_PathHelper.combine(tempDirectory,"lib");
	outputDirectory = lime_tools_helpers_PathHelper.combine(outputDirectory,"lib");
	lime_tools_helpers_PathHelper.mkdir(tempDirectory);
	lime_tools_helpers_PathHelper.mkdir(outputDirectory);
	var importName;
	var hxmlPath;
	var importPath;
	var outputPath;
	var moduleImport;
	var hxml;
	var _this = project.modules;
	var $module = new haxe_ds__$StringMap_StringMapIterator(_this,_this.arrayKeys());
	while($module.hasNext()) {
		var module1 = $module.next();
		if(module1.classNames.length > 0) {
			importName = "Module" + module1.name.charAt(0).toUpperCase() + HxOverrides.substr(module1.name,1,null);
			hxmlPath = lime_tools_helpers_PathHelper.combine(tempDirectory,module1.name + ".hxml");
			importPath = lime_tools_helpers_PathHelper.combine(tempDirectory,importName + ".hx");
			var _this1 = project.targetFlags;
			if(__map_reserved["final"] != null ? _this1.existsReserved("final") : _this1.h.hasOwnProperty("final")) {
				outputPath = lime_tools_helpers_PathHelper.combine(outputDirectory,module1.name + ".min.js");
			} else {
				outputPath = lime_tools_helpers_PathHelper.combine(outputDirectory,module1.name + ".js");
			}
			moduleImport = "package;\n\nimport " + module1.classNames.join(";\nimport ") + ";";
			hxml = "-cp " + tempDirectory;
			hxml += "\n" + module1.haxeflags.join("\n");
			var _g = 0;
			var _g1 = project.haxelibs;
			while(_g < _g1.length) {
				var haxelib = _g1[_g];
				++_g;
				hxml += "\n-cp " + lime_tools_helpers_PathHelper.getHaxelib(haxelib);
			}
			var key = project.haxedefs.keys();
			while(key.hasNext()) {
				var key1 = key.next();
				if(key1 != "no-compilation") {
					var _this2 = project.haxedefs;
					var value = __map_reserved[key1] != null ? _this2.getReserved(key1) : _this2.h[key1];
					if(value == null || value == "") {
						hxml += "\n-D " + key1;
					} else {
						hxml += "\n-D " + key1 + "=" + Std.string(value);
					}
				}
			}
			hxml += "\n-D html5";
			hxml += "\n-D html";
			hxml += "\n--no-inline";
			hxml += "\n-dce no";
			hxml += "\n-js " + outputPath;
			var includeTypes = module1.classNames.concat(module1.includeTypes);
			var excludeTypes = module1.excludeTypes;
			var _this3 = project.modules;
			var otherModule = new haxe_ds__$StringMap_StringMapIterator(_this3,_this3.arrayKeys());
			while(otherModule.hasNext()) {
				var otherModule1 = otherModule.next();
				if(otherModule1 != module1) {
					excludeTypes = excludeTypes.concat(lime_tools_helpers_ArrayHelper.getUnique(includeTypes,otherModule1.classNames));
					excludeTypes = excludeTypes.concat(lime_tools_helpers_ArrayHelper.getUnique(includeTypes,otherModule1.includeTypes));
				}
			}
			if(excludeTypes.length > 0) {
				haxe_ds_ArraySort.sort(excludeTypes,lime_tools_helpers_ModuleHelper.shortFirst);
				hxml += "\n--macro lime.tools.helpers.ModuleHelper.exclude(['" + excludeTypes.join("','") + "'])";
			}
			haxe_ds_ArraySort.sort(includeTypes,lime_tools_helpers_ModuleHelper.shortFirst);
			hxml += "\n--macro lime.tools.helpers.ModuleHelper.expose(['" + includeTypes.join("','") + "'])";
			hxml += "\n" + importName;
			js_node_Fs.writeFileSync(importPath,moduleImport);
			js_node_Fs.writeFileSync(hxmlPath,hxml);
			lime_tools_helpers_ProcessHelper.runCommand("","haxe",[hxmlPath]);
			lime_tools_helpers_ModuleHelper.patchFile(outputPath);
			var _this4 = project.targetFlags;
			if(__map_reserved["final"] != null ? _this4.existsReserved("final") : _this4.h.hasOwnProperty("final")) {
				lime_tools_helpers_HTML5Helper.minify(project,outputPath);
			}
		}
	}
};
lime_tools_helpers_ModuleHelper.parseModuleSource = function(source,moduleData,include,exclude,currentPath) {
	var files = js_node_Fs.readdirSync(currentPath);
	var filePath;
	var className;
	var packageName;
	var _g = 0;
	while(_g < files.length) {
		var file = files[_g];
		++_g;
		filePath = lime_tools_helpers_PathHelper.combine(currentPath,file);
		if(sys_FileSystem.isDirectory(filePath)) {
			packageName = StringTools.replace(filePath,source,"");
			packageName = StringTools.replace(packageName,"\\","/");
			while(StringTools.startsWith(packageName,"/")) packageName = HxOverrides.substr(packageName,1,null);
			packageName = StringTools.replace(packageName,"/",".");
			if(lime_tools_helpers_StringHelper.filter(packageName,include,exclude)) {
				lime_tools_helpers_ModuleHelper.parseModuleSource(source,moduleData,include,exclude,filePath);
			}
		} else {
			if(haxe_io_Path.extension(file) != "hx") {
				continue;
			}
			className = StringTools.replace(filePath,source,"");
			className = StringTools.replace(className,"\\","/");
			while(StringTools.startsWith(className,"/")) className = HxOverrides.substr(className,1,null);
			className = StringTools.replace(className,"/",".");
			className = StringTools.replace(className,".hx","");
			if(lime_tools_helpers_StringHelper.filter(className,include,exclude)) {
				moduleData.classNames.push(className);
			}
		}
	}
};
lime_tools_helpers_ModuleHelper.patchFile = function(outputPath) {
	if(sys_FileSystem.exists(outputPath)) {
		var output = js_node_Fs.readFileSync(outputPath,{ encoding : "utf8"});
		var replaceString = "var $hxClasses = {}";
		var index = output.indexOf(replaceString);
		if(index > -1) {
			output = HxOverrides.substr(output,0,index) + "if (!$hx_exports.$hxClasses) $hx_exports.$hxClasses = {};\nvar $hxClasses = $hx_exports.$hxClasses" + HxOverrides.substr(output,index + replaceString.length,null);
			js_node_Fs.writeFileSync(outputPath,output);
		}
	}
};
lime_tools_helpers_ModuleHelper.updateProject = function(project) {
	var excludeTypes = [];
	var suffix;
	var _this = project.targetFlags;
	if(__map_reserved["final"] != null ? _this.existsReserved("final") : _this.h.hasOwnProperty("final")) {
		suffix = ".min";
	} else {
		suffix = "";
	}
	var suffix1 = suffix + ".js";
	var hasModules = false;
	var _this1 = project.modules;
	var $module = new haxe_ds__$StringMap_StringMapIterator(_this1,_this1.arrayKeys());
	while($module.hasNext()) {
		var module1 = $module.next();
		project.dependencies.push(new lime_project_Dependency("./lib/" + module1.name + suffix1,null));
		excludeTypes = lime_tools_helpers_ArrayHelper.concatUnique(excludeTypes,module1.classNames);
		excludeTypes = lime_tools_helpers_ArrayHelper.concatUnique(excludeTypes,module1.excludeTypes);
		excludeTypes = lime_tools_helpers_ArrayHelper.concatUnique(excludeTypes,module1.includeTypes);
		hasModules = true;
	}
	if(excludeTypes.length > 0) {
		haxe_ds_ArraySort.sort(excludeTypes,lime_tools_helpers_ModuleHelper.shortFirst);
		project.haxeflags.push("--macro lime.tools.helpers.ModuleHelper.exclude(['" + excludeTypes.join("','") + "'])");
	}
};
lime_tools_helpers_ModuleHelper.shortFirst = function(a,b) {
	if(a.length < b.length) {
		return -1;
	} else if(a.length > b.length) {
		return 1;
	}
	return 0;
};
var lime_tools_helpers_ObjectHelper = function() { };
$hxClasses["lime.tools.helpers.ObjectHelper"] = lime_tools_helpers_ObjectHelper;
lime_tools_helpers_ObjectHelper.__name__ = ["lime","tools","helpers","ObjectHelper"];
lime_tools_helpers_ObjectHelper.copyFields = function(source,destination) {
	var _g = 0;
	var _g1 = Reflect.fields(source);
	while(_g < _g1.length) {
		var field = _g1[_g];
		++_g;
		destination[field] = Reflect.field(source,field);
	}
	return destination;
};
lime_tools_helpers_ObjectHelper.copyMissingFields = function(source,destination) {
	var _g = 0;
	var _g1 = Reflect.fields(source);
	while(_g < _g1.length) {
		var field = _g1[_g];
		++_g;
		if(!Object.prototype.hasOwnProperty.call(destination,field)) {
			destination[field] = Reflect.field(source,field);
		}
	}
	return destination;
};
lime_tools_helpers_ObjectHelper.copyUniqueFields = function(source,destination,defaultInstance) {
	var _g = 0;
	var _g1 = Reflect.fields(source);
	while(_g < _g1.length) {
		var field = _g1[_g];
		++_g;
		var value = Reflect.field(source,field);
		if(value != Reflect.field(defaultInstance,field)) {
			destination[field] = value;
		}
	}
	return destination;
};
lime_tools_helpers_ObjectHelper.deepCopy = function(v) {
	if(!Reflect.isObject(v)) {
		return v;
	} else if(typeof(v) == "string") {
		return v;
	} else if((v instanceof Array) && v.__enum__ == null) {
		var result = Type.createInstance(v == null ? null : js_Boot.getClass(v),[]);
		if(result != null) {
			var copy;
			var _g1 = 0;
			var _g = v.length;
			while(_g1 < _g) {
				var ii = _g1++;
				copy = lime_tools_helpers_ObjectHelper.deepCopy(v[ii]);
				result.push(copy);
			}
		}
		return result;
	} else if(js_Boot.__instanceof(v,haxe_ds_StringMap)) {
		var result1 = Type.createInstance(v == null ? null : js_Boot.getClass(v),[]);
		var keys = v.keys();
		var key = keys;
		while(key.hasNext()) {
			var key1 = key.next();
			result1.set(key1,lime_tools_helpers_ObjectHelper.deepCopy(v.get(key1)));
		}
		return result1;
	} else if(js_Boot.__instanceof(v,haxe_ds_IntMap)) {
		var result2 = Type.createInstance(v == null ? null : js_Boot.getClass(v),[]);
		var keys1 = v.keys();
		var key2 = keys1;
		while(key2.hasNext()) {
			var key3 = key2.next();
			result2.set(key3,lime_tools_helpers_ObjectHelper.deepCopy(v.get(key3)));
		}
		return result2;
	} else if(js_Boot.__instanceof(v,List)) {
		var result3 = Type.createInstance(v == null ? null : js_Boot.getClass(v),[]);
		var iter = $iterator(v)();
		var ii1 = iter;
		while(ii1.hasNext()) {
			var ii2 = ii1.next();
			result3.add(ii2);
		}
		return result3;
	} else if((v == null ? null : js_Boot.getClass(v)) == null) {
		var obj = { };
		var _g2 = 0;
		var _g11 = Reflect.fields(v);
		while(_g2 < _g11.length) {
			var ff = _g11[_g2];
			++_g2;
			obj[ff] = lime_tools_helpers_ObjectHelper.deepCopy(Reflect.field(v,ff));
		}
		return obj;
	} else {
		var obj1 = Type.createEmptyInstance(v == null ? null : js_Boot.getClass(v));
		var _g3 = 0;
		var _g12 = Reflect.fields(v);
		while(_g3 < _g12.length) {
			var ff1 = _g12[_g3];
			++_g3;
			obj1[ff1] = lime_tools_helpers_ObjectHelper.deepCopy(Reflect.field(v,ff1));
		}
		return obj1;
	}
};
var lime_tools_helpers_PathHelper = function() { };
$hxClasses["lime.tools.helpers.PathHelper"] = lime_tools_helpers_PathHelper;
lime_tools_helpers_PathHelper.__name__ = ["lime","tools","helpers","PathHelper"];
lime_tools_helpers_PathHelper.combine = function(firstPath,secondPath) {
	if(firstPath == null || firstPath == "") {
		return secondPath;
	} else if(secondPath != null && secondPath != "") {
		if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows") {
			if(secondPath.indexOf(":") == 1) {
				return secondPath;
			}
		} else if(HxOverrides.substr(secondPath,0,1) == "/") {
			return secondPath;
		}
		var firstSlash = HxOverrides.substr(firstPath,-1,null) == "/" || HxOverrides.substr(firstPath,-1,null) == "\\";
		var secondSlash = HxOverrides.substr(secondPath,0,1) == "/" || HxOverrides.substr(secondPath,0,1) == "\\";
		if(firstSlash && secondSlash) {
			return firstPath + HxOverrides.substr(secondPath,1,null);
		} else if(!firstSlash && !secondSlash) {
			return firstPath + "/" + secondPath;
		} else {
			return firstPath + secondPath;
		}
	} else {
		return firstPath;
	}
};
lime_tools_helpers_PathHelper.escape = function(path) {
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() != "windows") {
		path = StringTools.replace(path,"\\ "," ");
		path = StringTools.replace(path," ","\\ ");
		path = StringTools.replace(path,"\\'","'");
		path = StringTools.replace(path,"'","\\'");
	} else {
		path = StringTools.replace(path,"^,",",");
		path = StringTools.replace(path,",","^,");
		path = StringTools.replace(path,"^ "," ");
		path = StringTools.replace(path," ","^ ");
	}
	return lime_tools_helpers_PathHelper.expand(path);
};
lime_tools_helpers_PathHelper.expand = function(path) {
	if(path == null) {
		path = "";
	}
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() != "windows") {
		if(StringTools.startsWith(path,"~/")) {
			path = process.env["HOME"] + "/" + HxOverrides.substr(path,2,null);
		}
	}
	return path;
};
lime_tools_helpers_PathHelper.findTemplate = function(templatePaths,path,warnIfNotFound) {
	if(warnIfNotFound == null) {
		warnIfNotFound = true;
	}
	var matches = lime_tools_helpers_PathHelper.findTemplates(templatePaths,path,warnIfNotFound);
	if(matches.length > 0) {
		return matches[matches.length - 1];
	}
	return null;
};
lime_tools_helpers_PathHelper.findTemplateRecursive = function(templatePaths,path,warnIfNotFound,destinationPaths) {
	if(warnIfNotFound == null) {
		warnIfNotFound = true;
	}
	var paths = lime_tools_helpers_PathHelper.findTemplates(templatePaths,path,warnIfNotFound);
	if(paths.length == 0) {
		return null;
	}
	try {
		if(sys_FileSystem.isDirectory(paths[0])) {
			var templateFiles = [];
			var templateMatched = new haxe_ds_StringMap();
			paths.reverse();
			lime_tools_helpers_PathHelper.findTemplateRecursive_(paths,"",templateFiles,templateMatched,destinationPaths);
			return templateFiles;
		}
	} catch( e ) {
		haxe_CallStack.lastException = e;
	}
	paths.splice(0,paths.length - 1);
	if(destinationPaths != null) {
		destinationPaths.push(paths[0]);
	}
	return paths;
};
lime_tools_helpers_PathHelper.findTemplateRecursive_ = function(templatePaths,source,templateFiles,templateMatched,destinationPaths) {
	var files;
	var _g = 0;
	while(_g < templatePaths.length) {
		var templatePath = templatePaths[_g];
		++_g;
		try {
			files = js_node_Fs.readdirSync(lime_tools_helpers_PathHelper.combine(templatePath,source));
			var _g1 = 0;
			while(_g1 < files.length) {
				var file = files[_g1];
				++_g1;
				var itemSource = lime_tools_helpers_PathHelper.combine(source,file);
				if(!(__map_reserved[itemSource] != null ? templateMatched.existsReserved(itemSource) : templateMatched.h.hasOwnProperty(itemSource))) {
					if(__map_reserved[itemSource] != null) {
						templateMatched.setReserved(itemSource,true);
					} else {
						templateMatched.h[itemSource] = true;
					}
					var path = lime_tools_helpers_PathHelper.combine(templatePath,itemSource);
					if(sys_FileSystem.isDirectory(path)) {
						lime_tools_helpers_PathHelper.findTemplateRecursive_(templatePaths,itemSource,templateFiles,templateMatched,destinationPaths);
					} else {
						templateFiles.push(path);
						if(destinationPaths != null) {
							destinationPaths.push(itemSource);
						}
					}
				}
			}
		} catch( e ) {
			haxe_CallStack.lastException = e;
		}
	}
};
lime_tools_helpers_PathHelper.findTemplates = function(templatePaths,path,warnIfNotFound) {
	if(warnIfNotFound == null) {
		warnIfNotFound = true;
	}
	var matches = [];
	var _g = 0;
	while(_g < templatePaths.length) {
		var templatePath = templatePaths[_g];
		++_g;
		var targetPath = lime_tools_helpers_PathHelper.combine(templatePath,path);
		if(sys_FileSystem.exists(targetPath)) {
			matches.push(targetPath);
		}
	}
	if(matches.length == 0 && warnIfNotFound) {
		lime_tools_helpers_LogHelper.warn("Could not find template file: " + path);
	}
	return matches;
};
lime_tools_helpers_PathHelper.getHaxelib = function(haxelib,validate,clearCache) {
	if(clearCache == null) {
		clearCache = false;
	}
	if(validate == null) {
		validate = false;
	}
	return lime_tools_helpers_HaxelibHelper.getPath(haxelib,validate,clearCache);
};
lime_tools_helpers_PathHelper.getLibraryPath = function(ndll,directoryName,namePrefix,nameSuffix,allowDebug) {
	if(allowDebug == null) {
		allowDebug = false;
	}
	if(nameSuffix == null) {
		nameSuffix = ".ndll";
	}
	if(namePrefix == null) {
		namePrefix = "";
	}
	var usingDebug = false;
	var path = "";
	if(allowDebug) {
		path = lime_tools_helpers_PathHelper.searchForLibrary(ndll,directoryName,namePrefix + ndll.name + "-debug" + nameSuffix);
		usingDebug = sys_FileSystem.exists(path);
	}
	if(!usingDebug) {
		path = lime_tools_helpers_PathHelper.searchForLibrary(ndll,directoryName,namePrefix + ndll.name + nameSuffix);
	}
	return path;
};
lime_tools_helpers_PathHelper.getTemporaryFile = function(extension) {
	if(extension == null) {
		extension = "";
	}
	var path = "";
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows") {
		path = process.env["TEMP"];
	} else {
		path = process.env["TMPDIR"];
		if(path == null) {
			path = "/tmp";
		}
	}
	path += "/temp_" + Math.round(16777215 * Math.random()) + extension;
	if(sys_FileSystem.exists(path)) {
		return lime_tools_helpers_PathHelper.getTemporaryFile(extension);
	}
	return path;
};
lime_tools_helpers_PathHelper.getTemporaryDirectory = function() {
	var path = lime_tools_helpers_PathHelper.getTemporaryFile();
	lime_tools_helpers_PathHelper.mkdir(path);
	return path;
};
lime_tools_helpers_PathHelper.isAbsolute = function(path) {
	if(StringTools.startsWith(path,"/") || StringTools.startsWith(path,"\\")) {
		return true;
	}
	return false;
};
lime_tools_helpers_PathHelper.isRelative = function(path) {
	return !lime_tools_helpers_PathHelper.isAbsolute(path);
};
lime_tools_helpers_PathHelper.mkdir = function(directory) {
	directory = StringTools.replace(directory,"\\","/");
	var total = "";
	if(HxOverrides.substr(directory,0,1) == "/") {
		total = "/";
	}
	var parts = directory.split("/");
	var oldPath = "";
	if(parts.length > 0 && parts[0].indexOf(":") > -1) {
		try {
			oldPath = process.cwd();
			process.chdir(parts[0] + "\\");
			parts.shift();
		} catch( e ) {
			haxe_CallStack.lastException = e;
			lime_tools_helpers_LogHelper.error("Cannot create directory \"" + directory + "\"");
		}
	}
	var _g = 0;
	while(_g < parts.length) {
		var part = parts[_g];
		++_g;
		if(part != "." && part != "") {
			if(total != "" && total != "/") {
				total += "/";
			}
			total += part;
			if(sys_FileSystem.exists(total) && !sys_FileSystem.isDirectory(total)) {
				lime_tools_helpers_LogHelper.info(""," - \x1B[1mRemoving file:\x1B[0m " + total);
				js_node_Fs.unlinkSync(total);
			}
			if(!sys_FileSystem.exists(total)) {
				lime_tools_helpers_LogHelper.info(""," - \x1B[1mCreating directory:\x1B[0m " + total);
				sys_FileSystem.createDirectory(total);
			}
		}
	}
	if(oldPath != "") {
		process.chdir(oldPath);
	}
};
lime_tools_helpers_PathHelper.readDirectory = function(directory,ignore,paths) {
	if(sys_FileSystem.exists(directory)) {
		if(paths == null) {
			paths = [];
		}
		var files;
		try {
			files = js_node_Fs.readdirSync(directory);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			return paths;
		}
		var _g = 0;
		var _g1 = js_node_Fs.readdirSync(directory);
		while(_g < _g1.length) {
			var file = _g1[_g];
			++_g;
			if(ignore != null) {
				var filtered = false;
				var _g2 = 0;
				while(_g2 < ignore.length) {
					var filter = ignore[_g2];
					++_g2;
					if(filter == file) {
						filtered = true;
					}
				}
				if(filtered) {
					continue;
				}
			}
			var path = directory + "/" + file;
			try {
				if(sys_FileSystem.isDirectory(path)) {
					lime_tools_helpers_PathHelper.readDirectory(path,ignore,paths);
				} else {
					paths.push(path);
				}
			} catch( e1 ) {
				haxe_CallStack.lastException = e1;
				return paths;
			}
		}
		return paths;
	}
	return null;
};
lime_tools_helpers_PathHelper.relocatePath = function(path,targetDirectory) {
	if(lime_tools_helpers_PathHelper.isAbsolute(path) || targetDirectory == "") {
		return path;
	} else if(lime_tools_helpers_PathHelper.isAbsolute(targetDirectory)) {
		return lime_tools_helpers_PathHelper.combine(process.cwd(),path);
	} else {
		targetDirectory = StringTools.replace(targetDirectory,"\\","/");
		var splitTarget = targetDirectory.split("/");
		var directories = 0;
		while(splitTarget.length > 0) {
			var _g = splitTarget.shift();
			if(_g == null) {
				++directories;
			} else {
				switch(_g) {
				case "":case ".":
					break;
				case "..":
					--directories;
					break;
				default:
					++directories;
				}
			}
		}
		var adjust = "";
		var _g1 = 0;
		var _g2 = directories;
		while(_g1 < _g2) {
			var i = _g1++;
			adjust += "../";
		}
		return adjust + path;
	}
};
lime_tools_helpers_PathHelper.relocatePaths = function(paths,targetDirectory) {
	var relocatedPaths = paths.slice();
	var _g1 = 0;
	var _g = paths.length;
	while(_g1 < _g) {
		var i = _g1++;
		relocatedPaths[i] = lime_tools_helpers_PathHelper.relocatePath(paths[i],targetDirectory);
	}
	return relocatedPaths;
};
lime_tools_helpers_PathHelper.removeDirectory = function(directory) {
	if(sys_FileSystem.exists(directory)) {
		var files;
		try {
			files = js_node_Fs.readdirSync(directory);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			return;
		}
		var _g = 0;
		var _g1 = js_node_Fs.readdirSync(directory);
		while(_g < _g1.length) {
			var file = _g1[_g];
			++_g;
			var path = directory + "/" + file;
			try {
				if(sys_FileSystem.isDirectory(path)) {
					lime_tools_helpers_PathHelper.removeDirectory(path);
				} else {
					js_node_Fs.unlinkSync(path);
				}
			} catch( e1 ) {
				haxe_CallStack.lastException = e1;
			}
		}
		lime_tools_helpers_LogHelper.info(""," - \x1B[1mRemoving directory:\x1B[0m " + directory);
		try {
			js_node_Fs.rmdirSync(directory);
		} catch( e2 ) {
			haxe_CallStack.lastException = e2;
		}
	}
};
lime_tools_helpers_PathHelper.safeFileName = function(name) {
	var safeName = StringTools.replace(name," ","");
	return safeName;
};
lime_tools_helpers_PathHelper.searchForLibrary = function(ndll,directoryName,filename) {
	if(ndll.path != null && ndll.path != "") {
		return ndll.path;
	} else if(ndll.haxelib == null) {
		if(ndll.extensionPath != null && ndll.extensionPath != "") {
			var subdirectory = "ndll/";
			if(ndll.subdirectory != null) {
				if(ndll.subdirectory != "") {
					subdirectory = ndll.subdirectory + "/";
				} else {
					subdirectory = "";
				}
			}
			return lime_tools_helpers_PathHelper.combine(ndll.extensionPath,subdirectory + directoryName + "/" + filename);
		} else {
			return filename;
		}
	} else if(ndll.haxelib.name == "hxcpp") {
		var extension = haxe_io_Path.extension(filename);
		if(extension == "a" || extension == "lib") {
			return lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(ndll.haxelib,true),"lib/" + directoryName + "/" + filename);
		} else {
			return lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(ndll.haxelib,true),"bin/" + directoryName + "/" + filename);
		}
	} else {
		var subdirectory1 = "ndll/";
		if(ndll.subdirectory != null) {
			if(ndll.subdirectory != "") {
				subdirectory1 = ndll.subdirectory + "/";
			} else {
				subdirectory1 = "";
			}
		}
		return lime_tools_helpers_PathHelper.combine(lime_tools_helpers_PathHelper.getHaxelib(ndll.haxelib,true),subdirectory1 + directoryName + "/" + filename);
	}
};
lime_tools_helpers_PathHelper.standardize = function(path,trailingSlash) {
	if(trailingSlash == null) {
		trailingSlash = false;
	}
	if(path == null) {
		return null;
	}
	path = StringTools.replace(path,"\\","/");
	path = StringTools.replace(path,"//","/");
	path = StringTools.replace(path,"//","/");
	if(!trailingSlash && StringTools.endsWith(path,"/")) {
		path = HxOverrides.substr(path,0,path.length - 1);
	} else if(trailingSlash && !StringTools.endsWith(path,"/")) {
		path += "/";
	}
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows" && path.charAt(1) == ":") {
		path = path.charAt(0).toUpperCase() + ":" + HxOverrides.substr(path,2,null);
	}
	return path;
};
lime_tools_helpers_PathHelper.substitutePath = function(project,path) {
	var newString = path;
	while(lime_tools_helpers_PathHelper.varMatch.match(newString)) newString = lime_tools_helpers_PathHelper.varMatch.matchedLeft() + lime_tools_helpers_StringHelper.replaceVariable(project,lime_tools_helpers_PathHelper.varMatch.matched(1)) + lime_tools_helpers_PathHelper.varMatch.matchedRight();
	return newString;
};
lime_tools_helpers_PathHelper.tryFullPath = function(path) {
	try {
		try {
			return js_node_Fs.realpathSync(path);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			return null;
		}
	} catch( e1 ) {
		haxe_CallStack.lastException = e1;
		return lime_tools_helpers_PathHelper.expand(path);
	}
};
var lime_tools_helpers_PlatformHelper = function() { };
$hxClasses["lime.tools.helpers.PlatformHelper"] = lime_tools_helpers_PlatformHelper;
lime_tools_helpers_PlatformHelper.__name__ = ["lime","tools","helpers","PlatformHelper"];
lime_tools_helpers_PlatformHelper.__properties__ = {get_hostPlatform:"get_hostPlatform",get_hostArchitecture:"get_hostArchitecture"};
lime_tools_helpers_PlatformHelper.get_hostArchitecture = function() {
	if(lime_tools_helpers_PlatformHelper._hostArchitecture == null) {
		var _g = lime_tools_helpers_PlatformHelper.get_hostPlatform();
		switch(_g) {
		case "linux":case "mac":
			var _g1 = process.arch;
			switch(_g1) {
			case "arm":
				lime_tools_helpers_PlatformHelper._hostArchitecture = lime_project_Architecture.ARMV7;
				break;
			case "x64":
				lime_tools_helpers_PlatformHelper._hostArchitecture = lime_project_Architecture.X64;
				break;
			default:
				lime_tools_helpers_PlatformHelper._hostArchitecture = lime_project_Architecture.X86;
			}
			break;
		case "windows":
			var architecture = process.env["PROCESSOR_ARCHITEW6432"];
			if(architecture != null && architecture.indexOf("64") > -1) {
				lime_tools_helpers_PlatformHelper._hostArchitecture = lime_project_Architecture.X64;
			} else {
				lime_tools_helpers_PlatformHelper._hostArchitecture = lime_project_Architecture.X86;
			}
			break;
		default:
			lime_tools_helpers_PlatformHelper._hostArchitecture = lime_project_Architecture.ARMV6;
		}
		lime_tools_helpers_LogHelper.info(""," - \x1B[1mDetected host architecture:\x1B[0m " + Std.string(lime_tools_helpers_PlatformHelper._hostArchitecture).toUpperCase());
	}
	return lime_tools_helpers_PlatformHelper._hostArchitecture;
};
lime_tools_helpers_PlatformHelper.get_hostPlatform = function() {
	if(lime_tools_helpers_PlatformHelper._hostPlatform == null) {
		if(new EReg("window","i").match(Sys.systemName())) {
			lime_tools_helpers_PlatformHelper._hostPlatform = "windows";
		} else if(new EReg("linux","i").match(Sys.systemName())) {
			lime_tools_helpers_PlatformHelper._hostPlatform = "linux";
		} else if(new EReg("mac","i").match(Sys.systemName())) {
			lime_tools_helpers_PlatformHelper._hostPlatform = "mac";
		}
		lime_tools_helpers_LogHelper.info(""," - \x1B[1mDetected host platform:\x1B[0m " + Std.string(lime_tools_helpers_PlatformHelper._hostPlatform).toUpperCase());
	}
	return lime_tools_helpers_PlatformHelper._hostPlatform;
};
var lime_tools_helpers_ProcessHelper = function() { };
$hxClasses["lime.tools.helpers.ProcessHelper"] = lime_tools_helpers_ProcessHelper;
lime_tools_helpers_ProcessHelper.__name__ = ["lime","tools","helpers","ProcessHelper"];
lime_tools_helpers_ProcessHelper.__properties__ = {get_processorCores:"get_processorCores"};
lime_tools_helpers_ProcessHelper.openFile = function(workingDirectory,targetPath,executable) {
	if(executable == null) {
		executable = "";
	}
	if(executable == null) {
		executable = "";
	}
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows") {
		var args = [];
		if(executable == "") {
			executable = "cmd";
			args = ["/c"];
		}
		if(targetPath.indexOf(":\\") == -1) {
			lime_tools_helpers_ProcessHelper.runCommand(workingDirectory,executable,args.concat([targetPath]));
		} else {
			lime_tools_helpers_ProcessHelper.runCommand(workingDirectory,executable,args.concat([".\\" + targetPath]));
		}
	} else if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "mac") {
		if(executable == "") {
			executable = "/usr/bin/open";
		}
		if(HxOverrides.substr(targetPath,0,1) == "/") {
			lime_tools_helpers_ProcessHelper.runCommand(workingDirectory,executable,["-W",targetPath]);
		} else {
			lime_tools_helpers_ProcessHelper.runCommand(workingDirectory,executable,["-W","./" + targetPath]);
		}
	} else {
		if(executable == "") {
			executable = "/usr/bin/xdg-open";
		}
		if(HxOverrides.substr(targetPath,0,1) == "/") {
			lime_tools_helpers_ProcessHelper.runCommand(workingDirectory,executable,[targetPath]);
		} else {
			lime_tools_helpers_ProcessHelper.runCommand(workingDirectory,executable,["./" + targetPath]);
		}
	}
};
lime_tools_helpers_ProcessHelper.openURL = function(url) {
	if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows") {
		lime_tools_helpers_ProcessHelper.runCommand("","start",[url]);
	} else if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "mac") {
		lime_tools_helpers_ProcessHelper.runCommand("","/usr/bin/open",[url]);
	} else {
		lime_tools_helpers_ProcessHelper.runCommand("","/usr/bin/xdg-open",[url,"&"]);
	}
};
lime_tools_helpers_ProcessHelper.runCommand = function(path,command,args,safeExecute,ignoreErrors,print) {
	if(print == null) {
		print = false;
	}
	if(ignoreErrors == null) {
		ignoreErrors = false;
	}
	if(safeExecute == null) {
		safeExecute = true;
	}
	if(print) {
		var message = command;
		if(args != null) {
			var _g = 0;
			while(_g < args.length) {
				var arg = args[_g];
				++_g;
				if(arg.indexOf(" ") > -1) {
					message += " \"" + arg + "\"";
				} else {
					message += " " + arg;
				}
			}
		}
		process.stdout.write(message == null ? "null" : "" + message);
		process.stdout.write("\n");
	}
	if(safeExecute) {
		try {
			var tmp;
			var tmp1;
			if(path != null && path != "") {
				var tmp2;
				try {
					tmp2 = js_node_Fs.realpathSync(path);
				} catch( e ) {
					haxe_CallStack.lastException = e;
					tmp2 = null;
				}
				tmp1 = !sys_FileSystem.exists(tmp2);
			} else {
				tmp1 = false;
			}
			if(tmp1) {
				var relPath = new haxe_io_Path(path).dir;
				var tmp3;
				try {
					tmp3 = js_node_Fs.realpathSync(relPath);
				} catch( e1 ) {
					haxe_CallStack.lastException = e1;
					tmp3 = null;
				}
				tmp = !sys_FileSystem.exists(tmp3);
			} else {
				tmp = false;
			}
			if(tmp) {
				lime_tools_helpers_LogHelper.error("The specified target path \"" + path + "\" does not exist");
				return 1;
			}
			return lime_tools_helpers_ProcessHelper._runCommand(path,command,args);
		} catch( e2 ) {
			haxe_CallStack.lastException = e2;
			if (e2 instanceof js__$Boot_HaxeError) e2 = e2.val;
			if(!ignoreErrors) {
				lime_tools_helpers_LogHelper.error("",e2);
				return 1;
			}
			return 0;
		}
	} else {
		return lime_tools_helpers_ProcessHelper._runCommand(path,command,args);
	}
};
lime_tools_helpers_ProcessHelper._runCommand = function(path,command,args) {
	var oldPath = "";
	if(path != null && path != "") {
		lime_tools_helpers_LogHelper.info(""," - \x1B[1mChanging directory:\x1B[0m " + path + "");
		if(!lime_tools_helpers_ProcessHelper.dryRun) {
			oldPath = process.cwd();
			process.chdir(path);
		}
	}
	var argString = "";
	if(args != null) {
		var _g = 0;
		while(_g < args.length) {
			var arg = args[_g];
			++_g;
			if(arg.indexOf(" ") > -1) {
				argString += " \"" + arg + "\"";
			} else {
				argString += " " + arg;
			}
		}
	}
	lime_tools_helpers_LogHelper.info(""," - \x1B[1mRunning command:\x1B[0m " + command + argString);
	var result = 0;
	if(!lime_tools_helpers_ProcessHelper.dryRun) {
		if(args != null && args.length > 0) {
			if(args == null) {
				result = js_node_ChildProcess.spawnSync(command,{ shell : true, stdio : "inherit"}).status;
			} else {
				result = js_node_ChildProcess.spawnSync(command,args,{ stdio : "inherit"}).status;
			}
		} else {
			result = js_node_ChildProcess.spawnSync(command,{ shell : true, stdio : "inherit"}).status;
		}
		if(oldPath != "") {
			process.chdir(oldPath);
		}
	}
	if(result != 0) {
		throw new js__$Boot_HaxeError("Error running: " + command + " " + args.join(" ") + " [" + path + "]");
	}
	return result;
};
lime_tools_helpers_ProcessHelper.runProcess = function(path,command,args,waitForOutput,safeExecute,ignoreErrors,print,returnErrorValue) {
	if(returnErrorValue == null) {
		returnErrorValue = false;
	}
	if(print == null) {
		print = false;
	}
	if(ignoreErrors == null) {
		ignoreErrors = false;
	}
	if(safeExecute == null) {
		safeExecute = true;
	}
	if(waitForOutput == null) {
		waitForOutput = true;
	}
	if(print) {
		var message = command;
		var _g = 0;
		while(_g < args.length) {
			var arg = args[_g];
			++_g;
			if(arg.indexOf(" ") > -1) {
				message += " \"" + arg + "\"";
			} else {
				message += " " + arg;
			}
		}
		process.stdout.write(message == null ? "null" : "" + message);
		process.stdout.write("\n");
	}
	if(safeExecute) {
		try {
			var tmp;
			var tmp1;
			if(path != null && path != "") {
				var tmp2;
				try {
					tmp2 = js_node_Fs.realpathSync(path);
				} catch( e ) {
					haxe_CallStack.lastException = e;
					tmp2 = null;
				}
				tmp1 = !sys_FileSystem.exists(tmp2);
			} else {
				tmp1 = false;
			}
			if(tmp1) {
				var relPath = new haxe_io_Path(path).dir;
				var tmp3;
				try {
					tmp3 = js_node_Fs.realpathSync(relPath);
				} catch( e1 ) {
					haxe_CallStack.lastException = e1;
					tmp3 = null;
				}
				tmp = !sys_FileSystem.exists(tmp3);
			} else {
				tmp = false;
			}
			if(tmp) {
				lime_tools_helpers_LogHelper.error("The specified target path \"" + path + "\" does not exist");
			}
			return lime_tools_helpers_ProcessHelper._runProcess(path,command,args,waitForOutput,safeExecute,ignoreErrors,returnErrorValue);
		} catch( e2 ) {
			haxe_CallStack.lastException = e2;
			if (e2 instanceof js__$Boot_HaxeError) e2 = e2.val;
			if(!ignoreErrors) {
				lime_tools_helpers_LogHelper.error("",e2);
			}
			return null;
		}
	} else {
		return lime_tools_helpers_ProcessHelper._runProcess(path,command,args,waitForOutput,safeExecute,ignoreErrors,returnErrorValue);
	}
};
lime_tools_helpers_ProcessHelper._runProcess = function(path,command,args,waitForOutput,safeExecute,ignoreErrors,returnErrorValue) {
	var oldPath = "";
	if(path != null && path != "") {
		lime_tools_helpers_LogHelper.info(""," - \x1B[1mChanging directory:\x1B[0m " + path + "");
		if(!lime_tools_helpers_ProcessHelper.dryRun) {
			oldPath = process.cwd();
			process.chdir(path);
		}
	}
	var argString = "";
	var _g = 0;
	while(_g < args.length) {
		var arg = args[_g];
		++_g;
		if(arg.indexOf(" ") > -1) {
			argString += " \"" + arg + "\"";
		} else {
			argString += " " + arg;
		}
	}
	lime_tools_helpers_LogHelper.info(""," - \x1B[1mRunning process:\x1B[0m " + command + argString);
	var output = "";
	var result = 0;
	if(!lime_tools_helpers_ProcessHelper.dryRun) {
		var $process = new sys.io.Process(command,args);
		var buffer = new haxe_io_BytesOutput();
		if(waitForOutput) {
			var waiting = true;
			while(waiting) try {
				var current = $process.stdout.readAll(1024);
				buffer.write(current);
				if(current.length == 0) {
					waiting = false;
				}
			} catch( e ) {
				haxe_CallStack.lastException = e;
				if (e instanceof js__$Boot_HaxeError) e = e.val;
				if( js_Boot.__instanceof(e,haxe_io_Eof) ) {
					waiting = false;
				} else throw(e);
			}
			result = $process.exitCode();
			$process.close();
			output = buffer.getBytes().toString();
			if(output == "") {
				var error = $process.stderr.readAll().toString();
				if(result != 0 || error != "") {
					if(ignoreErrors) {
						output = error;
					} else if(!safeExecute) {
						throw new js__$Boot_HaxeError(error);
					} else {
						lime_tools_helpers_LogHelper.error(error);
					}
					if(returnErrorValue) {
						return output;
					} else {
						return null;
					}
				}
			}
		}
		if(oldPath != "") {
			process.chdir(oldPath);
		}
	}
	return output;
};
lime_tools_helpers_ProcessHelper.get_processorCores = function() {
	var cacheDryRun = lime_tools_helpers_ProcessHelper.dryRun;
	lime_tools_helpers_ProcessHelper.dryRun = false;
	if(lime_tools_helpers_ProcessHelper._processorCores < 1) {
		var result = null;
		if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "windows") {
			var env = process.env["NUMBER_OF_PROCESSORS"];
			if(env != null) {
				result = env;
			}
		} else if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "linux") {
			result = lime_tools_helpers_ProcessHelper.runProcess("","nproc",[],true,true,true);
			if(result == null) {
				var cpuinfo = lime_tools_helpers_ProcessHelper.runProcess("","cat",["/proc/cpuinfo"],true,true,true);
				if(cpuinfo != null) {
					var split = cpuinfo.split("processor");
					result = Std.string(split.length - 1);
				}
			}
		} else if(lime_tools_helpers_PlatformHelper.get_hostPlatform() == "mac") {
			var cores = new EReg("Total Number of Cores: (\\d+)","");
			var output = lime_tools_helpers_ProcessHelper.runProcess("","/usr/sbin/system_profiler",["-detailLevel","full","SPHardwareDataType"]);
			if(cores.match(output)) {
				result = cores.matched(1);
			}
		}
		if(result == null || Std.parseInt(result) < 1) {
			lime_tools_helpers_ProcessHelper._processorCores = 1;
		} else {
			lime_tools_helpers_ProcessHelper._processorCores = Std.parseInt(result);
		}
	}
	lime_tools_helpers_ProcessHelper.dryRun = cacheDryRun;
	return lime_tools_helpers_ProcessHelper._processorCores;
};
var lime_tools_helpers_StringHelper = function() { };
$hxClasses["lime.tools.helpers.StringHelper"] = lime_tools_helpers_StringHelper;
lime_tools_helpers_StringHelper.__name__ = ["lime","tools","helpers","StringHelper"];
lime_tools_helpers_StringHelper.base64Decode = function(base64) {
	base64 = StringTools.trim(base64);
	base64 = StringTools.replace(base64,"=","");
	if(lime_tools_helpers_StringHelper.base64Encoder == null) {
		lime_tools_helpers_StringHelper.base64Encoder = new haxe_crypto_BaseCode(haxe_io_Bytes.ofString(lime_tools_helpers_StringHelper.base64Chars));
	}
	var bytes = lime_tools_helpers_StringHelper.base64Encoder.decodeBytes(haxe_io_Bytes.ofString(base64));
	return bytes;
};
lime_tools_helpers_StringHelper.base64Encode = function(bytes) {
	var extension;
	var _g = bytes.length % 3;
	switch(_g) {
	case 1:
		extension = "==";
		break;
	case 2:
		extension = "=";
		break;
	default:
		extension = "";
	}
	if(lime_tools_helpers_StringHelper.base64Encoder == null) {
		lime_tools_helpers_StringHelper.base64Encoder = new haxe_crypto_BaseCode(haxe_io_Bytes.ofString(lime_tools_helpers_StringHelper.base64Chars));
	}
	return lime_tools_helpers_StringHelper.base64Encoder.encodeBytes(bytes).toString() + extension;
};
lime_tools_helpers_StringHelper.filter = function(text,include,exclude) {
	if(include == null) {
		include = ["*"];
	}
	if(exclude == null) {
		exclude = [];
	}
	var _g = 0;
	while(_g < exclude.length) {
		var filter = exclude[_g];
		++_g;
		if(filter != "") {
			if(filter == "*") {
				return false;
			}
			if(filter.indexOf("*") == filter.length - 1) {
				if(StringTools.startsWith(text,HxOverrides.substr(filter,0,-1))) {
					return false;
				}
				continue;
			}
			filter = StringTools.replace(filter,".","\\.");
			filter = StringTools.replace(filter,"*",".*");
			var regexp = new EReg("^" + filter + "$","i");
			if(regexp.match(text)) {
				return false;
			}
		}
	}
	var _g1 = 0;
	while(_g1 < include.length) {
		var filter1 = include[_g1];
		++_g1;
		if(filter1 != "") {
			if(filter1 == "*") {
				return true;
			}
			if(filter1.indexOf("*") == filter1.length - 1) {
				if(StringTools.startsWith(text,HxOverrides.substr(filter1,0,-1))) {
					return true;
				}
				continue;
			}
			filter1 = StringTools.replace(filter1,".","\\.");
			filter1 = StringTools.replace(filter1,"*",".*");
			var regexp1 = new EReg("^" + filter1,"i");
			if(regexp1.match(text)) {
				return true;
			}
		}
	}
	return false;
};
lime_tools_helpers_StringHelper.formatArray = function(array) {
	var output = "[ ";
	var _g1 = 0;
	var _g = array.length;
	while(_g1 < _g) {
		var i = _g1++;
		output += Std.string(array[i]);
		if(i < array.length - 1) {
			output += ", ";
		} else {
			output += " ";
		}
	}
	output += "]";
	return output;
};
lime_tools_helpers_StringHelper.formatEnum = function(value) {
	return Type.getEnumName(Type.getEnum(value)) + "." + Std.string(value);
};
lime_tools_helpers_StringHelper.formatUppercaseVariable = function(name) {
	var isAlpha = new EReg("[A-Z0-9]","i");
	var variableName = "";
	var lastWasUpperCase = false;
	var lastWasAlpha = true;
	var _g1 = 0;
	var _g = name.length;
	while(_g1 < _g) {
		var i = _g1++;
		var $char = name.charAt(i);
		if(!isAlpha.match($char)) {
			variableName += "_";
			lastWasUpperCase = false;
			lastWasAlpha = false;
		} else {
			if($char == $char.toUpperCase() && i > 0) {
				if(lastWasUpperCase) {
					if(i == name.length - 1 || name.charAt(i + 1) == name.charAt(i + 1).toUpperCase()) {
						variableName += $char;
					} else {
						variableName += "_" + $char;
					}
				} else if(lastWasAlpha) {
					variableName += "_" + $char;
				} else {
					variableName += $char;
				}
				lastWasUpperCase = true;
			} else {
				variableName += $char.toUpperCase();
				if(i == 0) {
					lastWasUpperCase = $char == $char.toUpperCase();
				} else {
					lastWasUpperCase = false;
				}
			}
			lastWasAlpha = true;
		}
	}
	return variableName;
};
lime_tools_helpers_StringHelper.generateHashCode = function(value) {
	var hash = 5381;
	var length = value.length;
	var _g1 = 0;
	var _g = value.length;
	while(_g1 < _g) {
		var i = _g1++;
		hash = (hash << 5) + hash + HxOverrides.cca(value,i);
	}
	return hash;
};
lime_tools_helpers_StringHelper.generateUUID = function(length,radix,seed) {
	var chars = lime_tools_helpers_StringHelper.uuidChars.split("");
	if(radix == null || radix > chars.length) {
		radix = chars.length;
	} else if(radix < 2) {
		radix = 2;
	}
	if(seed == null) {
		seed = Math.floor(Math.random() * 2147483647.0);
	}
	var uuid = [];
	var seedValue = Math.round(Math.abs(seed));
	var _g1 = 0;
	var _g = length;
	while(_g1 < _g) {
		var i = _g1++;
		seedValue = seedValue * 16807.0 % 2147483647.0 | 0;
		uuid[i] = chars[0 | (seedValue / 2147483647.0 * radix | 0)];
	}
	return uuid.join("");
};
lime_tools_helpers_StringHelper.getFlatName = function(name) {
	var chars = name.toLowerCase();
	var flatName = "";
	var _g1 = 0;
	var _g = chars.length;
	while(_g1 < _g) {
		var i = _g1++;
		var code = HxOverrides.cca(chars,i);
		if(i > 0 && code >= HxOverrides.cca("0",0) && code <= HxOverrides.cca("9",0) || code >= HxOverrides.cca("a",0) && code <= HxOverrides.cca("z",0) || code == HxOverrides.cca("_",0)) {
			flatName += chars.charAt(i);
		} else {
			flatName += "_";
		}
	}
	if(flatName == "") {
		flatName = "_";
	}
	if(HxOverrides.substr(flatName,0,1) == "_") {
		flatName = "file" + flatName;
	}
	while(true) {
		var _this = lime_tools_helpers_StringHelper.usedFlatNames;
		if(!(__map_reserved[flatName] != null ? _this.existsReserved(flatName) : _this.h.hasOwnProperty(flatName))) {
			break;
		}
		var match = new EReg("(.*?)(\\d+)","");
		if(match.match(flatName)) {
			flatName = match.matched(1) + (Std.parseInt(match.matched(2)) + 1);
		} else {
			flatName += "1";
		}
	}
	var _this1 = lime_tools_helpers_StringHelper.usedFlatNames;
	if(__map_reserved[flatName] != null) {
		_this1.setReserved(flatName,"1");
	} else {
		_this1.h[flatName] = "1";
	}
	return flatName;
};
lime_tools_helpers_StringHelper.getUniqueID = function() {
	return StringTools.hex(lime_tools_helpers_StringHelper.seedNumber++,8);
};
lime_tools_helpers_StringHelper.replaceVariable = function(project,string) {
	if(HxOverrides.substr(string,0,8) == "haxelib:") {
		var path = lime_tools_helpers_HaxelibHelper.getPath(new lime_project_Haxelib(HxOverrides.substr(string,8,null)),true);
		return lime_tools_helpers_PathHelper.standardize(path);
	} else {
		var _this = project.defines;
		if(__map_reserved[string] != null ? _this.existsReserved(string) : _this.h.hasOwnProperty(string)) {
			var _this1 = project.defines;
			if(__map_reserved[string] != null) {
				return _this1.getReserved(string);
			} else {
				return _this1.h[string];
			}
		} else {
			var tmp;
			if(project.environment != null) {
				var _this2 = project.environment;
				if(__map_reserved[string] != null) {
					tmp = _this2.existsReserved(string);
				} else {
					tmp = _this2.h.hasOwnProperty(string);
				}
			} else {
				tmp = false;
			}
			if(tmp) {
				var _this3 = project.environment;
				if(__map_reserved[string] != null) {
					return _this3.getReserved(string);
				} else {
					return _this3.h[string];
				}
			} else {
				var substring = StringTools.replace(string," ","");
				var index;
				var value;
				if(substring.indexOf("==") > -1) {
					index = substring.indexOf("==");
					value = lime_tools_helpers_StringHelper.replaceVariable(project,HxOverrides.substr(substring,0,index));
					return Std.string(value == HxOverrides.substr(substring,index + 2,null));
				} else if(substring.indexOf("!=") > -1) {
					index = substring.indexOf("!=");
					value = lime_tools_helpers_StringHelper.replaceVariable(project,HxOverrides.substr(substring,0,index));
					return Std.string(value != HxOverrides.substr(substring,index + 2,null));
				} else if(substring.indexOf("<=") > -1) {
					index = substring.indexOf("<=");
					value = lime_tools_helpers_StringHelper.replaceVariable(project,HxOverrides.substr(substring,0,index));
					return Std.string(value <= HxOverrides.substr(substring,index + 2,null));
				} else if(substring.indexOf("<") > -1) {
					index = substring.indexOf("<");
					value = lime_tools_helpers_StringHelper.replaceVariable(project,HxOverrides.substr(substring,0,index));
					return Std.string(value < HxOverrides.substr(substring,index + 1,null));
				} else if(substring.indexOf(">=") > -1) {
					index = substring.indexOf(">=");
					value = lime_tools_helpers_StringHelper.replaceVariable(project,HxOverrides.substr(substring,0,index));
					return Std.string(value >= HxOverrides.substr(substring,index + 2,null));
				} else if(substring.indexOf(">") > -1) {
					index = substring.indexOf(">");
					value = lime_tools_helpers_StringHelper.replaceVariable(project,HxOverrides.substr(substring,0,index));
					return Std.string(value > HxOverrides.substr(substring,index + 1,null));
				} else if(substring.indexOf(".") > -1) {
					var index1 = substring.indexOf(".");
					var fieldName = HxOverrides.substr(substring,0,index1);
					var subField = HxOverrides.substr(substring,index1 + 1,null);
					if(Object.prototype.hasOwnProperty.call(project,fieldName)) {
						var field = Reflect.field(project,fieldName);
						if(Object.prototype.hasOwnProperty.call(field,subField)) {
							return Std.string(Reflect.field(field,subField));
						}
					}
				} else if(substring == "projectDirectory") {
					return Std.string(process.cwd());
				}
			}
		}
	}
	return string;
};
lime_tools_helpers_StringHelper.underline = function(string,character) {
	if(character == null) {
		character = "=";
	}
	return string + "\n" + StringTools.lpad("",character,string.length);
};
var lime_tools_helpers_StringMapHelper = function() { };
$hxClasses["lime.tools.helpers.StringMapHelper"] = lime_tools_helpers_StringMapHelper;
lime_tools_helpers_StringMapHelper.__name__ = ["lime","tools","helpers","StringMapHelper"];
lime_tools_helpers_StringMapHelper.copy = function(source) {
	var target = new haxe_ds_StringMap();
	var key = source.keys();
	while(key.hasNext()) {
		var key1 = key.next();
		var value = __map_reserved[key1] != null ? source.getReserved(key1) : source.h[key1];
		if(__map_reserved[key1] != null) {
			target.setReserved(key1,value);
		} else {
			target.h[key1] = value;
		}
	}
	return target;
};
lime_tools_helpers_StringMapHelper.copyKeys = function(source,target) {
	var key = source.keys();
	while(key.hasNext()) {
		var key1 = key.next();
		var value = __map_reserved[key1] != null ? source.getReserved(key1) : source.h[key1];
		if(__map_reserved[key1] != null) {
			target.setReserved(key1,value);
		} else {
			target.h[key1] = value;
		}
	}
};
lime_tools_helpers_StringMapHelper.copyUniqueKeys = function(source,target) {
	var key = source.keys();
	while(key.hasNext()) {
		var key1 = key.next();
		if(!(__map_reserved[key1] != null ? target.existsReserved(key1) : target.h.hasOwnProperty(key1))) {
			var value = __map_reserved[key1] != null ? source.getReserved(key1) : source.h[key1];
			if(__map_reserved[key1] != null) {
				target.setReserved(key1,value);
			} else {
				target.h[key1] = value;
			}
		}
	}
};
var lime_ui_Gamepad = function(id) {
	this.onDisconnect = new lime_app__$Event_$Void_$Void();
	this.onButtonUp = new lime_app__$Event_$lime_$ui_$GamepadButton_$Void();
	this.onButtonDown = new lime_app__$Event_$lime_$ui_$GamepadButton_$Void();
	this.onAxisMove = new lime_app__$Event_$lime_$ui_$GamepadAxis_$Float_$Void();
	this.id = id;
	this.connected = true;
};
$hxClasses["lime.ui.Gamepad"] = lime_ui_Gamepad;
lime_ui_Gamepad.__name__ = ["lime","ui","Gamepad"];
lime_ui_Gamepad.addMappings = function(mappings) {
};
lime_ui_Gamepad.__connect = function(id) {
	if(!lime_ui_Gamepad.devices.h.hasOwnProperty(id)) {
		var gamepad = new lime_ui_Gamepad(id);
		lime_ui_Gamepad.devices.h[id] = gamepad;
		lime_ui_Gamepad.onConnect.dispatch(gamepad);
	}
};
lime_ui_Gamepad.__disconnect = function(id) {
	var gamepad = lime_ui_Gamepad.devices.h[id];
	if(gamepad != null) {
		gamepad.connected = false;
	}
	lime_ui_Gamepad.devices.remove(id);
	if(gamepad != null) {
		gamepad.onDisconnect.dispatch();
	}
};
lime_ui_Gamepad.prototype = {
	connected: null
	,id: null
	,onAxisMove: null
	,onButtonDown: null
	,onButtonUp: null
	,onDisconnect: null
	,get_guid: function() {
		return null;
	}
	,get_name: function() {
		return null;
	}
	,__class__: lime_ui_Gamepad
	,__properties__: {get_name:"get_name",get_guid:"get_guid"}
};
var lime_ui__$GamepadAxis_GamepadAxis_$Impl_$ = {};
$hxClasses["lime.ui._GamepadAxis.GamepadAxis_Impl_"] = lime_ui__$GamepadAxis_GamepadAxis_$Impl_$;
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.__name__ = ["lime","ui","_GamepadAxis","GamepadAxis_Impl_"];
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.toString = function(this1) {
	switch(this1) {
	case 0:
		return "LEFT_X";
	case 1:
		return "LEFT_Y";
	case 2:
		return "RIGHT_X";
	case 3:
		return "RIGHT_Y";
	case 4:
		return "TRIGGER_LEFT";
	case 5:
		return "TRIGGER_RIGHT";
	default:
		return "UNKNOWN (" + this1 + ")";
	}
};
var lime_ui__$GamepadButton_GamepadButton_$Impl_$ = {};
$hxClasses["lime.ui._GamepadButton.GamepadButton_Impl_"] = lime_ui__$GamepadButton_GamepadButton_$Impl_$;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.__name__ = ["lime","ui","_GamepadButton","GamepadButton_Impl_"];
lime_ui__$GamepadButton_GamepadButton_$Impl_$.toString = function(this1) {
	switch(this1) {
	case 0:
		return "A";
	case 1:
		return "B";
	case 2:
		return "X";
	case 3:
		return "Y";
	case 4:
		return "BACK";
	case 5:
		return "GUIDE";
	case 6:
		return "START";
	case 7:
		return "LEFT_STICK";
	case 8:
		return "RIGHT_STICK";
	case 9:
		return "LEFT_SHOULDER";
	case 10:
		return "RIGHT_SHOULDER";
	case 11:
		return "DPAD_UP";
	case 12:
		return "DPAD_DOWN";
	case 13:
		return "DPAD_LEFT";
	case 14:
		return "DPAD_RIGHT";
	default:
		return "UNKNOWN (" + this1 + ")";
	}
};
var lime_ui_Joystick = function(id) {
	this.onTrackballMove = new lime_app__$Event_$Int_$Float_$Float_$Void();
	this.onHatMove = new lime_app__$Event_$Int_$lime_$ui_$JoystickHatPosition_$Void();
	this.onDisconnect = new lime_app__$Event_$Void_$Void();
	this.onButtonUp = new lime_app__$Event_$Int_$Void();
	this.onButtonDown = new lime_app__$Event_$Int_$Void();
	this.onAxisMove = new lime_app__$Event_$Int_$Float_$Void();
	this.id = id;
	this.connected = true;
};
$hxClasses["lime.ui.Joystick"] = lime_ui_Joystick;
lime_ui_Joystick.__name__ = ["lime","ui","Joystick"];
lime_ui_Joystick.__connect = function(id) {
	if(!lime_ui_Joystick.devices.h.hasOwnProperty(id)) {
		var joystick = new lime_ui_Joystick(id);
		lime_ui_Joystick.devices.h[id] = joystick;
		lime_ui_Joystick.onConnect.dispatch(joystick);
	}
};
lime_ui_Joystick.__disconnect = function(id) {
	var joystick = lime_ui_Joystick.devices.h[id];
	if(joystick != null) {
		joystick.connected = false;
	}
	lime_ui_Joystick.devices.remove(id);
	if(joystick != null) {
		joystick.onDisconnect.dispatch();
	}
};
lime_ui_Joystick.prototype = {
	connected: null
	,id: null
	,onAxisMove: null
	,onButtonDown: null
	,onButtonUp: null
	,onDisconnect: null
	,onHatMove: null
	,onTrackballMove: null
	,get_guid: function() {
		return null;
	}
	,get_name: function() {
		return null;
	}
	,get_numAxes: function() {
		return 0;
	}
	,get_numButtons: function() {
		return 0;
	}
	,get_numHats: function() {
		return 0;
	}
	,get_numTrackballs: function() {
		return 0;
	}
	,__class__: lime_ui_Joystick
	,__properties__: {get_numTrackballs:"get_numTrackballs",get_numHats:"get_numHats",get_numButtons:"get_numButtons",get_numAxes:"get_numAxes",get_name:"get_name",get_guid:"get_guid"}
};
var lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$ = {};
$hxClasses["lime.ui._JoystickHatPosition.JoystickHatPosition_Impl_"] = lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.__name__ = ["lime","ui","_JoystickHatPosition","JoystickHatPosition_Impl_"];
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.__properties__ = {set_up:"set_up",get_up:"get_up",set_right:"set_right",get_right:"get_right",set_left:"set_left",get_left:"get_left",set_down:"set_down",get_down:"get_down",set_center:"set_center",get_center:"get_center"};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$._new = function(value) {
	var this1 = value;
	return this1;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.get_center = function(this1) {
	return this1 == 0;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.set_center = function(this1,value) {
	if(value) {
		this1 = 0;
	}
	return value;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.get_down = function(this1) {
	return (this1 & 4) > 0;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.set_down = function(this1,value) {
	if(value) {
		this1 |= 4;
	} else {
		this1 &= 268435455 - 4;
	}
	return value;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.get_left = function(this1) {
	return (this1 & 8) > 0;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.set_left = function(this1,value) {
	if(value) {
		this1 |= 8;
	} else {
		this1 &= 268435455 - 8;
	}
	return value;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.get_right = function(this1) {
	return (this1 & 2) > 0;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.set_right = function(this1,value) {
	if(value) {
		this1 |= 2;
	} else {
		this1 &= 268435455 - 2;
	}
	return value;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.get_up = function(this1) {
	return (this1 & 1) > 0;
};
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.set_up = function(this1,value) {
	if(value) {
		this1 |= 1;
	} else {
		this1 &= 268435455 - 1;
	}
	return value;
};
var lime_ui__$KeyCode_KeyCode_$Impl_$ = {};
$hxClasses["lime.ui._KeyCode.KeyCode_Impl_"] = lime_ui__$KeyCode_KeyCode_$Impl_$;
lime_ui__$KeyCode_KeyCode_$Impl_$.__name__ = ["lime","ui","_KeyCode","KeyCode_Impl_"];
lime_ui__$KeyCode_KeyCode_$Impl_$.fromScanCode = function(scanCode) {
	return 0;
};
lime_ui__$KeyCode_KeyCode_$Impl_$.toScanCode = function(keyCode) {
	return 0;
};
lime_ui__$KeyCode_KeyCode_$Impl_$.gt = function(a,b) {
	return a > b;
};
lime_ui__$KeyCode_KeyCode_$Impl_$.gte = function(a,b) {
	return a >= b;
};
lime_ui__$KeyCode_KeyCode_$Impl_$.lt = function(a,b) {
	return a < b;
};
lime_ui__$KeyCode_KeyCode_$Impl_$.lte = function(a,b) {
	return a <= b;
};
lime_ui__$KeyCode_KeyCode_$Impl_$.plus = function(a,b) {
	return a + b;
};
var lime_ui__$KeyModifier_KeyModifier_$Impl_$ = {};
$hxClasses["lime.ui._KeyModifier.KeyModifier_Impl_"] = lime_ui__$KeyModifier_KeyModifier_$Impl_$;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.__name__ = ["lime","ui","_KeyModifier","KeyModifier_Impl_"];
lime_ui__$KeyModifier_KeyModifier_$Impl_$.__properties__ = {set_shiftKey:"set_shiftKey",get_shiftKey:"get_shiftKey",set_numLock:"set_numLock",get_numLock:"get_numLock",set_metaKey:"set_metaKey",get_metaKey:"get_metaKey",set_ctrlKey:"set_ctrlKey",get_ctrlKey:"get_ctrlKey",set_capsLock:"set_capsLock",get_capsLock:"get_capsLock",set_altKey:"set_altKey",get_altKey:"get_altKey"};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_altKey = function(this1) {
	if((this1 & 256) <= 0) {
		return (this1 & 512) > 0;
	} else {
		return true;
	}
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.set_altKey = function(this1,value) {
	if(value) {
		this1 |= 768;
	} else {
		this1 &= 268435455 - 768;
	}
	return value;
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_capsLock = function(this1) {
	if((this1 & 8192) <= 0) {
		return (this1 & 8192) > 0;
	} else {
		return true;
	}
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.set_capsLock = function(this1,value) {
	if(value) {
		this1 |= 8192;
	} else {
		this1 &= 268435455 - 8192;
	}
	return value;
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey = function(this1) {
	if((this1 & 64) <= 0) {
		return (this1 & 128) > 0;
	} else {
		return true;
	}
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.set_ctrlKey = function(this1,value) {
	if(value) {
		this1 |= 192;
	} else {
		this1 &= 268435455 - 192;
	}
	return value;
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey = function(this1) {
	if((this1 & 1024) <= 0) {
		return (this1 & 2048) > 0;
	} else {
		return true;
	}
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.set_metaKey = function(this1,value) {
	if(value) {
		this1 |= 3072;
	} else {
		this1 &= 268435455 - 3072;
	}
	return value;
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_numLock = function(this1) {
	if((this1 & 4096) <= 0) {
		return (this1 & 4096) > 0;
	} else {
		return true;
	}
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.set_numLock = function(this1,value) {
	if(value) {
		this1 |= 4096;
	} else {
		this1 &= 268435455 - 4096;
	}
	return value;
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey = function(this1) {
	if((this1 & 1) <= 0) {
		return (this1 & 2) > 0;
	} else {
		return true;
	}
};
lime_ui__$KeyModifier_KeyModifier_$Impl_$.set_shiftKey = function(this1,value) {
	if(value) {
		this1 |= 3;
	} else {
		this1 &= 268435455 - 3;
	}
	return value;
};
var lime_ui_Mouse = function() { };
$hxClasses["lime.ui.Mouse"] = lime_ui_Mouse;
lime_ui_Mouse.__name__ = ["lime","ui","Mouse"];
lime_ui_Mouse.__properties__ = {set_lock:"set_lock",get_lock:"get_lock",set_cursor:"set_cursor",get_cursor:"get_cursor"};
lime_ui_Mouse.hide = function() {
	lime__$backend_native_NativeMouse.hide();
};
lime_ui_Mouse.show = function() {
	lime__$backend_native_NativeMouse.show();
};
lime_ui_Mouse.warp = function(x,y,window) {
	lime__$backend_native_NativeMouse.warp(x,y,window);
};
lime_ui_Mouse.get_cursor = function() {
	return lime__$backend_native_NativeMouse.get_cursor();
};
lime_ui_Mouse.set_cursor = function(value) {
	return lime__$backend_native_NativeMouse.set_cursor(value);
};
lime_ui_Mouse.get_lock = function() {
	return lime__$backend_native_NativeMouse.get_lock();
};
lime_ui_Mouse.set_lock = function(value) {
	return lime__$backend_native_NativeMouse.set_lock(value);
};
var lime_ui_MouseCursor = $hxClasses["lime.ui.MouseCursor"] = { __ename__ : ["lime","ui","MouseCursor"], __constructs__ : ["ARROW","CROSSHAIR","DEFAULT","MOVE","POINTER","RESIZE_NESW","RESIZE_NS","RESIZE_NWSE","RESIZE_WE","TEXT","WAIT","WAIT_ARROW","CUSTOM"] };
lime_ui_MouseCursor.ARROW = ["ARROW",0];
lime_ui_MouseCursor.ARROW.toString = $estr;
lime_ui_MouseCursor.ARROW.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.CROSSHAIR = ["CROSSHAIR",1];
lime_ui_MouseCursor.CROSSHAIR.toString = $estr;
lime_ui_MouseCursor.CROSSHAIR.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.DEFAULT = ["DEFAULT",2];
lime_ui_MouseCursor.DEFAULT.toString = $estr;
lime_ui_MouseCursor.DEFAULT.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.MOVE = ["MOVE",3];
lime_ui_MouseCursor.MOVE.toString = $estr;
lime_ui_MouseCursor.MOVE.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.POINTER = ["POINTER",4];
lime_ui_MouseCursor.POINTER.toString = $estr;
lime_ui_MouseCursor.POINTER.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.RESIZE_NESW = ["RESIZE_NESW",5];
lime_ui_MouseCursor.RESIZE_NESW.toString = $estr;
lime_ui_MouseCursor.RESIZE_NESW.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.RESIZE_NS = ["RESIZE_NS",6];
lime_ui_MouseCursor.RESIZE_NS.toString = $estr;
lime_ui_MouseCursor.RESIZE_NS.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.RESIZE_NWSE = ["RESIZE_NWSE",7];
lime_ui_MouseCursor.RESIZE_NWSE.toString = $estr;
lime_ui_MouseCursor.RESIZE_NWSE.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.RESIZE_WE = ["RESIZE_WE",8];
lime_ui_MouseCursor.RESIZE_WE.toString = $estr;
lime_ui_MouseCursor.RESIZE_WE.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.TEXT = ["TEXT",9];
lime_ui_MouseCursor.TEXT.toString = $estr;
lime_ui_MouseCursor.TEXT.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.WAIT = ["WAIT",10];
lime_ui_MouseCursor.WAIT.toString = $estr;
lime_ui_MouseCursor.WAIT.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.WAIT_ARROW = ["WAIT_ARROW",11];
lime_ui_MouseCursor.WAIT_ARROW.toString = $estr;
lime_ui_MouseCursor.WAIT_ARROW.__enum__ = lime_ui_MouseCursor;
lime_ui_MouseCursor.CUSTOM = ["CUSTOM",12];
lime_ui_MouseCursor.CUSTOM.toString = $estr;
lime_ui_MouseCursor.CUSTOM.__enum__ = lime_ui_MouseCursor;
var lime_ui__$ScanCode_ScanCode_$Impl_$ = {};
$hxClasses["lime.ui._ScanCode.ScanCode_Impl_"] = lime_ui__$ScanCode_ScanCode_$Impl_$;
lime_ui__$ScanCode_ScanCode_$Impl_$.__name__ = ["lime","ui","_ScanCode","ScanCode_Impl_"];
lime_ui__$ScanCode_ScanCode_$Impl_$.fromKeyCode = function(keyCode) {
	return lime_ui__$KeyCode_KeyCode_$Impl_$.toScanCode(keyCode);
};
lime_ui__$ScanCode_ScanCode_$Impl_$.toKeyCode = function(scanCode) {
	return lime_ui__$KeyCode_KeyCode_$Impl_$.fromScanCode(scanCode);
};
lime_ui__$ScanCode_ScanCode_$Impl_$.gt = function(a,b) {
	return a > b;
};
lime_ui__$ScanCode_ScanCode_$Impl_$.gte = function(a,b) {
	return a >= b;
};
lime_ui__$ScanCode_ScanCode_$Impl_$.lt = function(a,b) {
	return a < b;
};
lime_ui__$ScanCode_ScanCode_$Impl_$.lte = function(a,b) {
	return a <= b;
};
lime_ui__$ScanCode_ScanCode_$Impl_$.plus = function(a,b) {
	return a + b;
};
var lime_ui_Touch = function(x,y,id,dx,dy,pressure,device) {
	this.x = x;
	this.y = y;
	this.id = id;
	this.dx = dx;
	this.dy = dy;
	this.pressure = pressure;
	this.device = device;
};
$hxClasses["lime.ui.Touch"] = lime_ui_Touch;
lime_ui_Touch.__name__ = ["lime","ui","Touch"];
lime_ui_Touch.prototype = {
	device: null
	,dx: null
	,dy: null
	,id: null
	,pressure: null
	,x: null
	,y: null
	,__class__: lime_ui_Touch
};
var lime_ui_Window = function(config) {
	this.onTextInput = new lime_app__$Event_$String_$Void();
	this.onTextEdit = new lime_app__$Event_$String_$Int_$Int_$Void();
	this.onRestore = new lime_app__$Event_$Void_$Void();
	this.onResize = new lime_app__$Event_$Int_$Int_$Void();
	this.onMove = new lime_app__$Event_$Float_$Float_$Void();
	this.onMouseWheel = new lime_app__$Event_$Float_$Float_$Void();
	this.onMouseUp = new lime_app__$Event_$Float_$Float_$Int_$Void();
	this.onMouseMoveRelative = new lime_app__$Event_$Float_$Float_$Void();
	this.onMouseMove = new lime_app__$Event_$Float_$Float_$Void();
	this.onMouseDown = new lime_app__$Event_$Float_$Float_$Int_$Void();
	this.onMinimize = new lime_app__$Event_$Void_$Void();
	this.onLeave = new lime_app__$Event_$Void_$Void();
	this.onKeyUp = new lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void();
	this.onKeyDown = new lime_app__$Event_$lime_$ui_$KeyCode_$lime_$ui_$KeyModifier_$Void();
	this.onFullscreen = new lime_app__$Event_$Void_$Void();
	this.onFocusOut = new lime_app__$Event_$Void_$Void();
	this.onFocusIn = new lime_app__$Event_$Void_$Void();
	this.onEnter = new lime_app__$Event_$Void_$Void();
	this.onDropFile = new lime_app__$Event_$String_$Void();
	this.onDeactivate = new lime_app__$Event_$Void_$Void();
	this.onCreate = new lime_app__$Event_$Void_$Void();
	this.onClose = new lime_app__$Event_$Void_$Void();
	this.onActivate = new lime_app__$Event_$Void_$Void();
	this.config = config;
	this.__width = 0;
	this.__height = 0;
	this.__fullscreen = false;
	this.__scale = 1;
	this.__x = 0;
	this.__y = 0;
	this.__title = "";
	this.id = -1;
	if(config != null) {
		if(Object.prototype.hasOwnProperty.call(config,"width")) {
			this.__width = config.width;
		}
		if(Object.prototype.hasOwnProperty.call(config,"height")) {
			this.__height = config.height;
		}
		if(Object.prototype.hasOwnProperty.call(config,"x")) {
			this.__x = config.x;
		}
		if(Object.prototype.hasOwnProperty.call(config,"y")) {
			this.__y = config.y;
		}
		if(Object.prototype.hasOwnProperty.call(config,"fullscreen")) {
			this.__fullscreen = config.fullscreen;
		}
		if(Object.prototype.hasOwnProperty.call(config,"borderless")) {
			this.__borderless = config.borderless;
		}
		if(Object.prototype.hasOwnProperty.call(config,"resizable")) {
			this.__resizable = config.resizable;
		}
		if(Object.prototype.hasOwnProperty.call(config,"title")) {
			this.__title = config.title;
		}
	}
	this.backend = new lime__$backend_native_NativeWindow(this);
};
$hxClasses["lime.ui.Window"] = lime_ui_Window;
lime_ui_Window.__name__ = ["lime","ui","Window"];
lime_ui_Window.prototype = {
	application: null
	,config: null
	,display: null
	,id: null
	,onActivate: null
	,onClose: null
	,onCreate: null
	,onDeactivate: null
	,onDropFile: null
	,onEnter: null
	,onFocusIn: null
	,onFocusOut: null
	,onFullscreen: null
	,onKeyDown: null
	,onKeyUp: null
	,onLeave: null
	,onMinimize: null
	,onMouseDown: null
	,onMouseMove: null
	,onMouseMoveRelative: null
	,onMouseUp: null
	,onMouseWheel: null
	,onMove: null
	,onResize: null
	,onRestore: null
	,onTextEdit: null
	,onTextInput: null
	,renderer: null
	,scale: null
	,stage: null
	,backend: null
	,__borderless: null
	,__fullscreen: null
	,__height: null
	,__maximized: null
	,__minimized: null
	,__resizable: null
	,__scale: null
	,__title: null
	,__width: null
	,__x: null
	,__y: null
	,alert: function(message,title) {
		this.backend.alert(message,title);
	}
	,close: function() {
		this.backend.close();
	}
	,create: function(application) {
		this.application = application;
		if(this.config == null) {
			this.config = { };
		}
		this.backend.create(application);
		if(this.renderer != null) {
			this.renderer.create();
		}
	}
	,focus: function() {
		this.backend.focus();
	}
	,move: function(x,y) {
		this.backend.move(x,y);
		this.__x = x;
		this.__y = y;
	}
	,resize: function(width,height) {
		this.backend.resize(width,height);
		this.__width = width;
		this.__height = height;
	}
	,setIcon: function(image) {
		if(image == null) {
			return;
		}
		this.backend.setIcon(image);
	}
	,toString: function() {
		return "[object Window]";
	}
	,get_display: function() {
		return this.backend.getDisplay();
	}
	,get_displayMode: function() {
		return this.backend.getDisplayMode();
	}
	,set_displayMode: function(value) {
		return this.backend.setDisplayMode(value);
	}
	,get_borderless: function() {
		return this.__borderless;
	}
	,set_borderless: function(value) {
		return this.__borderless = this.backend.setBorderless(value);
	}
	,get_enableTextEvents: function() {
		return this.backend.getEnableTextEvents();
	}
	,set_enableTextEvents: function(value) {
		return this.backend.setEnableTextEvents(value);
	}
	,get_fullscreen: function() {
		return this.__fullscreen;
	}
	,set_fullscreen: function(value) {
		return this.__fullscreen = this.backend.setFullscreen(value);
	}
	,get_height: function() {
		return this.__height;
	}
	,set_height: function(value) {
		this.resize(this.__width,value);
		return this.__height;
	}
	,get_maximized: function() {
		return this.__maximized;
	}
	,set_maximized: function(value) {
		this.__minimized = false;
		return this.__maximized = this.backend.setMaximized(value);
	}
	,get_minimized: function() {
		return this.__minimized;
	}
	,set_minimized: function(value) {
		this.__maximized = false;
		return this.__minimized = this.backend.setMinimized(value);
	}
	,get_resizable: function() {
		return this.__resizable;
	}
	,set_resizable: function(value) {
		this.__resizable = this.backend.setResizable(value);
		return this.__resizable;
	}
	,get_scale: function() {
		return this.__scale;
	}
	,get_title: function() {
		return this.__title;
	}
	,set_title: function(value) {
		return this.__title = this.backend.setTitle(value);
	}
	,get_width: function() {
		return this.__width;
	}
	,set_width: function(value) {
		this.resize(value,this.__height);
		return this.__width;
	}
	,get_x: function() {
		return this.__x;
	}
	,set_x: function(value) {
		this.move(value,this.__y);
		return this.__x;
	}
	,get_y: function() {
		return this.__y;
	}
	,set_y: function(value) {
		this.move(this.__x,value);
		return this.__y;
	}
	,__class__: lime_ui_Window
	,__properties__: {set_y:"set_y",get_y:"get_y",set_x:"set_x",get_x:"get_x",set_width:"set_width",get_width:"get_width",set_title:"set_title",get_title:"get_title",get_scale:"get_scale",set_resizable:"set_resizable",get_resizable:"get_resizable",set_minimized:"set_minimized",get_minimized:"get_minimized",set_maximized:"set_maximized",get_maximized:"get_maximized",set_height:"set_height",get_height:"get_height",set_fullscreen:"set_fullscreen",get_fullscreen:"get_fullscreen",set_enableTextEvents:"set_enableTextEvents",get_enableTextEvents:"get_enableTextEvents",set_displayMode:"set_displayMode",get_displayMode:"get_displayMode",get_display:"get_display",set_borderless:"set_borderless",get_borderless:"get_borderless"}
};
var lime_utils_TAError = $hxClasses["lime.utils.TAError"] = { __ename__ : ["lime","utils","TAError"], __constructs__ : ["RangeError"] };
lime_utils_TAError.RangeError = ["RangeError",0];
lime_utils_TAError.RangeError.toString = $estr;
lime_utils_TAError.RangeError.__enum__ = lime_utils_TAError;
var lime_utils_AssetCache = function() {
	this.enabled = true;
	this.audio = new haxe_ds_StringMap();
	this.font = new haxe_ds_StringMap();
	this.image = new haxe_ds_StringMap();
	this.version = 0;
};
$hxClasses["lime.utils.AssetCache"] = lime_utils_AssetCache;
lime_utils_AssetCache.__name__ = ["lime","utils","AssetCache"];
lime_utils_AssetCache.prototype = {
	audio: null
	,enabled: null
	,image: null
	,font: null
	,version: null
	,exists: function(id,type) {
		if(type == "IMAGE" || type == null) {
			var _this = this.image;
			if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
				return true;
			}
		}
		if(type == "FONT" || type == null) {
			var _this1 = this.font;
			if(__map_reserved[id] != null ? _this1.existsReserved(id) : _this1.h.hasOwnProperty(id)) {
				return true;
			}
		}
		if(type == "SOUND" || type == "MUSIC" || type == null) {
			var _this2 = this.audio;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				return true;
			}
		}
		return false;
	}
	,set: function(id,type,asset) {
		switch(type) {
		case "FONT":
			this.font.set(id,asset);
			break;
		case "IMAGE":
			if(!js_Boot.__instanceof(asset,lime_graphics_Image)) {
				throw new js__$Boot_HaxeError("Cannot cache non-Image asset: " + Std.string(asset) + " as Image");
			}
			this.image.set(id,asset);
			break;
		case "MUSIC":case "SOUND":
			if(!js_Boot.__instanceof(asset,lime_media_AudioBuffer)) {
				throw new js__$Boot_HaxeError("Cannot cache non-AudioBuffer asset: " + Std.string(asset) + " as AudioBuffer");
			}
			this.audio.set(id,asset);
			break;
		default:
			throw new js__$Boot_HaxeError(type + " assets are not cachable");
		}
	}
	,clear: function(prefix) {
		if(prefix == null) {
			this.audio = new haxe_ds_StringMap();
			this.font = new haxe_ds_StringMap();
			this.image = new haxe_ds_StringMap();
		} else {
			var keys = this.audio.keys();
			var key = keys;
			while(key.hasNext()) {
				var key1 = key.next();
				if(StringTools.startsWith(key1,prefix)) {
					this.audio.remove(key1);
				}
			}
			var keys1 = this.font.keys();
			var key2 = keys1;
			while(key2.hasNext()) {
				var key3 = key2.next();
				if(StringTools.startsWith(key3,prefix)) {
					this.font.remove(key3);
				}
			}
			var keys2 = this.image.keys();
			var key4 = keys2;
			while(key4.hasNext()) {
				var key5 = key4.next();
				if(StringTools.startsWith(key5,prefix)) {
					this.image.remove(key5);
				}
			}
		}
	}
	,__class__: lime_utils_AssetCache
};
var lime_utils_AssetLibrary = function() {
	this.types = new haxe_ds_StringMap();
	this.sizes = new haxe_ds_StringMap();
	this.preload = new haxe_ds_StringMap();
	this.paths = new haxe_ds_StringMap();
	this.pathGroups = new haxe_ds_StringMap();
	this.classTypes = new haxe_ds_StringMap();
	this.cachedText = new haxe_ds_StringMap();
	this.cachedImages = new haxe_ds_StringMap();
	this.cachedFonts = new haxe_ds_StringMap();
	this.cachedBytes = new haxe_ds_StringMap();
	this.cachedAudioBuffers = new haxe_ds_StringMap();
	this.onChange = new lime_app__$Event_$Void_$Void();
	this.bytesLoaded = 0;
	this.bytesTotal = 0;
};
$hxClasses["lime.utils.AssetLibrary"] = lime_utils_AssetLibrary;
lime_utils_AssetLibrary.__name__ = ["lime","utils","AssetLibrary"];
lime_utils_AssetLibrary.fromBytes = function(bytes,rootPath) {
	return lime_utils_AssetLibrary.fromManifest(lime_utils_AssetManifest.fromBytes(bytes,rootPath));
};
lime_utils_AssetLibrary.fromFile = function(path,rootPath) {
	return lime_utils_AssetLibrary.fromManifest(lime_utils_AssetManifest.fromFile(path,rootPath));
};
lime_utils_AssetLibrary.fromManifest = function(manifest) {
	if(manifest == null) {
		return null;
	}
	var library = null;
	if(manifest.libraryType == null) {
		library = new lime_utils_AssetLibrary();
	} else {
		var libraryClass = Type.resolveClass(manifest.libraryType);
		if(libraryClass != null) {
			library = Type.createInstance(libraryClass,manifest.libraryArgs);
		} else {
			lime_utils_Log.warn("Could not find library type: " + manifest.libraryType,{ fileName : "AssetLibrary.hx", lineNumber : 140, className : "lime.utils.AssetLibrary", methodName : "fromManifest"});
			return null;
		}
	}
	library.__fromManifest(manifest);
	return library;
};
lime_utils_AssetLibrary.loadFromBytes = function(bytes,rootPath) {
	return lime_utils_AssetManifest.loadFromBytes(bytes,rootPath).then(function(manifest) {
		return lime_utils_AssetLibrary.loadFromManifest(manifest);
	});
};
lime_utils_AssetLibrary.loadFromFile = function(path,rootPath) {
	return lime_utils_AssetManifest.loadFromFile(path,rootPath).then(function(manifest) {
		return lime_utils_AssetLibrary.loadFromManifest(manifest);
	});
};
lime_utils_AssetLibrary.loadFromManifest = function(manifest) {
	var library = lime_utils_AssetLibrary.fromManifest(manifest);
	if(library != null) {
		return library.load();
	} else {
		return lime_app_Future.withError("Could not load asset manifest");
	}
};
lime_utils_AssetLibrary.prototype = {
	onChange: null
	,assetsLoaded: null
	,assetsTotal: null
	,bytesLoaded: null
	,bytesLoadedCache: null
	,bytesTotal: null
	,cachedAudioBuffers: null
	,cachedBytes: null
	,cachedFonts: null
	,cachedImages: null
	,cachedText: null
	,classTypes: null
	,loaded: null
	,pathGroups: null
	,paths: null
	,preload: null
	,promise: null
	,sizes: null
	,types: null
	,exists: function(id,type) {
		var requestedType = type != null ? js_Boot.__cast(type , String) : null;
		var _this = this.types;
		var assetType = __map_reserved[id] != null ? _this.getReserved(id) : _this.h[id];
		if(assetType != null) {
			if(assetType == requestedType || (requestedType == "SOUND" || requestedType == "MUSIC") && (assetType == "MUSIC" || assetType == "SOUND")) {
				return true;
			}
			if(requestedType == "BINARY" || requestedType == null || assetType == "BINARY" && requestedType == "TEXT") {
				return true;
			}
		}
		return false;
	}
	,getAsset: function(id,type) {
		switch(type) {
		case "BINARY":
			return this.getBytes(id);
		case "FONT":
			return this.getFont(id);
		case "IMAGE":
			return this.getImage(id);
		case "MUSIC":case "SOUND":
			return this.getAudioBuffer(id);
		case "TEMPLATE":
			throw new js__$Boot_HaxeError("Not sure how to get template: " + id);
			break;
		case "TEXT":
			return this.getText(id);
		default:
			throw new js__$Boot_HaxeError("Unknown asset type: " + type);
		}
	}
	,getAudioBuffer: function(id) {
		var _this = this.cachedAudioBuffers;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedAudioBuffers;
			if(__map_reserved[id] != null) {
				return _this1.getReserved(id);
			} else {
				return _this1.h[id];
			}
		} else {
			var _this2 = this.classTypes;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.classTypes;
				return lime_media_AudioBuffer.fromBytes(js_Boot.__cast(Type.createInstance(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id],[]) , haxe_io_Bytes));
			} else {
				var _this4 = this.paths;
				return lime_media_AudioBuffer.fromFile(__map_reserved[id] != null ? _this4.getReserved(id) : _this4.h[id]);
			}
		}
	}
	,getBytes: function(id) {
		var _this = this.cachedBytes;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedBytes;
			if(__map_reserved[id] != null) {
				return _this1.getReserved(id);
			} else {
				return _this1.h[id];
			}
		} else {
			var _this2 = this.cachedText;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.cachedText;
				var bytes = lime_utils__$Bytes_Bytes_$Impl_$.ofString(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id]);
				var _this4 = this.cachedBytes;
				if(__map_reserved[id] != null) {
					_this4.setReserved(id,bytes);
				} else {
					_this4.h[id] = bytes;
				}
				return bytes;
			} else {
				var _this5 = this.classTypes;
				if(__map_reserved[id] != null ? _this5.existsReserved(id) : _this5.h.hasOwnProperty(id)) {
					var _this6 = this.classTypes;
					return js_Boot.__cast(Type.createInstance(__map_reserved[id] != null ? _this6.getReserved(id) : _this6.h[id],[]) , haxe_io_Bytes);
				} else {
					var _this7 = this.paths;
					return lime_utils__$Bytes_Bytes_$Impl_$.fromFile(__map_reserved[id] != null ? _this7.getReserved(id) : _this7.h[id]);
				}
			}
		}
	}
	,getFont: function(id) {
		var _this = this.cachedFonts;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedFonts;
			if(__map_reserved[id] != null) {
				return _this1.getReserved(id);
			} else {
				return _this1.h[id];
			}
		} else {
			var _this2 = this.classTypes;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.classTypes;
				return js_Boot.__cast(Type.createInstance(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id],[]) , lime_text_Font);
			} else {
				var _this4 = this.paths;
				return lime_text_Font.fromFile(__map_reserved[id] != null ? _this4.getReserved(id) : _this4.h[id]);
			}
		}
	}
	,getImage: function(id) {
		var _this = this.cachedImages;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedImages;
			if(__map_reserved[id] != null) {
				return _this1.getReserved(id);
			} else {
				return _this1.h[id];
			}
		} else {
			var _this2 = this.classTypes;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.classTypes;
				return js_Boot.__cast(Type.createInstance(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id],[]) , lime_graphics_Image);
			} else {
				var _this4 = this.paths;
				return lime_graphics_Image.fromFile(__map_reserved[id] != null ? _this4.getReserved(id) : _this4.h[id]);
			}
		}
	}
	,getPath: function(id) {
		var _this = this.paths;
		if(__map_reserved[id] != null) {
			return _this.getReserved(id);
		} else {
			return _this.h[id];
		}
	}
	,getText: function(id) {
		var _this = this.cachedText;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedText;
			if(__map_reserved[id] != null) {
				return _this1.getReserved(id);
			} else {
				return _this1.h[id];
			}
		} else {
			var bytes = this.getBytes(id);
			if(bytes == null) {
				return null;
			} else {
				return bytes.getString(0,bytes.length);
			}
		}
	}
	,isLocal: function(id,type) {
		var _this = this.classTypes;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			return true;
		}
		var requestedType = type != null ? js_Boot.__cast(type , String) : null;
		switch(requestedType) {
		case "FONT":
			return this.cachedFonts.exists(id);
		case "IMAGE":
			return this.cachedImages.exists(id);
		case "MUSIC":case "SOUND":
			return this.cachedAudioBuffers.exists(id);
		default:
			if(!this.cachedBytes.exists(id)) {
				return this.cachedText.exists(id);
			} else {
				return true;
			}
		}
	}
	,list: function(type) {
		var requestedType = type != null ? js_Boot.__cast(type , String) : null;
		var items = [];
		var id = this.types.keys();
		while(id.hasNext()) {
			var id1 = id.next();
			if(requestedType == null || this.exists(id1,type)) {
				items.push(id1);
			}
		}
		return items;
	}
	,loadAsset: function(id,type) {
		switch(type) {
		case "BINARY":
			return this.loadBytes(id);
		case "FONT":
			return this.loadFont(id);
		case "IMAGE":
			return this.loadImage(id);
		case "MUSIC":case "SOUND":
			return this.loadAudioBuffer(id);
		case "TEMPLATE":
			throw new js__$Boot_HaxeError("Not sure how to load template: " + id);
			break;
		case "TEXT":
			return this.loadText(id);
		default:
			throw new js__$Boot_HaxeError("Unknown asset type: " + type);
		}
	}
	,load: function() {
		if(this.loaded) {
			return lime_app_Future.withValue(this);
		}
		if(this.promise == null) {
			this.promise = new lime_app_Promise();
			this.bytesLoadedCache = new haxe_ds_StringMap();
			this.assetsLoaded = 0;
			this.assetsTotal = 1;
			var id = this.preload.keys();
			while(id.hasNext()) {
				var id1 = id.next();
				var _this = this.preload;
				if(!(__map_reserved[id1] != null ? _this.getReserved(id1) : _this.h[id1])) {
					continue;
				}
				var _this1 = this.types;
				lime_utils_Log.verbose("Preloading asset: " + id1 + " [" + (__map_reserved[id1] != null ? _this1.getReserved(id1) : _this1.h[id1]) + "]",{ fileName : "AssetLibrary.hx", lineNumber : 440, className : "lime.utils.AssetLibrary", methodName : "load"});
				var _g = this.types.get(id1);
				if(_g != null) {
					switch(_g) {
					case "BINARY":
						this.assetsTotal++;
						var future = this.loadBytes(id1);
						future.onProgress((function(id2,f) {
							return function(a1,a2) {
								f[0](id2[0],a1,a2);
							};
						})([id1],[$bind(this,this.load_onProgress)]));
						future.onError((function(id3,f1) {
							return function(a11) {
								f1[0](id3[0],a11);
							};
						})([id1],[$bind(this,this.load_onError)]));
						future.onComplete((function(id4,f2) {
							return function(a12) {
								f2[0](id4[0],a12);
							};
						})([id1],[$bind(this,this.loadBytes_onComplete)]));
						break;
					case "FONT":
						this.assetsTotal++;
						var future1 = this.loadFont(id1);
						future1.onProgress((function(id5,f3) {
							return function(a13,a21) {
								f3[0](id5[0],a13,a21);
							};
						})([id1],[$bind(this,this.load_onProgress)]));
						future1.onError((function(id6,f4) {
							return function(a14) {
								f4[0](id6[0],a14);
							};
						})([id1],[$bind(this,this.load_onError)]));
						future1.onComplete((function(id7,f5) {
							return function(a15) {
								f5[0](id7[0],a15);
							};
						})([id1],[$bind(this,this.loadFont_onComplete)]));
						break;
					case "IMAGE":
						this.assetsTotal++;
						var future2 = this.loadImage(id1);
						future2.onProgress((function(id8,f6) {
							return function(a16,a22) {
								f6[0](id8[0],a16,a22);
							};
						})([id1],[$bind(this,this.load_onProgress)]));
						future2.onError((function(id9,f7) {
							return function(a17) {
								f7[0](id9[0],a17);
							};
						})([id1],[$bind(this,this.load_onError)]));
						future2.onComplete((function(id10,f8) {
							return function(a18) {
								f8[0](id10[0],a18);
							};
						})([id1],[$bind(this,this.loadImage_onComplete)]));
						break;
					case "MUSIC":case "SOUND":
						this.assetsTotal++;
						var future3 = this.loadAudioBuffer(id1);
						future3.onProgress((function(id11,f9) {
							return function(a19,a23) {
								f9[0](id11[0],a19,a23);
							};
						})([id1],[$bind(this,this.load_onProgress)]));
						future3.onError((function(id12,f10) {
							return function(a110) {
								f10[0](id12[0],a110);
							};
						})([id1],[$bind(this,this.load_onError)]));
						future3.onComplete((function(id13,f11) {
							return function(a111) {
								f11[0](id13[0],a111);
							};
						})([id1],[$bind(this,this.loadAudioBuffer_onComplete)]));
						break;
					case "TEXT":
						this.assetsTotal++;
						var future4 = this.loadText(id1);
						future4.onProgress((function(id14,f12) {
							return function(a112,a24) {
								f12[0](id14[0],a112,a24);
							};
						})([id1],[$bind(this,this.load_onProgress)]));
						future4.onError((function(id15,f13) {
							return function(a113) {
								f13[0](id15[0],a113);
							};
						})([id1],[$bind(this,this.load_onError)]));
						future4.onComplete((function(id16,f14) {
							return function(a114) {
								f14[0](id16[0],a114);
							};
						})([id1],[$bind(this,this.loadText_onComplete)]));
						break;
					default:
					}
				}
			}
			this.__assetLoaded(null);
		}
		return this.promise.future;
	}
	,loadAudioBuffer: function(id) {
		var _this = this.cachedAudioBuffers;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedAudioBuffers;
			return lime_app_Future.withValue(__map_reserved[id] != null ? _this1.getReserved(id) : _this1.h[id]);
		} else {
			var _this2 = this.classTypes;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.classTypes;
				return lime_app_Future.withValue(Type.createInstance(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id],[]));
			} else {
				var _this4 = this.pathGroups;
				if(__map_reserved[id] != null ? _this4.existsReserved(id) : _this4.h.hasOwnProperty(id)) {
					var _this5 = this.pathGroups;
					return lime_media_AudioBuffer.loadFromFiles(__map_reserved[id] != null ? _this5.getReserved(id) : _this5.h[id]);
				} else {
					var _this6 = this.paths;
					return lime_media_AudioBuffer.loadFromFile(__map_reserved[id] != null ? _this6.getReserved(id) : _this6.h[id]);
				}
			}
		}
	}
	,loadBytes: function(id) {
		var _this = this.cachedBytes;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedBytes;
			return lime_app_Future.withValue(__map_reserved[id] != null ? _this1.getReserved(id) : _this1.h[id]);
		} else {
			var _this2 = this.classTypes;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.classTypes;
				return lime_app_Future.withValue(Type.createInstance(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id],[]));
			} else {
				var _this4 = this.paths;
				return lime_utils__$Bytes_Bytes_$Impl_$.loadFromFile(__map_reserved[id] != null ? _this4.getReserved(id) : _this4.h[id]);
			}
		}
	}
	,loadFont: function(id) {
		var _this = this.cachedFonts;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedFonts;
			return lime_app_Future.withValue(__map_reserved[id] != null ? _this1.getReserved(id) : _this1.h[id]);
		} else {
			var _this2 = this.classTypes;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.classTypes;
				var font = Type.createInstance(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id],[]);
				return lime_app_Future.withValue(font);
			} else {
				var _this4 = this.paths;
				return lime_text_Font.loadFromFile(__map_reserved[id] != null ? _this4.getReserved(id) : _this4.h[id]);
			}
		}
	}
	,loadImage: function(id) {
		var _this = this.cachedImages;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedImages;
			return lime_app_Future.withValue(__map_reserved[id] != null ? _this1.getReserved(id) : _this1.h[id]);
		} else {
			var _this2 = this.classTypes;
			if(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id)) {
				var _this3 = this.classTypes;
				return lime_app_Future.withValue(Type.createInstance(__map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id],[]));
			} else {
				var _this4 = this.paths;
				return lime_graphics_Image.loadFromFile(__map_reserved[id] != null ? _this4.getReserved(id) : _this4.h[id]);
			}
		}
	}
	,loadText: function(id) {
		var _this = this.cachedText;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.cachedText;
			return lime_app_Future.withValue(__map_reserved[id] != null ? _this1.getReserved(id) : _this1.h[id]);
		} else {
			var tmp;
			var _this2 = this.cachedBytes;
			if(!(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id))) {
				var _this3 = this.classTypes;
				if(__map_reserved[id] != null) {
					tmp = _this3.existsReserved(id);
				} else {
					tmp = _this3.h.hasOwnProperty(id);
				}
			} else {
				tmp = true;
			}
			if(tmp) {
				var bytes = this.getBytes(id);
				if(bytes == null) {
					return lime_app_Future.withValue(null);
				} else {
					var text = bytes.getString(0,bytes.length);
					var _this4 = this.cachedText;
					if(__map_reserved[id] != null) {
						_this4.setReserved(id,text);
					} else {
						_this4.h[id] = text;
					}
					return lime_app_Future.withValue(text);
				}
			} else {
				var request = new lime_net__$HTTPRequest_$String();
				var _this5 = this.paths;
				return request.load(__map_reserved[id] != null ? _this5.getReserved(id) : _this5.h[id]);
			}
		}
	}
	,unload: function() {
	}
	,__assetLoaded: function(id) {
		this.assetsLoaded++;
		if(id != null) {
			var _this = this.types;
			lime_utils_Log.verbose("Loaded asset: " + id + " [" + (__map_reserved[id] != null ? _this.getReserved(id) : _this.h[id]) + "] (" + (this.assetsLoaded - 1) + "/" + (this.assetsTotal - 1) + ")",{ fileName : "AssetLibrary.hx", lineNumber : 686, className : "lime.utils.AssetLibrary", methodName : "__assetLoaded"});
		}
		if(id != null) {
			var _this1 = this.sizes;
			var size = __map_reserved[id] != null ? _this1.getReserved(id) : _this1.h[id];
			var _this2 = this.bytesLoadedCache;
			if(!(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id))) {
				this.bytesLoaded += size;
			} else {
				var _this3 = this.bytesLoadedCache;
				var cache = __map_reserved[id] != null ? _this3.getReserved(id) : _this3.h[id];
				if(cache < size) {
					this.bytesLoaded += size - cache;
				}
			}
			var _this4 = this.bytesLoadedCache;
			if(__map_reserved[id] != null) {
				_this4.setReserved(id,size);
			} else {
				_this4.h[id] = size;
			}
		}
		if(this.assetsLoaded < this.assetsTotal) {
			this.promise.progress(this.bytesLoaded,this.bytesTotal);
		} else {
			this.loaded = true;
			this.promise.progress(this.bytesTotal,this.bytesTotal);
			this.promise.complete(this);
		}
	}
	,__cacheBreak: function(path) {
		return path;
	}
	,__fromManifest: function(manifest) {
		var hasSize = manifest.version >= 2;
		var size;
		var id;
		var pathGroup;
		var classRef;
		var basePath = manifest.rootPath;
		if(basePath == null) {
			basePath = "";
		}
		if(basePath != "") {
			basePath += "/";
		}
		var _g = 0;
		var _g1 = manifest.assets;
		while(_g < _g1.length) {
			var asset = _g1[_g];
			++_g;
			if(hasSize) {
				size = asset.size;
			} else {
				size = 100;
			}
			id = asset.id;
			if(Object.prototype.hasOwnProperty.call(asset,"path")) {
				var this1 = this.paths;
				var value = this.__cacheBreak(basePath + Std.string(Reflect.field(asset,"path")));
				var _this = this1;
				if(__map_reserved[id] != null) {
					_this.setReserved(id,value);
				} else {
					_this.h[id] = value;
				}
			}
			if(Object.prototype.hasOwnProperty.call(asset,"pathGroup")) {
				pathGroup = Reflect.field(asset,"pathGroup");
				var _g3 = 0;
				var _g2 = pathGroup.length;
				while(_g3 < _g2) {
					var i = _g3++;
					pathGroup[i] = this.__cacheBreak(basePath + pathGroup[i]);
				}
				var _this1 = this.pathGroups;
				if(__map_reserved[id] != null) {
					_this1.setReserved(id,pathGroup);
				} else {
					_this1.h[id] = pathGroup;
				}
			}
			var _this2 = this.sizes;
			if(__map_reserved[id] != null) {
				_this2.setReserved(id,size);
			} else {
				_this2.h[id] = size;
			}
			var value1 = asset.type;
			var _this3 = this.types;
			if(__map_reserved[id] != null) {
				_this3.setReserved(id,value1);
			} else {
				_this3.h[id] = value1;
			}
			if(Object.prototype.hasOwnProperty.call(asset,"preload")) {
				var this2 = this.preload;
				var value2 = Reflect.field(asset,"preload");
				var _this4 = this2;
				if(__map_reserved[id] != null) {
					_this4.setReserved(id,value2);
				} else {
					_this4.h[id] = value2;
				}
			}
			if(Object.prototype.hasOwnProperty.call(asset,"className")) {
				classRef = Type.resolveClass(Reflect.field(asset,"className"));
				var _this5 = this.classTypes;
				if(__map_reserved[id] != null) {
					_this5.setReserved(id,classRef);
				} else {
					_this5.h[id] = classRef;
				}
			}
		}
		this.bytesTotal = 0;
		var _g4 = 0;
		var _g11 = manifest.assets;
		while(_g4 < _g11.length) {
			var asset1 = _g11[_g4];
			++_g4;
			id = asset1.id;
			var tmp;
			var _this6 = this.preload;
			if(__map_reserved[id] != null ? _this6.existsReserved(id) : _this6.h.hasOwnProperty(id)) {
				var _this7 = this.preload;
				if(__map_reserved[id] != null) {
					tmp = _this7.getReserved(id);
				} else {
					tmp = _this7.h[id];
				}
			} else {
				tmp = false;
			}
			if(tmp) {
				var _this8 = this.sizes;
				this.bytesTotal += __map_reserved[id] != null ? _this8.getReserved(id) : _this8.h[id];
			}
		}
	}
	,loadAudioBuffer_onComplete: function(id,audioBuffer) {
		var _this = this.cachedAudioBuffers;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,audioBuffer);
		} else {
			_this.h[id] = audioBuffer;
		}
		var _this1 = this.pathGroups;
		if(__map_reserved[id] != null ? _this1.existsReserved(id) : _this1.h.hasOwnProperty(id)) {
			var _this2 = this.pathGroups;
			var pathGroup = __map_reserved[id] != null ? _this2.getReserved(id) : _this2.h[id];
			var otherID = this.pathGroups.keys();
			while(otherID.hasNext()) {
				var otherID1 = otherID.next();
				if(otherID1 == id) {
					continue;
				}
				var _g = 0;
				while(_g < pathGroup.length) {
					var path = pathGroup[_g];
					++_g;
					var _this3 = this.pathGroups;
					if((__map_reserved[otherID1] != null ? _this3.getReserved(otherID1) : _this3.h[otherID1]).indexOf(path) > -1) {
						var _this4 = this.cachedAudioBuffers;
						if(__map_reserved[otherID1] != null) {
							_this4.setReserved(otherID1,audioBuffer);
						} else {
							_this4.h[otherID1] = audioBuffer;
						}
						break;
					}
				}
			}
		}
		this.__assetLoaded(id);
	}
	,loadBytes_onComplete: function(id,bytes) {
		var _this = this.cachedBytes;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,bytes);
		} else {
			_this.h[id] = bytes;
		}
		this.__assetLoaded(id);
	}
	,loadFont_onComplete: function(id,font) {
		var _this = this.cachedFonts;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,font);
		} else {
			_this.h[id] = font;
		}
		this.__assetLoaded(id);
	}
	,loadImage_onComplete: function(id,image) {
		var _this = this.cachedImages;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,image);
		} else {
			_this.h[id] = image;
		}
		this.__assetLoaded(id);
	}
	,loadText_onComplete: function(id,text) {
		var _this = this.cachedText;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,text);
		} else {
			_this.h[id] = text;
		}
		this.__assetLoaded(id);
	}
	,load_onError: function(id,message) {
		if(message != null && message != "") {
			this.promise.error("Error loading asset \"" + id + "\": " + Std.string(message));
		} else {
			this.promise.error("Error loading asset \"" + id + "\"");
		}
	}
	,load_onProgress: function(id,bytesLoaded,bytesTotal) {
		if(bytesLoaded > 0) {
			var _this = this.sizes;
			var size = __map_reserved[id] != null ? _this.getReserved(id) : _this.h[id];
			var percent;
			if(bytesTotal > 0) {
				percent = bytesLoaded / bytesTotal;
				if(percent > 1) {
					percent = 1;
				}
				bytesLoaded = Math.floor(percent * size);
			} else if(bytesLoaded > size) {
				bytesLoaded = size;
			}
			var _this1 = this.bytesLoadedCache;
			if(__map_reserved[id] != null ? _this1.existsReserved(id) : _this1.h.hasOwnProperty(id)) {
				var _this2 = this.bytesLoadedCache;
				var cache = __map_reserved[id] != null ? _this2.getReserved(id) : _this2.h[id];
				if(bytesLoaded != cache) {
					this.bytesLoaded += bytesLoaded - cache;
				}
			} else {
				this.bytesLoaded += bytesLoaded;
			}
			var _this3 = this.bytesLoadedCache;
			if(__map_reserved[id] != null) {
				_this3.setReserved(id,bytesLoaded);
			} else {
				_this3.h[id] = bytesLoaded;
			}
			this.promise.progress(this.bytesLoaded,this.bytesTotal);
		}
	}
	,__class__: lime_utils_AssetLibrary
};
var lime_utils_AssetManifest = function() {
	this.assets = [];
	this.libraryArgs = [];
	this.version = 2;
};
$hxClasses["lime.utils.AssetManifest"] = lime_utils_AssetManifest;
lime_utils_AssetManifest.__name__ = ["lime","utils","AssetManifest"];
lime_utils_AssetManifest.fromBytes = function(bytes,rootPath) {
	if(bytes != null) {
		return lime_utils_AssetManifest.parse(bytes.getString(0,bytes.length),rootPath);
	} else {
		return null;
	}
};
lime_utils_AssetManifest.fromFile = function(path,rootPath) {
	path = lime_utils_AssetManifest.__resolvePath(path);
	rootPath = lime_utils_AssetManifest.__resolveRootPath(rootPath,path);
	if(path == null) {
		return null;
	}
	return lime_utils_AssetManifest.fromBytes(lime_utils__$Bytes_Bytes_$Impl_$.fromFile(path),rootPath);
};
lime_utils_AssetManifest.loadFromBytes = function(bytes,rootPath) {
	return lime_app_Future.withValue(lime_utils_AssetManifest.fromBytes(bytes,rootPath));
};
lime_utils_AssetManifest.loadFromFile = function(path,rootPath) {
	path = lime_utils_AssetManifest.__resolvePath(path);
	rootPath = lime_utils_AssetManifest.__resolveRootPath(rootPath,path);
	if(path == null) {
		return null;
	}
	return lime_utils__$Bytes_Bytes_$Impl_$.loadFromFile(path).then(function(bytes) {
		return lime_app_Future.withValue(lime_utils_AssetManifest.fromBytes(bytes,rootPath));
	});
};
lime_utils_AssetManifest.parse = function(data,rootPath) {
	if(data == null || data == "") {
		return null;
	}
	var manifestData = JSON.parse(data);
	var manifest = new lime_utils_AssetManifest();
	manifest.name = manifestData.name;
	manifest.libraryType = manifestData.libraryType;
	manifest.libraryArgs = manifestData.libraryArgs;
	manifest.assets = haxe_Unserializer.run(manifestData.assets);
	if(rootPath != null) {
		manifest.rootPath = rootPath;
	}
	return manifest;
};
lime_utils_AssetManifest.__resolvePath = function(path) {
	if(path == null) {
		return null;
	}
	var queryIndex = path.indexOf("?");
	var basePath;
	if(queryIndex > -1) {
		basePath = HxOverrides.substr(path,0,queryIndex);
	} else {
		basePath = path;
	}
	StringTools.replace(basePath,"\\","/");
	while(StringTools.endsWith(basePath,"/")) basePath = HxOverrides.substr(basePath,0,basePath.length - 1);
	if(StringTools.endsWith(basePath,".bundle")) {
		if(queryIndex > -1) {
			return basePath + "/library.json" + HxOverrides.substr(path,queryIndex,null);
		} else {
			return basePath + "/library.json";
		}
	} else {
		return path;
	}
};
lime_utils_AssetManifest.__resolveRootPath = function(rootPath,path) {
	if(rootPath != null) {
		return rootPath;
	}
	var queryIndex = path.indexOf("?");
	if(queryIndex > -1) {
		rootPath = HxOverrides.substr(path,0,queryIndex);
	} else {
		rootPath = path;
	}
	StringTools.replace(rootPath,"\\","/");
	while(StringTools.endsWith(rootPath,"/")) {
		if(rootPath == "/") {
			return rootPath;
		}
		rootPath = HxOverrides.substr(rootPath,0,rootPath.length - 1);
	}
	if(StringTools.endsWith(rootPath,".bundle")) {
		return rootPath;
	} else {
		return haxe_io_Path.directory(rootPath);
	}
};
lime_utils_AssetManifest.prototype = {
	assets: null
	,libraryArgs: null
	,libraryType: null
	,name: null
	,rootPath: null
	,version: null
	,serialize: function() {
		var manifestData = { };
		manifestData.version = this.version;
		manifestData.libraryType = this.libraryType;
		manifestData.libraryArgs = this.libraryArgs;
		manifestData.name = this.name;
		manifestData.assets = haxe_Serializer.run(this.assets);
		return JSON.stringify(manifestData);
	}
	,__class__: lime_utils_AssetManifest
};
var lime_utils_Assets = function() { };
$hxClasses["lime.utils.Assets"] = lime_utils_Assets;
lime_utils_Assets.__name__ = ["lime","utils","Assets"];
lime_utils_Assets.exists = function(id,type) {
	return false;
};
lime_utils_Assets.getAsset = function(id,type,useCache) {
	return null;
};
lime_utils_Assets.getAudioBuffer = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return lime_utils_Assets.getAsset(id,"SOUND",useCache);
};
lime_utils_Assets.getBytes = function(id) {
	return lime_utils_Assets.getAsset(id,"BINARY",false);
};
lime_utils_Assets.getFont = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return lime_utils_Assets.getAsset(id,"FONT",useCache);
};
lime_utils_Assets.getImage = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return lime_utils_Assets.getAsset(id,"IMAGE",useCache);
};
lime_utils_Assets.getLibrary = function(name) {
	if(name == null || name == "") {
		name = "default";
	}
	var _this = lime_utils_Assets.libraries;
	if(__map_reserved[name] != null) {
		return _this.getReserved(name);
	} else {
		return _this.h[name];
	}
};
lime_utils_Assets.getPath = function(id) {
	return null;
};
lime_utils_Assets.getText = function(id) {
	return lime_utils_Assets.getAsset(id,"TEXT",false);
};
lime_utils_Assets.hasLibrary = function(name) {
	if(name == null || name == "") {
		name = "default";
	}
	var _this = lime_utils_Assets.libraries;
	if(__map_reserved[name] != null) {
		return _this.existsReserved(name);
	} else {
		return _this.h.hasOwnProperty(name);
	}
};
lime_utils_Assets.isLocal = function(id,type,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return false;
};
lime_utils_Assets.isValidAudio = function(buffer) {
	return buffer != null;
};
lime_utils_Assets.isValidImage = function(image) {
	if(image != null) {
		return image.buffer != null;
	} else {
		return false;
	}
};
lime_utils_Assets.list = function(type) {
	var items = [];
	var _this = lime_utils_Assets.libraries;
	var library = new haxe_ds__$StringMap_StringMapIterator(_this,_this.arrayKeys());
	while(library.hasNext()) {
		var library1 = library.next();
		var libraryItems = library1.list(type);
		if(libraryItems != null) {
			items = items.concat(libraryItems);
		}
	}
	return items;
};
lime_utils_Assets.loadAsset = function(id,type,useCache) {
	return null;
};
lime_utils_Assets.loadAudioBuffer = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return lime_utils_Assets.loadAsset(id,"SOUND",useCache);
};
lime_utils_Assets.loadBytes = function(id) {
	return lime_utils_Assets.loadAsset(id,"BINARY",false);
};
lime_utils_Assets.loadFont = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return lime_utils_Assets.loadAsset(id,"FONT",useCache);
};
lime_utils_Assets.loadImage = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return lime_utils_Assets.loadAsset(id,"IMAGE",useCache);
};
lime_utils_Assets.loadLibrary = function(id) {
	var promise = new lime_app_Promise();
	return promise.future;
};
lime_utils_Assets.loadText = function(id) {
	return lime_utils_Assets.loadAsset(id,"TEXT",false);
};
lime_utils_Assets.registerLibrary = function(name,library) {
	var _this = lime_utils_Assets.libraries;
	if(__map_reserved[name] != null ? _this.existsReserved(name) : _this.h.hasOwnProperty(name)) {
		var _this1 = lime_utils_Assets.libraries;
		if((__map_reserved[name] != null ? _this1.getReserved(name) : _this1.h[name]) == library) {
			return;
		} else {
			lime_utils_Assets.unloadLibrary(name);
		}
	}
	if(library != null) {
		library.onChange.add(lime_utils_Assets.library_onChange);
	}
	var _this2 = lime_utils_Assets.libraries;
	if(__map_reserved[name] != null) {
		_this2.setReserved(name,library);
	} else {
		_this2.h[name] = library;
	}
};
lime_utils_Assets.unloadLibrary = function(name) {
};
lime_utils_Assets.__libraryNotFound = function(name) {
	if(name == null || name == "") {
		name = "default";
	}
	if(lime_app_Application.current != null && lime_app_Application.current.__preloader != null && !lime_app_Application.current.__preloader.complete) {
		return "There is no asset library named \"" + name + "\", or it is not yet preloaded";
	} else {
		return "There is no asset library named \"" + name + "\"";
	}
};
lime_utils_Assets.library_onChange = function() {
	lime_utils_Assets.cache.clear();
	lime_utils_Assets.onChange.dispatch();
};
var lime_utils__$Assets_LibrarySymbol = function(id) {
	var colonIndex = id.indexOf(":");
	this.libraryName = id.substring(0,colonIndex);
	this.symbolName = id.substring(colonIndex + 1);
	this.library = lime_utils_Assets.getLibrary(this.libraryName);
};
$hxClasses["lime.utils._Assets.LibrarySymbol"] = lime_utils__$Assets_LibrarySymbol;
lime_utils__$Assets_LibrarySymbol.__name__ = ["lime","utils","_Assets","LibrarySymbol"];
lime_utils__$Assets_LibrarySymbol.prototype = {
	library: null
	,libraryName: null
	,symbolName: null
	,isLocal: function(type) {
		return this.library.isLocal(this.symbolName,type);
	}
	,exists: function(type) {
		return this.library.exists(this.symbolName,type);
	}
	,__class__: lime_utils__$Assets_LibrarySymbol
};
var lime_utils__$BytePointer_BytePointer_$Impl_$ = {};
$hxClasses["lime.utils._BytePointer.BytePointer_Impl_"] = lime_utils__$BytePointer_BytePointer_$Impl_$;
lime_utils__$BytePointer_BytePointer_$Impl_$.__name__ = ["lime","utils","_BytePointer","BytePointer_Impl_"];
lime_utils__$BytePointer_BytePointer_$Impl_$._new = function(bytes,offset) {
	if(offset == null) {
		offset = 0;
	}
	var this1 = new lime_utils_BytePointerData(bytes,offset);
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.set = function(this1,bytes,bufferView,buffer,offset) {
	if(buffer != null) {
		bytes = haxe_io_Bytes.ofData(buffer);
	}
	if(bytes != null || bufferView == null) {
		this1.bytes = bytes;
		this1.offset = offset != null ? offset : 0;
	} else {
		this1.bytes = haxe_io_Bytes.ofData(bufferView.buffer);
		this1.offset = offset != null ? bufferView.byteOffset + offset : bufferView.byteOffset;
	}
};
lime_utils__$BytePointer_BytePointer_$Impl_$.__arrayGet = function(this1,index) {
	if(this1.bytes != null) {
		return this1.bytes.b[index + this1.offset];
	} else {
		return 0;
	}
};
lime_utils__$BytePointer_BytePointer_$Impl_$.__arraySet = function(this1,index,value) {
	if(this1.bytes == null) {
		this1.bytes.b[index + this1.offset] = value & 255;
	}
	return value;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.fromArrayBufferView = function(arrayBufferView) {
	if(arrayBufferView == null) {
		return null;
	}
	return new lime_utils_BytePointerData(haxe_io_Bytes.ofData(arrayBufferView.buffer),arrayBufferView.byteOffset);
};
lime_utils__$BytePointer_BytePointer_$Impl_$.fromArrayBuffer = function(buffer) {
	if(buffer == null) {
		return null;
	}
	return new lime_utils_BytePointerData(haxe_io_Bytes.ofData(buffer),0);
};
lime_utils__$BytePointer_BytePointer_$Impl_$.fromBytes = function(bytes) {
	return new lime_utils_BytePointerData(bytes,0);
};
lime_utils__$BytePointer_BytePointer_$Impl_$.fromBytesData = function(bytesData) {
	if(bytesData == null) {
		return new lime_utils_BytePointerData(null,0);
	} else {
		return new lime_utils_BytePointerData(haxe_io_Bytes.ofData(bytesData),0);
	}
};
lime_utils__$BytePointer_BytePointer_$Impl_$.fromFile = function(path) {
	return new lime_utils_BytePointerData(lime_utils__$Bytes_Bytes_$Impl_$.fromFile(path),0);
};
lime_utils__$BytePointer_BytePointer_$Impl_$.fromLimeBytes = function(bytes) {
	return new lime_utils_BytePointerData(bytes,0);
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toUInt8Array = function(bytePointer) {
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 8 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Uint8Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toUInt8ClampedArray = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 8 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Uint8ClampedArray(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toInt8Array = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 8 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Int8Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toUInt16Array = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 16 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Uint16Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toInt16Array = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 16 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Int16Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toUInt32Array = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 32 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Uint32Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toInt32Array = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 32 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Int32Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toFloat32Array = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 32 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Float32Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
lime_utils__$BytePointer_BytePointer_$Impl_$.toFloat64Array = function(bytePointer) {
	if(bytePointer == null || bytePointer.bytes == null) {
		return null;
	}
	var buffer = bytePointer.bytes.b.bufferValue;
	var byteoffset = bytePointer.offset / 64 | 0;
	var this1;
	if(buffer != null) {
		this1 = new Float64Array(buffer,byteoffset);
	} else {
		this1 = null;
	}
	return this1;
};
var lime_utils__$Bytes_Bytes_$Impl_$ = {};
$hxClasses["lime.utils._Bytes.Bytes_Impl_"] = lime_utils__$Bytes_Bytes_$Impl_$;
lime_utils__$Bytes_Bytes_$Impl_$.__name__ = ["lime","utils","_Bytes","Bytes_Impl_"];
lime_utils__$Bytes_Bytes_$Impl_$._new = function(length,bytesData) {
	var this1 = new haxe_io_Bytes(bytesData);
	return this1;
};
lime_utils__$Bytes_Bytes_$Impl_$.alloc = function(length) {
	var bytes = new haxe_io_Bytes(new ArrayBuffer(length));
	return lime_utils__$Bytes_Bytes_$Impl_$._new(bytes.length,bytes.b.bufferValue);
};
lime_utils__$Bytes_Bytes_$Impl_$.fastGet = function(b,pos) {
	return b.bytes[pos];
};
lime_utils__$Bytes_Bytes_$Impl_$.fromBytes = function(bytes) {
	if(bytes == null) {
		return null;
	}
	return lime_utils__$Bytes_Bytes_$Impl_$._new(bytes.length,bytes.b.bufferValue);
};
lime_utils__$Bytes_Bytes_$Impl_$.fromFile = function(path) {
	return null;
};
lime_utils__$Bytes_Bytes_$Impl_$.loadFromBytes = function(bytes) {
	return lime_app_Future.withValue(lime_utils__$Bytes_Bytes_$Impl_$.fromBytes(bytes));
};
lime_utils__$Bytes_Bytes_$Impl_$.loadFromFile = function(path) {
	var request = new lime_net__$HTTPRequest_$lime_$utils_$Bytes();
	return request.load(path);
};
lime_utils__$Bytes_Bytes_$Impl_$.ofData = function(b) {
	var bytes = haxe_io_Bytes.ofData(b);
	return lime_utils__$Bytes_Bytes_$Impl_$._new(bytes.length,bytes.b.bufferValue);
};
lime_utils__$Bytes_Bytes_$Impl_$.ofString = function(s) {
	var bytes = haxe_io_Bytes.ofString(s);
	return lime_utils__$Bytes_Bytes_$Impl_$._new(bytes.length,bytes.b.bufferValue);
};
var lime_utils__$DataPointer_DataPointer_$Impl_$ = {};
$hxClasses["lime.utils._DataPointer.DataPointer_Impl_"] = lime_utils__$DataPointer_DataPointer_$Impl_$;
lime_utils__$DataPointer_DataPointer_$Impl_$.__name__ = ["lime","utils","_DataPointer","DataPointer_Impl_"];
lime_utils__$DataPointer_DataPointer_$Impl_$._new = function(data) {
	var this1 = data;
	return this1;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt = function(value) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$._new(new lime_utils_DataPointerObject(null,null,value));
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromFloat = function(value) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$._new(new lime_utils_DataPointerObject(null,null,value | 0));
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer = function(pointer) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$._new(new lime_utils_DataPointerObject(null,pointer.bytes.b.bufferValue,pointer.offset));
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView = function(arrayBufferView) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$._new(new lime_utils_DataPointerObject(arrayBufferView));
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBuffer = function(buffer) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$._new(new lime_utils_DataPointerObject(null,buffer));
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytes = function(bytes) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBuffer(bytes.b.bufferValue);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesData = function(bytesData) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBuffer(bytesData);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromLimeBytes = function(bytes) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytes(bytes);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromCFFIPointer = function(pointer) {
	return null;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.fromFile = function(path) {
	return null;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.__withOffset = function(data,offset) {
	return null;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.equals = function(a,b) {
	return a == b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.equalsPointer = function(a,b) {
	return a == b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.greaterThan = function(a,b) {
	return a > b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.greaterThanPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) > lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.greaterThanOrEqual = function(a,b) {
	return a >= b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.greaterThanOrEqualPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) >= lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.lessThan = function(a,b) {
	return a < b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.lessThanPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) < lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.lessThanOrEqual = function(a,b) {
	return a <= b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.lessThanOrEqualPointer = function(a,b) {
	return lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(a) <= lime_system__$CFFIPointer_CFFIPointer_$Impl_$.get(b);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.notEquals = function(a,b) {
	return a != b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.notEqualsPointer = function(a,b) {
	return a != b;
};
lime_utils__$DataPointer_DataPointer_$Impl_$.plus = function(a,b) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.__withOffset(a,b);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.plusPointer = function(a,b) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.__withOffset(a,b | 0);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.minus = function(a,b) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.__withOffset(a,-b);
};
lime_utils__$DataPointer_DataPointer_$Impl_$.minusPointer = function(a,b) {
	return lime_utils__$DataPointer_DataPointer_$Impl_$.__withOffset(a,-(b | 0));
};
var lime_utils_DataPointerObject = function(bufferView,buffer,offset) {
	if(offset == null) {
		offset = 0;
	}
	if(bufferView != null) {
		this.bufferView = bufferView;
		this.type = lime_utils_DataPointerObjectType.BUFFER_VIEW;
	} else if(buffer != null) {
		this.buffer = buffer;
		this.type = lime_utils_DataPointerObjectType.BUFFER;
	} else {
		this.type = lime_utils_DataPointerObjectType.VALUE;
	}
	this.offset = offset;
};
$hxClasses["lime.utils.DataPointerObject"] = lime_utils_DataPointerObject;
lime_utils_DataPointerObject.__name__ = ["lime","utils","DataPointerObject"];
lime_utils_DataPointerObject.prototype = {
	buffer: null
	,bufferView: null
	,offset: null
	,type: null
	,__class__: lime_utils_DataPointerObject
};
var lime_utils_DataPointerObjectType = $hxClasses["lime.utils.DataPointerObjectType"] = { __ename__ : ["lime","utils","DataPointerObjectType"], __constructs__ : ["BUFFER","BUFFER_VIEW","VALUE"] };
lime_utils_DataPointerObjectType.BUFFER = ["BUFFER",0];
lime_utils_DataPointerObjectType.BUFFER.toString = $estr;
lime_utils_DataPointerObjectType.BUFFER.__enum__ = lime_utils_DataPointerObjectType;
lime_utils_DataPointerObjectType.BUFFER_VIEW = ["BUFFER_VIEW",1];
lime_utils_DataPointerObjectType.BUFFER_VIEW.toString = $estr;
lime_utils_DataPointerObjectType.BUFFER_VIEW.__enum__ = lime_utils_DataPointerObjectType;
lime_utils_DataPointerObjectType.VALUE = ["VALUE",2];
lime_utils_DataPointerObjectType.VALUE.toString = $estr;
lime_utils_DataPointerObjectType.VALUE.__enum__ = lime_utils_DataPointerObjectType;
var lime_utils__$Float32Array_Float32Array_$Impl_$ = {};
$hxClasses["lime.utils._Float32Array.Float32Array_Impl_"] = lime_utils__$Float32Array_Float32Array_$Impl_$;
lime_utils__$Float32Array_Float32Array_$Impl_$.__name__ = ["lime","utils","_Float32Array","Float32Array_Impl_"];
lime_utils__$Float32Array_Float32Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	if(byteOffset == null) {
		return new Float32Array(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Float32Array(bytes.b.bufferValue,byteOffset);
	}
	return new Float32Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$Float32Array_Float32Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$Float32Array_Float32Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "Float32Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils__$Float64Array_Float64Array_$Impl_$ = {};
$hxClasses["lime.utils._Float64Array.Float64Array_Impl_"] = lime_utils__$Float64Array_Float64Array_$Impl_$;
lime_utils__$Float64Array_Float64Array_$Impl_$.__name__ = ["lime","utils","_Float64Array","Float64Array_Impl_"];
lime_utils__$Float64Array_Float64Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	if(byteOffset == null) {
		return new Float64Array(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Float64Array(bytes.b.bufferValue,byteOffset);
	}
	return new Float64Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$Float64Array_Float64Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$Float64Array_Float64Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "Float64Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils_GLUtils = function() { };
$hxClasses["lime.utils.GLUtils"] = lime_utils_GLUtils;
lime_utils_GLUtils.__name__ = ["lime","utils","GLUtils"];
lime_utils_GLUtils.compileShader = function(source,type) {
	var shader = lime_graphics_opengl_GL.context.createShader(type);
	lime_graphics_opengl_GL.context.shaderSource(shader,source);
	lime_graphics_opengl_GL.context.compileShader(shader);
	if(lime_graphics_opengl_GL.context.getShaderParameter(shader,35713) == 0) {
		var message;
		switch(type) {
		case 35632:
			message = "Error compiling fragment shader";
			break;
		case 35633:
			message = "Error compiling vertex shader";
			break;
		default:
			message = "Error compiling unknown shader type";
		}
		message += "\n" + lime_graphics_opengl_GL.context.getShaderInfoLog(shader);
		lime_utils_Log.error(message,{ fileName : "GLUtils.hx", lineNumber : 35, className : "lime.utils.GLUtils", methodName : "compileShader"});
	}
	return shader;
};
lime_utils_GLUtils.createProgram = function(vertexSource,fragmentSource) {
	var vertexShader = lime_utils_GLUtils.compileShader(vertexSource,35633);
	var fragmentShader = lime_utils_GLUtils.compileShader(fragmentSource,35632);
	var program = lime_graphics_opengl_GL.context.createProgram();
	lime_graphics_opengl_GL.context.attachShader(program,vertexShader);
	lime_graphics_opengl_GL.context.attachShader(program,fragmentShader);
	lime_graphics_opengl_GL.context.linkProgram(program);
	if(lime_graphics_opengl_GL.context.getProgramParameter(program,35714) == 0) {
		var message = "Unable to initialize the shader program";
		message += "\n" + lime_graphics_opengl_GL.context.getProgramInfoLog(program);
		lime_utils_Log.error(message,{ fileName : "GLUtils.hx", lineNumber : 58, className : "lime.utils.GLUtils", methodName : "createProgram"});
	}
	return program;
};
var lime_utils__$Int16Array_Int16Array_$Impl_$ = {};
$hxClasses["lime.utils._Int16Array.Int16Array_Impl_"] = lime_utils__$Int16Array_Int16Array_$Impl_$;
lime_utils__$Int16Array_Int16Array_$Impl_$.__name__ = ["lime","utils","_Int16Array","Int16Array_Impl_"];
lime_utils__$Int16Array_Int16Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	if(byteOffset == null) {
		return new Int16Array(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Int16Array(bytes.b.bufferValue,byteOffset);
	}
	return new Int16Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$Int16Array_Int16Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$Int16Array_Int16Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "Int16Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils__$Int32Array_Int32Array_$Impl_$ = {};
$hxClasses["lime.utils._Int32Array.Int32Array_Impl_"] = lime_utils__$Int32Array_Int32Array_$Impl_$;
lime_utils__$Int32Array_Int32Array_$Impl_$.__name__ = ["lime","utils","_Int32Array","Int32Array_Impl_"];
lime_utils__$Int32Array_Int32Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	if(byteOffset == null) {
		return new Int32Array(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Int32Array(bytes.b.bufferValue,byteOffset);
	}
	return new Int32Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$Int32Array_Int32Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$Int32Array_Int32Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "Int32Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils__$Int8Array_Int8Array_$Impl_$ = {};
$hxClasses["lime.utils._Int8Array.Int8Array_Impl_"] = lime_utils__$Int8Array_Int8Array_$Impl_$;
lime_utils__$Int8Array_Int8Array_$Impl_$.__name__ = ["lime","utils","_Int8Array","Int8Array_Impl_"];
lime_utils__$Int8Array_Int8Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	return new Int8Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$Int8Array_Int8Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$Int8Array_Int8Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "Int8Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils_Log = function() { };
$hxClasses["lime.utils.Log"] = lime_utils_Log;
lime_utils_Log.__name__ = ["lime","utils","Log"];
lime_utils_Log.debug = function(message,info) {
	if(lime_utils_Log.level >= 4) {
		console.debug("[" + info.className + "] " + message);
	}
};
lime_utils_Log.error = function(message,info) {
	if(lime_utils_Log.level >= 1) {
		var message1 = "[" + info.className + "] ERROR: " + message;
		if(lime_utils_Log.throwErrors) {
			throw new js__$Boot_HaxeError(message1);
		} else {
			console.error(message1);
		}
	}
};
lime_utils_Log.info = function(message,info) {
	if(lime_utils_Log.level >= 3) {
		console.info("[" + info.className + "] " + message);
	}
};
lime_utils_Log.print = function(message) {
	console.log(message);
};
lime_utils_Log.println = function(message) {
	console.log(message);
};
lime_utils_Log.verbose = function(message,info) {
	if(lime_utils_Log.level >= 5) {
		console.log("[" + info.className + "] " + message);
	}
};
lime_utils_Log.warn = function(message,info) {
	if(lime_utils_Log.level >= 2) {
		console.warn("[" + info.className + "] WARNING: " + message);
	}
};
var lime_utils__$Log_LogLevel_$Impl_$ = {};
$hxClasses["lime.utils._Log.LogLevel_Impl_"] = lime_utils__$Log_LogLevel_$Impl_$;
lime_utils__$Log_LogLevel_$Impl_$.__name__ = ["lime","utils","_Log","LogLevel_Impl_"];
lime_utils__$Log_LogLevel_$Impl_$.gt = function(a,b) {
	return a > b;
};
lime_utils__$Log_LogLevel_$Impl_$.gte = function(a,b) {
	return a >= b;
};
lime_utils__$Log_LogLevel_$Impl_$.lt = function(a,b) {
	return a < b;
};
lime_utils__$Log_LogLevel_$Impl_$.lte = function(a,b) {
	return a <= b;
};
var lime_utils__$UInt16Array_UInt16Array_$Impl_$ = {};
$hxClasses["lime.utils._UInt16Array.UInt16Array_Impl_"] = lime_utils__$UInt16Array_UInt16Array_$Impl_$;
lime_utils__$UInt16Array_UInt16Array_$Impl_$.__name__ = ["lime","utils","_UInt16Array","UInt16Array_Impl_"];
lime_utils__$UInt16Array_UInt16Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	if(byteOffset == null) {
		return new Uint16Array(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Uint16Array(bytes.b.bufferValue,byteOffset);
	}
	return new Uint16Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$UInt16Array_UInt16Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$UInt16Array_UInt16Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "UInt16Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils__$UInt32Array_UInt32Array_$Impl_$ = {};
$hxClasses["lime.utils._UInt32Array.UInt32Array_Impl_"] = lime_utils__$UInt32Array_UInt32Array_$Impl_$;
lime_utils__$UInt32Array_UInt32Array_$Impl_$.__name__ = ["lime","utils","_UInt32Array","UInt32Array_Impl_"];
lime_utils__$UInt32Array_UInt32Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	if(byteOffset == null) {
		return new Uint32Array(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Uint32Array(bytes.b.bufferValue,byteOffset);
	}
	return new Uint32Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$UInt32Array_UInt32Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$UInt32Array_UInt32Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "UInt32Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils__$UInt8Array_UInt8Array_$Impl_$ = {};
$hxClasses["lime.utils._UInt8Array.UInt8Array_Impl_"] = lime_utils__$UInt8Array_UInt8Array_$Impl_$;
lime_utils__$UInt8Array_UInt8Array_$Impl_$.__name__ = ["lime","utils","_UInt8Array","UInt8Array_Impl_"];
lime_utils__$UInt8Array_UInt8Array_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		return new Uint8Array(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Uint8Array(bytes.b.bufferValue,byteOffset);
	}
	return new Uint8Array(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$UInt8Array_UInt8Array_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$UInt8Array_UInt8Array_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "UInt8Array [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
var lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$ = {};
$hxClasses["lime.utils._UInt8ClampedArray.UInt8ClampedArray_Impl_"] = lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$;
lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$.__name__ = ["lime","utils","_UInt8ClampedArray","UInt8ClampedArray_Impl_"];
lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$.fromBytes = function(bytes,byteOffset,len) {
	if(byteOffset == null) {
		byteOffset = 0;
	}
	if(byteOffset == null) {
		return new Uint8ClampedArray(bytes.b.bufferValue);
	}
	if(len == null) {
		return new Uint8ClampedArray(bytes.b.bufferValue,byteOffset);
	}
	return new Uint8ClampedArray(bytes.b.bufferValue,byteOffset,len);
};
lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$.toBytes = function(this1) {
	return new haxe_io_Bytes(new Uint8Array(this1.buffer));
};
lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$.toString = function(this1) {
	if(this1 != null) {
		return "UInt8ClampedArray [byteLength:" + this1.byteLength + ", length:" + this1.length + "]";
	} else {
		return null;
	}
};
lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$._clamp = function(_in) {
	var _out = _in | 0;
	if(_out > 255) {
		_out = 255;
	} else {
		_out = _out;
	}
	if(_out < 0) {
		return 0;
	} else {
		return _out;
	}
};
var lime_utils_compress_Deflate = function() { };
$hxClasses["lime.utils.compress.Deflate"] = lime_utils_compress_Deflate;
lime_utils_compress_Deflate.__name__ = ["lime","utils","compress","Deflate"];
lime_utils_compress_Deflate.compress = function(bytes) {
	var data = require ("pako").deflateRaw(bytes.b.bufferValue);
	return haxe_io_Bytes.ofData(data);
};
lime_utils_compress_Deflate.decompress = function(bytes) {
	var data = require ("pako").inflateRaw(bytes.b.bufferValue);
	return haxe_io_Bytes.ofData(data);
};
var lime_utils_compress_GZip = function() { };
$hxClasses["lime.utils.compress.GZip"] = lime_utils_compress_GZip;
lime_utils_compress_GZip.__name__ = ["lime","utils","compress","GZip"];
lime_utils_compress_GZip.compress = function(bytes) {
	var data = require ("pako").gzip(bytes.b.bufferValue);
	return haxe_io_Bytes.ofData(data);
};
lime_utils_compress_GZip.decompress = function(bytes) {
	var data = require ("pako").ungzip(bytes.b.bufferValue);
	return haxe_io_Bytes.ofData(data);
};
var lime_utils_compress_LZMA = function() { };
$hxClasses["lime.utils.compress.LZMA"] = lime_utils_compress_LZMA;
lime_utils_compress_LZMA.__name__ = ["lime","utils","compress","LZMA"];
lime_utils_compress_LZMA.compress = function(bytes) {
	return null;
};
lime_utils_compress_LZMA.decompress = function(bytes) {
	return null;
};
var lime_utils_compress_Zlib = function() { };
$hxClasses["lime.utils.compress.Zlib"] = lime_utils_compress_Zlib;
lime_utils_compress_Zlib.__name__ = ["lime","utils","compress","Zlib"];
lime_utils_compress_Zlib.compress = function(bytes) {
	var data = require ("pako").deflate(bytes.b.bufferValue);
	return haxe_io_Bytes.ofData(data);
};
lime_utils_compress_Zlib.decompress = function(bytes) {
	var data = require ("pako").inflate(bytes.b.bufferValue);
	return haxe_io_Bytes.ofData(data);
};
var openfl_Lib = function() { };
$hxClasses["openfl.Lib"] = openfl_Lib;
openfl_Lib.__name__ = ["openfl","Lib"];
openfl_Lib.__properties__ = {get_current:"get_current",get_application:"get_application"};
openfl_Lib["as"] = function(v,c) {
	if(js_Boot.__instanceof(v,c)) {
		return v;
	} else {
		return null;
	}
};
openfl_Lib.attach = function(name) {
	return new openfl_display_MovieClip();
};
openfl_Lib.clearInterval = function(id) {
	if(openfl_Lib.__timers.h.hasOwnProperty(id)) {
		var timer = openfl_Lib.__timers.h[id];
		timer.stop();
		openfl_Lib.__timers.remove(id);
	}
};
openfl_Lib.clearTimeout = function(id) {
	if(openfl_Lib.__timers.h.hasOwnProperty(id)) {
		var timer = openfl_Lib.__timers.h[id];
		timer.stop();
		openfl_Lib.__timers.remove(id);
	}
};
openfl_Lib.getDefinitionByName = function(name) {
	return Type.resolveClass(name);
};
openfl_Lib.getQualifiedClassName = function(value) {
	var o = value;
	return Type.getClassName(o == null ? null : js_Boot.getClass(o));
};
openfl_Lib.getQualifiedSuperclassName = function(value) {
	var o = value;
	var ref = Type.getSuperClass(o == null ? null : js_Boot.getClass(o));
	if(ref != null) {
		return Type.getClassName(ref);
	} else {
		return null;
	}
};
openfl_Lib.getTimer = function() {
	return lime_system_System.getTimer();
};
openfl_Lib.getURL = function(request,target) {
	openfl_Lib.navigateToURL(request,target);
};
openfl_Lib.navigateToURL = function(request,window) {
	if(window == null) {
		window = "_blank";
	}
	var uri = request.url;
	if(js_Boot.__instanceof(request.data,openfl_net_URLVariables)) {
		var query = "";
		var fields = Reflect.fields(request.data);
		var _g = 0;
		while(_g < fields.length) {
			var field = fields[_g];
			++_g;
			if(query.length > 0) {
				query += "&";
			}
			var query1 = encodeURIComponent(field) + "=";
			var s = Std.string(Reflect.field(request.data,field));
			query += query1 + encodeURIComponent(s);
		}
		if(uri.indexOf("?") > -1) {
			uri += "&" + query;
		} else {
			uri += "?" + query;
		}
	}
	lime_system_System.openURL(uri,window);
};
openfl_Lib.notImplemented = function(posInfo) {
	var api = posInfo.className + "." + posInfo.methodName;
	var _this = openfl_Lib.__sentWarnings;
	if(!(__map_reserved[api] != null ? _this.existsReserved(api) : _this.h.hasOwnProperty(api))) {
		var _this1 = openfl_Lib.__sentWarnings;
		if(__map_reserved[api] != null) {
			_this1.setReserved(api,true);
		} else {
			_this1.h[api] = true;
		}
		lime_utils_Log.warn(posInfo.methodName + " is not implemented",posInfo);
	}
};
openfl_Lib.preventDefaultTouchMove = function() {
};
openfl_Lib.sendToURL = function(request) {
	var urlLoader = new openfl_net_URLLoader();
	urlLoader.load(request);
};
openfl_Lib.setInterval = function(closure,delay,args) {
	var id = ++openfl_Lib.__lastTimerID;
	var timer = new haxe_Timer(delay);
	openfl_Lib.__timers.h[id] = timer;
	timer.run = function() {
		closure.apply(closure,args);
	};
	return id;
};
openfl_Lib.setTimeout = function(closure,delay,args) {
	var id = ++openfl_Lib.__lastTimerID;
	var this1 = openfl_Lib.__timers;
	var v = haxe_Timer.delay(function() {
		closure.apply(closure,args);
	},delay);
	this1.h[id] = v;
	return id;
};
openfl_Lib.trace = function(arg) {
	haxe_Log.trace(arg,{ fileName : "Lib.hx", lineNumber : 282, className : "openfl.Lib", methodName : "trace"});
};
openfl_Lib.get_application = function() {
	return openfl__$internal_Lib.application;
};
openfl_Lib.get_current = function() {
	if(openfl__$internal_Lib.current == null) {
		openfl__$internal_Lib.current = new openfl_display_MovieClip();
	}
	return openfl__$internal_Lib.current;
};
var openfl__$Vector_AbstractVector = function(data,array) {
	this.data = data;
	if(array != null) {
		var cacheFixed = data.fixed;
		data.fixed = false;
		var _g1 = 0;
		var _g = array.length;
		while(_g1 < _g) {
			var i = _g1++;
			data.set(i,array[i]);
		}
		data.fixed = cacheFixed;
	}
};
$hxClasses["openfl._Vector.AbstractVector"] = openfl__$Vector_AbstractVector;
openfl__$Vector_AbstractVector.__name__ = ["openfl","_Vector","AbstractVector"];
openfl__$Vector_AbstractVector.prototype = {
	data: null
	,toJSON: function() {
		return this.data.toJSON();
	}
	,__class__: openfl__$Vector_AbstractVector
};
var openfl__$Vector_IVector = function() { };
$hxClasses["openfl._Vector.IVector"] = openfl__$Vector_IVector;
openfl__$Vector_IVector.__name__ = ["openfl","_Vector","IVector"];
openfl__$Vector_IVector.prototype = {
	get_length: null
	,set_length: null
	,fixed: null
	,concat: null
	,copy: null
	,get: null
	,indexOf: null
	,insertAt: null
	,iterator: null
	,join: null
	,lastIndexOf: null
	,pop: null
	,push: null
	,removeAt: null
	,reverse: null
	,set: null
	,shift: null
	,slice: null
	,sort: null
	,splice: null
	,toString: null
	,unshift: null
	,toJSON: null
	,__class__: openfl__$Vector_IVector
	,__properties__: {set_length:"set_length",get_length:"get_length"}
};
var openfl__$Vector_BoolVector = function(length,fixed,array) {
	if(array == null) {
		array = [];
	}
	this.__array = array;
	if(length != null) {
		this.set_length(length);
	}
	this.fixed = fixed == true;
};
$hxClasses["openfl._Vector.BoolVector"] = openfl__$Vector_BoolVector;
openfl__$Vector_BoolVector.__name__ = ["openfl","_Vector","BoolVector"];
openfl__$Vector_BoolVector.__interfaces__ = [openfl__$Vector_IVector];
openfl__$Vector_BoolVector.prototype = {
	fixed: null
	,__array: null
	,concat: function(a) {
		if(a == null) {
			return new openfl__$Vector_BoolVector(null,null,this.__array.slice());
		} else {
			return new openfl__$Vector_BoolVector(null,null,this.__array.concat((js_Boot.__cast(a , openfl__$Vector_BoolVector)).__array));
		}
	}
	,copy: function() {
		return new openfl__$Vector_BoolVector(null,this.fixed,this.__array.slice());
	}
	,get: function(index) {
		if(index >= this.__array.length) {
			return false;
		} else {
			return this.__array[index];
		}
	}
	,indexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var _g1 = from;
		var _g = this.__array.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.__array[i] == x) {
				return i;
			}
		}
		return -1;
	}
	,insertAt: function(index,element) {
		if(!this.fixed || index < this.__array.length) {
			this.__array.splice(index,0,element);
		}
	}
	,iterator: function() {
		return HxOverrides.iter(this.__array);
	}
	,join: function(sep) {
		if(sep == null) {
			sep = ",";
		}
		return this.__array.join(sep);
	}
	,lastIndexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var i = this.__array.length - 1;
		while(i >= from) {
			if(this.__array[i] == x) {
				return i;
			}
			--i;
		}
		return -1;
	}
	,pop: function() {
		if(!this.fixed) {
			return this.__array.pop();
		} else {
			return null;
		}
	}
	,push: function(x) {
		if(!this.fixed) {
			return this.__array.push(x);
		} else {
			return this.__array.length;
		}
	}
	,removeAt: function(index) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array.splice(index,1)[0];
		}
		return false;
	}
	,reverse: function() {
		this.__array.reverse();
		return this;
	}
	,set: function(index,value) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array[index] = value;
		} else {
			return value;
		}
	}
	,shift: function() {
		if(!this.fixed) {
			return this.__array.shift();
		} else {
			return null;
		}
	}
	,slice: function(startIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 16777215;
		}
		if(startIndex == null) {
			startIndex = 0;
		}
		return new openfl__$Vector_BoolVector(null,null,this.__array.slice(startIndex,endIndex));
	}
	,sort: function(f) {
		this.__array.sort(f);
	}
	,splice: function(pos,len) {
		return new openfl__$Vector_BoolVector(null,null,this.__array.splice(pos,len));
	}
	,toJSON: function() {
		return this.__array;
	}
	,toString: function() {
		if(this.__array != null) {
			return this.__array.toString();
		} else {
			return null;
		}
	}
	,unshift: function(x) {
		if(!this.fixed) {
			this.__array.unshift(x);
		}
	}
	,get_length: function() {
		return this.__array.length;
	}
	,set_length: function(value) {
		if(!this.fixed) {
			var currentLength = this.__array.length;
			if(value < 0) {
				value = 0;
			}
			if(value > currentLength) {
				var _g1 = currentLength;
				var _g = value;
				while(_g1 < _g) {
					var i = _g1++;
					this.__array[i] = false;
				}
			} else {
				while(this.__array.length > value) this.__array.pop();
			}
		}
		return this.__array.length;
	}
	,__class__: openfl__$Vector_BoolVector
	,__properties__: {set_length:"set_length",get_length:"get_length"}
};
var openfl__$Vector_FloatVector = function(length,fixed,array) {
	if(array == null) {
		array = [];
	}
	this.__array = array;
	if(length != null) {
		this.set_length(length);
	}
	this.fixed = fixed == true;
};
$hxClasses["openfl._Vector.FloatVector"] = openfl__$Vector_FloatVector;
openfl__$Vector_FloatVector.__name__ = ["openfl","_Vector","FloatVector"];
openfl__$Vector_FloatVector.__interfaces__ = [openfl__$Vector_IVector];
openfl__$Vector_FloatVector.prototype = {
	fixed: null
	,__array: null
	,concat: function(a) {
		if(a == null) {
			return new openfl__$Vector_FloatVector(null,null,this.__array.slice());
		} else {
			return new openfl__$Vector_FloatVector(null,null,this.__array.concat((js_Boot.__cast(a , openfl__$Vector_FloatVector)).__array));
		}
	}
	,copy: function() {
		return new openfl__$Vector_FloatVector(null,this.fixed,this.__array.slice());
	}
	,get: function(index) {
		return this.__array[index];
	}
	,indexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var _g1 = from;
		var _g = this.__array.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.__array[i] == x) {
				return i;
			}
		}
		return -1;
	}
	,insertAt: function(index,element) {
		if(!this.fixed || index < this.__array.length) {
			this.__array.splice(index,0,element);
		}
	}
	,iterator: function() {
		return HxOverrides.iter(this.__array);
	}
	,join: function(sep) {
		if(sep == null) {
			sep = ",";
		}
		return this.__array.join(sep);
	}
	,lastIndexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var i = this.__array.length - 1;
		while(i >= from) {
			if(this.__array[i] == x) {
				return i;
			}
			--i;
		}
		return -1;
	}
	,pop: function() {
		if(!this.fixed) {
			return this.__array.pop();
		} else {
			return null;
		}
	}
	,push: function(x) {
		if(!this.fixed) {
			return this.__array.push(x);
		} else {
			return this.__array.length;
		}
	}
	,removeAt: function(index) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array.splice(index,1)[0];
		}
		return 0;
	}
	,reverse: function() {
		this.__array.reverse();
		return this;
	}
	,set: function(index,value) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array[index] = value;
		} else {
			return value;
		}
	}
	,shift: function() {
		if(!this.fixed) {
			return this.__array.shift();
		} else {
			return null;
		}
	}
	,slice: function(startIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 16777215;
		}
		if(startIndex == null) {
			startIndex = 0;
		}
		return new openfl__$Vector_FloatVector(null,null,this.__array.slice(startIndex,endIndex));
	}
	,sort: function(f) {
		this.__array.sort(f);
	}
	,splice: function(pos,len) {
		return new openfl__$Vector_FloatVector(null,null,this.__array.splice(pos,len));
	}
	,toJSON: function() {
		return this.__array;
	}
	,toString: function() {
		if(this.__array != null) {
			return this.__array.toString();
		} else {
			return null;
		}
	}
	,unshift: function(x) {
		if(!this.fixed) {
			this.__array.unshift(x);
		}
	}
	,get_length: function() {
		return this.__array.length;
	}
	,set_length: function(value) {
		if(!this.fixed) {
			var currentLength = this.__array.length;
			if(value < 0) {
				value = 0;
			}
			if(value > currentLength) {
				var _g1 = currentLength;
				var _g = value;
				while(_g1 < _g) {
					var i = _g1++;
					this.__array[i] = 0;
				}
			} else {
				while(this.__array.length > value) this.__array.pop();
			}
		}
		return this.__array.length;
	}
	,__class__: openfl__$Vector_FloatVector
	,__properties__: {set_length:"set_length",get_length:"get_length"}
};
var openfl__$Vector_FunctionVector = function(length,fixed,array) {
	if(array == null) {
		array = [];
	}
	this.__array = array;
	if(length != null) {
		this.set_length(length);
	}
	this.fixed = fixed == true;
};
$hxClasses["openfl._Vector.FunctionVector"] = openfl__$Vector_FunctionVector;
openfl__$Vector_FunctionVector.__name__ = ["openfl","_Vector","FunctionVector"];
openfl__$Vector_FunctionVector.__interfaces__ = [openfl__$Vector_IVector];
openfl__$Vector_FunctionVector.prototype = {
	fixed: null
	,__array: null
	,concat: function(a) {
		if(a == null) {
			return new openfl__$Vector_FunctionVector(null,null,this.__array.slice());
		} else {
			return new openfl__$Vector_FunctionVector(null,null,this.__array.concat((js_Boot.__cast(a , openfl__$Vector_FunctionVector)).__array));
		}
	}
	,copy: function() {
		return new openfl__$Vector_FunctionVector(null,this.fixed,this.__array.slice());
	}
	,get: function(index) {
		if(index >= this.__array.length) {
			return null;
		} else {
			return this.__array[index];
		}
	}
	,indexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var _g1 = from;
		var _g = this.__array.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(Reflect.compareMethods(this.__array[i],x)) {
				return i;
			}
		}
		return -1;
	}
	,insertAt: function(index,element) {
		if(!this.fixed || index < this.__array.length) {
			this.__array.splice(index,0,element);
		}
	}
	,iterator: function() {
		return HxOverrides.iter(this.__array);
	}
	,join: function(sep) {
		if(sep == null) {
			sep = ",";
		}
		return this.__array.join(sep);
	}
	,lastIndexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var i = this.__array.length - 1;
		while(i >= from) {
			if(Reflect.compareMethods(this.__array[i],x)) {
				return i;
			}
			--i;
		}
		return -1;
	}
	,pop: function() {
		if(!this.fixed) {
			return this.__array.pop();
		} else {
			return null;
		}
	}
	,push: function(x) {
		if(!this.fixed) {
			return this.__array.push(x);
		} else {
			return this.__array.length;
		}
	}
	,removeAt: function(index) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array.splice(index,1)[0];
		}
		return null;
	}
	,reverse: function() {
		this.__array.reverse();
		return this;
	}
	,set: function(index,value) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array[index] = value;
		} else {
			return value;
		}
	}
	,shift: function() {
		if(!this.fixed) {
			return this.__array.shift();
		} else {
			return null;
		}
	}
	,slice: function(startIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 16777215;
		}
		if(startIndex == null) {
			startIndex = 0;
		}
		return new openfl__$Vector_FunctionVector(null,null,this.__array.slice(startIndex,endIndex));
	}
	,sort: function(f) {
		this.__array.sort(f);
	}
	,splice: function(pos,len) {
		return new openfl__$Vector_FunctionVector(null,null,this.__array.splice(pos,len));
	}
	,toJSON: function() {
		return this.__array;
	}
	,toString: function() {
		if(this.__array != null) {
			return this.__array.toString();
		} else {
			return null;
		}
	}
	,unshift: function(x) {
		if(!this.fixed) {
			this.__array.unshift(x);
		}
	}
	,get_length: function() {
		return this.__array.length;
	}
	,set_length: function(value) {
		if(!this.fixed) {
			var currentLength = this.__array.length;
			if(value < 0) {
				value = 0;
			}
			if(value > currentLength) {
				var _g1 = currentLength;
				var _g = value;
				while(_g1 < _g) {
					var i = _g1++;
					this.__array[i] = null;
				}
			} else {
				while(this.__array.length > value) this.__array.pop();
			}
		}
		return this.__array.length;
	}
	,__class__: openfl__$Vector_FunctionVector
	,__properties__: {set_length:"set_length",get_length:"get_length"}
};
var openfl__$Vector_IntVector = function(length,fixed,array) {
	if(array == null) {
		array = [];
	}
	this.__array = array;
	if(length != null) {
		this.set_length(length);
	}
	this.fixed = fixed == true;
};
$hxClasses["openfl._Vector.IntVector"] = openfl__$Vector_IntVector;
openfl__$Vector_IntVector.__name__ = ["openfl","_Vector","IntVector"];
openfl__$Vector_IntVector.__interfaces__ = [openfl__$Vector_IVector];
openfl__$Vector_IntVector.prototype = {
	fixed: null
	,__array: null
	,concat: function(a) {
		if(a == null) {
			return new openfl__$Vector_IntVector(null,null,this.__array.slice());
		} else {
			return new openfl__$Vector_IntVector(null,null,this.__array.concat((js_Boot.__cast(a , openfl__$Vector_IntVector)).__array));
		}
	}
	,copy: function() {
		return new openfl__$Vector_IntVector(null,this.fixed,this.__array.slice());
	}
	,get: function(index) {
		return this.__array[index];
	}
	,indexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var _g1 = from;
		var _g = this.__array.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.__array[i] == x) {
				return i;
			}
		}
		return -1;
	}
	,insertAt: function(index,element) {
		if(!this.fixed || index < this.__array.length) {
			this.__array.splice(index,0,element);
		}
	}
	,iterator: function() {
		return HxOverrides.iter(this.__array);
	}
	,join: function(sep) {
		if(sep == null) {
			sep = ",";
		}
		return this.__array.join(sep);
	}
	,lastIndexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var i = this.__array.length - 1;
		while(i >= from) {
			if(this.__array[i] == x) {
				return i;
			}
			--i;
		}
		return -1;
	}
	,pop: function() {
		if(!this.fixed) {
			return this.__array.pop();
		} else {
			return null;
		}
	}
	,push: function(x) {
		if(!this.fixed) {
			return this.__array.push(x);
		} else {
			return this.__array.length;
		}
	}
	,removeAt: function(index) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array.splice(index,1)[0];
		}
		return 0;
	}
	,reverse: function() {
		this.__array.reverse();
		return this;
	}
	,set: function(index,value) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array[index] = value;
		} else {
			return value;
		}
	}
	,shift: function() {
		if(!this.fixed) {
			return this.__array.shift();
		} else {
			return null;
		}
	}
	,slice: function(startIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 16777215;
		}
		if(startIndex == null) {
			startIndex = 0;
		}
		return new openfl__$Vector_IntVector(null,null,this.__array.slice(startIndex,endIndex));
	}
	,sort: function(f) {
		this.__array.sort(f);
	}
	,splice: function(pos,len) {
		return new openfl__$Vector_IntVector(null,null,this.__array.splice(pos,len));
	}
	,toJSON: function() {
		return this.__array;
	}
	,toString: function() {
		if(this.__array != null) {
			return this.__array.toString();
		} else {
			return null;
		}
	}
	,unshift: function(x) {
		if(!this.fixed) {
			this.__array.unshift(x);
		}
	}
	,get_length: function() {
		return this.__array.length;
	}
	,set_length: function(value) {
		if(!this.fixed) {
			var currentLength = this.__array.length;
			if(value < 0) {
				value = 0;
			}
			if(value > currentLength) {
				var _g1 = currentLength;
				var _g = value;
				while(_g1 < _g) {
					var i = _g1++;
					this.__array[i] = 0;
				}
			} else {
				while(this.__array.length > value) this.__array.pop();
			}
		}
		return this.__array.length;
	}
	,__class__: openfl__$Vector_IntVector
	,__properties__: {set_length:"set_length",get_length:"get_length"}
};
var openfl__$Vector_ObjectVector = function(length,fixed,array) {
	if(array == null) {
		array = [];
	}
	this.__array = array;
	if(length != null) {
		this.set_length(length);
	}
	this.fixed = fixed == true;
};
$hxClasses["openfl._Vector.ObjectVector"] = openfl__$Vector_ObjectVector;
openfl__$Vector_ObjectVector.__name__ = ["openfl","_Vector","ObjectVector"];
openfl__$Vector_ObjectVector.__interfaces__ = [openfl__$Vector_IVector];
openfl__$Vector_ObjectVector.prototype = {
	fixed: null
	,__array: null
	,concat: function(a) {
		if(a == null) {
			return new openfl__$Vector_ObjectVector(null,null,this.__array.slice());
		} else {
			return new openfl__$Vector_ObjectVector(null,null,this.__array.concat((js_Boot.__cast(a , openfl__$Vector_ObjectVector)).__array));
		}
	}
	,copy: function() {
		return new openfl__$Vector_ObjectVector(null,null,this.__array.slice());
	}
	,get: function(index) {
		return this.__array[index];
	}
	,indexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var _g1 = from;
		var _g = this.__array.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.__array[i] == x) {
				return i;
			}
		}
		return -1;
	}
	,insertAt: function(index,element) {
		if(!this.fixed || index < this.__array.length) {
			this.__array.splice(index,0,element);
		}
	}
	,iterator: function() {
		return HxOverrides.iter(this.__array);
	}
	,join: function(sep) {
		if(sep == null) {
			sep = ",";
		}
		return this.__array.join(sep);
	}
	,lastIndexOf: function(x,from) {
		if(from == null) {
			from = 0;
		}
		var i = this.__array.length - 1;
		while(i >= from) {
			if(this.__array[i] == x) {
				return i;
			}
			--i;
		}
		return -1;
	}
	,pop: function() {
		if(!this.fixed) {
			return this.__array.pop();
		} else {
			return null;
		}
	}
	,push: function(x) {
		if(!this.fixed) {
			return this.__array.push(x);
		} else {
			return this.__array.length;
		}
	}
	,removeAt: function(index) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array.splice(index,1)[0];
		}
		return null;
	}
	,reverse: function() {
		this.__array.reverse();
		return this;
	}
	,set: function(index,value) {
		if(!this.fixed || index < this.__array.length) {
			return this.__array[index] = value;
		} else {
			return value;
		}
	}
	,shift: function() {
		if(!this.fixed) {
			return this.__array.shift();
		} else {
			return null;
		}
	}
	,slice: function(startIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 16777215;
		}
		if(startIndex == null) {
			startIndex = 0;
		}
		return new openfl__$Vector_ObjectVector(null,null,this.__array.slice(startIndex,endIndex));
	}
	,sort: function(f) {
		this.__array.sort(f);
	}
	,splice: function(pos,len) {
		return new openfl__$Vector_ObjectVector(null,null,this.__array.splice(pos,len));
	}
	,toJSON: function() {
		return this.__array;
	}
	,toString: function() {
		if(this.__array != null) {
			return this.__array.toString();
		} else {
			return null;
		}
	}
	,unshift: function(x) {
		if(!this.fixed) {
			this.__array.unshift(x);
		}
	}
	,get_length: function() {
		return this.__array.length;
	}
	,set_length: function(value) {
		if(!this.fixed) {
			var currentLength = this.__array.length;
			if(value < 0) {
				value = 0;
			}
			if(value > currentLength) {
				var _g1 = currentLength;
				var _g = value;
				while(_g1 < _g) {
					var i = _g1++;
					this.__array.push(null);
				}
			} else {
				while(this.__array.length > value) this.__array.pop();
			}
		}
		return this.__array.length;
	}
	,__class__: openfl__$Vector_ObjectVector
	,__properties__: {set_length:"set_length",get_length:"get_length"}
};
var openfl__$internal_Lib = function() { };
$hxClasses["openfl._internal.Lib"] = openfl__$internal_Lib;
openfl__$internal_Lib.__name__ = ["openfl","_internal","Lib"];
openfl__$internal_Lib.notImplemented = function(posInfo) {
	var api = posInfo.className + "." + posInfo.methodName;
	var _this = openfl__$internal_Lib.__sentWarnings;
	if(!(__map_reserved[api] != null ? _this.existsReserved(api) : _this.h.hasOwnProperty(api))) {
		var _this1 = openfl__$internal_Lib.__sentWarnings;
		if(__map_reserved[api] != null) {
			_this1.setReserved(api,true);
		} else {
			_this1.h[api] = true;
		}
		lime_utils_Log.warn(posInfo.methodName + " is not implemented",posInfo);
	}
};
var openfl__$internal_TouchData = function() {
	this.rollOutStack = [];
};
$hxClasses["openfl._internal.TouchData"] = openfl__$internal_TouchData;
openfl__$internal_TouchData.__name__ = ["openfl","_internal","TouchData"];
openfl__$internal_TouchData.prototype = {
	rollOutStack: null
	,touch: null
	,touchDownTarget: null
	,touchOverTarget: null
	,reset: function() {
		this.touch = null;
		this.touchDownTarget = null;
		this.touchOverTarget = null;
		this.rollOutStack.splice(0,this.rollOutStack.length);
	}
	,__class__: openfl__$internal_TouchData
};
var openfl__$internal_renderer_AbstractBlendModeManager = function() {
};
$hxClasses["openfl._internal.renderer.AbstractBlendModeManager"] = openfl__$internal_renderer_AbstractBlendModeManager;
openfl__$internal_renderer_AbstractBlendModeManager.__name__ = ["openfl","_internal","renderer","AbstractBlendModeManager"];
openfl__$internal_renderer_AbstractBlendModeManager.prototype = {
	setBlendMode: function(blendMode) {
	}
	,__class__: openfl__$internal_renderer_AbstractBlendModeManager
};
var openfl__$internal_renderer_AbstractFilterManager = function(renderSession) {
	this.renderSession = renderSession;
};
$hxClasses["openfl._internal.renderer.AbstractFilterManager"] = openfl__$internal_renderer_AbstractFilterManager;
openfl__$internal_renderer_AbstractFilterManager.__name__ = ["openfl","_internal","renderer","AbstractFilterManager"];
openfl__$internal_renderer_AbstractFilterManager.prototype = {
	renderSession: null
	,pushObject: function(object) {
		return null;
	}
	,popObject: function(object) {
	}
	,__class__: openfl__$internal_renderer_AbstractFilterManager
};
var openfl__$internal_renderer_AbstractMaskManager = function(renderSession) {
	this.renderSession = renderSession;
};
$hxClasses["openfl._internal.renderer.AbstractMaskManager"] = openfl__$internal_renderer_AbstractMaskManager;
openfl__$internal_renderer_AbstractMaskManager.__name__ = ["openfl","_internal","renderer","AbstractMaskManager"];
openfl__$internal_renderer_AbstractMaskManager.prototype = {
	renderSession: null
	,pushMask: function(mask) {
	}
	,pushObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
	}
	,pushRect: function(rect,transform) {
	}
	,popMask: function() {
	}
	,popObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
	}
	,popRect: function() {
	}
	,saveState: function() {
	}
	,restoreState: function() {
	}
	,__class__: openfl__$internal_renderer_AbstractMaskManager
};
var openfl__$internal_renderer_AbstractRenderer = function(stage) {
	this.stage = stage;
	this.width = stage.stageWidth;
	this.height = stage.stageHeight;
};
$hxClasses["openfl._internal.renderer.AbstractRenderer"] = openfl__$internal_renderer_AbstractRenderer;
openfl__$internal_renderer_AbstractRenderer.__name__ = ["openfl","_internal","renderer","AbstractRenderer"];
openfl__$internal_renderer_AbstractRenderer.prototype = {
	height: null
	,width: null
	,transparent: null
	,viewport: null
	,renderSession: null
	,stage: null
	,clear: function() {
	}
	,render: function() {
	}
	,renderStage3D: function() {
	}
	,resize: function(width,height) {
		this.width = width;
		this.height = height;
	}
	,__class__: openfl__$internal_renderer_AbstractRenderer
};
var openfl__$internal_renderer_AbstractShaderManager = function() {
};
$hxClasses["openfl._internal.renderer.AbstractShaderManager"] = openfl__$internal_renderer_AbstractShaderManager;
openfl__$internal_renderer_AbstractShaderManager.__name__ = ["openfl","_internal","renderer","AbstractShaderManager"];
openfl__$internal_renderer_AbstractShaderManager.prototype = {
	currentShader: null
	,defaultShader: null
	,initShader: function(shader) {
		return shader;
	}
	,setShader: function(shader) {
	}
	,updateShader: function(shader) {
	}
	,__class__: openfl__$internal_renderer_AbstractShaderManager
};
var openfl__$internal_renderer_DrawCommandBuffer = function() {
	if(openfl__$internal_renderer_DrawCommandBuffer.empty == null) {
		this.types = [];
		this.b = [];
		this.i = [];
		this.f = [];
		this.o = [];
		this.ff = [];
		this.ii = [];
		this.copyOnWrite = true;
	} else {
		this.clear();
	}
};
$hxClasses["openfl._internal.renderer.DrawCommandBuffer"] = openfl__$internal_renderer_DrawCommandBuffer;
openfl__$internal_renderer_DrawCommandBuffer.__name__ = ["openfl","_internal","renderer","DrawCommandBuffer"];
openfl__$internal_renderer_DrawCommandBuffer.prototype = {
	types: null
	,b: null
	,copyOnWrite: null
	,f: null
	,ff: null
	,i: null
	,ii: null
	,o: null
	,append: function(other) {
		if(this.get_length() == 0) {
			this.types = other.types;
			this.b = other.b;
			this.i = other.i;
			this.f = other.f;
			this.o = other.o;
			this.ff = other.ff;
			this.ii = other.ii;
			this.copyOnWrite = other.copyOnWrite = true;
			return other;
		}
		var data = new openfl__$internal_renderer_DrawCommandReader(other);
		var _g = 0;
		var _g1 = other.types;
		while(_g < _g1.length) {
			var type = _g1[_g];
			++_g;
			switch(type[1]) {
			case 0:
				var _g2 = data.prev;
				switch(_g2[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL;
				var this1 = data;
				var c = this1;
				this.beginBitmapFill(c.buffer.o[c.oPos],c.buffer.o[c.oPos + 1],c.buffer.b[c.bPos],c.buffer.b[c.bPos + 1]);
				break;
			case 1:
				var _g3 = data.prev;
				switch(_g3[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_FILL;
				var this2 = data;
				var c1 = this2;
				this.beginFill(c1.buffer.i[c1.iPos],c1.buffer.f[c1.fPos]);
				break;
			case 2:
				var _g4 = data.prev;
				switch(_g4[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL;
				var this3 = data;
				var c2 = this3;
				this.beginGradientFill(c2.buffer.o[c2.oPos],c2.buffer.ii[c2.iiPos],c2.buffer.ff[c2.ffPos],c2.buffer.ii[c2.iiPos + 1],c2.buffer.o[c2.oPos + 1],c2.buffer.o[c2.oPos + 2],c2.buffer.o[c2.oPos + 3],c2.buffer.f[c2.fPos]);
				break;
			case 3:
				var _g5 = data.prev;
				switch(_g5[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO;
				var this4 = data;
				var c3 = this4;
				this.cubicCurveTo(c3.buffer.f[c3.fPos],c3.buffer.f[c3.fPos + 1],c3.buffer.f[c3.fPos + 2],c3.buffer.f[c3.fPos + 3],c3.buffer.f[c3.fPos + 4],c3.buffer.f[c3.fPos + 5]);
				break;
			case 4:
				var _g6 = data.prev;
				switch(_g6[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO;
				var this5 = data;
				var c4 = this5;
				this.curveTo(c4.buffer.f[c4.fPos],c4.buffer.f[c4.fPos + 1],c4.buffer.f[c4.fPos + 2],c4.buffer.f[c4.fPos + 3]);
				break;
			case 5:
				var _g7 = data.prev;
				switch(_g7[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE;
				var this6 = data;
				var c5 = this6;
				this.drawCircle(c5.buffer.f[c5.fPos],c5.buffer.f[c5.fPos + 1],c5.buffer.f[c5.fPos + 2]);
				break;
			case 6:
				var _g8 = data.prev;
				switch(_g8[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE;
				var this7 = data;
				var c6 = this7;
				this.drawEllipse(c6.buffer.f[c6.fPos],c6.buffer.f[c6.fPos + 1],c6.buffer.f[c6.fPos + 2],c6.buffer.f[c6.fPos + 3]);
				break;
			case 7:
				var _g9 = data.prev;
				switch(_g9[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT;
				var this8 = data;
				var c7 = this8;
				this.drawRect(c7.buffer.f[c7.fPos],c7.buffer.f[c7.fPos + 1],c7.buffer.f[c7.fPos + 2],c7.buffer.f[c7.fPos + 3]);
				break;
			case 8:
				var _g10 = data.prev;
				switch(_g10[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT;
				var this9 = data;
				var c8 = this9;
				this.drawRoundRect(c8.buffer.f[c8.fPos],c8.buffer.f[c8.fPos + 1],c8.buffer.f[c8.fPos + 2],c8.buffer.f[c8.fPos + 3],c8.buffer.f[c8.fPos + 4],c8.buffer.o[c8.oPos]);
				break;
			case 10:
				var _g11 = data.prev;
				switch(_g11[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES;
				var this10 = data;
				var c9 = this10;
				this.drawTriangles(c9.buffer.o[c9.oPos],c9.buffer.o[c9.oPos + 1],c9.buffer.o[c9.oPos + 2],c9.buffer.o[c9.oPos + 3]);
				break;
			case 11:
				var _g12 = data.prev;
				switch(_g12[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.END_FILL;
				var this11 = data;
				var c10 = this11;
				this.endFill();
				break;
			case 12:
				var _g13 = data.prev;
				switch(_g13[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE;
				var this12 = data;
				var c11 = this12;
				this.lineBitmapStyle(c11.buffer.o[c11.oPos],c11.buffer.o[c11.oPos + 1],c11.buffer.b[c11.bPos],c11.buffer.b[c11.bPos + 1]);
				break;
			case 13:
				var _g14 = data.prev;
				switch(_g14[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE;
				var this13 = data;
				var c12 = this13;
				this.lineGradientStyle(c12.buffer.o[c12.oPos],c12.buffer.ii[c12.iiPos],c12.buffer.ff[c12.ffPos],c12.buffer.ii[c12.iiPos + 1],c12.buffer.o[c12.oPos + 1],c12.buffer.o[c12.oPos + 2],c12.buffer.o[c12.oPos + 3],c12.buffer.f[c12.fPos]);
				break;
			case 14:
				var _g15 = data.prev;
				switch(_g15[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_STYLE;
				var this14 = data;
				var c13 = this14;
				this.lineStyle(c13.buffer.o[c13.oPos],c13.buffer.i[c13.iPos],c13.buffer.f[c13.fPos],c13.buffer.b[c13.bPos],c13.buffer.o[c13.oPos + 1],c13.buffer.o[c13.oPos + 2],c13.buffer.o[c13.oPos + 3],c13.buffer.f[c13.fPos + 1]);
				break;
			case 15:
				var _g16 = data.prev;
				switch(_g16[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO;
				var this15 = data;
				var c14 = this15;
				this.lineTo(c14.buffer.f[c14.fPos],c14.buffer.f[c14.fPos + 1]);
				break;
			case 16:
				var _g17 = data.prev;
				switch(_g17[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO;
				var this16 = data;
				var c15 = this16;
				this.moveTo(c15.buffer.f[c15.fPos],c15.buffer.f[c15.fPos + 1]);
				break;
			case 17:
				var _g18 = data.prev;
				switch(_g18[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX;
				var this17 = data;
				var c16 = this17;
				this.overrideMatrix(c16.buffer.o[c16.oPos]);
				break;
			case 18:
				var _g19 = data.prev;
				switch(_g19[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.WINDING_EVEN_ODD;
				var this18 = data;
				var c17 = this18;
				this.windingEvenOdd();
				break;
			case 19:
				var _g20 = data.prev;
				switch(_g20[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.WINDING_NON_ZERO;
				var this19 = data;
				var c18 = this19;
				this.windingNonZero();
				break;
			default:
			}
		}
		data.destroy();
		return other;
	}
	,beginBitmapFill: function(bitmap,matrix,repeat,smooth) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL);
		this.o.push(bitmap);
		this.o.push(matrix);
		this.b.push(repeat);
		this.b.push(smooth);
	}
	,beginFill: function(color,alpha) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.BEGIN_FILL);
		this.i.push(color);
		this.f.push(alpha);
	}
	,beginGradientFill: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL);
		this.o.push(type);
		this.ii.push(colors);
		this.ff.push(alphas);
		this.ii.push(ratios);
		this.o.push(matrix);
		this.o.push(spreadMethod);
		this.o.push(interpolationMethod);
		this.f.push(focalPointRatio);
	}
	,clear: function() {
		this.types = openfl__$internal_renderer_DrawCommandBuffer.empty.types;
		this.b = openfl__$internal_renderer_DrawCommandBuffer.empty.b;
		this.i = openfl__$internal_renderer_DrawCommandBuffer.empty.i;
		this.f = openfl__$internal_renderer_DrawCommandBuffer.empty.f;
		this.o = openfl__$internal_renderer_DrawCommandBuffer.empty.o;
		this.ff = openfl__$internal_renderer_DrawCommandBuffer.empty.ff;
		this.ii = openfl__$internal_renderer_DrawCommandBuffer.empty.ii;
		this.copyOnWrite = true;
	}
	,copy: function() {
		var copy = new openfl__$internal_renderer_DrawCommandBuffer();
		copy.append(this);
		return copy;
	}
	,cubicCurveTo: function(controlX1,controlY1,controlX2,controlY2,anchorX,anchorY) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO);
		this.f.push(controlX1);
		this.f.push(controlY1);
		this.f.push(controlX2);
		this.f.push(controlY2);
		this.f.push(anchorX);
		this.f.push(anchorY);
	}
	,curveTo: function(controlX,controlY,anchorX,anchorY) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.CURVE_TO);
		this.f.push(controlX);
		this.f.push(controlY);
		this.f.push(anchorX);
		this.f.push(anchorY);
	}
	,destroy: function() {
		this.clear();
		this.types = null;
		this.b = null;
		this.i = null;
		this.f = null;
		this.o = null;
		this.ff = null;
		this.ii = null;
	}
	,drawCircle: function(x,y,radius) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE);
		this.f.push(x);
		this.f.push(y);
		this.f.push(radius);
	}
	,drawEllipse: function(x,y,width,height) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE);
		this.f.push(x);
		this.f.push(y);
		this.f.push(width);
		this.f.push(height);
	}
	,drawRect: function(x,y,width,height) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_RECT);
		this.f.push(x);
		this.f.push(y);
		this.f.push(width);
		this.f.push(height);
	}
	,drawRoundRect: function(x,y,width,height,ellipseWidth,ellipseHeight) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT);
		this.f.push(x);
		this.f.push(y);
		this.f.push(width);
		this.f.push(height);
		this.f.push(ellipseWidth);
		this.o.push(ellipseHeight);
	}
	,drawTriangles: function(vertices,indices,uvtData,culling) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES);
		this.o.push(vertices);
		this.o.push(indices);
		this.o.push(uvtData);
		this.o.push(culling);
	}
	,endFill: function() {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.END_FILL);
	}
	,lineBitmapStyle: function(bitmap,matrix,repeat,smooth) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE);
		this.o.push(bitmap);
		this.o.push(matrix);
		this.b.push(repeat);
		this.b.push(smooth);
	}
	,lineGradientStyle: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE);
		this.o.push(type);
		this.ii.push(colors);
		this.ff.push(alphas);
		this.ii.push(ratios);
		this.o.push(matrix);
		this.o.push(spreadMethod);
		this.o.push(interpolationMethod);
		this.f.push(focalPointRatio);
	}
	,lineStyle: function(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_STYLE);
		this.o.push(thickness);
		this.i.push(color);
		this.f.push(alpha);
		this.b.push(pixelHinting);
		this.o.push(scaleMode);
		this.o.push(caps);
		this.o.push(joints);
		this.f.push(miterLimit);
	}
	,lineTo: function(x,y) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.LINE_TO);
		this.f.push(x);
		this.f.push(y);
	}
	,moveTo: function(x,y) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.MOVE_TO);
		this.f.push(x);
		this.f.push(y);
	}
	,prepareWrite: function() {
		if(this.copyOnWrite) {
			this.types = this.types.slice();
			this.b = this.b.slice();
			this.i = this.i.slice();
			this.f = this.f.slice();
			this.o = this.o.slice();
			this.ff = this.ff.slice();
			this.ii = this.ii.slice();
			this.copyOnWrite = false;
		}
	}
	,overrideMatrix: function(matrix) {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX);
		this.o.push(matrix);
	}
	,windingEvenOdd: function() {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.WINDING_EVEN_ODD);
	}
	,windingNonZero: function() {
		this.prepareWrite();
		this.types.push(openfl__$internal_renderer_DrawCommandType.WINDING_NON_ZERO);
	}
	,get_length: function() {
		return this.types.length;
	}
	,__class__: openfl__$internal_renderer_DrawCommandBuffer
	,__properties__: {get_length:"get_length"}
};
var openfl__$internal_renderer_DrawCommandReader = function(buffer) {
	this.buffer = buffer;
	this.bPos = this.iPos = this.fPos = this.oPos = this.ffPos = this.iiPos = this.tsPos = 0;
	this.prev = openfl__$internal_renderer_DrawCommandType.UNKNOWN;
};
$hxClasses["openfl._internal.renderer.DrawCommandReader"] = openfl__$internal_renderer_DrawCommandReader;
openfl__$internal_renderer_DrawCommandReader.__name__ = ["openfl","_internal","renderer","DrawCommandReader"];
openfl__$internal_renderer_DrawCommandReader.prototype = {
	buffer: null
	,bPos: null
	,iiPos: null
	,iPos: null
	,ffPos: null
	,fPos: null
	,oPos: null
	,prev: null
	,tsPos: null
	,advance: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
	}
	,bool: function(index) {
		return this.buffer.b[this.bPos + index];
	}
	,destroy: function() {
		this.buffer = null;
		this.reset();
	}
	,fArr: function(index) {
		return this.buffer.ff[this.ffPos + index];
	}
	,'float': function(index) {
		return this.buffer.f[this.fPos + index];
	}
	,iArr: function(index) {
		return this.buffer.ii[this.iiPos + index];
	}
	,'int': function(index) {
		return this.buffer.i[this.iPos + index];
	}
	,obj: function(index) {
		return this.buffer.o[this.oPos + index];
	}
	,readBeginBitmapFill: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL;
		var this1 = this;
		return this1;
	}
	,readBeginFill: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_FILL;
		var this1 = this;
		return this1;
	}
	,readBeginGradientFill: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL;
		var this1 = this;
		return this1;
	}
	,readCubicCurveTo: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO;
		var this1 = this;
		return this1;
	}
	,readCurveTo: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO;
		var this1 = this;
		return this1;
	}
	,readDrawCircle: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE;
		var this1 = this;
		return this1;
	}
	,readDrawEllipse: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE;
		var this1 = this;
		return this1;
	}
	,readDrawRect: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT;
		var this1 = this;
		return this1;
	}
	,readDrawRoundRect: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT;
		var this1 = this;
		return this1;
	}
	,readDrawTriangles: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES;
		var this1 = this;
		return this1;
	}
	,readEndFill: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.END_FILL;
		var this1 = this;
		return this1;
	}
	,readLineBitmapStyle: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE;
		var this1 = this;
		return this1;
	}
	,readLineGradientStyle: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE;
		var this1 = this;
		return this1;
	}
	,readLineStyle: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.LINE_STYLE;
		var this1 = this;
		return this1;
	}
	,readLineTo: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO;
		var this1 = this;
		return this1;
	}
	,readMoveTo: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO;
		var this1 = this;
		return this1;
	}
	,readOverrideMatrix: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX;
		var this1 = this;
		return this1;
	}
	,readWindingEvenOdd: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.WINDING_EVEN_ODD;
		var this1 = this;
		return this1;
	}
	,readWindingNonZero: function() {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = openfl__$internal_renderer_DrawCommandType.WINDING_NON_ZERO;
		var this1 = this;
		return this1;
	}
	,reset: function() {
		this.bPos = this.iPos = this.fPos = this.oPos = this.ffPos = this.iiPos = this.tsPos = 0;
	}
	,skip: function(type) {
		var _g = this.prev;
		switch(_g[1]) {
		case 0:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 1:
			this.iPos += 1;
			this.fPos += 1;
			break;
		case 2:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 3:
			this.fPos += 6;
			break;
		case 4:
			this.fPos += 4;
			break;
		case 5:
			this.fPos += 3;
			break;
		case 6:
			this.fPos += 4;
			break;
		case 7:
			this.fPos += 4;
			break;
		case 8:
			this.fPos += 5;
			this.oPos += 1;
			break;
		case 10:
			this.oPos += 4;
			break;
		case 11:
			break;
		case 12:
			this.oPos += 2;
			this.bPos += 2;
			break;
		case 13:
			this.oPos += 4;
			this.iiPos += 2;
			this.ffPos += 1;
			this.fPos += 1;
			break;
		case 14:
			this.oPos += 4;
			this.iPos += 1;
			this.fPos += 2;
			this.bPos += 1;
			break;
		case 15:
			this.fPos += 2;
			break;
		case 16:
			this.fPos += 2;
			break;
		case 17:
			this.oPos += 1;
			break;
		case 18:case 19:
			break;
		default:
		}
		this.prev = type;
	}
	,__class__: openfl__$internal_renderer_DrawCommandReader
};
var openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.BeginBitmapFillView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","BeginBitmapFillView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$.__properties__ = {get_smooth:"get_smooth",get_repeat:"get_repeat",get_matrix:"get_matrix",get_bitmap:"get_bitmap"};
openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$.get_bitmap = function(this1) {
	return this1.buffer.o[this1.oPos];
};
openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$.get_matrix = function(this1) {
	return this1.buffer.o[this1.oPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$.get_repeat = function(this1) {
	return this1.buffer.b[this1.bPos];
};
openfl__$internal_renderer__$DrawCommandReader_BeginBitmapFillView_$Impl_$.get_smooth = function(this1) {
	return this1.buffer.b[this1.bPos + 1];
};
var openfl__$internal_renderer__$DrawCommandReader_BeginFillView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.BeginFillView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_BeginFillView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_BeginFillView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","BeginFillView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_BeginFillView_$Impl_$.__properties__ = {get_alpha:"get_alpha",get_color:"get_color"};
openfl__$internal_renderer__$DrawCommandReader_BeginFillView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_BeginFillView_$Impl_$.get_color = function(this1) {
	return this1.buffer.i[this1.iPos];
};
openfl__$internal_renderer__$DrawCommandReader_BeginFillView_$Impl_$.get_alpha = function(this1) {
	return this1.buffer.f[this1.fPos];
};
var openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.BeginGradientFillView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","BeginGradientFillView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.__properties__ = {get_focalPointRatio:"get_focalPointRatio",get_interpolationMethod:"get_interpolationMethod",get_spreadMethod:"get_spreadMethod",get_matrix:"get_matrix",get_ratios:"get_ratios",get_alphas:"get_alphas",get_colors:"get_colors",get_type:"get_type"};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_type = function(this1) {
	return this1.buffer.o[this1.oPos];
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_colors = function(this1) {
	return this1.buffer.ii[this1.iiPos];
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_alphas = function(this1) {
	return this1.buffer.ff[this1.ffPos];
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_ratios = function(this1) {
	return this1.buffer.ii[this1.iiPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_matrix = function(this1) {
	return this1.buffer.o[this1.oPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_spreadMethod = function(this1) {
	return this1.buffer.o[this1.oPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_interpolationMethod = function(this1) {
	return this1.buffer.o[this1.oPos + 3];
};
openfl__$internal_renderer__$DrawCommandReader_BeginGradientFillView_$Impl_$.get_focalPointRatio = function(this1) {
	return this1.buffer.f[this1.fPos];
};
var openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.CubicCurveToView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","CubicCurveToView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.__properties__ = {get_anchorY:"get_anchorY",get_anchorX:"get_anchorX",get_controlY2:"get_controlY2",get_controlX2:"get_controlX2",get_controlY1:"get_controlY1",get_controlX1:"get_controlX1"};
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.get_controlX1 = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.get_controlY1 = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.get_controlX2 = function(this1) {
	return this1.buffer.f[this1.fPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.get_controlY2 = function(this1) {
	return this1.buffer.f[this1.fPos + 3];
};
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.get_anchorX = function(this1) {
	return this1.buffer.f[this1.fPos + 4];
};
openfl__$internal_renderer__$DrawCommandReader_CubicCurveToView_$Impl_$.get_anchorY = function(this1) {
	return this1.buffer.f[this1.fPos + 5];
};
var openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.CurveToView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","CurveToView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$.__properties__ = {get_anchorY:"get_anchorY",get_anchorX:"get_anchorX",get_controlY:"get_controlY",get_controlX:"get_controlX"};
openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$.get_controlX = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$.get_controlY = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$.get_anchorX = function(this1) {
	return this1.buffer.f[this1.fPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_CurveToView_$Impl_$.get_anchorY = function(this1) {
	return this1.buffer.f[this1.fPos + 3];
};
var openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.DrawCircleView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","DrawCircleView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$.__properties__ = {get_radius:"get_radius",get_y:"get_y",get_x:"get_x"};
openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$.get_x = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$.get_y = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_DrawCircleView_$Impl_$.get_radius = function(this1) {
	return this1.buffer.f[this1.fPos + 2];
};
var openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.DrawEllipseView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","DrawEllipseView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$.__properties__ = {get_height:"get_height",get_width:"get_width",get_y:"get_y",get_x:"get_x"};
openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$.get_x = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$.get_y = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$.get_width = function(this1) {
	return this1.buffer.f[this1.fPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_DrawEllipseView_$Impl_$.get_height = function(this1) {
	return this1.buffer.f[this1.fPos + 3];
};
var openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.DrawRectView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","DrawRectView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$.__properties__ = {get_height:"get_height",get_width:"get_width",get_y:"get_y",get_x:"get_x"};
openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$.get_x = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$.get_y = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$.get_width = function(this1) {
	return this1.buffer.f[this1.fPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRectView_$Impl_$.get_height = function(this1) {
	return this1.buffer.f[this1.fPos + 3];
};
var openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.DrawRoundRectView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","DrawRoundRectView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.__properties__ = {get_ellipseHeight:"get_ellipseHeight",get_ellipseWidth:"get_ellipseWidth",get_height:"get_height",get_width:"get_width",get_y:"get_y",get_x:"get_x"};
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.get_x = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.get_y = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.get_width = function(this1) {
	return this1.buffer.f[this1.fPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.get_height = function(this1) {
	return this1.buffer.f[this1.fPos + 3];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.get_ellipseWidth = function(this1) {
	return this1.buffer.f[this1.fPos + 4];
};
openfl__$internal_renderer__$DrawCommandReader_DrawRoundRectView_$Impl_$.get_ellipseHeight = function(this1) {
	return this1.buffer.o[this1.oPos];
};
var openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.DrawTrianglesView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","DrawTrianglesView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$.__properties__ = {get_culling:"get_culling",get_uvtData:"get_uvtData",get_indices:"get_indices",get_vertices:"get_vertices"};
openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$.get_vertices = function(this1) {
	return this1.buffer.o[this1.oPos];
};
openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$.get_indices = function(this1) {
	return this1.buffer.o[this1.oPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$.get_uvtData = function(this1) {
	return this1.buffer.o[this1.oPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_DrawTrianglesView_$Impl_$.get_culling = function(this1) {
	return this1.buffer.o[this1.oPos + 3];
};
var openfl__$internal_renderer__$DrawCommandReader_EndFillView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.EndFillView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_EndFillView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_EndFillView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","EndFillView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_EndFillView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
var openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.LineBitmapStyleView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","LineBitmapStyleView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$.__properties__ = {get_smooth:"get_smooth",get_repeat:"get_repeat",get_matrix:"get_matrix",get_bitmap:"get_bitmap"};
openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$.get_bitmap = function(this1) {
	return this1.buffer.o[this1.oPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$.get_matrix = function(this1) {
	return this1.buffer.o[this1.oPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$.get_repeat = function(this1) {
	return this1.buffer.b[this1.bPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineBitmapStyleView_$Impl_$.get_smooth = function(this1) {
	return this1.buffer.b[this1.bPos + 1];
};
var openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.LineGradientStyleView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","LineGradientStyleView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.__properties__ = {get_focalPointRatio:"get_focalPointRatio",get_interpolationMethod:"get_interpolationMethod",get_spreadMethod:"get_spreadMethod",get_matrix:"get_matrix",get_ratios:"get_ratios",get_alphas:"get_alphas",get_colors:"get_colors",get_type:"get_type"};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_type = function(this1) {
	return this1.buffer.o[this1.oPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_colors = function(this1) {
	return this1.buffer.ii[this1.iiPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_alphas = function(this1) {
	return this1.buffer.ff[this1.ffPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_ratios = function(this1) {
	return this1.buffer.ii[this1.iiPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_matrix = function(this1) {
	return this1.buffer.o[this1.oPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_spreadMethod = function(this1) {
	return this1.buffer.o[this1.oPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_interpolationMethod = function(this1) {
	return this1.buffer.o[this1.oPos + 3];
};
openfl__$internal_renderer__$DrawCommandReader_LineGradientStyleView_$Impl_$.get_focalPointRatio = function(this1) {
	return this1.buffer.f[this1.fPos];
};
var openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.LineStyleView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","LineStyleView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.__properties__ = {get_miterLimit:"get_miterLimit",get_joints:"get_joints",get_caps:"get_caps",get_scaleMode:"get_scaleMode",get_pixelHinting:"get_pixelHinting",get_alpha:"get_alpha",get_color:"get_color",get_thickness:"get_thickness"};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_thickness = function(this1) {
	return this1.buffer.o[this1.oPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_color = function(this1) {
	return this1.buffer.i[this1.iPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_alpha = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_pixelHinting = function(this1) {
	return this1.buffer.b[this1.bPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_scaleMode = function(this1) {
	return this1.buffer.o[this1.oPos + 1];
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_caps = function(this1) {
	return this1.buffer.o[this1.oPos + 2];
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_joints = function(this1) {
	return this1.buffer.o[this1.oPos + 3];
};
openfl__$internal_renderer__$DrawCommandReader_LineStyleView_$Impl_$.get_miterLimit = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
var openfl__$internal_renderer__$DrawCommandReader_LineToView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.LineToView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_LineToView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_LineToView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","LineToView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_LineToView_$Impl_$.__properties__ = {get_y:"get_y",get_x:"get_x"};
openfl__$internal_renderer__$DrawCommandReader_LineToView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_LineToView_$Impl_$.get_x = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_LineToView_$Impl_$.get_y = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
var openfl__$internal_renderer__$DrawCommandReader_MoveToView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.MoveToView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_MoveToView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_MoveToView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","MoveToView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_MoveToView_$Impl_$.__properties__ = {get_y:"get_y",get_x:"get_x"};
openfl__$internal_renderer__$DrawCommandReader_MoveToView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_MoveToView_$Impl_$.get_x = function(this1) {
	return this1.buffer.f[this1.fPos];
};
openfl__$internal_renderer__$DrawCommandReader_MoveToView_$Impl_$.get_y = function(this1) {
	return this1.buffer.f[this1.fPos + 1];
};
var openfl__$internal_renderer__$DrawCommandReader_OverrideMatrixView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.OverrideMatrixView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_OverrideMatrixView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_OverrideMatrixView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","OverrideMatrixView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_OverrideMatrixView_$Impl_$.__properties__ = {get_matrix:"get_matrix"};
openfl__$internal_renderer__$DrawCommandReader_OverrideMatrixView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
openfl__$internal_renderer__$DrawCommandReader_OverrideMatrixView_$Impl_$.get_matrix = function(this1) {
	return this1.buffer.o[this1.oPos];
};
var openfl__$internal_renderer__$DrawCommandReader_WindingEvenOddView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.WindingEvenOddView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_WindingEvenOddView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_WindingEvenOddView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","WindingEvenOddView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_WindingEvenOddView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
var openfl__$internal_renderer__$DrawCommandReader_WindingNonZeroView_$Impl_$ = {};
$hxClasses["openfl._internal.renderer._DrawCommandReader.WindingNonZeroView_Impl_"] = openfl__$internal_renderer__$DrawCommandReader_WindingNonZeroView_$Impl_$;
openfl__$internal_renderer__$DrawCommandReader_WindingNonZeroView_$Impl_$.__name__ = ["openfl","_internal","renderer","_DrawCommandReader","WindingNonZeroView_Impl_"];
openfl__$internal_renderer__$DrawCommandReader_WindingNonZeroView_$Impl_$._new = function(d) {
	var this1 = d;
	return this1;
};
var openfl__$internal_renderer_DrawCommandType = $hxClasses["openfl._internal.renderer.DrawCommandType"] = { __ename__ : ["openfl","_internal","renderer","DrawCommandType"], __constructs__ : ["BEGIN_BITMAP_FILL","BEGIN_FILL","BEGIN_GRADIENT_FILL","CUBIC_CURVE_TO","CURVE_TO","DRAW_CIRCLE","DRAW_ELLIPSE","DRAW_RECT","DRAW_ROUND_RECT","DRAW_TILES","DRAW_TRIANGLES","END_FILL","LINE_BITMAP_STYLE","LINE_GRADIENT_STYLE","LINE_STYLE","LINE_TO","MOVE_TO","OVERRIDE_MATRIX","WINDING_EVEN_ODD","WINDING_NON_ZERO","UNKNOWN"] };
openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL = ["BEGIN_BITMAP_FILL",0];
openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL.toString = $estr;
openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.BEGIN_FILL = ["BEGIN_FILL",1];
openfl__$internal_renderer_DrawCommandType.BEGIN_FILL.toString = $estr;
openfl__$internal_renderer_DrawCommandType.BEGIN_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL = ["BEGIN_GRADIENT_FILL",2];
openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL.toString = $estr;
openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO = ["CUBIC_CURVE_TO",3];
openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO.toString = $estr;
openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.CURVE_TO = ["CURVE_TO",4];
openfl__$internal_renderer_DrawCommandType.CURVE_TO.toString = $estr;
openfl__$internal_renderer_DrawCommandType.CURVE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE = ["DRAW_CIRCLE",5];
openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE.toString = $estr;
openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE = ["DRAW_ELLIPSE",6];
openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE.toString = $estr;
openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.DRAW_RECT = ["DRAW_RECT",7];
openfl__$internal_renderer_DrawCommandType.DRAW_RECT.toString = $estr;
openfl__$internal_renderer_DrawCommandType.DRAW_RECT.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT = ["DRAW_ROUND_RECT",8];
openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT.toString = $estr;
openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.DRAW_TILES = ["DRAW_TILES",9];
openfl__$internal_renderer_DrawCommandType.DRAW_TILES.toString = $estr;
openfl__$internal_renderer_DrawCommandType.DRAW_TILES.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES = ["DRAW_TRIANGLES",10];
openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES.toString = $estr;
openfl__$internal_renderer_DrawCommandType.DRAW_TRIANGLES.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.END_FILL = ["END_FILL",11];
openfl__$internal_renderer_DrawCommandType.END_FILL.toString = $estr;
openfl__$internal_renderer_DrawCommandType.END_FILL.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE = ["LINE_BITMAP_STYLE",12];
openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE.toString = $estr;
openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE = ["LINE_GRADIENT_STYLE",13];
openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE.toString = $estr;
openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.LINE_STYLE = ["LINE_STYLE",14];
openfl__$internal_renderer_DrawCommandType.LINE_STYLE.toString = $estr;
openfl__$internal_renderer_DrawCommandType.LINE_STYLE.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.LINE_TO = ["LINE_TO",15];
openfl__$internal_renderer_DrawCommandType.LINE_TO.toString = $estr;
openfl__$internal_renderer_DrawCommandType.LINE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.MOVE_TO = ["MOVE_TO",16];
openfl__$internal_renderer_DrawCommandType.MOVE_TO.toString = $estr;
openfl__$internal_renderer_DrawCommandType.MOVE_TO.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX = ["OVERRIDE_MATRIX",17];
openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX.toString = $estr;
openfl__$internal_renderer_DrawCommandType.OVERRIDE_MATRIX.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.WINDING_EVEN_ODD = ["WINDING_EVEN_ODD",18];
openfl__$internal_renderer_DrawCommandType.WINDING_EVEN_ODD.toString = $estr;
openfl__$internal_renderer_DrawCommandType.WINDING_EVEN_ODD.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.WINDING_NON_ZERO = ["WINDING_NON_ZERO",19];
openfl__$internal_renderer_DrawCommandType.WINDING_NON_ZERO.toString = $estr;
openfl__$internal_renderer_DrawCommandType.WINDING_NON_ZERO.__enum__ = openfl__$internal_renderer_DrawCommandType;
openfl__$internal_renderer_DrawCommandType.UNKNOWN = ["UNKNOWN",20];
openfl__$internal_renderer_DrawCommandType.UNKNOWN.toString = $estr;
openfl__$internal_renderer_DrawCommandType.UNKNOWN.__enum__ = openfl__$internal_renderer_DrawCommandType;
var openfl__$internal_renderer_RenderSession = function() {
	this.activeTextures = 0;
	this.allowSmoothing = true;
	this.clearRenderDirty = false;
};
$hxClasses["openfl._internal.renderer.RenderSession"] = openfl__$internal_renderer_RenderSession;
openfl__$internal_renderer_RenderSession.__name__ = ["openfl","_internal","renderer","RenderSession"];
openfl__$internal_renderer_RenderSession.prototype = {
	allowSmoothing: null
	,cairo: null
	,clearRenderDirty: null
	,context: null
	,element: null
	,gl: null
	,renderer: null
	,renderType: null
	,roundPixels: null
	,transformProperty: null
	,transformOriginProperty: null
	,upscaled: null
	,vendorPrefix: null
	,projectionMatrix: null
	,z: null
	,drawCount: null
	,currentBlendMode: null
	,activeTextures: null
	,blendModeManager: null
	,filterManager: null
	,maskManager: null
	,shaderManager: null
	,__class__: openfl__$internal_renderer_RenderSession
};
var openfl__$internal_renderer_cairo_CairoBitmap = function() { };
$hxClasses["openfl._internal.renderer.cairo.CairoBitmap"] = openfl__$internal_renderer_cairo_CairoBitmap;
openfl__$internal_renderer_cairo_CairoBitmap.__name__ = ["openfl","_internal","renderer","cairo","CairoBitmap"];
openfl__$internal_renderer_cairo_CairoBitmap.render = function(bitmap,renderSession) {
	if(!bitmap.__renderable || bitmap.__worldAlpha <= 0) {
		return;
	}
	var cairo = renderSession.cairo;
	if(bitmap.__bitmapData != null && bitmap.__bitmapData.__isValid) {
		renderSession.blendModeManager.setBlendMode(bitmap.__worldBlendMode);
		renderSession.maskManager.pushObject(bitmap);
		var transform = bitmap.__renderTransform;
		if(renderSession.roundPixels) {
			var matrix = transform.__toMatrix3();
			matrix.tx = Math.round(matrix.tx);
			matrix.ty = Math.round(matrix.ty);
			cairo.set_matrix(matrix);
		} else {
			cairo.set_matrix(transform.__toMatrix3());
		}
		var surface = bitmap.__bitmapData.getSurface();
		if(surface != null) {
			var pattern = lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.createForSurface(surface);
			lime_graphics_cairo__$CairoPattern_CairoPattern_$Impl_$.set_filter(pattern,renderSession.allowSmoothing && bitmap.smoothing ? 1 : 3);
			cairo.set_source(pattern);
			if(bitmap.__worldAlpha == 1) {
				cairo.paint();
			} else {
				cairo.paintWithAlpha(bitmap.__worldAlpha);
			}
		}
		renderSession.maskManager.popObject(bitmap);
	}
};
var openfl__$internal_renderer_cairo_CairoDisplayObject = function() { };
$hxClasses["openfl._internal.renderer.cairo.CairoDisplayObject"] = openfl__$internal_renderer_cairo_CairoDisplayObject;
openfl__$internal_renderer_cairo_CairoDisplayObject.__name__ = ["openfl","_internal","renderer","cairo","CairoDisplayObject"];
openfl__$internal_renderer_cairo_CairoDisplayObject.render = function(displayObject,renderSession) {
};
var openfl__$internal_renderer_cairo_CairoGraphics = function() { };
$hxClasses["openfl._internal.renderer.cairo.CairoGraphics"] = openfl__$internal_renderer_cairo_CairoGraphics;
openfl__$internal_renderer_cairo_CairoGraphics.__name__ = ["openfl","_internal","renderer","cairo","CairoGraphics"];
openfl__$internal_renderer_cairo_CairoGraphics.hitTest = function(graphics,x,y) {
	return false;
};
openfl__$internal_renderer_cairo_CairoGraphics.render = function(graphics,renderSession,parentTransform) {
};
openfl__$internal_renderer_cairo_CairoGraphics.renderMask = function(graphics,renderSession) {
};
var openfl__$internal_renderer_cairo_CairoRenderer = function(stage,cairo) {
	openfl__$internal_renderer_AbstractRenderer.call(this,stage);
};
$hxClasses["openfl._internal.renderer.cairo.CairoRenderer"] = openfl__$internal_renderer_cairo_CairoRenderer;
openfl__$internal_renderer_cairo_CairoRenderer.__name__ = ["openfl","_internal","renderer","cairo","CairoRenderer"];
openfl__$internal_renderer_cairo_CairoRenderer.__super__ = openfl__$internal_renderer_AbstractRenderer;
openfl__$internal_renderer_cairo_CairoRenderer.prototype = $extend(openfl__$internal_renderer_AbstractRenderer.prototype,{
	cairo: null
	,clear: function() {
		if(this.cairo == null) {
			return;
		}
		this.cairo.identityMatrix();
		if(this.stage.__clearBeforeRender) {
			this.cairo.setSourceRGB(this.stage.__colorSplit[0],this.stage.__colorSplit[1],this.stage.__colorSplit[2]);
			this.cairo.paint();
		}
	}
	,render: function() {
		if(this.cairo == null) {
			return;
		}
		this.renderSession.allowSmoothing = this.stage.quality != 2;
		this.stage.__renderCairo(this.renderSession);
	}
	,renderStage3D: function() {
		if(this.cairo == null) {
			return;
		}
		var _g = 0;
		var _g1 = this.stage.stage3Ds;
		while(_g < _g1.data.get_length()) {
			var stage3D = _g1.data.get(_g);
			++_g;
			stage3D.__renderCairo(this.stage,this.renderSession);
		}
	}
	,__class__: openfl__$internal_renderer_cairo_CairoRenderer
});
var openfl__$internal_renderer_cairo_CairoTextField = function() { };
$hxClasses["openfl._internal.renderer.cairo.CairoTextField"] = openfl__$internal_renderer_cairo_CairoTextField;
openfl__$internal_renderer_cairo_CairoTextField.__name__ = ["openfl","_internal","renderer","cairo","CairoTextField"];
openfl__$internal_renderer_cairo_CairoTextField.render = function(textField,renderSession,transform) {
};
var openfl__$internal_renderer_canvas_CanvasBitmap = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasBitmap"] = openfl__$internal_renderer_canvas_CanvasBitmap;
openfl__$internal_renderer_canvas_CanvasBitmap.__name__ = ["openfl","_internal","renderer","canvas","CanvasBitmap"];
openfl__$internal_renderer_canvas_CanvasBitmap.render = function(bitmap,renderSession) {
};
var openfl__$internal_renderer_canvas_CanvasBlendModeManager = function(renderSession) {
	openfl__$internal_renderer_AbstractBlendModeManager.call(this);
	this.renderSession = renderSession;
};
$hxClasses["openfl._internal.renderer.canvas.CanvasBlendModeManager"] = openfl__$internal_renderer_canvas_CanvasBlendModeManager;
openfl__$internal_renderer_canvas_CanvasBlendModeManager.__name__ = ["openfl","_internal","renderer","canvas","CanvasBlendModeManager"];
openfl__$internal_renderer_canvas_CanvasBlendModeManager.__super__ = openfl__$internal_renderer_AbstractBlendModeManager;
openfl__$internal_renderer_canvas_CanvasBlendModeManager.prototype = $extend(openfl__$internal_renderer_AbstractBlendModeManager.prototype,{
	currentBlendMode: null
	,renderSession: null
	,setBlendMode: function(blendMode) {
		if(this.currentBlendMode == blendMode) {
			return;
		}
		this.currentBlendMode = blendMode;
		switch(blendMode) {
		case 0:
			this.renderSession.context.globalCompositeOperation = "lighter";
			break;
		case 1:
			this.renderSession.context.globalCompositeOperation = "destination-in";
			break;
		case 2:
			this.renderSession.context.globalCompositeOperation = "darken";
			break;
		case 3:
			this.renderSession.context.globalCompositeOperation = "difference";
			break;
		case 4:
			this.renderSession.context.globalCompositeOperation = "destination-out";
			break;
		case 5:
			this.renderSession.context.globalCompositeOperation = "hard-light";
			break;
		case 7:
			this.renderSession.context.globalCompositeOperation = "source-over";
			break;
		case 8:
			this.renderSession.context.globalCompositeOperation = "lighten";
			break;
		case 9:
			this.renderSession.context.globalCompositeOperation = "multiply";
			break;
		case 11:
			this.renderSession.context.globalCompositeOperation = "overlay";
			break;
		case 12:
			this.renderSession.context.globalCompositeOperation = "screen";
			break;
		default:
			this.renderSession.context.globalCompositeOperation = "source-over";
		}
	}
	,__class__: openfl__$internal_renderer_canvas_CanvasBlendModeManager
});
var openfl__$internal_renderer_canvas_CanvasDisplayObject = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasDisplayObject"] = openfl__$internal_renderer_canvas_CanvasDisplayObject;
openfl__$internal_renderer_canvas_CanvasDisplayObject.__name__ = ["openfl","_internal","renderer","canvas","CanvasDisplayObject"];
openfl__$internal_renderer_canvas_CanvasDisplayObject.render = function(displayObject,renderSession) {
};
var openfl__$internal_renderer_canvas_CanvasGraphics = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasGraphics"] = openfl__$internal_renderer_canvas_CanvasGraphics;
openfl__$internal_renderer_canvas_CanvasGraphics.__name__ = ["openfl","_internal","renderer","canvas","CanvasGraphics"];
openfl__$internal_renderer_canvas_CanvasGraphics.closePath = function(strokeBefore) {
	if(strokeBefore == null) {
		strokeBefore = false;
	}
};
openfl__$internal_renderer_canvas_CanvasGraphics.createBitmapFill = function(bitmap,bitmapRepeat,smooth) {
	return null;
};
openfl__$internal_renderer_canvas_CanvasGraphics.createGradientPattern = function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
};
openfl__$internal_renderer_canvas_CanvasGraphics.createTempPatternCanvas = function(bitmap,repeat,width,height) {
};
openfl__$internal_renderer_canvas_CanvasGraphics.drawRoundRect = function(x,y,width,height,ellipseWidth,ellipseHeight) {
};
openfl__$internal_renderer_canvas_CanvasGraphics.endFill = function() {
};
openfl__$internal_renderer_canvas_CanvasGraphics.endStroke = function() {
};
openfl__$internal_renderer_canvas_CanvasGraphics.hitTest = function(graphics,x,y) {
	return false;
};
openfl__$internal_renderer_canvas_CanvasGraphics.isCCW = function(x1,y1,x2,y2,x3,y3) {
	return (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1) < 0;
};
openfl__$internal_renderer_canvas_CanvasGraphics.normalizeUVT = function(uvt,skipT) {
	if(skipT == null) {
		skipT = false;
	}
	var max = -Infinity;
	var tmp = -Infinity;
	var len = uvt.data.get_length();
	var _g1 = 1;
	var _g = len + 1;
	while(_g1 < _g) {
		var t = _g1++;
		if(skipT && t % 3 == 0) {
			continue;
		}
		tmp = uvt.data.get(t - 1);
		if(max < tmp) {
			max = tmp;
		}
	}
	if(!skipT) {
		return { max : max, uvt : uvt};
	}
	var result = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	var _g11 = 1;
	var _g2 = len + 1;
	while(_g11 < _g2) {
		var t1 = _g11++;
		if(skipT && t1 % 3 == 0) {
			continue;
		}
		var x = uvt.data.get(t1 - 1);
		result.data.push(x);
	}
	return { max : max, uvt : result};
};
openfl__$internal_renderer_canvas_CanvasGraphics.playCommands = function(commands,stroke) {
	if(stroke == null) {
		stroke = false;
	}
};
openfl__$internal_renderer_canvas_CanvasGraphics.render = function(graphics,renderSession,parentTransform) {
};
openfl__$internal_renderer_canvas_CanvasGraphics.renderMask = function(graphics,renderSession) {
};
openfl__$internal_renderer_canvas_CanvasGraphics.setSmoothing = function(smooth) {
};
var openfl__$internal_renderer_canvas_CanvasMaskManager = function(renderSession) {
	openfl__$internal_renderer_AbstractMaskManager.call(this,renderSession);
};
$hxClasses["openfl._internal.renderer.canvas.CanvasMaskManager"] = openfl__$internal_renderer_canvas_CanvasMaskManager;
openfl__$internal_renderer_canvas_CanvasMaskManager.__name__ = ["openfl","_internal","renderer","canvas","CanvasMaskManager"];
openfl__$internal_renderer_canvas_CanvasMaskManager.__super__ = openfl__$internal_renderer_AbstractMaskManager;
openfl__$internal_renderer_canvas_CanvasMaskManager.prototype = $extend(openfl__$internal_renderer_AbstractMaskManager.prototype,{
	pushMask: function(mask) {
		var context = this.renderSession.context;
		context.save();
		var transform = mask.__getRenderTransform();
		context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
		context.beginPath();
		mask.__renderCanvasMask(this.renderSession);
		context.clip();
	}
	,pushObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
		if(handleScrollRect && object.__scrollRect != null) {
			this.pushRect(object.__scrollRect,object.__renderTransform);
		}
		if(!object.__cacheBitmapRender && object.__mask != null) {
			this.pushMask(object.__mask);
		}
	}
	,pushRect: function(rect,transform) {
		var context = this.renderSession.context;
		context.save();
		context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
		context.beginPath();
		context.rect(rect.x,rect.y,rect.width,rect.height);
		context.clip();
	}
	,popMask: function() {
		this.renderSession.context.restore();
	}
	,popObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
		if(!object.__cacheBitmapRender && object.__mask != null) {
			this.popMask();
		}
		if(handleScrollRect && object.__scrollRect != null) {
			this.popRect();
		}
	}
	,popRect: function() {
		this.renderSession.context.restore();
	}
	,__class__: openfl__$internal_renderer_canvas_CanvasMaskManager
});
var openfl__$internal_renderer_canvas_CanvasRenderer = function(stage,context) {
	openfl__$internal_renderer_AbstractRenderer.call(this,stage);
	this.context = context;
	this.renderSession = new openfl__$internal_renderer_RenderSession();
	this.renderSession.clearRenderDirty = true;
	this.renderSession.context = context;
	this.renderSession.renderer = this;
	this.renderSession.renderType = lime_graphics_RendererType.CANVAS;
	this.renderSession.blendModeManager = new openfl__$internal_renderer_canvas_CanvasBlendModeManager(this.renderSession);
	this.renderSession.maskManager = new openfl__$internal_renderer_canvas_CanvasMaskManager(this.renderSession);
};
$hxClasses["openfl._internal.renderer.canvas.CanvasRenderer"] = openfl__$internal_renderer_canvas_CanvasRenderer;
openfl__$internal_renderer_canvas_CanvasRenderer.__name__ = ["openfl","_internal","renderer","canvas","CanvasRenderer"];
openfl__$internal_renderer_canvas_CanvasRenderer.__super__ = openfl__$internal_renderer_AbstractRenderer;
openfl__$internal_renderer_canvas_CanvasRenderer.prototype = $extend(openfl__$internal_renderer_AbstractRenderer.prototype,{
	context: null
	,clear: function() {
		this.renderSession.blendModeManager.setBlendMode(10);
		this.context.setTransform(1,0,0,1,0,0);
		this.context.globalAlpha = 1;
		if(!this.stage.__transparent && this.stage.__clearBeforeRender) {
			this.context.fillStyle = this.stage.__colorString;
			this.context.fillRect(0,0,this.stage.stageWidth * this.stage.window.__scale,this.stage.stageHeight * this.stage.window.__scale);
		} else if(this.stage.__transparent && this.stage.__clearBeforeRender) {
			this.context.clearRect(0,0,this.stage.stageWidth * this.stage.window.__scale,this.stage.stageHeight * this.stage.window.__scale);
		}
	}
	,render: function() {
		this.renderSession.allowSmoothing = this.stage.quality != 2;
		this.stage.__renderCanvas(this.renderSession);
	}
	,renderStage3D: function() {
		var _g = 0;
		var _g1 = this.stage.stage3Ds;
		while(_g < _g1.data.get_length()) {
			var stage3D = _g1.data.get(_g);
			++_g;
			stage3D.__renderCanvas(this.stage,this.renderSession);
		}
	}
	,__class__: openfl__$internal_renderer_canvas_CanvasRenderer
});
var openfl__$internal_renderer_canvas_CanvasShape = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasShape"] = openfl__$internal_renderer_canvas_CanvasShape;
openfl__$internal_renderer_canvas_CanvasShape.__name__ = ["openfl","_internal","renderer","canvas","CanvasShape"];
openfl__$internal_renderer_canvas_CanvasShape.render = function(shape,renderSession) {
};
var openfl__$internal_renderer_canvas_CanvasTextField = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasTextField"] = openfl__$internal_renderer_canvas_CanvasTextField;
openfl__$internal_renderer_canvas_CanvasTextField.__name__ = ["openfl","_internal","renderer","canvas","CanvasTextField"];
openfl__$internal_renderer_canvas_CanvasTextField.render = function(textField,renderSession,transform) {
};
var openfl__$internal_renderer_console_ConsoleRenderer = function(stage,ctx) {
	openfl__$internal_renderer_AbstractRenderer.call(this,stage);
	throw new js__$Boot_HaxeError("ConsoleRenderer not supported");
};
$hxClasses["openfl._internal.renderer.console.ConsoleRenderer"] = openfl__$internal_renderer_console_ConsoleRenderer;
openfl__$internal_renderer_console_ConsoleRenderer.__name__ = ["openfl","_internal","renderer","console","ConsoleRenderer"];
openfl__$internal_renderer_console_ConsoleRenderer.__super__ = openfl__$internal_renderer_AbstractRenderer;
openfl__$internal_renderer_console_ConsoleRenderer.prototype = $extend(openfl__$internal_renderer_AbstractRenderer.prototype,{
	render: function() {
	}
	,__class__: openfl__$internal_renderer_console_ConsoleRenderer
});
var openfl__$internal_renderer_dom_DOMBitmap = function() { };
$hxClasses["openfl._internal.renderer.dom.DOMBitmap"] = openfl__$internal_renderer_dom_DOMBitmap;
openfl__$internal_renderer_dom_DOMBitmap.__name__ = ["openfl","_internal","renderer","dom","DOMBitmap"];
openfl__$internal_renderer_dom_DOMBitmap.clear = function(bitmap,renderSession) {
};
openfl__$internal_renderer_dom_DOMBitmap.render = function(bitmap,renderSession) {
};
openfl__$internal_renderer_dom_DOMBitmap.renderCanvas = function(bitmap,renderSession) {
};
openfl__$internal_renderer_dom_DOMBitmap.renderImage = function(bitmap,renderSession) {
};
var openfl__$internal_renderer_dom_DOMBlendModeManager = function(renderSession) {
	openfl__$internal_renderer_AbstractBlendModeManager.call(this);
	this.renderSession = renderSession;
};
$hxClasses["openfl._internal.renderer.dom.DOMBlendModeManager"] = openfl__$internal_renderer_dom_DOMBlendModeManager;
openfl__$internal_renderer_dom_DOMBlendModeManager.__name__ = ["openfl","_internal","renderer","dom","DOMBlendModeManager"];
openfl__$internal_renderer_dom_DOMBlendModeManager.__super__ = openfl__$internal_renderer_AbstractBlendModeManager;
openfl__$internal_renderer_dom_DOMBlendModeManager.prototype = $extend(openfl__$internal_renderer_AbstractBlendModeManager.prototype,{
	currentBlendMode: null
	,renderSession: null
	,setBlendMode: function(blendMode) {
		if(this.currentBlendMode == blendMode) {
			return;
		}
		this.currentBlendMode = blendMode;
		if(this.renderSession.context != null) {
			switch(blendMode) {
			case 0:
				this.renderSession.context.globalCompositeOperation = "lighter";
				break;
			case 1:
				this.renderSession.context.globalCompositeOperation = "destination-in";
				break;
			case 2:
				this.renderSession.context.globalCompositeOperation = "darken";
				break;
			case 3:
				this.renderSession.context.globalCompositeOperation = "difference";
				break;
			case 4:
				this.renderSession.context.globalCompositeOperation = "destination-out";
				break;
			case 5:
				this.renderSession.context.globalCompositeOperation = "hard-light";
				break;
			case 7:
				this.renderSession.context.globalCompositeOperation = "source-over";
				break;
			case 8:
				this.renderSession.context.globalCompositeOperation = "lighten";
				break;
			case 9:
				this.renderSession.context.globalCompositeOperation = "multiply";
				break;
			case 11:
				this.renderSession.context.globalCompositeOperation = "overlay";
				break;
			case 12:
				this.renderSession.context.globalCompositeOperation = "screen";
				break;
			default:
				this.renderSession.context.globalCompositeOperation = "source-over";
			}
		}
	}
	,__class__: openfl__$internal_renderer_dom_DOMBlendModeManager
});
var openfl__$internal_renderer_dom_DOMDisplayObject = function() { };
$hxClasses["openfl._internal.renderer.dom.DOMDisplayObject"] = openfl__$internal_renderer_dom_DOMDisplayObject;
openfl__$internal_renderer_dom_DOMDisplayObject.__name__ = ["openfl","_internal","renderer","dom","DOMDisplayObject"];
openfl__$internal_renderer_dom_DOMDisplayObject.clear = function(displayObject,renderSession) {
};
openfl__$internal_renderer_dom_DOMDisplayObject.render = function(displayObject,renderSession) {
};
var openfl__$internal_renderer_dom_DOMMaskManager = function(renderSession) {
	openfl__$internal_renderer_AbstractMaskManager.call(this,renderSession);
	this.clipRects = [];
	this.numClipRects = 0;
};
$hxClasses["openfl._internal.renderer.dom.DOMMaskManager"] = openfl__$internal_renderer_dom_DOMMaskManager;
openfl__$internal_renderer_dom_DOMMaskManager.__name__ = ["openfl","_internal","renderer","dom","DOMMaskManager"];
openfl__$internal_renderer_dom_DOMMaskManager.__super__ = openfl__$internal_renderer_AbstractMaskManager;
openfl__$internal_renderer_dom_DOMMaskManager.prototype = $extend(openfl__$internal_renderer_AbstractMaskManager.prototype,{
	currentClipRect: null
	,clipRects: null
	,numClipRects: null
	,pushMask: function(mask) {
		this.pushRect(mask.getBounds(mask),mask.__getRenderTransform());
	}
	,pushObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
		if(handleScrollRect && object.__scrollRect != null) {
			this.pushRect(object.__scrollRect,object.__renderTransform);
		}
		if(object.__mask != null) {
			this.pushMask(object.__mask);
		}
	}
	,pushRect: function(rect,transform) {
		if(this.numClipRects == this.clipRects.length) {
			this.clipRects[this.numClipRects] = new openfl_geom_Rectangle();
		}
		var clipRect = this.clipRects[this.numClipRects];
		rect.__transform(clipRect,transform);
		if(this.numClipRects > 0) {
			var parentClipRect = this.clipRects[this.numClipRects - 1];
			clipRect.__contract(parentClipRect.x,parentClipRect.y,parentClipRect.width,parentClipRect.height);
		}
		if(clipRect.height < 0) {
			clipRect.height = 0;
		}
		if(clipRect.width < 0) {
			clipRect.width = 0;
		}
		this.currentClipRect = clipRect;
		this.numClipRects++;
	}
	,popMask: function() {
		this.popRect();
	}
	,popObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
		if(object.__mask != null) {
			this.popMask();
		}
		if(handleScrollRect && object.__scrollRect != null) {
			this.popRect();
		}
	}
	,popRect: function() {
		if(this.numClipRects > 0) {
			this.numClipRects--;
			if(this.numClipRects > 0) {
				this.currentClipRect = this.clipRects[this.numClipRects - 1];
			} else {
				this.currentClipRect = null;
			}
		}
	}
	,updateClip: function(displayObject) {
		if(this.currentClipRect == null) {
			displayObject.__worldClipChanged = displayObject.__worldClip != null;
			displayObject.__worldClip = null;
		} else {
			if(displayObject.__worldClip == null) {
				displayObject.__worldClip = new openfl_geom_Rectangle();
			}
			var clip = openfl_geom_Rectangle.__pool.get();
			var matrix = openfl_geom_Matrix.__pool.get();
			matrix.copyFrom(displayObject.__renderTransform);
			matrix.invert();
			this.currentClipRect.__transform(clip,matrix);
			if(clip.equals(displayObject.__worldClip)) {
				displayObject.__worldClipChanged = false;
			} else {
				displayObject.__worldClip.copyFrom(clip);
				displayObject.__worldClipChanged = true;
			}
			openfl_geom_Rectangle.__pool.release(clip);
			openfl_geom_Matrix.__pool.release(matrix);
		}
	}
	,__class__: openfl__$internal_renderer_dom_DOMMaskManager
});
var openfl__$internal_renderer_dom_DOMRenderer = function(stage,element) {
	openfl__$internal_renderer_AbstractRenderer.call(this,stage);
	this.element = element;
	this.renderSession = new openfl__$internal_renderer_RenderSession();
	this.renderSession.clearRenderDirty = true;
	this.renderSession.element = element;
	this.renderSession.maskManager = new openfl__$internal_renderer_dom_DOMMaskManager(this.renderSession);
	this.renderSession.blendModeManager = new openfl__$internal_renderer_dom_DOMBlendModeManager(this.renderSession);
	this.renderSession.renderer = this;
	this.renderSession.renderType = lime_graphics_RendererType.DOM;
};
$hxClasses["openfl._internal.renderer.dom.DOMRenderer"] = openfl__$internal_renderer_dom_DOMRenderer;
openfl__$internal_renderer_dom_DOMRenderer.__name__ = ["openfl","_internal","renderer","dom","DOMRenderer"];
openfl__$internal_renderer_dom_DOMRenderer.applyStyle = function(displayObject,renderSession,setTransform,setAlpha,setClip) {
};
openfl__$internal_renderer_dom_DOMRenderer.updateClip = function(displayObject,renderSession) {
	var maskManager = renderSession.maskManager;
	maskManager.updateClip(displayObject);
};
openfl__$internal_renderer_dom_DOMRenderer.__super__ = openfl__$internal_renderer_AbstractRenderer;
openfl__$internal_renderer_dom_DOMRenderer.prototype = $extend(openfl__$internal_renderer_AbstractRenderer.prototype,{
	element: null
	,render: function() {
		this.renderSession.allowSmoothing = this.stage.quality != 2;
		if(!this.stage.__transparent) {
			this.element.style.background = this.stage.__colorString;
		} else {
			this.element.style.background = "none";
		}
		this.renderSession.z = 1;
		this.stage.__renderDOM(this.renderSession);
	}
	,renderStage3D: function() {
		var _g = 0;
		var _g1 = this.stage.stage3Ds;
		while(_g < _g1.data.get_length()) {
			var stage3D = _g1.data.get(_g);
			++_g;
			stage3D.__renderDOM(this.stage,this.renderSession);
		}
	}
	,__class__: openfl__$internal_renderer_dom_DOMRenderer
});
var openfl__$internal_renderer_dom_DOMShape = function() { };
$hxClasses["openfl._internal.renderer.dom.DOMShape"] = openfl__$internal_renderer_dom_DOMShape;
openfl__$internal_renderer_dom_DOMShape.__name__ = ["openfl","_internal","renderer","dom","DOMShape"];
openfl__$internal_renderer_dom_DOMShape.clear = function(shape,renderSession) {
};
openfl__$internal_renderer_dom_DOMShape.render = function(shape,renderSession) {
};
var openfl__$internal_renderer_dom_DOMTextField = function() { };
$hxClasses["openfl._internal.renderer.dom.DOMTextField"] = openfl__$internal_renderer_dom_DOMTextField;
openfl__$internal_renderer_dom_DOMTextField.__name__ = ["openfl","_internal","renderer","dom","DOMTextField"];
openfl__$internal_renderer_dom_DOMTextField.clear = function(textField,renderSession) {
};
openfl__$internal_renderer_dom_DOMTextField.measureText = function(textField) {
};
openfl__$internal_renderer_dom_DOMTextField.render = function(textField,renderSession) {
};
openfl__$internal_renderer_dom_DOMTextField.__getAttributeMatch = function(regex) {
	if(regex.matched(2) != null) {
		return regex.matched(2);
	} else {
		return regex.matched(3);
	}
};
var openfl__$internal_renderer_opengl_GLBitmap = function() { };
$hxClasses["openfl._internal.renderer.opengl.GLBitmap"] = openfl__$internal_renderer_opengl_GLBitmap;
openfl__$internal_renderer_opengl_GLBitmap.__name__ = ["openfl","_internal","renderer","opengl","GLBitmap"];
openfl__$internal_renderer_opengl_GLBitmap.render = function(bitmap,renderSession) {
	if(!bitmap.__renderable || bitmap.__worldAlpha <= 0) {
		return;
	}
	if(bitmap.__bitmapData != null && bitmap.__bitmapData.__isValid) {
		var renderer = renderSession.renderer;
		var gl = renderSession.gl;
		renderSession.blendModeManager.setBlendMode(bitmap.__worldBlendMode);
		renderSession.maskManager.pushObject(bitmap);
		renderSession.filterManager.pushObject(bitmap);
		var shader = renderSession.shaderManager.initShader(bitmap.shader);
		renderSession.shaderManager.setShader(shader);
		shader.get_data().uImage0.input = bitmap.__bitmapData;
		var tmp = renderSession.allowSmoothing && (bitmap.smoothing || renderSession.upscaled);
		shader.get_data().uImage0.smoothing = tmp;
		shader.get_data().uMatrix.value = renderer.getMatrix(bitmap.__renderTransform);
		var useColorTransform = !bitmap.__worldColorTransform.__isDefault();
		if(shader.get_data().uColorTransform.value == null) {
			shader.get_data().uColorTransform.value = [];
		}
		shader.get_data().uColorTransform.value[0] = useColorTransform;
		renderSession.shaderManager.updateShader(shader);
		gl.bindBuffer(gl.ARRAY_BUFFER,bitmap.__bitmapData.getBuffer(gl,bitmap.__worldAlpha,bitmap.__worldColorTransform));
		gl.vertexAttribPointer(shader.get_data().aPosition.index,3,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
		gl.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
		gl.vertexAttribPointer(shader.get_data().aAlpha.index,1,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(20));
		gl.vertexAttribPointer(shader.get_data().aColorMultipliers0.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(24));
		gl.vertexAttribPointer(shader.get_data().aColorMultipliers1.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(40));
		gl.vertexAttribPointer(shader.get_data().aColorMultipliers2.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(56));
		gl.vertexAttribPointer(shader.get_data().aColorMultipliers3.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(72));
		gl.vertexAttribPointer(shader.get_data().aColorOffsets.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(88));
		gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
		renderSession.filterManager.popObject(bitmap);
		renderSession.maskManager.popObject(bitmap);
	}
};
openfl__$internal_renderer_opengl_GLBitmap.renderMask = function(bitmap,renderSession) {
	if(bitmap.__bitmapData != null && bitmap.__bitmapData.__isValid) {
		var renderer = renderSession.renderer;
		var gl = renderSession.gl;
		var shader = openfl__$internal_renderer_opengl_GLMaskManager.maskShader;
		renderSession.shaderManager.setShader(shader);
		shader.get_data().uImage0.input = bitmap.__bitmapData;
		var tmp = renderSession.allowSmoothing && (bitmap.smoothing || renderSession.upscaled);
		shader.get_data().uImage0.smoothing = tmp;
		shader.get_data().uMatrix.value = renderer.getMatrix(bitmap.__renderTransform);
		renderSession.shaderManager.updateShader(shader);
		gl.bindBuffer(gl.ARRAY_BUFFER,bitmap.__bitmapData.getBuffer(gl,bitmap.__worldAlpha,bitmap.__worldColorTransform));
		gl.vertexAttribPointer(shader.get_data().aPosition.index,3,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
		gl.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
		gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
	}
};
var openfl__$internal_renderer_opengl_GLBlendModeManager = function(gl) {
	openfl__$internal_renderer_AbstractBlendModeManager.call(this);
	this.gl = gl;
	this.setBlendMode(10);
	gl.enable(gl.BLEND);
};
$hxClasses["openfl._internal.renderer.opengl.GLBlendModeManager"] = openfl__$internal_renderer_opengl_GLBlendModeManager;
openfl__$internal_renderer_opengl_GLBlendModeManager.__name__ = ["openfl","_internal","renderer","opengl","GLBlendModeManager"];
openfl__$internal_renderer_opengl_GLBlendModeManager.__super__ = openfl__$internal_renderer_AbstractBlendModeManager;
openfl__$internal_renderer_opengl_GLBlendModeManager.prototype = $extend(openfl__$internal_renderer_AbstractBlendModeManager.prototype,{
	currentBlendMode: null
	,gl: null
	,setBlendMode: function(blendMode) {
		if(this.currentBlendMode == blendMode) {
			return;
		}
		this.currentBlendMode = blendMode;
		switch(blendMode) {
		case 0:
			this.gl.blendEquation(this.gl.FUNC_ADD);
			this.gl.blendFunc(this.gl.ONE,this.gl.ONE);
			break;
		case 9:
			this.gl.blendEquation(this.gl.FUNC_ADD);
			this.gl.blendFunc(this.gl.DST_COLOR,this.gl.ONE_MINUS_SRC_ALPHA);
			break;
		case 12:
			this.gl.blendEquation(this.gl.FUNC_ADD);
			this.gl.blendFunc(this.gl.ONE,this.gl.ONE_MINUS_SRC_COLOR);
			break;
		case 14:
			this.gl.blendEquation(this.gl.FUNC_REVERSE_SUBTRACT);
			this.gl.blendFunc(this.gl.ONE,this.gl.ONE);
			break;
		default:
			this.gl.blendEquation(this.gl.FUNC_ADD);
			this.gl.blendFunc(this.gl.ONE,this.gl.ONE_MINUS_SRC_ALPHA);
		}
	}
	,__class__: openfl__$internal_renderer_opengl_GLBlendModeManager
});
var openfl__$internal_renderer_opengl_GLDisplayObject = function() { };
$hxClasses["openfl._internal.renderer.opengl.GLDisplayObject"] = openfl__$internal_renderer_opengl_GLDisplayObject;
openfl__$internal_renderer_opengl_GLDisplayObject.__name__ = ["openfl","_internal","renderer","opengl","GLDisplayObject"];
openfl__$internal_renderer_opengl_GLDisplayObject.render = function(displayObject,renderSession) {
	if(displayObject.opaqueBackground == null && displayObject.__graphics == null) {
		return;
	}
	if(!displayObject.__renderable || displayObject.__worldAlpha <= 0) {
		return;
	}
	if(displayObject.opaqueBackground != null && !displayObject.__cacheBitmapRender && displayObject.get_width() > 0 && displayObject.get_height() > 0) {
		renderSession.blendModeManager.setBlendMode(displayObject.__worldBlendMode);
		renderSession.maskManager.pushObject(displayObject);
		var gl = renderSession.gl;
		var rect = openfl_geom_Rectangle.__pool.get();
		rect.setTo(0,0,displayObject.get_width(),displayObject.get_height());
		renderSession.maskManager.pushRect(rect,displayObject.__renderTransform);
		var color = displayObject.opaqueBackground;
		gl.clearColor((color >>> 16 & 255) / 255,(color >>> 8 & 255) / 255,(color & 255) / 255,1);
		gl.clear(gl.COLOR_BUFFER_BIT);
		renderSession.maskManager.popRect();
		renderSession.maskManager.popObject(displayObject);
		openfl_geom_Rectangle.__pool.release(rect);
	}
	if(displayObject.__graphics != null) {
		if(!(!displayObject.__renderable || displayObject.__worldAlpha <= 0)) {
			var graphics = displayObject.__graphics;
			if(graphics != null) {
				var bounds = graphics.__bounds;
				if(graphics.__bitmap != null && graphics.__visible) {
					var renderer = renderSession.renderer;
					var gl1 = renderSession.gl;
					renderSession.blendModeManager.setBlendMode(displayObject.__worldBlendMode);
					renderSession.maskManager.pushObject(displayObject);
					var shader = renderSession.filterManager.pushObject(displayObject);
					renderSession.shaderManager.setShader(shader);
					shader.get_data().uImage0.input = graphics.__bitmap;
					shader.get_data().uImage0.smoothing = renderSession.allowSmoothing;
					shader.get_data().uMatrix.value = renderer.getMatrix(graphics.__worldTransform);
					var useColorTransform = !displayObject.__worldColorTransform.__isDefault();
					if(shader.get_data().uColorTransform.value == null) {
						shader.get_data().uColorTransform.value = [];
					}
					shader.get_data().uColorTransform.value[0] = useColorTransform;
					renderSession.shaderManager.updateShader(shader);
					gl1.bindBuffer(gl1.ARRAY_BUFFER,graphics.__bitmap.getBuffer(gl1,displayObject.__worldAlpha,displayObject.__worldColorTransform));
					gl1.vertexAttribPointer(shader.get_data().aPosition.index,3,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
					gl1.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
					gl1.vertexAttribPointer(shader.get_data().aAlpha.index,1,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(20));
					gl1.vertexAttribPointer(shader.get_data().aColorMultipliers0.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(24));
					gl1.vertexAttribPointer(shader.get_data().aColorMultipliers1.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(40));
					gl1.vertexAttribPointer(shader.get_data().aColorMultipliers2.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(56));
					gl1.vertexAttribPointer(shader.get_data().aColorMultipliers3.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(72));
					gl1.vertexAttribPointer(shader.get_data().aColorOffsets.index,4,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(88));
					gl1.drawArrays(gl1.TRIANGLE_STRIP,0,4);
					renderSession.filterManager.popObject(displayObject);
					renderSession.maskManager.popObject(displayObject);
				}
			}
		}
	}
};
openfl__$internal_renderer_opengl_GLDisplayObject.renderMask = function(displayObject,renderSession) {
	if(displayObject.opaqueBackground == null && displayObject.__graphics == null) {
		return;
	}
	if(displayObject.opaqueBackground != null && !displayObject.__cacheBitmapRender && displayObject.get_width() > 0 && displayObject.get_height() > 0) {
		var gl = renderSession.gl;
	}
	if(displayObject.__graphics != null) {
		var graphics = displayObject.__graphics;
		if(graphics != null) {
			var bounds = graphics.__bounds;
			if(graphics.__bitmap != null) {
				var renderer = renderSession.renderer;
				var gl1 = renderSession.gl;
				var shader = openfl__$internal_renderer_opengl_GLMaskManager.maskShader;
				renderSession.shaderManager.setShader(shader);
				shader.get_data().uImage0.input = graphics.__bitmap;
				shader.get_data().uImage0.smoothing = renderSession.allowSmoothing;
				shader.get_data().uMatrix.value = renderer.getMatrix(graphics.__worldTransform);
				renderSession.shaderManager.updateShader(shader);
				gl1.bindBuffer(gl1.ARRAY_BUFFER,graphics.__bitmap.getBuffer(gl1,displayObject.__worldAlpha,displayObject.__worldColorTransform));
				gl1.vertexAttribPointer(shader.get_data().aPosition.index,3,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
				gl1.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl1.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
				gl1.drawArrays(gl1.TRIANGLE_STRIP,0,4);
			}
		}
	}
};
var openfl__$internal_renderer_opengl_GLFilterManager = function(renderer,renderSession) {
	openfl__$internal_renderer_AbstractFilterManager.call(this,renderSession);
	this.renderer = renderer;
	this.gl = renderSession.gl;
	this.filterDepth = 0;
	this.matrix = new openfl_geom_Matrix();
};
$hxClasses["openfl._internal.renderer.opengl.GLFilterManager"] = openfl__$internal_renderer_opengl_GLFilterManager;
openfl__$internal_renderer_opengl_GLFilterManager.__name__ = ["openfl","_internal","renderer","opengl","GLFilterManager"];
openfl__$internal_renderer_opengl_GLFilterManager.__super__ = openfl__$internal_renderer_AbstractFilterManager;
openfl__$internal_renderer_opengl_GLFilterManager.prototype = $extend(openfl__$internal_renderer_AbstractFilterManager.prototype,{
	filterDepth: null
	,gl: null
	,matrix: null
	,renderer: null
	,pushObject: function(object) {
		return this.renderSession.shaderManager.defaultShader;
	}
	,popObject: function(object) {
		return;
	}
	,renderPass: function(target,shader) {
		if(target == null || shader == null) {
			return;
		}
		shader.get_data().uImage0.input = target;
		var tmp = this.renderSession.allowSmoothing && this.renderSession.upscaled;
		shader.get_data().uImage0.smoothing = tmp;
		shader.get_data().uMatrix.value = this.renderer.getMatrix(this.matrix);
		if(shader.get_data().uColorTransform != null) {
			if(shader.get_data().uColorTransform.value == null) {
				shader.get_data().uColorTransform.value = [];
			}
			shader.get_data().uColorTransform.value[0] = false;
		}
		this.renderSession.shaderManager.setShader(shader);
		this.gl.bindBuffer(this.gl.ARRAY_BUFFER,target.getBuffer(this.gl,1,null));
		this.gl.vertexAttribPointer(shader.get_data().aPosition.index,3,this.gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
		this.gl.vertexAttribPointer(shader.get_data().aTexCoord.index,2,this.gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
		this.gl.vertexAttribPointer(shader.get_data().aAlpha.index,1,this.gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(20));
		this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4);
	}
	,__class__: openfl__$internal_renderer_opengl_GLFilterManager
});
var openfl_display_Shader = function(code) {
	this.__data = new openfl_display_ShaderData(null);
	if(this.__glFragmentSource == null) {
		this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec4 vColorMultipliers0;\n\t\tvarying vec4 vColorMultipliers1;\n\t\tvarying vec4 vColorMultipliers2;\n\t\tvarying vec4 vColorMultipliers3;\n\t\tvarying vec4 vColorOffsets;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform bool uColorTransform;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvec4 color = texture2D (uImage0, vTexCoord);\n\t\t\t\n\t\t\tif (color.a == 0.0) {\n\t\t\t\t\n\t\t\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\n\t\t\t} else if (uColorTransform) {\n\t\t\t\t\n\t\t\t\tcolor = vec4 (color.rgb / color.a, color.a);\n\t\t\t\t\n\t\t\t\tmat4 colorMultiplier;\n\t\t\t\tcolorMultiplier[0] = vColorMultipliers0;\n\t\t\t\tcolorMultiplier[1] = vColorMultipliers1;\n\t\t\t\tcolorMultiplier[2] = vColorMultipliers2;\n\t\t\t\tcolorMultiplier[3] = vColorMultipliers3;\n\t\t\t\t\n\t\t\t\tcolor = vColorOffsets + (color * colorMultiplier);\n\t\t\t\t\n\t\t\t\tif (color.a > 0.0) {\n\t\t\t\t\t\n\t\t\t\t\tgl_FragColor = vec4 (color.rgb * color.a * vAlpha, color.a * vAlpha);\n\t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t\n\t\t\t\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tgl_FragColor = color * vAlpha;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}";
	}
	if(this.__glVertexSource == null) {
		this.__glVertexSource = "attribute float aAlpha;\n\t\tattribute vec4 aColorMultipliers0;\n\t\tattribute vec4 aColorMultipliers1;\n\t\tattribute vec4 aColorMultipliers2;\n\t\tattribute vec4 aColorMultipliers3;\n\t\tattribute vec4 aColorOffsets;\n\t\tattribute vec4 aPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tvarying float vAlpha;\n\t\tvarying vec4 vColorMultipliers0;\n\t\tvarying vec4 vColorMultipliers1;\n\t\tvarying vec4 vColorMultipliers2;\n\t\tvarying vec4 vColorMultipliers3;\n\t\tvarying vec4 vColorOffsets;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform mat4 uMatrix;\n\t\tuniform bool uColorTransform;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvAlpha = aAlpha;\n\t\t\tvTexCoord = aTexCoord;\n\t\t\t\n\t\t\tif (uColorTransform) {\n\t\t\t\t\n\t\t\t\tvColorMultipliers0 = aColorMultipliers0;\n\t\t\t\tvColorMultipliers1 = aColorMultipliers1;\n\t\t\t\tvColorMultipliers2 = aColorMultipliers2;\n\t\t\t\tvColorMultipliers3 = aColorMultipliers3;\n\t\t\t\tvColorOffsets = aColorOffsets;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tgl_Position = uMatrix * aPosition;\n\t\t\t\n\t\t}";
	}
	this.byteCode = code;
	this.precisionHint = 1;
	this.__glSourceDirty = true;
	this.__numPasses = 1;
};
$hxClasses["openfl.display.Shader"] = openfl_display_Shader;
openfl_display_Shader.__name__ = ["openfl","display","Shader"];
openfl_display_Shader.prototype = {
	byteCode: null
	,glProgram: null
	,precisionHint: null
	,gl: null
	,__data: null
	,__glFragmentSource: null
	,__glSourceDirty: null
	,__glVertexSource: null
	,__isUniform: null
	,__inputBitmapData: null
	,__numPasses: null
	,__paramBool: null
	,__paramFloat: null
	,__paramInt: null
	,__uniformMatrix2: null
	,__uniformMatrix3: null
	,__uniformMatrix4: null
	,__disable: function() {
		if(this.glProgram != null) {
			this.__disableGL();
		}
	}
	,__disableGL: function() {
		if(this.get_data().uImage0 != null) {
			this.get_data().uImage0.input = null;
		}
		var _g = 0;
		var _g1 = this.__paramBool;
		while(_g < _g1.length) {
			var parameter = _g1[_g];
			++_g;
			this.gl.disableVertexAttribArray(parameter.index);
		}
		var _g2 = 0;
		var _g11 = this.__paramFloat;
		while(_g2 < _g11.length) {
			var parameter1 = _g11[_g2];
			++_g2;
			this.gl.disableVertexAttribArray(parameter1.index);
		}
		var _g3 = 0;
		var _g12 = this.__paramInt;
		while(_g3 < _g12.length) {
			var parameter2 = _g12[_g3];
			++_g3;
			this.gl.disableVertexAttribArray(parameter2.index);
		}
		this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null);
		this.gl.bindTexture(this.gl.TEXTURE_2D,null);
		if(this.gl.type == lime_graphics_opengl_GLContextType.OPENGL) {
			this.gl.disable(this.gl.TEXTURE_2D);
		}
	}
	,__enable: function() {
		this.__init();
		if(this.glProgram != null) {
			this.__enableGL();
		}
	}
	,__enableGL: function() {
		var textureCount = 0;
		var _g = 0;
		var _g1 = this.__inputBitmapData;
		while(_g < _g1.length) {
			var input = _g1[_g];
			++_g;
			this.gl.uniform1i(input.index,textureCount);
			++textureCount;
		}
		if(this.gl.type == lime_graphics_opengl_GLContextType.OPENGL && textureCount > 0) {
			this.gl.enable(this.gl.TEXTURE_2D);
		}
	}
	,__init: function() {
		if(this.__data == null) {
			this.__data = new openfl_display_ShaderData(null);
		}
		if(this.__glFragmentSource != null && this.__glVertexSource != null && (this.glProgram == null || this.__glSourceDirty)) {
			this.__initGL();
		}
	}
	,__initGL: function() {
		if(this.__glSourceDirty || this.__isUniform == null) {
			this.__glSourceDirty = false;
			this.glProgram = null;
			this.__isUniform = new haxe_ds_StringMap();
			this.__inputBitmapData = [];
			this.__paramBool = [];
			this.__paramFloat = [];
			this.__paramInt = [];
			var this1 = new Float32Array(4);
			this.__uniformMatrix2 = this1;
			var this2 = new Float32Array(9);
			this.__uniformMatrix3 = this2;
			var this3 = new Float32Array(16);
			this.__uniformMatrix4 = this3;
			this.__processGLData(this.get_glVertexSource(),"attribute");
			this.__processGLData(this.get_glVertexSource(),"uniform");
			this.__processGLData(this.get_glFragmentSource(),"uniform");
		}
		if(this.gl != null && this.glProgram == null) {
			var fragment = "#ifdef GL_ES\n\t\t\t\tprecision " + (this.precisionHint == 1 ? "mediump" : "lowp") + " float;\n\t\t\t\t#endif\n\t\t\t\t" + this.get_glFragmentSource();
			this.glProgram = lime_utils_GLUtils.createProgram(this.get_glVertexSource(),fragment);
			if(this.glProgram != null) {
				var _g = 0;
				var _g1 = this.__inputBitmapData;
				while(_g < _g1.length) {
					var input = _g1[_g];
					++_g;
					var key = input.name;
					var _this = this.__isUniform;
					if(__map_reserved[key] != null ? _this.getReserved(key) : _this.h[key]) {
						input.index = this.gl.getUniformLocation(this.glProgram,input.name);
					} else {
						input.index = this.gl.getAttribLocation(this.glProgram,input.name);
					}
				}
				var _g2 = 0;
				var _g11 = this.__paramBool;
				while(_g2 < _g11.length) {
					var parameter = _g11[_g2];
					++_g2;
					var key1 = parameter.name;
					var _this1 = this.__isUniform;
					if(__map_reserved[key1] != null ? _this1.getReserved(key1) : _this1.h[key1]) {
						parameter.index = this.gl.getUniformLocation(this.glProgram,parameter.name);
					} else {
						parameter.index = this.gl.getAttribLocation(this.glProgram,parameter.name);
					}
				}
				var _g3 = 0;
				var _g12 = this.__paramFloat;
				while(_g3 < _g12.length) {
					var parameter1 = _g12[_g3];
					++_g3;
					var key2 = parameter1.name;
					var _this2 = this.__isUniform;
					if(__map_reserved[key2] != null ? _this2.getReserved(key2) : _this2.h[key2]) {
						parameter1.index = this.gl.getUniformLocation(this.glProgram,parameter1.name);
					} else {
						parameter1.index = this.gl.getAttribLocation(this.glProgram,parameter1.name);
					}
				}
				var _g4 = 0;
				var _g13 = this.__paramInt;
				while(_g4 < _g13.length) {
					var parameter2 = _g13[_g4];
					++_g4;
					var key3 = parameter2.name;
					var _this3 = this.__isUniform;
					if(__map_reserved[key3] != null ? _this3.getReserved(key3) : _this3.h[key3]) {
						parameter2.index = this.gl.getUniformLocation(this.glProgram,parameter2.name);
					} else {
						parameter2.index = this.gl.getAttribLocation(this.glProgram,parameter2.name);
					}
				}
			}
		}
	}
	,__processGLData: function(source,storageType) {
		var lastMatch = 0;
		var position;
		var regex;
		var name;
		var type;
		if(storageType == "uniform") {
			regex = new EReg("uniform ([A-Za-z0-9]+) ([A-Za-z0-9]+)","");
		} else {
			regex = new EReg("attribute ([A-Za-z0-9]+) ([A-Za-z0-9]+)","");
		}
		while(regex.matchSub(source,lastMatch)) {
			type = regex.matched(1);
			name = regex.matched(2);
			if(StringTools.startsWith(type,"sampler")) {
				var input = new openfl_display_ShaderInput();
				input.name = name;
				this.__inputBitmapData.push(input);
				this.get_data()[name] = input;
			} else {
				var parameterType;
				switch(type) {
				case "bool":
					parameterType = 0;
					break;
				case "bvec2":
					parameterType = 1;
					break;
				case "bvec3":
					parameterType = 2;
					break;
				case "bvec4":
					parameterType = 3;
					break;
				case "dvec2":case "vec2":
					parameterType = 5;
					break;
				case "dvec3":case "vec3":
					parameterType = 6;
					break;
				case "double":case "float":
					parameterType = 4;
					break;
				case "ivec3":case "uvec3":
					parameterType = 10;
					break;
				case "ivec4":case "uvec4":
					parameterType = 11;
					break;
				case "mat2":case "mat2x2":
					parameterType = 12;
					break;
				case "mat2x3":
					parameterType = 13;
					break;
				case "mat2x4":
					parameterType = 14;
					break;
				case "mat3x2":
					parameterType = 15;
					break;
				case "mat3":case "mat3x3":
					parameterType = 16;
					break;
				case "mat3x4":
					parameterType = 17;
					break;
				case "mat4":case "mat4x4":
					parameterType = 20;
					break;
				case "mat4x2":
					parameterType = 18;
					break;
				case "mat4x3":
					parameterType = 19;
					break;
				case "int":case "uint":
					parameterType = 8;
					break;
				case "ivec2":case "uvec2":
					parameterType = 9;
					break;
				case "dvec4":case "vec4":
					parameterType = 7;
					break;
				default:
					parameterType = null;
				}
				switch(parameterType) {
				case 0:case 1:case 2:case 3:
					var parameter = new openfl_display_ShaderParameter();
					parameter.name = name;
					parameter.type = parameterType;
					this.__paramBool.push(parameter);
					this.get_data()[name] = parameter;
					break;
				case 8:case 9:case 10:case 11:
					var parameter1 = new openfl_display_ShaderParameter();
					parameter1.name = name;
					parameter1.type = parameterType;
					this.__paramInt.push(parameter1);
					this.get_data()[name] = parameter1;
					break;
				default:
					var parameter2 = new openfl_display_ShaderParameter();
					parameter2.name = name;
					parameter2.type = parameterType;
					this.__paramFloat.push(parameter2);
					this.get_data()[name] = parameter2;
				}
			}
			var _this = this.__isUniform;
			var value = storageType == "uniform";
			if(__map_reserved[name] != null) {
				_this.setReserved(name,value);
			} else {
				_this.h[name] = value;
			}
			position = regex.matchedPos();
			lastMatch = position.pos + position.len;
		}
	}
	,__update: function() {
		if(this.glProgram != null) {
			this.__updateGL();
		}
	}
	,__updateGL: function() {
		var textureCount = 0;
		var _g = 0;
		var _g1 = this.__inputBitmapData;
		while(_g < _g1.length) {
			var input = _g1[_g];
			++_g;
			if(input.input != null) {
				this.gl.activeTexture(this.gl.TEXTURE0 + textureCount);
				this.gl.bindTexture(this.gl.TEXTURE_2D,input.input.getTexture(this.gl));
				if(input.smoothing) {
					this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR);
					this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR);
				} else {
					this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST);
					this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST);
				}
			}
			++textureCount;
		}
		var value;
		var index;
		var _g2 = 0;
		var _g11 = this.__paramBool;
		while(_g2 < _g11.length) {
			var parameter = _g11[_g2];
			++_g2;
			value = parameter.value;
			index = parameter.index;
			if(value != null) {
				var _g21 = parameter.type;
				switch(_g21) {
				case 0:
					this.gl.uniform1i(index,value[0] ? 1 : 0);
					break;
				case 1:
					this.gl.uniform2i(index,value[0] ? 1 : 0,value[1] ? 1 : 0);
					break;
				case 2:
					this.gl.uniform3i(index,value[0] ? 1 : 0,value[1] ? 1 : 0,value[2] ? 1 : 0);
					break;
				case 3:
					this.gl.uniform4i(index,value[0] ? 1 : 0,value[1] ? 1 : 0,value[2] ? 1 : 0,value[3] ? 1 : 0);
					break;
				default:
				}
			} else {
				var key = parameter.name;
				var _this = this.__isUniform;
				if(!(__map_reserved[key] != null ? _this.getReserved(key) : _this.h[key])) {
					this.gl.enableVertexAttribArray(parameter.index);
				}
			}
		}
		var value1;
		var index1;
		var _g3 = 0;
		var _g12 = this.__paramFloat;
		while(_g3 < _g12.length) {
			var parameter1 = _g12[_g3];
			++_g3;
			value1 = parameter1.value;
			index1 = parameter1.index;
			if(value1 != null) {
				var _g22 = parameter1.type;
				switch(_g22) {
				case 4:
					this.gl.uniform1f(index1,value1[0]);
					break;
				case 5:
					this.gl.uniform2f(index1,value1[0],value1[1]);
					break;
				case 6:
					this.gl.uniform3f(index1,value1[0],value1[1],value1[2]);
					break;
				case 7:
					this.gl.uniform4f(index1,value1[0],value1[1],value1[2],value1[3]);
					break;
				case 12:
					var _g23 = 0;
					while(_g23 < 4) {
						var i = _g23++;
						this.__uniformMatrix2[i] = value1[i];
					}
					this.gl.uniformMatrix2fv(index1,1,false,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(this.__uniformMatrix2));
					break;
				case 16:
					var _g24 = 0;
					while(_g24 < 9) {
						var i1 = _g24++;
						this.__uniformMatrix3[i1] = value1[i1];
					}
					this.gl.uniformMatrix3fv(index1,1,false,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(this.__uniformMatrix3));
					break;
				case 20:
					var _g25 = 0;
					while(_g25 < 16) {
						var i2 = _g25++;
						this.__uniformMatrix4[i2] = value1[i2];
					}
					this.gl.uniformMatrix4fv(index1,1,false,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(this.__uniformMatrix4));
					break;
				default:
				}
			} else {
				var key1 = parameter1.name;
				var _this1 = this.__isUniform;
				if(!(__map_reserved[key1] != null ? _this1.getReserved(key1) : _this1.h[key1])) {
					this.gl.enableVertexAttribArray(parameter1.index);
					var _g26 = parameter1.type;
					switch(_g26) {
					case 12:
						this.gl.enableVertexAttribArray(parameter1.index + 1);
						break;
					case 16:
						this.gl.enableVertexAttribArray(parameter1.index + 1);
						this.gl.enableVertexAttribArray(parameter1.index + 2);
						break;
					case 20:
						this.gl.enableVertexAttribArray(parameter1.index + 1);
						this.gl.enableVertexAttribArray(parameter1.index + 2);
						this.gl.enableVertexAttribArray(parameter1.index + 3);
						break;
					default:
					}
				}
			}
		}
		var value2;
		var index2;
		var _g4 = 0;
		var _g13 = this.__paramInt;
		while(_g4 < _g13.length) {
			var parameter2 = _g13[_g4];
			++_g4;
			value2 = parameter2.value;
			index2 = parameter2.index;
			if(value2 != null) {
				var _g27 = parameter2.type;
				switch(_g27) {
				case 8:
					this.gl.uniform1i(index2,value2[0]);
					break;
				case 9:
					this.gl.uniform2i(index2,value2[0],value2[1]);
					break;
				case 10:
					this.gl.uniform3i(index2,value2[0],value2[1],value2[2]);
					break;
				case 11:
					this.gl.uniform4i(index2,value2[0],value2[1],value2[2],value2[3]);
					break;
				default:
				}
			} else {
				var key2 = parameter2.name;
				var _this2 = this.__isUniform;
				if(!(__map_reserved[key2] != null ? _this2.getReserved(key2) : _this2.h[key2])) {
					this.gl.enableVertexAttribArray(parameter2.index);
				}
			}
		}
	}
	,get_data: function() {
		if(this.__glSourceDirty || this.__data == null) {
			this.__init();
		}
		return this.__data;
	}
	,set_data: function(value) {
		return this.__data = value;
	}
	,get_glFragmentSource: function() {
		return this.__glFragmentSource;
	}
	,set_glFragmentSource: function(value) {
		if(value != this.__glFragmentSource) {
			this.__glSourceDirty = true;
		}
		return this.__glFragmentSource = value;
	}
	,get_glVertexSource: function() {
		return this.__glVertexSource;
	}
	,set_glVertexSource: function(value) {
		if(value != this.__glVertexSource) {
			this.__glSourceDirty = true;
		}
		return this.__glVertexSource = value;
	}
	,__class__: openfl_display_Shader
	,__properties__: {set_glVertexSource:"set_glVertexSource",get_glVertexSource:"get_glVertexSource",set_glFragmentSource:"set_glFragmentSource",get_glFragmentSource:"get_glFragmentSource",set_data:"set_data",get_data:"get_data"}
};
var openfl__$internal_renderer_opengl_GLMaskShader = function(code) {
	if(this.__glFragmentSource == null) {
		this.__glFragmentSource = "varying vec2 vTexCoord;\n\t\t\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvec4 color = texture2D (uImage0, vTexCoord);\n\t\t\t\n\t\t\tif (color.a == 0.0) {\n\t\t\t\t\n\t\t\t\tdiscard;\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tgl_FragColor = color;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}";
	}
	if(this.__glVertexSource == null) {
		this.__glVertexSource = "attribute vec4 aPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform mat4 uMatrix;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvTexCoord = aTexCoord;\n\t\t\t\n\t\t\tgl_Position = uMatrix * aPosition;\n\t\t\t\n\t\t}";
	}
	openfl_display_Shader.call(this,code);
};
$hxClasses["openfl._internal.renderer.opengl.GLMaskShader"] = openfl__$internal_renderer_opengl_GLMaskShader;
openfl__$internal_renderer_opengl_GLMaskShader.__name__ = ["openfl","_internal","renderer","opengl","GLMaskShader"];
openfl__$internal_renderer_opengl_GLMaskShader.__super__ = openfl_display_Shader;
openfl__$internal_renderer_opengl_GLMaskShader.prototype = $extend(openfl_display_Shader.prototype,{
	__class__: openfl__$internal_renderer_opengl_GLMaskShader
});
var openfl__$internal_renderer_opengl_GLMaskManager = function(renderSession) {
	openfl__$internal_renderer_AbstractMaskManager.call(this,renderSession);
	this.gl = renderSession.gl;
	this.clipRects = [];
	this.maskObjects = [];
	this.numClipRects = 0;
	this.stencilReference = 0;
	this.tempRect = new openfl_geom_Rectangle();
};
$hxClasses["openfl._internal.renderer.opengl.GLMaskManager"] = openfl__$internal_renderer_opengl_GLMaskManager;
openfl__$internal_renderer_opengl_GLMaskManager.__name__ = ["openfl","_internal","renderer","opengl","GLMaskManager"];
openfl__$internal_renderer_opengl_GLMaskManager.__super__ = openfl__$internal_renderer_AbstractMaskManager;
openfl__$internal_renderer_opengl_GLMaskManager.prototype = $extend(openfl__$internal_renderer_AbstractMaskManager.prototype,{
	clipRects: null
	,gl: null
	,maskObjects: null
	,numClipRects: null
	,stencilReference: null
	,tempRect: null
	,pushMask: function(mask) {
		if(this.stencilReference == 0) {
			this.gl.enable(this.gl.STENCIL_TEST);
			this.gl.stencilMask(255);
			this.gl.clear(this.gl.STENCIL_BUFFER_BIT);
		}
		this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.INCR);
		this.gl.stencilFunc(this.gl.EQUAL,this.stencilReference,255);
		this.gl.colorMask(false,false,false,false);
		mask.__renderGLMask(this.renderSession);
		this.maskObjects.push(mask);
		this.stencilReference++;
		this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.KEEP);
		this.gl.stencilFunc(this.gl.EQUAL,this.stencilReference,255);
		this.gl.colorMask(true,true,true,true);
	}
	,pushObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
		if(handleScrollRect && object.__scrollRect != null) {
			this.pushRect(object.__scrollRect,object.__renderTransform);
		}
		if(object.__mask != null) {
			this.pushMask(object.__mask);
		}
	}
	,pushRect: function(rect,transform) {
		if(this.numClipRects == this.clipRects.length) {
			this.clipRects[this.numClipRects] = new openfl_geom_Rectangle();
		}
		var clipRect = this.clipRects[this.numClipRects];
		rect.__transform(clipRect,transform);
		if(this.numClipRects > 0) {
			var parentClipRect = this.clipRects[this.numClipRects - 1];
			clipRect.__contract(parentClipRect.x,parentClipRect.y,parentClipRect.width,parentClipRect.height);
		}
		if(clipRect.height < 0) {
			clipRect.height = 0;
		}
		if(clipRect.width < 0) {
			clipRect.width = 0;
		}
		this.scissorRect(clipRect);
		this.numClipRects++;
	}
	,popMask: function() {
		if(this.stencilReference == 0) {
			return;
		}
		if(this.stencilReference > 1) {
			this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.DECR);
			this.gl.stencilFunc(this.gl.EQUAL,this.stencilReference,255);
			this.gl.colorMask(false,false,false,false);
			var mask = this.maskObjects.pop();
			mask.__renderGLMask(this.renderSession);
			this.stencilReference--;
			this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.KEEP);
			this.gl.stencilFunc(this.gl.EQUAL,this.stencilReference,255);
			this.gl.colorMask(true,true,true,true);
		} else {
			this.stencilReference = 0;
			this.gl.disable(this.gl.STENCIL_TEST);
		}
	}
	,popObject: function(object,handleScrollRect) {
		if(handleScrollRect == null) {
			handleScrollRect = true;
		}
		if(object.__mask != null) {
			this.popMask();
		}
		if(handleScrollRect && object.__scrollRect != null) {
			this.popRect();
		}
	}
	,popRect: function() {
		if(this.numClipRects > 0) {
			this.numClipRects--;
			if(this.numClipRects > 0) {
				this.scissorRect(this.clipRects[this.numClipRects - 1]);
			} else {
				this.scissorRect();
			}
		}
	}
	,scissorRect: function(rect) {
		if(rect != null) {
			var renderer = this.renderSession.renderer;
			this.gl.enable(this.gl.SCISSOR_TEST);
			var clipRect = this.tempRect;
			rect.__transform(clipRect,renderer.displayMatrix);
			var x = Math.floor(clipRect.x);
			var y = Math.floor(renderer.height - clipRect.y - clipRect.height);
			var width = Math.ceil(clipRect.width);
			var height = Math.ceil(clipRect.height);
			if(width < 0) {
				width = 0;
			}
			if(height < 0) {
				height = 0;
			}
			this.gl.scissor(x,y,width,height);
		} else {
			this.gl.disable(this.gl.SCISSOR_TEST);
		}
	}
	,__class__: openfl__$internal_renderer_opengl_GLMaskManager
});
var openfl__$internal_renderer_opengl_GLRenderer = function(stage,gl,defaultRenderTarget) {
	openfl__$internal_renderer_AbstractRenderer.call(this,stage);
	this.gl = gl;
	this.defaultRenderTarget = defaultRenderTarget;
	this.flipped = defaultRenderTarget == null;
	if(openfl_display_Graphics.maxTextureWidth == null) {
		openfl_display_Graphics.maxTextureWidth = openfl_display_Graphics.maxTextureHeight = gl.getInteger(gl.MAX_TEXTURE_SIZE);
	}
	this.matrix = lime_math__$Matrix4_Matrix4_$Impl_$._new();
	this.values = [];
	this.renderSession = new openfl__$internal_renderer_RenderSession();
	this.renderSession.clearRenderDirty = true;
	this.renderSession.gl = gl;
	this.renderSession.renderer = this;
	this.renderSession.renderType = lime_graphics_RendererType.OPENGL;
	this.renderSession.blendModeManager = new openfl__$internal_renderer_opengl_GLBlendModeManager(gl);
	this.renderSession.filterManager = new openfl__$internal_renderer_opengl_GLFilterManager(this,this.renderSession);
	this.renderSession.shaderManager = new openfl__$internal_renderer_opengl_GLShaderManager(gl);
	this.renderSession.maskManager = new openfl__$internal_renderer_opengl_GLMaskManager(this.renderSession);
	if(stage.window != null) {
		if(stage.stage3Ds.data.get(0).context3D == null) {
			stage.stage3Ds.data.get(0).__createContext(stage,this.renderSession);
		}
		var width = defaultRenderTarget != null ? defaultRenderTarget.width : Math.ceil(stage.window.__width * stage.window.__scale);
		var height = defaultRenderTarget != null ? defaultRenderTarget.height : Math.ceil(stage.window.__height * stage.window.__scale);
		this.resize(width,height);
	}
};
$hxClasses["openfl._internal.renderer.opengl.GLRenderer"] = openfl__$internal_renderer_opengl_GLRenderer;
openfl__$internal_renderer_opengl_GLRenderer.__name__ = ["openfl","_internal","renderer","opengl","GLRenderer"];
openfl__$internal_renderer_opengl_GLRenderer.__super__ = openfl__$internal_renderer_AbstractRenderer;
openfl__$internal_renderer_opengl_GLRenderer.prototype = $extend(openfl__$internal_renderer_AbstractRenderer.prototype,{
	projection: null
	,projectionFlipped: null
	,defaultRenderTarget: null
	,currentRenderTarget: null
	,displayHeight: null
	,displayMatrix: null
	,displayWidth: null
	,flipped: null
	,gl: null
	,matrix: null
	,renderTargetA: null
	,renderTargetB: null
	,offsetX: null
	,offsetY: null
	,values: null
	,clear: function() {
		if(this.stage.__transparent) {
			this.gl.clearColor(0,0,0,0);
		} else {
			this.gl.clearColor(this.stage.__colorSplit[0],this.stage.__colorSplit[1],this.stage.__colorSplit[2],1);
		}
		this.gl.clear(this.gl.COLOR_BUFFER_BIT);
	}
	,getCacheObject: function() {
	}
	,getMatrix: function(transform) {
		var _matrix = openfl_geom_Matrix.__pool.get();
		_matrix.copyFrom(transform);
		_matrix.concat(this.displayMatrix);
		if(this.renderSession.roundPixels) {
			_matrix.tx = Math.round(_matrix.tx);
			_matrix.ty = Math.round(_matrix.ty);
		}
		lime_math__$Matrix4_Matrix4_$Impl_$.identity(this.matrix);
		lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix,0,_matrix.a);
		lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix,1,_matrix.b);
		lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix,4,_matrix.c);
		lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix,5,_matrix.d);
		lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix,12,_matrix.tx);
		lime_math__$Matrix4_Matrix4_$Impl_$.set(this.matrix,13,_matrix.ty);
		lime_math__$Matrix4_Matrix4_$Impl_$.append(this.matrix,this.flipped ? this.projectionFlipped : this.projection);
		var _g = 0;
		while(_g < 16) {
			var i = _g++;
			this.values[i] = lime_math__$Matrix4_Matrix4_$Impl_$.get(this.matrix,i);
		}
		openfl_geom_Matrix.__pool.release(_matrix);
		return this.values;
	}
	,getRenderTarget: function(framebuffer) {
		if(framebuffer) {
			if(this.renderTargetA == null) {
				this.renderTargetA = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.data.get(0).context3D.createRectangleTexture(this.width,this.height,1,true));
				this.gl.bindTexture(this.gl.TEXTURE_2D,this.renderTargetA.getTexture(this.gl));
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE);
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE);
			}
			if(this.renderTargetB == null) {
				this.renderTargetB = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.data.get(0).context3D.createRectangleTexture(this.width,this.height,1,true));
				this.gl.bindTexture(this.gl.TEXTURE_2D,this.renderTargetB.getTexture(this.gl));
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE);
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE);
			}
			if(this.currentRenderTarget == this.renderTargetA) {
				this.currentRenderTarget = this.renderTargetB;
			} else {
				this.currentRenderTarget = this.renderTargetA;
			}
			this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,this.currentRenderTarget.__getFramebuffer(this.gl));
			this.gl.viewport(0,0,this.width,this.height);
			this.gl.clearColor(0,0,0,0);
			this.gl.clear(this.gl.COLOR_BUFFER_BIT);
			this.flipped = false;
		} else {
			this.currentRenderTarget = this.defaultRenderTarget;
			var frameBuffer = this.currentRenderTarget != null ? this.currentRenderTarget.__getFramebuffer(this.gl) : null;
			this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,frameBuffer);
			this.flipped = this.currentRenderTarget == null;
		}
	}
	,render: function() {
		this.gl.viewport(this.offsetX,this.offsetY,this.displayWidth,this.displayHeight);
		this.renderSession.allowSmoothing = this.stage.quality != 2;
		this.renderSession.upscaled = this.displayMatrix.a != 1 || this.displayMatrix.d != 1;
		this.stage.__renderGL(this.renderSession);
		if(this.offsetX > 0 || this.offsetY > 0) {
			this.gl.clearColor(0,0,0,1);
			this.gl.enable(this.gl.SCISSOR_TEST);
			if(this.offsetX > 0) {
				this.gl.scissor(0,0,this.offsetX,this.height);
				this.gl.clear(this.gl.COLOR_BUFFER_BIT);
				this.gl.scissor(this.offsetX + this.displayWidth,0,this.width,this.height);
				this.gl.clear(this.gl.COLOR_BUFFER_BIT);
			}
			if(this.offsetY > 0) {
				this.gl.scissor(0,0,this.width,this.offsetY);
				this.gl.clear(this.gl.COLOR_BUFFER_BIT);
				this.gl.scissor(0,this.offsetY + this.displayHeight,this.width,this.height);
				this.gl.clear(this.gl.COLOR_BUFFER_BIT);
			}
			this.gl.disable(this.gl.SCISSOR_TEST);
		}
	}
	,renderStage3D: function() {
		var _g = 0;
		var _g1 = this.stage.stage3Ds;
		while(_g < _g1.data.get_length()) {
			var stage3D = _g1.data.get(_g);
			++_g;
			stage3D.__renderGL(this.stage,this.renderSession);
		}
	}
	,resize: function(width,height) {
		openfl__$internal_renderer_AbstractRenderer.prototype.resize.call(this,width,height);
		if(width > 0 && height > 0) {
			if(this.renderTargetA != null && (this.renderTargetA.width != width || this.renderTargetA.height != height)) {
				this.renderTargetA = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.data.get(0).context3D.createRectangleTexture(width,height,1,true));
				this.gl.bindTexture(this.gl.TEXTURE_2D,this.renderTargetA.getTexture(this.gl));
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE);
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE);
			}
			if(this.renderTargetB != null && (this.renderTargetB.width != width || this.renderTargetB.height != height)) {
				this.renderTargetB = openfl_display_BitmapData.fromTexture(this.stage.stage3Ds.data.get(0).context3D.createRectangleTexture(width,height,1,true));
				this.gl.bindTexture(this.gl.TEXTURE_2D,this.renderTargetB.getTexture(this.gl));
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE);
				this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE);
			}
		}
		this.displayMatrix = this.defaultRenderTarget == null ? this.stage.__displayMatrix : new openfl_geom_Matrix();
		var w = this.defaultRenderTarget == null ? this.stage.stageWidth : this.defaultRenderTarget.width;
		var h = this.defaultRenderTarget == null ? this.stage.stageHeight : this.defaultRenderTarget.height;
		var _this = this.displayMatrix;
		this.offsetX = Math.round(0 * _this.a + 0 * _this.c + _this.tx);
		var _this1 = this.displayMatrix;
		this.offsetY = Math.round(0 * _this1.b + 0 * _this1.d + _this1.ty);
		var _this2 = this.displayMatrix;
		this.displayWidth = Math.round(w * _this2.a + 0 * _this2.c + _this2.tx - this.offsetX);
		var _this3 = this.displayMatrix;
		this.displayHeight = Math.round(0 * _this3.b + h * _this3.d + _this3.ty - this.offsetY);
		this.projection = lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho(this.offsetX,this.displayWidth + this.offsetX,this.offsetY,this.displayHeight + this.offsetY,-1000,1000);
		this.projectionFlipped = lime_math__$Matrix4_Matrix4_$Impl_$.createOrtho(this.offsetX,this.displayWidth + this.offsetX,this.displayHeight + this.offsetY,this.offsetY,-1000,1000);
	}
	,__class__: openfl__$internal_renderer_opengl_GLRenderer
});
var openfl__$internal_renderer_opengl_GLShaderManager = function(gl) {
	openfl__$internal_renderer_AbstractShaderManager.call(this);
	this.gl = gl;
	this.defaultShader = new openfl_display_Shader();
	this.initShader(this.defaultShader);
};
$hxClasses["openfl._internal.renderer.opengl.GLShaderManager"] = openfl__$internal_renderer_opengl_GLShaderManager;
openfl__$internal_renderer_opengl_GLShaderManager.__name__ = ["openfl","_internal","renderer","opengl","GLShaderManager"];
openfl__$internal_renderer_opengl_GLShaderManager.__super__ = openfl__$internal_renderer_AbstractShaderManager;
openfl__$internal_renderer_opengl_GLShaderManager.prototype = $extend(openfl__$internal_renderer_AbstractShaderManager.prototype,{
	gl: null
	,initShader: function(shader) {
		if(shader != null) {
			if(shader.gl == null) {
				shader.gl = this.gl;
				shader.__init();
			}
			return shader;
		}
		return this.defaultShader;
	}
	,setShader: function(shader) {
		if(this.currentShader == shader) {
			return;
		}
		if(this.currentShader != null) {
			this.currentShader.__disable();
		}
		if(shader == null) {
			this.currentShader = null;
			this.gl.useProgram(null);
			return;
		} else {
			this.currentShader = shader;
			this.initShader(shader);
			this.gl.useProgram(shader.glProgram);
			this.currentShader.__enable();
		}
	}
	,updateShader: function(shader) {
		if(this.currentShader != null) {
			this.currentShader.__update();
		}
	}
	,__class__: openfl__$internal_renderer_opengl_GLShaderManager
});
var openfl__$internal_renderer_opengl_GLShape = function() { };
$hxClasses["openfl._internal.renderer.opengl.GLShape"] = openfl__$internal_renderer_opengl_GLShape;
openfl__$internal_renderer_opengl_GLShape.__name__ = ["openfl","_internal","renderer","opengl","GLShape"];
openfl__$internal_renderer_opengl_GLShape.render = function(shape,renderSession) {
	if(!shape.__renderable || shape.__worldAlpha <= 0) {
		return;
	}
	var graphics = shape.__graphics;
	if(graphics != null) {
		var bounds = graphics.__bounds;
		if(graphics.__bitmap != null && graphics.__visible) {
			var renderer = renderSession.renderer;
			var gl = renderSession.gl;
			renderSession.blendModeManager.setBlendMode(shape.__worldBlendMode);
			renderSession.maskManager.pushObject(shape);
			var shader = renderSession.filterManager.pushObject(shape);
			renderSession.shaderManager.setShader(shader);
			shader.get_data().uImage0.input = graphics.__bitmap;
			shader.get_data().uImage0.smoothing = renderSession.allowSmoothing;
			shader.get_data().uMatrix.value = renderer.getMatrix(graphics.__worldTransform);
			var useColorTransform = !shape.__worldColorTransform.__isDefault();
			if(shader.get_data().uColorTransform.value == null) {
				shader.get_data().uColorTransform.value = [];
			}
			shader.get_data().uColorTransform.value[0] = useColorTransform;
			renderSession.shaderManager.updateShader(shader);
			gl.bindBuffer(gl.ARRAY_BUFFER,graphics.__bitmap.getBuffer(gl,shape.__worldAlpha,shape.__worldColorTransform));
			gl.vertexAttribPointer(shader.get_data().aPosition.index,3,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
			gl.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
			gl.vertexAttribPointer(shader.get_data().aAlpha.index,1,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(20));
			gl.vertexAttribPointer(shader.get_data().aColorMultipliers0.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(24));
			gl.vertexAttribPointer(shader.get_data().aColorMultipliers1.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(40));
			gl.vertexAttribPointer(shader.get_data().aColorMultipliers2.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(56));
			gl.vertexAttribPointer(shader.get_data().aColorMultipliers3.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(72));
			gl.vertexAttribPointer(shader.get_data().aColorOffsets.index,4,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(88));
			gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
			renderSession.filterManager.popObject(shape);
			renderSession.maskManager.popObject(shape);
		}
	}
};
openfl__$internal_renderer_opengl_GLShape.renderMask = function(shape,renderSession) {
	var graphics = shape.__graphics;
	if(graphics != null) {
		var bounds = graphics.__bounds;
		if(graphics.__bitmap != null) {
			var renderer = renderSession.renderer;
			var gl = renderSession.gl;
			var shader = openfl__$internal_renderer_opengl_GLMaskManager.maskShader;
			renderSession.shaderManager.setShader(shader);
			shader.get_data().uImage0.input = graphics.__bitmap;
			shader.get_data().uImage0.smoothing = renderSession.allowSmoothing;
			shader.get_data().uMatrix.value = renderer.getMatrix(graphics.__worldTransform);
			renderSession.shaderManager.updateShader(shader);
			gl.bindBuffer(gl.ARRAY_BUFFER,graphics.__bitmap.getBuffer(gl,shape.__worldAlpha,shape.__worldColorTransform));
			gl.vertexAttribPointer(shader.get_data().aPosition.index,3,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
			gl.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl.FLOAT,false,104,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
			gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
		}
	}
};
var openfl__$internal_stage3D_AGALConverter = function() { };
$hxClasses["openfl._internal.stage3D.AGALConverter"] = openfl__$internal_stage3D_AGALConverter;
openfl__$internal_stage3D_AGALConverter.__name__ = ["openfl","_internal","stage3D","AGALConverter"];
openfl__$internal_stage3D_AGALConverter.prefixFromType = function(regType,programType) {
	switch(regType) {
	case 0:
		return "va";
	case 1:
		if(programType == openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX) {
			return "vc";
		} else {
			return "fc";
		}
		break;
	case 2:
		if(programType == openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX) {
			return "vt";
		} else {
			return "ft";
		}
		break;
	case 3:
		return "output_";
	case 4:
		return "v";
	case 5:
		return "sampler";
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Invalid data!"));
	}
};
openfl__$internal_stage3D_AGALConverter.readUInt64 = function(byteArray) {
	var low = byteArray.readInt();
	var high = byteArray.readInt();
	var this1 = new haxe__$Int64__$_$_$Int64(high,low);
	return this1;
};
openfl__$internal_stage3D_AGALConverter.convertToGLSL = function(agal,samplerState) {
	agal.position = 0;
	agal.__endian = 1;
	var magic = agal.readByte() & 255;
	if(magic == 176) {
		return agal.readUTF();
	}
	if(magic != 160) {
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Magic value must be 0xA0, may not be AGAL"));
	}
	var version = agal.readInt();
	if(version != 1) {
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Version must be 1"));
	}
	var shaderTypeID = agal.readByte() & 255;
	if(shaderTypeID != 161) {
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Shader type ID must be 0xA1"));
	}
	var programType = (agal.readByte() & 255) == 0 ? openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX : openfl__$internal_stage3D__$AGALConverter_ProgramType.FRAGMENT;
	var map = new openfl__$internal_stage3D_RegisterMap();
	var sb_b = "";
	while(agal.position < openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(agal)) {
		var opcode = agal.readInt();
		var dest = agal.readUnsignedInt();
		var source1 = openfl__$internal_stage3D_AGALConverter.readUInt64(agal);
		var source2 = openfl__$internal_stage3D_AGALConverter.readUInt64(agal);
		var dr = openfl__$internal_stage3D__$AGALConverter_DestRegister.parse(dest,programType);
		var sr1 = openfl__$internal_stage3D__$AGALConverter_SourceRegister.parse(source1,programType,dr.mask);
		var sr2 = openfl__$internal_stage3D__$AGALConverter_SourceRegister.parse(source2,programType,dr.mask);
		sb_b += "\t";
		switch(opcode) {
		case 0:
			sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + "; // mov");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 1:
			sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + " + " + sr2.toGLSL() + "; // add");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 2:
			sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + " - " + sr2.toGLSL() + "; // sub");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 3:
			sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + " * " + sr2.toGLSL() + "; // mul");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 4:
			sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + " / " + sr2.toGLSL() + "; // div");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 5:
			var sr = sr1.toGLSL();
			if(sr.indexOf(".") > -1) {
				sb_b += Std.string(dr.toGLSL() + " = 1.0 / " + sr1.toGLSL() + "; // rcp");
			} else {
				sb_b += Std.string(dr.toGLSL() + " = vec4(1) / " + sr1.toGLSL() + "; // rcp");
			}
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 6:
			sb_b += Std.string(dr.toGLSL() + " = min(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "); // min");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 7:
			sb_b += Std.string(dr.toGLSL() + " = max(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "); // max");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 8:
			sb_b += Std.string(dr.toGLSL() + " = fract(" + sr1.toGLSL() + "); // frc");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 9:
			sb_b += Std.string(dr.toGLSL() + " = sqrt(" + sr1.toGLSL() + "); // sqrt");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 10:
			sb_b += Std.string(dr.toGLSL() + " = inversesqrt(" + sr1.toGLSL() + "); // rsq");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 11:
			sb_b += Std.string(dr.toGLSL() + " = pow(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "); // pow");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 12:
			sb_b += Std.string(dr.toGLSL() + " = log2(" + sr1.toGLSL() + "); // log");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 13:
			sb_b += Std.string(dr.toGLSL() + " = exp2(" + sr1.toGLSL() + "); // exp");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 14:
			sb_b += Std.string(dr.toGLSL() + " = normalize(" + sr1.toGLSL() + "); // normalize");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 15:
			sb_b += Std.string(dr.toGLSL() + " = sin(" + sr1.toGLSL() + "); // sin");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 16:
			sb_b += Std.string(dr.toGLSL() + " = cos(" + sr1.toGLSL() + "); // cos");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 17:
			sr1.sourceMask = sr2.sourceMask = 7;
			sb_b += Std.string(dr.toGLSL() + " = cross(vec3(" + sr1.toGLSL() + "), vec3(" + sr2.toGLSL() + ")); // crs");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 18:
			sr1.sourceMask = sr2.sourceMask = 7;
			sb_b += Std.string(dr.toGLSL() + " = vec4(dot(vec3(" + sr1.toGLSL() + "), vec3(" + sr2.toGLSL() + ")))" + dr.getWriteMask() + "; // dp3");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 19:
			sr1.sourceMask = sr2.sourceMask = 15;
			sb_b += Std.string(dr.toGLSL() + " = vec4(dot(vec4(" + sr1.toGLSL() + "), vec4(" + sr2.toGLSL() + ")))" + dr.getWriteMask() + "; // dp4");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 20:
			sb_b += Std.string(dr.toGLSL() + " = abs(" + sr1.toGLSL() + "); // abs");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 21:
			sb_b += Std.string(dr.toGLSL() + " = -" + sr1.toGLSL() + "; // neg");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 22:
			sb_b += Std.string(dr.toGLSL() + " = clamp(" + sr1.toGLSL() + ", 0.0, 1.0); // saturate");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 23:
			var existingUsage = map.getRegisterUsage(sr2);
			if(existingUsage != openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4 && existingUsage != openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY) {
				sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + " * mat3(" + sr2.toGLSL(false) + "); // m33");
				map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.MATRIX_4_4);
			} else {
				sr1.sourceMask = sr2.sourceMask = 7;
				sb_b += Std.string(dr.toGLSL() + " = vec3(" + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,0) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,1) + ")," + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,2) + ")); // m33");
				map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,0);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,1);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,2);
			}
			break;
		case 24:
			var existingUsage1 = map.getRegisterUsage(sr2);
			if(existingUsage1 != openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4 && existingUsage1 != openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY) {
				sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + " * " + sr2.toGLSL(false) + "; // m44");
				map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.MATRIX_4_4);
			} else {
				sr1.sourceMask = sr2.sourceMask = 15;
				sb_b += Std.string(dr.toGLSL() + " = vec4(" + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,0) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,1) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,2) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,3) + ")); // m44");
				map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,0);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,1);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,2);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,3);
			}
			break;
		case 25:
			dr.mask &= 7;
			var existingUsage2 = map.getRegisterUsage(sr2);
			if(existingUsage2 != openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4 && existingUsage2 != openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY) {
				sb_b += Std.string(dr.toGLSL() + " = " + sr1.toGLSL() + " * " + sr2.toGLSL(false) + "; // m34");
				map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.MATRIX_4_4);
			} else {
				sr1.sourceMask = sr2.sourceMask = 15;
				sb_b += Std.string(dr.toGLSL() + " = vec3(" + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,0) + "), " + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,1) + ")," + "dot(" + sr1.toGLSL(true) + "," + sr2.toGLSL(true,2) + ")); // m34");
				map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,0);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,1);
				map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4,2);
			}
			break;
		case 39:
			sr1.sourceMask = 15;
			sb_b += Std.string("if (any(lessThan(" + sr1.toGLSL() + ", vec4(0)))) discard;");
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 40:
			var sampler = openfl__$internal_stage3D__$AGALConverter_SamplerRegister.parse(source2,programType);
			var _g = sampler.d;
			switch(_g) {
			case 0:
				if(sampler.t == 2) {
					sr1.sourceMask = 3;
					map.addSaR(sampler,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D_ALPHA);
					sb_b += Std.string("if (" + sampler.toGLSL() + "_alphaEnabled) {\n");
					sb_b += Std.string("\t\t" + dr.toGLSL() + " = vec4(texture2D(" + sampler.toGLSL() + ", " + sr1.toGLSL() + ").xyz, texture2D(" + sampler.toGLSL() + "_alpha, " + sr1.toGLSL() + ").x); // tex + alpha\n");
					sb_b += "\t} else {\n";
					sb_b += Std.string("\t\t" + dr.toGLSL() + " = texture2D(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex\n");
					sb_b += "\t}";
				} else {
					sr1.sourceMask = 3;
					map.addSaR(sampler,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D);
					sb_b += Std.string(dr.toGLSL() + " = texture2D(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex");
				}
				break;
			case 1:
				if(sampler.t == 2) {
					sr1.sourceMask = 7;
					map.addSaR(sampler,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE_ALPHA);
					sb_b += Std.string("if (" + sampler.toGLSL() + "_alphaEnabled) {\n");
					sb_b += Std.string("\t\t" + dr.toGLSL() + " = vec4(textureCube(" + sampler.toGLSL() + ", " + sr1.toGLSL() + ").xyz, textureCube(" + sampler.toGLSL() + "_alpha, " + sr1.toGLSL() + ").x); // tex + alpha\n");
					sb_b += "\t} else {\n";
					sb_b += Std.string("\t\t" + dr.toGLSL() + " = textureCube(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex");
					sb_b += "\t}";
				} else {
					sr1.sourceMask = 7;
					sb_b += Std.string(dr.toGLSL() + " = textureCube(" + sampler.toGLSL() + ", " + sr1.toGLSL() + "); // tex");
					map.addSaR(sampler,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE);
				}
				break;
			}
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			if(samplerState != null) {
				samplerState[sampler.n] = sampler.toSamplerState();
			}
			break;
		case 41:
			sr1.sourceMask = sr2.sourceMask = 15;
			sb_b += Std.string(dr.toGLSL() + " = vec4(greaterThanEqual(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // ste");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 42:
			sr1.sourceMask = sr2.sourceMask = 15;
			sb_b += Std.string(dr.toGLSL() + " = vec4(lessThan(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // slt");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 44:
			sr1.sourceMask = sr2.sourceMask = 15;
			sb_b += Std.string(dr.toGLSL() + " = vec4(equal(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // seq");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		case 45:
			sr1.sourceMask = sr2.sourceMask = 15;
			sb_b += Std.string(dr.toGLSL() + " = vec4(notEqual(" + sr1.toGLSL() + ", " + sr2.toGLSL() + "))" + dr.getWriteMask() + "; // sne");
			map.addDR(dr,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr1,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			map.addSR(sr2,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Opcode " + opcode));
		}
		sb_b += "\n";
	}
	if(openfl__$internal_stage3D_AGALConverter.limitedProfile == null) {
		var version1 = lime_graphics_opengl_GL.context.getParameter(7938);
		openfl__$internal_stage3D_AGALConverter.limitedProfile = version1.indexOf("OpenGL ES") > -1 || version1.indexOf("WebGL") > -1;
	}
	var glsl_b = "";
	glsl_b += Std.string("// AGAL " + (programType == openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX ? "vertex" : "fragment") + " shader\n");
	if(openfl__$internal_stage3D_AGALConverter.limitedProfile) {
		glsl_b += "#version 100\n";
		glsl_b += "precision highp float;\n";
	} else {
		glsl_b += "#version 120\n";
	}
	glsl_b += Std.string(map.toGLSL(false));
	if(programType == openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX) {
		glsl_b += "uniform vec4 vcPositionScale;\n";
	}
	glsl_b += "void main() {\n";
	glsl_b += Std.string(map.toGLSL(true));
	glsl_b += Std.string(sb_b);
	if(programType == openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX) {
		glsl_b += "\tgl_Position *= vcPositionScale;\n";
	}
	glsl_b += "}\n";
	return glsl_b;
};
var openfl__$internal_stage3D__$AGALConverter_DestRegister = function() {
};
$hxClasses["openfl._internal.stage3D._AGALConverter.DestRegister"] = openfl__$internal_stage3D__$AGALConverter_DestRegister;
openfl__$internal_stage3D__$AGALConverter_DestRegister.__name__ = ["openfl","_internal","stage3D","_AGALConverter","DestRegister"];
openfl__$internal_stage3D__$AGALConverter_DestRegister.parse = function(v,programType) {
	var dr = new openfl__$internal_stage3D__$AGALConverter_DestRegister();
	dr.programType = programType;
	dr.type = v >>> 24 & 15;
	dr.mask = v >>> 16 & 15;
	dr.n = v & 65535;
	return dr;
};
openfl__$internal_stage3D__$AGALConverter_DestRegister.prototype = {
	mask: null
	,n: null
	,programType: null
	,type: null
	,getWriteMask: function() {
		var str = ".";
		if((this.mask & 1) != 0) {
			str += "x";
		}
		if((this.mask & 2) != 0) {
			str += "y";
		}
		if((this.mask & 4) != 0) {
			str += "z";
		}
		if((this.mask & 8) != 0) {
			str += "w";
		}
		return str;
	}
	,toGLSL: function(useMask) {
		if(useMask == null) {
			useMask = true;
		}
		var str;
		if(this.type == 3) {
			if(this.programType == openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX) {
				str = "gl_Position";
			} else {
				str = "gl_FragColor";
			}
		} else {
			str = openfl__$internal_stage3D_AGALConverter.prefixFromType(this.type,this.programType) + this.n;
		}
		if(useMask && this.mask != 15) {
			str += this.getWriteMask();
		}
		return str;
	}
	,__class__: openfl__$internal_stage3D__$AGALConverter_DestRegister
};
var openfl__$internal_stage3D__$AGALConverter_ProgramType = $hxClasses["openfl._internal.stage3D._AGALConverter.ProgramType"] = { __ename__ : ["openfl","_internal","stage3D","_AGALConverter","ProgramType"], __constructs__ : ["VERTEX","FRAGMENT"] };
openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX = ["VERTEX",0];
openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX.__enum__ = openfl__$internal_stage3D__$AGALConverter_ProgramType;
openfl__$internal_stage3D__$AGALConverter_ProgramType.FRAGMENT = ["FRAGMENT",1];
openfl__$internal_stage3D__$AGALConverter_ProgramType.FRAGMENT.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_ProgramType.FRAGMENT.__enum__ = openfl__$internal_stage3D__$AGALConverter_ProgramType;
var openfl__$internal_stage3D_RegisterMap = function() {
	this.mEntries = [];
};
$hxClasses["openfl._internal.stage3D.RegisterMap"] = openfl__$internal_stage3D_RegisterMap;
openfl__$internal_stage3D_RegisterMap.__name__ = ["openfl","_internal","stage3D","RegisterMap"];
openfl__$internal_stage3D_RegisterMap.prototype = {
	mEntries: null
	,add: function(type,name,number,usage) {
		var _g = 0;
		var _g1 = this.mEntries;
		while(_g < _g1.length) {
			var entry = _g1[_g];
			++_g;
			if(entry.type == type && entry.name == name && entry.number == number) {
				if(entry.usage != usage) {
					throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Cannot use register in multiple ways yet (mat4/vec4)"));
				}
				return;
			}
		}
		var entry1 = new openfl__$internal_stage3D__$AGALConverter_RegisterMapEntry();
		entry1.type = type;
		entry1.name = name;
		entry1.number = number;
		entry1.usage = usage;
		this.mEntries.push(entry1);
	}
	,addDR: function(dr,usage) {
		this.add(dr.type,dr.toGLSL(false),dr.n,usage);
	}
	,addSaR: function(sr,usage) {
		this.add(sr.type,sr.toGLSL(),sr.n,usage);
	}
	,addSR: function(sr,usage,offset) {
		if(offset == null) {
			offset = 0;
		}
		if(sr.d != 0) {
			this.add(sr.itype,openfl__$internal_stage3D_AGALConverter.prefixFromType(sr.itype,sr.programType) + sr.n,sr.n,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4);
			this.add(sr.type,openfl__$internal_stage3D_AGALConverter.prefixFromType(sr.type,sr.programType) + sr.o,sr.o,openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY);
			return;
		}
		this.add(sr.type,sr.toGLSL(false,offset),sr.n + offset,usage);
	}
	,getRegisterUsage: function(sr) {
		if(sr.d != 0) {
			return openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY;
		}
		return this.getUsage(sr.type,sr.toGLSL(false),sr.n);
	}
	,getUsage: function(type,name,number) {
		var _g = 0;
		var _g1 = this.mEntries;
		while(_g < _g1.length) {
			var entry = _g1[_g];
			++_g;
			if(entry.type == type && entry.name == name && entry.number == number) {
				return entry.usage;
			}
		}
		return openfl__$internal_stage3D__$AGALConverter_RegisterUsage.UNUSED;
	}
	,toGLSL: function(tempRegistersOnly) {
		this.mEntries.sort(function(a,b) {
			return a.number - b.number;
		});
		var arrayCount = new haxe_ds_ObjectMap();
		var entry;
		var _g1 = 0;
		var _g = this.mEntries.length;
		while(_g1 < _g) {
			var i = _g1++;
			entry = this.mEntries[i];
			if(entry.usage == openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY) {
				if(i < this.mEntries.length - 1) {
					var v = this.mEntries[i + 1].number - entry.number;
					arrayCount.set(entry,v);
				} else {
					arrayCount.set(entry,128);
				}
			}
		}
		this.mEntries.sort(function(a1,b1) {
			return js_Boot.__cast(a1.type , Int) - js_Boot.__cast(b1.type , Int);
		});
		var sb_b = "";
		var _g11 = 0;
		var _g2 = this.mEntries.length;
		while(_g11 < _g2) {
			var i1 = _g11++;
			entry = this.mEntries[i1];
			if(tempRegistersOnly && entry.type != 2 || !tempRegistersOnly && entry.type == 2) {
				continue;
			}
			if(entry.type == 3) {
				continue;
			}
			var _g21 = entry.type;
			switch(_g21) {
			case 0:
				sb_b += "attribute ";
				break;
			case 1:
				sb_b += "uniform ";
				break;
			case 2:
				sb_b += "\t";
				break;
			case 3:
				break;
			case 4:
				sb_b += "varying ";
				break;
			case 5:
				sb_b += "uniform ";
				break;
			default:
				throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
			}
			var _g3 = entry.usage;
			switch(_g3[1]) {
			case 0:
				haxe_Log.trace("Missing switch patten: RegisterUsage.UNUSED",{ fileName : "AGALConverter.hx", lineNumber : 839, className : "openfl._internal.stage3D.RegisterMap", methodName : "toGLSL"});
				break;
			case 1:
				sb_b += "vec4 ";
				break;
			case 2:
				sb_b += "mat4 ";
				break;
			case 3:
				sb_b += "sampler2D ";
				break;
			case 4:
				break;
			case 5:
				sb_b += "samplerCube ";
				break;
			case 6:
				break;
			case 7:
				sb_b += "vec4 ";
				break;
			}
			if(entry.usage == openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D_ALPHA) {
				sb_b += "sampler2D ";
				sb_b += Std.string(entry.name);
				sb_b += ";\n";
				sb_b += "uniform ";
				sb_b += "sampler2D ";
				sb_b += Std.string(entry.name + "_alpha");
				sb_b += ";\n";
				sb_b += "uniform ";
				sb_b += "bool ";
				sb_b += Std.string(entry.name + "_alphaEnabled");
				sb_b += ";\n";
			} else if(entry.usage == openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE_ALPHA) {
				sb_b += "samplerCube ";
				sb_b += Std.string(entry.name);
				sb_b += ";\n";
				sb_b += "uniform ";
				sb_b += "samplerCube ";
				sb_b += Std.string(entry.name + "_alpha");
				sb_b += ";\n";
				sb_b += "uniform ";
				sb_b += "bool ";
				sb_b += Std.string(entry.name + "_alphaEnabled");
				sb_b += ";\n";
			} else if(entry.usage == openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY) {
				sb_b += Std.string(entry.name + "[" + arrayCount.h[entry.__id__] + "]");
				sb_b += ";\n";
			} else {
				sb_b += Std.string(entry.name);
				sb_b += ";\n";
			}
		}
		return sb_b;
	}
	,__class__: openfl__$internal_stage3D_RegisterMap
};
var openfl__$internal_stage3D__$AGALConverter_RegisterMapEntry = function() {
};
$hxClasses["openfl._internal.stage3D._AGALConverter.RegisterMapEntry"] = openfl__$internal_stage3D__$AGALConverter_RegisterMapEntry;
openfl__$internal_stage3D__$AGALConverter_RegisterMapEntry.__name__ = ["openfl","_internal","stage3D","_AGALConverter","RegisterMapEntry"];
openfl__$internal_stage3D__$AGALConverter_RegisterMapEntry.prototype = {
	name: null
	,number: null
	,type: null
	,usage: null
	,__class__: openfl__$internal_stage3D__$AGALConverter_RegisterMapEntry
};
var openfl__$internal_stage3D__$AGALConverter_RegisterUsage = $hxClasses["openfl._internal.stage3D._AGALConverter.RegisterUsage"] = { __ename__ : ["openfl","_internal","stage3D","_AGALConverter","RegisterUsage"], __constructs__ : ["UNUSED","VECTOR_4","MATRIX_4_4","SAMPLER_2D","SAMPLER_2D_ALPHA","SAMPLER_CUBE","SAMPLER_CUBE_ALPHA","VECTOR_4_ARRAY"] };
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.UNUSED = ["UNUSED",0];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.UNUSED.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.UNUSED.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4 = ["VECTOR_4",1];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.MATRIX_4_4 = ["MATRIX_4_4",2];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.MATRIX_4_4.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.MATRIX_4_4.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D = ["SAMPLER_2D",3];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D_ALPHA = ["SAMPLER_2D_ALPHA",4];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D_ALPHA.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_2D_ALPHA.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE = ["SAMPLER_CUBE",5];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE_ALPHA = ["SAMPLER_CUBE_ALPHA",6];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE_ALPHA.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.SAMPLER_CUBE_ALPHA.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY = ["VECTOR_4_ARRAY",7];
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY.toString = $estr;
openfl__$internal_stage3D__$AGALConverter_RegisterUsage.VECTOR_4_ARRAY.__enum__ = openfl__$internal_stage3D__$AGALConverter_RegisterUsage;
var openfl__$internal_stage3D__$AGALConverter_SamplerRegister = function() {
};
$hxClasses["openfl._internal.stage3D._AGALConverter.SamplerRegister"] = openfl__$internal_stage3D__$AGALConverter_SamplerRegister;
openfl__$internal_stage3D__$AGALConverter_SamplerRegister.__name__ = ["openfl","_internal","stage3D","_AGALConverter","SamplerRegister"];
openfl__$internal_stage3D__$AGALConverter_SamplerRegister.parse = function(v,programType) {
	var sr = new openfl__$internal_stage3D__$AGALConverter_SamplerRegister();
	sr.programType = programType;
	var b = 60;
	b &= 63;
	var a;
	if(b == 0) {
		var this1 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a = this1;
	} else if(b < 32) {
		var this2 = new haxe__$Int64__$_$_$Int64(v.high >> b,v.high << 32 - b | v.low >>> b);
		a = this2;
	} else {
		var this3 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b - 32);
		a = this3;
	}
	var this4 = new haxe__$Int64__$_$_$Int64(0,15);
	var b1 = this4;
	var this5 = new haxe__$Int64__$_$_$Int64(a.high & b1.high,a.low & b1.low);
	sr.f = this5.low;
	var b2 = 56;
	b2 &= 63;
	var a1;
	if(b2 == 0) {
		var this6 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a1 = this6;
	} else if(b2 < 32) {
		var this7 = new haxe__$Int64__$_$_$Int64(v.high >> b2,v.high << 32 - b2 | v.low >>> b2);
		a1 = this7;
	} else {
		var this8 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b2 - 32);
		a1 = this8;
	}
	var this9 = new haxe__$Int64__$_$_$Int64(0,15);
	var b3 = this9;
	var this10 = new haxe__$Int64__$_$_$Int64(a1.high & b3.high,a1.low & b3.low);
	sr.m = this10.low;
	var b4 = 52;
	b4 &= 63;
	var a2;
	if(b4 == 0) {
		var this11 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a2 = this11;
	} else if(b4 < 32) {
		var this12 = new haxe__$Int64__$_$_$Int64(v.high >> b4,v.high << 32 - b4 | v.low >>> b4);
		a2 = this12;
	} else {
		var this13 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b4 - 32);
		a2 = this13;
	}
	var this14 = new haxe__$Int64__$_$_$Int64(0,15);
	var b5 = this14;
	var this15 = new haxe__$Int64__$_$_$Int64(a2.high & b5.high,a2.low & b5.low);
	sr.w = this15.low;
	var b6 = 48;
	b6 &= 63;
	var a3;
	if(b6 == 0) {
		var this16 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a3 = this16;
	} else if(b6 < 32) {
		var this17 = new haxe__$Int64__$_$_$Int64(v.high >> b6,v.high << 32 - b6 | v.low >>> b6);
		a3 = this17;
	} else {
		var this18 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b6 - 32);
		a3 = this18;
	}
	var this19 = new haxe__$Int64__$_$_$Int64(0,15);
	var b7 = this19;
	var this20 = new haxe__$Int64__$_$_$Int64(a3.high & b7.high,a3.low & b7.low);
	sr.s = this20.low;
	var b8 = 44;
	b8 &= 63;
	var a4;
	if(b8 == 0) {
		var this21 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a4 = this21;
	} else if(b8 < 32) {
		var this22 = new haxe__$Int64__$_$_$Int64(v.high >> b8,v.high << 32 - b8 | v.low >>> b8);
		a4 = this22;
	} else {
		var this23 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b8 - 32);
		a4 = this23;
	}
	var this24 = new haxe__$Int64__$_$_$Int64(0,15);
	var b9 = this24;
	var this25 = new haxe__$Int64__$_$_$Int64(a4.high & b9.high,a4.low & b9.low);
	sr.d = this25.low;
	var b10 = 40;
	b10 &= 63;
	var a5;
	if(b10 == 0) {
		var this26 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a5 = this26;
	} else if(b10 < 32) {
		var this27 = new haxe__$Int64__$_$_$Int64(v.high >> b10,v.high << 32 - b10 | v.low >>> b10);
		a5 = this27;
	} else {
		var this28 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b10 - 32);
		a5 = this28;
	}
	var this29 = new haxe__$Int64__$_$_$Int64(0,15);
	var b11 = this29;
	var this30 = new haxe__$Int64__$_$_$Int64(a5.high & b11.high,a5.low & b11.low);
	sr.t = this30.low;
	var b12 = 32;
	b12 &= 63;
	var a6;
	if(b12 == 0) {
		var this31 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a6 = this31;
	} else if(b12 < 32) {
		var this32 = new haxe__$Int64__$_$_$Int64(v.high >> b12,v.high << 32 - b12 | v.low >>> b12);
		a6 = this32;
	} else {
		var this33 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b12 - 32);
		a6 = this33;
	}
	var this34 = new haxe__$Int64__$_$_$Int64(0,15);
	var b13 = this34;
	var this35 = new haxe__$Int64__$_$_$Int64(a6.high & b13.high,a6.low & b13.low);
	sr.type = this35.low;
	var b14 = 16;
	b14 &= 63;
	var a7;
	if(b14 == 0) {
		var this36 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a7 = this36;
	} else if(b14 < 32) {
		var this37 = new haxe__$Int64__$_$_$Int64(v.high >> b14,v.high << 32 - b14 | v.low >>> b14);
		a7 = this37;
	} else {
		var this38 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b14 - 32);
		a7 = this38;
	}
	var this39 = new haxe__$Int64__$_$_$Int64(0,255);
	var b15 = this39;
	var this40 = new haxe__$Int64__$_$_$Int64(a7.high & b15.high,a7.low & b15.low);
	sr.b = this40.low;
	var this41 = new haxe__$Int64__$_$_$Int64(0,65535);
	var b16 = this41;
	var this42 = new haxe__$Int64__$_$_$Int64(v.high & b16.high,v.low & b16.low);
	sr.n = this42.low;
	return sr;
};
openfl__$internal_stage3D__$AGALConverter_SamplerRegister.prototype = {
	b: null
	,d: null
	,f: null
	,m: null
	,n: null
	,programType: null
	,s: null
	,t: null
	,type: null
	,w: null
	,toGLSL: function() {
		var str = openfl__$internal_stage3D_AGALConverter.prefixFromType(this.type,this.programType) + this.n;
		return str;
	}
	,toSamplerState: function() {
		var magFilter = 0;
		var minFilter = 0;
		var wrapModeS = 0;
		var wrapModeT = 0;
		var _g = this.f;
		switch(_g) {
		case 0:
			magFilter = 9728;
			break;
		case 1:
			magFilter = 9729;
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
		}
		var _g1 = this.m;
		switch(_g1) {
		case 0:
			if(this.f != 0) {
				minFilter = 9729;
			} else {
				minFilter = 9728;
			}
			break;
		case 1:
			if(this.f != 0) {
				minFilter = 9985;
			} else {
				minFilter = 9984;
			}
			break;
		case 2:
			if(this.f != 0) {
				minFilter = 9987;
			} else {
				minFilter = 9986;
			}
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
		}
		var _g2 = this.w;
		switch(_g2) {
		case 0:
			wrapModeS = 33071;
			wrapModeT = 33071;
			break;
		case 1:
			wrapModeS = 10497;
			wrapModeT = 10497;
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
		}
		var ignoreSampler = (this.s & 4) == 4;
		var centroid = (this.s & 1) == 1;
		var textureAlpha = this.t == 2;
		var lodBias = (this.b << 24 >> 24) / 8.0;
		var maxAniso = 0.0;
		return new openfl__$internal_stage3D_SamplerState(minFilter,magFilter,wrapModeS,wrapModeT,lodBias,maxAniso,ignoreSampler,centroid,false,textureAlpha);
	}
	,__class__: openfl__$internal_stage3D__$AGALConverter_SamplerRegister
};
var openfl__$internal_stage3D__$AGALConverter_SourceRegister = function() {
};
$hxClasses["openfl._internal.stage3D._AGALConverter.SourceRegister"] = openfl__$internal_stage3D__$AGALConverter_SourceRegister;
openfl__$internal_stage3D__$AGALConverter_SourceRegister.__name__ = ["openfl","_internal","stage3D","_AGALConverter","SourceRegister"];
openfl__$internal_stage3D__$AGALConverter_SourceRegister.parse = function(v,programType,sourceMask) {
	var sr = new openfl__$internal_stage3D__$AGALConverter_SourceRegister();
	sr.programType = programType;
	var b = 63;
	b &= 63;
	var a;
	if(b == 0) {
		var this1 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a = this1;
	} else if(b < 32) {
		var this2 = new haxe__$Int64__$_$_$Int64(v.high >> b,v.high << 32 - b | v.low >>> b);
		a = this2;
	} else {
		var this3 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b - 32);
		a = this3;
	}
	var this4 = new haxe__$Int64__$_$_$Int64(0,1);
	var b1 = this4;
	var this5 = new haxe__$Int64__$_$_$Int64(a.high & b1.high,a.low & b1.low);
	sr.d = this5.low;
	var b2 = 48;
	b2 &= 63;
	var a1;
	if(b2 == 0) {
		var this6 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a1 = this6;
	} else if(b2 < 32) {
		var this7 = new haxe__$Int64__$_$_$Int64(v.high >> b2,v.high << 32 - b2 | v.low >>> b2);
		a1 = this7;
	} else {
		var this8 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b2 - 32);
		a1 = this8;
	}
	var this9 = new haxe__$Int64__$_$_$Int64(0,3);
	var b3 = this9;
	var this10 = new haxe__$Int64__$_$_$Int64(a1.high & b3.high,a1.low & b3.low);
	sr.q = this10.low;
	var b4 = 40;
	b4 &= 63;
	var a2;
	if(b4 == 0) {
		var this11 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a2 = this11;
	} else if(b4 < 32) {
		var this12 = new haxe__$Int64__$_$_$Int64(v.high >> b4,v.high << 32 - b4 | v.low >>> b4);
		a2 = this12;
	} else {
		var this13 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b4 - 32);
		a2 = this13;
	}
	var this14 = new haxe__$Int64__$_$_$Int64(0,15);
	var b5 = this14;
	var this15 = new haxe__$Int64__$_$_$Int64(a2.high & b5.high,a2.low & b5.low);
	sr.itype = this15.low;
	var b6 = 32;
	b6 &= 63;
	var a3;
	if(b6 == 0) {
		var this16 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a3 = this16;
	} else if(b6 < 32) {
		var this17 = new haxe__$Int64__$_$_$Int64(v.high >> b6,v.high << 32 - b6 | v.low >>> b6);
		a3 = this17;
	} else {
		var this18 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b6 - 32);
		a3 = this18;
	}
	var this19 = new haxe__$Int64__$_$_$Int64(0,15);
	var b7 = this19;
	var this20 = new haxe__$Int64__$_$_$Int64(a3.high & b7.high,a3.low & b7.low);
	sr.type = this20.low;
	var b8 = 24;
	b8 &= 63;
	var a4;
	if(b8 == 0) {
		var this21 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a4 = this21;
	} else if(b8 < 32) {
		var this22 = new haxe__$Int64__$_$_$Int64(v.high >> b8,v.high << 32 - b8 | v.low >>> b8);
		a4 = this22;
	} else {
		var this23 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b8 - 32);
		a4 = this23;
	}
	var this24 = new haxe__$Int64__$_$_$Int64(0,255);
	var b9 = this24;
	var this25 = new haxe__$Int64__$_$_$Int64(a4.high & b9.high,a4.low & b9.low);
	sr.s = this25.low;
	var b10 = 16;
	b10 &= 63;
	var a5;
	if(b10 == 0) {
		var this26 = new haxe__$Int64__$_$_$Int64(v.high,v.low);
		a5 = this26;
	} else if(b10 < 32) {
		var this27 = new haxe__$Int64__$_$_$Int64(v.high >> b10,v.high << 32 - b10 | v.low >>> b10);
		a5 = this27;
	} else {
		var this28 = new haxe__$Int64__$_$_$Int64(v.high >> 31,v.high >> b10 - 32);
		a5 = this28;
	}
	var this29 = new haxe__$Int64__$_$_$Int64(0,255);
	var b11 = this29;
	var this30 = new haxe__$Int64__$_$_$Int64(a5.high & b11.high,a5.low & b11.low);
	sr.o = this30.low;
	var this31 = new haxe__$Int64__$_$_$Int64(0,65535);
	var b12 = this31;
	var this32 = new haxe__$Int64__$_$_$Int64(v.high & b12.high,v.low & b12.low);
	sr.n = this32.low;
	sr.sourceMask = sourceMask;
	return sr;
};
openfl__$internal_stage3D__$AGALConverter_SourceRegister.prototype = {
	d: null
	,itype: null
	,n: null
	,o: null
	,programType: null
	,q: null
	,s: null
	,sourceMask: null
	,type: null
	,toGLSL: function(emitSwizzle,offset) {
		if(offset == null) {
			offset = 0;
		}
		if(emitSwizzle == null) {
			emitSwizzle = true;
		}
		if(this.type == 3) {
			if(this.programType == openfl__$internal_stage3D__$AGALConverter_ProgramType.VERTEX) {
				return "gl_Position";
			} else {
				return "gl_FragColor";
			}
		}
		var fullxyzw = this.s == 228 && this.sourceMask == 15;
		var swizzle = "";
		if(this.type != 5 && !fullxyzw) {
			var _g = 0;
			while(_g < 4) {
				var i = _g++;
				if((this.sourceMask & 1 << i) != 0) {
					var _g1 = this.s >> i * 2 & 3;
					switch(_g1) {
					case 0:
						swizzle += "x";
						break;
					case 1:
						swizzle += "y";
						break;
					case 2:
						swizzle += "z";
						break;
					case 3:
						swizzle += "w";
						break;
					}
				}
			}
		}
		var str = openfl__$internal_stage3D_AGALConverter.prefixFromType(this.type,this.programType);
		if(this.d == 0) {
			str += this.n + offset;
		} else {
			str += this.o;
			var indexComponent = String.fromCharCode(HxOverrides.cca("x",0) + this.q);
			var indexRegister = openfl__$internal_stage3D_AGALConverter.prefixFromType(this.itype,this.programType) + this.n + "." + indexComponent;
			str += "[ int(" + indexRegister + ") +" + offset + "]";
		}
		if(emitSwizzle && swizzle != "") {
			str += "." + swizzle;
		}
		return str;
	}
	,__class__: openfl__$internal_stage3D__$AGALConverter_SourceRegister
};
var openfl__$internal_stage3D_Context3DStateCache = function() {
	this._registers = openfl__$Vector_Vector_$Impl_$.toFloatVector(null,4096);
	this.clearSettings();
};
$hxClasses["openfl._internal.stage3D.Context3DStateCache"] = openfl__$internal_stage3D_Context3DStateCache;
openfl__$internal_stage3D_Context3DStateCache.__name__ = ["openfl","_internal","stage3D","Context3DStateCache"];
openfl__$internal_stage3D_Context3DStateCache.prototype = {
	_activeTexture: null
	,_activeVertexArray: null
	,_cullingMode: null
	,_depthTestCompareMode: null
	,_depthTestEnabled: null
	,_depthTestMask: null
	,_destBlendFactor: null
	,_program: null
	,_registers: null
	,_srcBlendFactor: null
	,_viewportHeight: null
	,_viewportOriginX: null
	,_viewportOriginY: null
	,_viewportWidth: null
	,clearRegisters: function() {
		var numFloats = 4096;
		var _g1 = 0;
		var _g = numFloats;
		while(_g1 < _g) {
			var c = _g1++;
			this._registers.data.set(c,-999999999.0);
		}
	}
	,clearSettings: function() {
		this._srcBlendFactor = null;
		this._destBlendFactor = null;
		this._depthTestEnabled = false;
		this._depthTestMask = false;
		this._depthTestCompareMode = null;
		this._program = null;
		this._cullingMode = null;
		this._activeTexture = -1;
		this._activeVertexArray = -1;
		this._viewportOriginX = -1;
		this._viewportOriginY = -1;
		this._viewportWidth = -1;
		this._viewportHeight = -1;
		this.clearRegisters();
	}
	,updateActiveTextureSample: function(texture) {
		this._activeTexture = texture;
		return true;
	}
	,updateActiveVertexArray: function(vertexArray) {
		this._activeVertexArray = vertexArray;
		return true;
	}
	,updateBlendDestFactor: function(factor) {
		this._destBlendFactor = factor;
		return true;
	}
	,updateBlendSrcFactor: function(factor) {
		this._srcBlendFactor = factor;
		return true;
	}
	,updateCullingMode: function(cullMode) {
		this._cullingMode = cullMode;
		return true;
	}
	,updateDepthCompareMode: function(mode) {
		this._depthTestCompareMode = mode;
		return true;
	}
	,updateDepthTestEnabled: function(test) {
		this._depthTestEnabled = test;
		return true;
	}
	,updateDepthTestMask: function(mask) {
		this._depthTestMask = mask;
		return true;
	}
	,updateProgram3D: function(program3d) {
		this._program = program3d;
		return true;
	}
	,updateRegisters: function(mTemp,startRegister,numRegisters) {
		return true;
	}
	,updateViewport: function(originX,originY,width,height) {
		this._viewportOriginX = originX;
		this._viewportOriginY = originY;
		this._viewportWidth = width;
		this._viewportHeight = height;
		return true;
	}
	,__class__: openfl__$internal_stage3D_Context3DStateCache
};
var openfl__$internal_stage3D_GLCompressedTextureFormats = function(gl) {
	this.__formatMapAlpha = new haxe_ds_IntMap();
	this.__formatMap = new haxe_ds_IntMap();
	this.checkDXT(gl);
	this.checkETC1(gl);
	this.checkPVRTC(gl);
};
$hxClasses["openfl._internal.stage3D.GLCompressedTextureFormats"] = openfl__$internal_stage3D_GLCompressedTextureFormats;
openfl__$internal_stage3D_GLCompressedTextureFormats.__name__ = ["openfl","_internal","stage3D","GLCompressedTextureFormats"];
openfl__$internal_stage3D_GLCompressedTextureFormats.prototype = {
	__formatMap: null
	,__formatMapAlpha: null
	,checkDXT: function(gl) {
		var compressedExtension = gl.getExtension("EXT_texture_compression_s3tc");
		if(compressedExtension != null) {
			var v = compressedExtension.COMPRESSED_RGBA_S3TC_DXT1_EXT;
			this.__formatMap.h[0] = v;
			var v1 = compressedExtension.COMPRESSED_RGBA_S3TC_DXT5_EXT;
			this.__formatMapAlpha.h[0] = v1;
		}
	}
	,checkETC1: function(gl) {
		var compressedExtension = gl.getExtension("OES_compressed_ETC1_RGB8_texture");
		if(compressedExtension != null) {
			var v = compressedExtension.ETC1_RGB8_OES;
			this.__formatMap.h[2] = v;
			var v1 = compressedExtension.ETC1_RGB8_OES;
			this.__formatMapAlpha.h[2] = v1;
		}
	}
	,checkPVRTC: function(gl) {
		var compressedExtension = gl.getExtension("IMG_texture_compression_pvrtc");
		if(compressedExtension != null) {
			var v = compressedExtension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
			this.__formatMap.h[1] = v;
			var v1 = compressedExtension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
			this.__formatMapAlpha.h[1] = v1;
		}
	}
	,toTextureFormat: function(alpha,gpuFormat) {
		if(alpha) {
			return this.__formatMapAlpha.h[gpuFormat];
		} else {
			return this.__formatMap.h[gpuFormat];
		}
	}
	,__class__: openfl__$internal_stage3D_GLCompressedTextureFormats
};
var openfl__$internal_stage3D_GLUtils = function() { };
$hxClasses["openfl._internal.stage3D.GLUtils"] = openfl__$internal_stage3D_GLUtils;
openfl__$internal_stage3D_GLUtils.__name__ = ["openfl","_internal","stage3D","GLUtils"];
openfl__$internal_stage3D_GLUtils.CheckGLError = function() {
	if(!openfl__$internal_stage3D_GLUtils.debug) {
		return;
	}
	var error = lime_graphics_opengl_GL.context.getError();
	if(error != 0) {
		var errorText;
		switch(error) {
		case 0:
			errorText = "GL_NO_ERROR";
			break;
		case 1280:
			errorText = "GL_INVALID_ENUM";
			break;
		case 1281:
			errorText = "GL_INVALID_VALUE";
			break;
		case 1282:
			errorText = "GL_INVALID_OPERATION";
			break;
		case 1285:
			errorText = "GL_OUT_OF_MEMORY";
			break;
		case 1286:
			errorText = "GL_INVALID_FRAMEBUFFER_OPERATION";
			break;
		default:
			if(error == null) {
				errorText = "null";
			} else {
				errorText = "" + error;
			}
		}
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Error calling openGL api. Error: " + errorText + "\n"));
	}
};
var openfl__$internal_stage3D_SamplerState = function(minFilter,magFilter,wrapModeS,wrapModeT,lodBias,maxAniso,ignoreSampler,centroid,mipmapGenerated,textureAlpha) {
	if(textureAlpha == null) {
		textureAlpha = false;
	}
	if(mipmapGenerated == null) {
		mipmapGenerated = false;
	}
	if(centroid == null) {
		centroid = false;
	}
	if(ignoreSampler == null) {
		ignoreSampler = false;
	}
	if(maxAniso == null) {
		maxAniso = 0.0;
	}
	if(lodBias == null) {
		lodBias = 0.0;
	}
	this.set_minFilter(minFilter);
	this.set_magFilter(magFilter);
	this.set_wrapModeS(wrapModeS);
	this.set_wrapModeT(wrapModeT);
	this.set_lodBias(lodBias);
	this.set_maxAniso(maxAniso);
	this.ignoreSampler = ignoreSampler;
	this.centroid = centroid;
	this.mipmapGenerated = mipmapGenerated;
	this.textureAlpha = textureAlpha;
	this.__samplerDirty = true;
};
$hxClasses["openfl._internal.stage3D.SamplerState"] = openfl__$internal_stage3D_SamplerState;
openfl__$internal_stage3D_SamplerState.__name__ = ["openfl","_internal","stage3D","SamplerState"];
openfl__$internal_stage3D_SamplerState.prototype = {
	lodBias: null
	,magFilter: null
	,maxAniso: null
	,minFilter: null
	,wrapModeS: null
	,wrapModeT: null
	,centroid: null
	,ignoreSampler: null
	,mipmapGenerated: null
	,textureAlpha: null
	,__samplerDirty: null
	,copyFrom: function(other) {
		if(other == null || other.ignoreSampler) {
			return;
		}
		this.set_minFilter(other.minFilter);
		this.set_magFilter(other.magFilter);
		this.set_wrapModeS(other.wrapModeS);
		this.set_wrapModeT(other.wrapModeT);
		this.set_lodBias(other.lodBias);
		this.set_maxAniso(other.maxAniso);
		this.centroid = other.centroid;
		this.mipmapGenerated = other.mipmapGenerated;
		this.textureAlpha = other.textureAlpha;
	}
	,equals: function(other) {
		if(this == other) {
			return !this.__samplerDirty;
		}
		if(other == null) {
			return false;
		}
		if(this.minFilter == other.minFilter && this.magFilter == other.magFilter && this.wrapModeS == other.wrapModeS && this.wrapModeT == other.wrapModeT && this.lodBias == other.lodBias && this.maxAniso == other.maxAniso && this.mipmapGenerated == other.mipmapGenerated) {
			return this.textureAlpha == other.textureAlpha;
		} else {
			return false;
		}
	}
	,set_lodBias: function(value) {
		if(this.lodBias != value) {
			this.__samplerDirty = true;
		}
		return this.lodBias = value;
	}
	,set_magFilter: function(value) {
		if(this.magFilter != value) {
			this.__samplerDirty = true;
		}
		return this.magFilter = value;
	}
	,set_maxAniso: function(value) {
		if(this.maxAniso != value) {
			this.__samplerDirty = true;
		}
		return this.maxAniso = value;
	}
	,set_minFilter: function(value) {
		if(this.minFilter != value) {
			this.__samplerDirty = true;
		}
		return this.minFilter = value;
	}
	,set_wrapModeS: function(value) {
		if(this.wrapModeS != value) {
			this.__samplerDirty = true;
		}
		return this.wrapModeS = value;
	}
	,set_wrapModeT: function(value) {
		if(this.wrapModeT != value) {
			this.__samplerDirty = true;
		}
		return this.wrapModeT = value;
	}
	,__class__: openfl__$internal_stage3D_SamplerState
	,__properties__: {set_wrapModeT:"set_wrapModeT",set_wrapModeS:"set_wrapModeS",set_minFilter:"set_minFilter",set_maxAniso:"set_maxAniso",set_magFilter:"set_magFilter",set_lodBias:"set_lodBias"}
};
var openfl__$internal_stage3D_atf_ATFReader = function(data,byteArrayOffset) {
	this.version = 0;
	data.position = byteArrayOffset;
	var signature = data.readUTFBytes(3);
	data.position = byteArrayOffset;
	if(signature != "ATF") {
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("ATF signature not found"));
	}
	var length = 0;
	if(data.b[byteArrayOffset + 6] == 255) {
		this.version = data.b[byteArrayOffset + 7];
		data.position = byteArrayOffset + 8;
		length = this.__readUInt32(data);
	} else {
		this.version = 0;
		data.position = byteArrayOffset + 3;
		length = this.__readUInt24(data);
	}
	if(js_Boot.__cast(byteArrayOffset + length , Int) > openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(data)) {
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("ATF length exceeds byte array length"));
	}
	this.data = data;
};
$hxClasses["openfl._internal.stage3D.atf.ATFReader"] = openfl__$internal_stage3D_atf_ATFReader;
openfl__$internal_stage3D_atf_ATFReader.__name__ = ["openfl","_internal","stage3D","atf","ATFReader"];
openfl__$internal_stage3D_atf_ATFReader.prototype = {
	atfFormat: null
	,cubeMap: null
	,data: null
	,height: null
	,mipCount: null
	,version: null
	,width: null
	,readHeader: function(__width,__height,cubeMap) {
		var tdata = this.data.readUnsignedByte();
		var type = tdata >> 7;
		if(!cubeMap && type != 0) {
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("ATF Cube map not expected"));
		}
		if(cubeMap && type != 1) {
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("ATF Cube map expected"));
		}
		this.cubeMap = cubeMap;
		this.atfFormat = tdata & 127;
		if(this.atfFormat != 3 && this.atfFormat != 5) {
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Only ATF block compressed textures without JPEG-XR+LZMA are supported"));
		}
		this.width = 1 << this.data.readUnsignedByte();
		this.height = 1 << this.data.readUnsignedByte();
		if(this.width != __width || this.height != __height) {
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("ATF width and height dont match"));
		}
		this.mipCount = this.data.readUnsignedByte();
		return this.atfFormat == 5;
	}
	,readTextures: function(uploadCallback) {
		var gpuFormats = this.version < 3 ? 3 : 4;
		var sideCount = this.cubeMap ? 6 : 1;
		var _g1 = 0;
		var _g = sideCount;
		while(_g1 < _g) {
			var side = _g1++;
			var _g3 = 0;
			var _g2 = this.mipCount;
			while(_g3 < _g2) {
				var level = _g3++;
				var _g5 = 0;
				var _g4 = gpuFormats;
				while(_g5 < _g4) {
					var gpuFormat = _g5++;
					var blockLength = this.version == 0 ? this.__readUInt24(this.data) : this.__readUInt32(this.data);
					if(_$UInt_UInt_$Impl_$.gt(this.data.position + blockLength,openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(this.data))) {
						throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("Block length exceeds ATF file length"));
					}
					if(_$UInt_UInt_$Impl_$.gt(blockLength,0)) {
						var bytes = new haxe_io_Bytes(new ArrayBuffer(blockLength));
						this.data.readBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(bytes),0,blockLength);
						uploadCallback(side,level,gpuFormat,this.width >> level,this.height >> level,blockLength,bytes);
					}
				}
			}
		}
	}
	,__readUInt24: function(data) {
		var value = data.readUnsignedByte() << 16;
		value = value | data.readUnsignedByte() << 8;
		value = value | data.readUnsignedByte();
		return value;
	}
	,__readUInt32: function(data) {
		var value = data.readUnsignedByte() << 24;
		value = value | data.readUnsignedByte() << 16;
		value = value | data.readUnsignedByte() << 8;
		value = value | data.readUnsignedByte();
		return value;
	}
	,__class__: openfl__$internal_stage3D_atf_ATFReader
};
var openfl__$internal_stage3D_opengl_GLContext3D = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLContext3D"] = openfl__$internal_stage3D_opengl_GLContext3D;
openfl__$internal_stage3D_opengl_GLContext3D.__name__ = ["openfl","_internal","stage3D","opengl","GLContext3D"];
openfl__$internal_stage3D_opengl_GLContext3D.create = function(context) {
	var gl = context.__renderSession.gl;
	var this1 = new Float32Array(512);
	context.__vertexConstants = this1;
	var this2 = new Float32Array(512);
	context.__fragmentConstants = this2;
	var array = [1.0,1.0,1.0,1.0];
	var this3;
	if(array != null) {
		this3 = new Float32Array(array);
	} else {
		this3 = null;
	}
	context.__positionScale = this3;
	context.__samplerDirty = 0;
	context.__samplerTextures = openfl__$Vector_Vector_$Impl_$.toObjectVector(null,8);
	context.__samplerStates = [];
	var _g = 0;
	while(_g < 8) {
		var i = _g++;
		context.__samplerStates[i] = new openfl__$internal_stage3D_SamplerState(gl.LINEAR,gl.LINEAR,gl.CLAMP_TO_EDGE,gl.CLAMP_TO_EDGE);
	}
	context.maxBackBufferHeight = context.maxBackBufferWidth = 16384;
	context.__backBufferAntiAlias = 0;
	context.__backBufferEnableDepthAndStencil = true;
	context.__backBufferWantsBestResolution = false;
	context.__frameCount = 0;
	context.__rttDepthAndStencil = false;
	context.__samplerDirty = 0;
	context.__stencilCompareMode = 0;
	context.__stencilRef = 0;
	context.__stencilReadMask = 255;
	var anisoExtension = gl.getExtension("EXT_texture_filter_anisotropic");
	if(gl.type == lime_graphics_opengl_GLContextType.GLES && gl.version >= 3) {
		context.__supportsPackedDepthStencil = true;
		openfl_display3D_Context3D.DEPTH_STENCIL = gl.DEPTH24_STENCIL8;
	} else {
		var stencilExtension = gl.getExtension("OES_packed_depth_stencil");
		if(stencilExtension != null) {
			context.__supportsPackedDepthStencil = true;
			openfl_display3D_Context3D.DEPTH_STENCIL = stencilExtension.DEPTH24_STENCIL8_OES;
		} else {
			stencilExtension = gl.getExtension("EXT_packed_depth_stencil");
			if(stencilExtension != null) {
				context.__supportsPackedDepthStencil = true;
				openfl_display3D_Context3D.DEPTH_STENCIL = stencilExtension.DEPTH24_STENCIL8_EXT;
			}
		}
	}
	context.__supportsAnisotropicFiltering = anisoExtension != null;
	if(context.__supportsAnisotropicFiltering) {
		openfl_display3D_Context3D.TEXTURE_MAX_ANISOTROPY_EXT = anisoExtension.TEXTURE_MAX_ANISOTROPY_EXT;
		var maxAnisotropy = gl.getParameter(anisoExtension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);
		context.__maxAnisotropyTexture2D = maxAnisotropy;
		context.__maxAnisotropyTexture2D = maxAnisotropy;
	}
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var vendor = gl.getParameter(gl.VENDOR);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var version = gl.getParameter(gl.VERSION);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var renderer = gl.getParameter(gl.RENDERER);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var glslVersion = gl.getParameter(gl.SHADING_LANGUAGE_VERSION);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	context.driverInfo = "OpenGL" + " Vendor=" + vendor + " Version=" + version + " Renderer=" + renderer + " GLSL=" + glslVersion;
};
openfl__$internal_stage3D_opengl_GLContext3D.clear = function(context,red,green,blue,alpha,depth,stencil,mask) {
	if(mask == null) {
		mask = 7;
	}
	if(stencil == null) {
		stencil = 0;
	}
	if(depth == null) {
		depth = 1;
	}
	if(alpha == null) {
		alpha = 1;
	}
	if(blue == null) {
		blue = 0;
	}
	if(green == null) {
		green = 0;
	}
	if(red == null) {
		red = 0;
	}
	var gl = context.__renderSession.gl;
	var clearMask = 0;
	if((mask & 1) != 0) {
		clearMask |= gl.COLOR_BUFFER_BIT;
		gl.clearColor(red,green,blue,alpha);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
	if((mask & 2) != 0) {
		clearMask |= gl.DEPTH_BUFFER_BIT;
		gl.depthMask(true);
		gl.clearDepthf(depth);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
	if((mask & 4) != 0) {
		clearMask |= gl.STENCIL_BUFFER_BIT;
		gl.clearStencil(stencil);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
	gl.clear(clearMask);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLContext3D.configureBackBuffer = function(context,width,height,antiAlias,enableDepthAndStencil,wantsBestResolution,wantsBestResolutionOnBrowserZoom) {
	if(wantsBestResolutionOnBrowserZoom == null) {
		wantsBestResolutionOnBrowserZoom = false;
	}
	if(wantsBestResolution == null) {
		wantsBestResolution = false;
	}
	if(enableDepthAndStencil == null) {
		enableDepthAndStencil = true;
	}
	openfl__$internal_stage3D_opengl_GLContext3D.context = context;
	openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
	openfl__$internal_stage3D_opengl_GLContext3D.__updateBackbufferViewport();
	context.backBufferWidth = width;
	context.backBufferHeight = height;
	context.__backBufferAntiAlias = antiAlias;
	context.__backBufferEnableDepthAndStencil = enableDepthAndStencil;
	context.__backBufferWantsBestResolution = wantsBestResolution;
	openfl_display3D_Context3D.__stateCache.clearSettings();
};
openfl__$internal_stage3D_opengl_GLContext3D.dispose = function(context,recreate) {
	if(recreate == null) {
		recreate = true;
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.drawToBitmapData = function(context,destination) {
	var $window = context.__stage3D.__stage.window;
	if($window != null) {
		var image = $window.renderer.readPixels();
		var heightOffset = image.height - context.backBufferHeight;
		destination.image.copyPixels(image,new lime_math_Rectangle(context.__stage3D.get_x() | 0,context.__stage3D.get_y() + heightOffset | 0,context.backBufferWidth,context.backBufferHeight),new lime_math_Vector2());
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.drawTriangles = function(context,indexBuffer,firstIndex,numTriangles) {
	if(numTriangles == null) {
		numTriangles = -1;
	}
	if(firstIndex == null) {
		firstIndex = 0;
	}
	if(context.__program == null) {
		return;
	}
	openfl__$internal_stage3D_opengl_GLContext3D.context = context;
	openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
	openfl__$internal_stage3D_opengl_GLContext3D.__flushSamplerState();
	context.__program.__flush();
	var count = numTriangles == -1 ? indexBuffer.__numIndices : numTriangles * 3;
	openfl__$internal_stage3D_opengl_GLContext3D.gl.bindBuffer(openfl__$internal_stage3D_opengl_GLContext3D.gl.ELEMENT_ARRAY_BUFFER,indexBuffer.__id);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	openfl__$internal_stage3D_opengl_GLContext3D.gl.drawElements(openfl__$internal_stage3D_opengl_GLContext3D.gl.TRIANGLES,count,indexBuffer.__elementType,firstIndex);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLContext3D.present = function(context) {
};
openfl__$internal_stage3D_opengl_GLContext3D.setBlendFactors = function(context,sourceFactor,destinationFactor) {
	var updateSrc = openfl_display3D_Context3D.__stateCache.updateBlendSrcFactor(sourceFactor);
	var updateDest = openfl_display3D_Context3D.__stateCache.updateBlendDestFactor(destinationFactor);
	if(updateSrc || updateDest) {
		openfl__$internal_stage3D_opengl_GLContext3D.context = context;
		openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
		openfl__$internal_stage3D_opengl_GLContext3D.__updateBlendFactors();
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setColorMask = function(context,red,green,blue,alpha) {
	var gl = context.__renderSession.gl;
	gl.colorMask(red,green,blue,alpha);
};
openfl__$internal_stage3D_opengl_GLContext3D.setCulling = function(context,triangleFaceToCull) {
	var gl = context.__renderSession.gl;
	if(openfl_display3D_Context3D.__stateCache.updateCullingMode(triangleFaceToCull)) {
		switch(triangleFaceToCull) {
		case 0:
			gl.enable(gl.CULL_FACE);
			gl.cullFace(gl.FRONT);
			break;
		case 1:
			gl.enable(gl.CULL_FACE);
			gl.cullFace(gl.BACK);
			break;
		case 2:
			gl.enable(gl.CULL_FACE);
			gl.cullFace(gl.FRONT_AND_BACK);
			break;
		case 3:
			gl.disable(gl.CULL_FACE);
			break;
		default:
			return new openfl_errors_IllegalOperationError();
		}
	}
	return null;
};
openfl__$internal_stage3D_opengl_GLContext3D.setDepthTest = function(context,depthMask,passCompareMode) {
	var gl = context.__renderSession.gl;
	var depthTestEnabled = context.__backBufferEnableDepthAndStencil;
	if(openfl_display3D_Context3D.__stateCache.updateDepthTestEnabled(depthTestEnabled)) {
		if(depthTestEnabled) {
			gl.enable(gl.DEPTH_TEST);
		} else {
			gl.disable(gl.DEPTH_TEST);
		}
	}
	if(openfl_display3D_Context3D.__stateCache.updateDepthTestMask(depthMask)) {
		gl.depthMask(depthMask);
	}
	if(openfl_display3D_Context3D.__stateCache.updateDepthCompareMode(passCompareMode)) {
		switch(passCompareMode) {
		case 0:
			gl.depthFunc(gl.ALWAYS);
			break;
		case 1:
			gl.depthFunc(gl.EQUAL);
			break;
		case 2:
			gl.depthFunc(gl.GREATER);
			break;
		case 3:
			gl.depthFunc(gl.GEQUAL);
			break;
		case 4:
			gl.depthFunc(gl.LESS);
			break;
		case 5:
			gl.depthFunc(gl.LEQUAL);
			break;
		case 6:
			gl.depthFunc(gl.NEVER);
			break;
		case 7:
			gl.depthFunc(gl.NOTEQUAL);
			break;
		default:
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
		}
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setEnableErrorChecking = function(value) {
	openfl__$internal_stage3D_GLUtils.debug = value;
};
openfl__$internal_stage3D_opengl_GLContext3D.setProgram = function(context,program) {
	if(openfl_display3D_Context3D.__stateCache.updateProgram3D(program)) {
		program.__use();
		program.__setPositionScale(context.__positionScale);
		context.__program = program;
		context.__samplerDirty |= context.__program.__samplerUsageMask;
		var _g = 0;
		while(_g < 8) {
			var i = _g++;
			context.__samplerStates[i].copyFrom(context.__program.__getSamplerState(i));
		}
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setProgramConstantsFromByteArray = function(context,programType,firstRegister,numRegisters,data,byteArrayOffset) {
	var gl = context.__renderSession.gl;
	if(numRegisters == -1) {
		numRegisters = (openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(data) >> 2) - byteArrayOffset;
	}
	var isVertex = programType == 1;
	var dest = isVertex ? context.__vertexConstants : context.__fragmentConstants;
	var bytes = openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(data);
	var len = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(data);
	var floatData = len == null ? new Float32Array(bytes.b.bufferValue,0) : new Float32Array(bytes.b.bufferValue,0,len);
	var outOffset = firstRegister * 4;
	var inOffset = _$UInt_UInt_$Impl_$.toFloat(byteArrayOffset) / _$UInt_UInt_$Impl_$.toFloat(4) | 0;
	var _g1 = 0;
	var _g = numRegisters * 4;
	while(_g1 < _g) {
		var i = _g1++;
		dest[outOffset + i] = floatData[inOffset + i];
	}
	if(context.__program != null) {
		context.__program.__markDirty(isVertex,firstRegister,numRegisters);
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setProgramConstantsFromMatrix = function(context,programType,firstRegister,matrix,transposedMatrix) {
	if(transposedMatrix == null) {
		transposedMatrix = false;
	}
	var isVertex = programType == 1;
	var dest = isVertex ? context.__vertexConstants : context.__fragmentConstants;
	var source = matrix.rawData;
	var i = firstRegister * 4;
	if(transposedMatrix) {
		dest[i++] = source.data.get(0);
		dest[i++] = source.data.get(4);
		dest[i++] = source.data.get(8);
		dest[i++] = source.data.get(12);
		dest[i++] = source.data.get(1);
		dest[i++] = source.data.get(5);
		dest[i++] = source.data.get(9);
		dest[i++] = source.data.get(13);
		dest[i++] = source.data.get(2);
		dest[i++] = source.data.get(6);
		dest[i++] = source.data.get(10);
		dest[i++] = source.data.get(14);
		dest[i++] = source.data.get(3);
		dest[i++] = source.data.get(7);
		dest[i++] = source.data.get(11);
		dest[i++] = source.data.get(15);
	} else {
		dest[i++] = source.data.get(0);
		dest[i++] = source.data.get(1);
		dest[i++] = source.data.get(2);
		dest[i++] = source.data.get(3);
		dest[i++] = source.data.get(4);
		dest[i++] = source.data.get(5);
		dest[i++] = source.data.get(6);
		dest[i++] = source.data.get(7);
		dest[i++] = source.data.get(8);
		dest[i++] = source.data.get(9);
		dest[i++] = source.data.get(10);
		dest[i++] = source.data.get(11);
		dest[i++] = source.data.get(12);
		dest[i++] = source.data.get(13);
		dest[i++] = source.data.get(14);
		dest[i++] = source.data.get(15);
	}
	if(context.__program != null) {
		context.__program.__markDirty(isVertex,firstRegister,4);
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setProgramConstantsFromVector = function(context,programType,firstRegister,data,numRegisters) {
	if(numRegisters == null) {
		numRegisters = -1;
	}
	if(numRegisters == -1) {
		numRegisters = data.data.get_length() >> 2;
	}
	var isVertex = programType == 1;
	var dest = isVertex ? context.__vertexConstants : context.__fragmentConstants;
	var source = data;
	var sourceIndex = 0;
	var destIndex = firstRegister * 4;
	var _g1 = 0;
	var _g = numRegisters;
	while(_g1 < _g) {
		var i = _g1++;
		dest[destIndex++] = source.data.get(sourceIndex++);
		dest[destIndex++] = source.data.get(sourceIndex++);
		dest[destIndex++] = source.data.get(sourceIndex++);
		dest[destIndex++] = source.data.get(sourceIndex++);
	}
	if(context.__program != null) {
		context.__program.__markDirty(isVertex,firstRegister,numRegisters);
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setRenderToBackBuffer = function(context) {
	var gl = context.__renderSession.gl;
	gl.bindFramebuffer(gl.FRAMEBUFFER,null);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.frontFace(gl.CCW);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	context.__renderToTexture = null;
	context.__scissorRectangle = null;
	openfl__$internal_stage3D_opengl_GLContext3D.__updateBackbufferViewport();
	openfl__$internal_stage3D_opengl_GLContext3D.__updateScissorRectangle();
	openfl__$internal_stage3D_opengl_GLContext3D.__updateDepthAndStencilState();
	context.__positionScale[1] = 1.0;
	if(context.__program != null) {
		context.__program.__setPositionScale(context.__positionScale);
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setRenderToTexture = function(context,texture,enableDepthAndStencil,antiAlias,surfaceSelector) {
	if(surfaceSelector == null) {
		surfaceSelector = 0;
	}
	if(antiAlias == null) {
		antiAlias = 0;
	}
	if(enableDepthAndStencil == null) {
		enableDepthAndStencil = false;
	}
	var gl = context.__renderSession.gl;
	var width = 0;
	var height = 0;
	if(context.__framebuffer == null) {
		context.__framebuffer = gl.createFramebuffer();
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
	gl.bindFramebuffer(gl.FRAMEBUFFER,context.__framebuffer);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	if(js_Boot.__instanceof(texture,openfl_display3D_textures_Texture)) {
		var texture2D = texture;
		width = texture2D.__width;
		height = texture2D.__height;
		gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture.__textureID,0);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	} else if(js_Boot.__instanceof(texture,openfl_display3D_textures_RectangleTexture)) {
		var rectTexture = texture;
		width = rectTexture.__width;
		height = rectTexture.__height;
		gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture.__textureID,0);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	} else if(js_Boot.__instanceof(texture,openfl_display3D_textures_CubeTexture)) {
		var cubeTexture = texture;
		width = cubeTexture.__size;
		height = cubeTexture.__size;
		var _g = 0;
		while(_g < 6) {
			var i = _g++;
			gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_CUBE_MAP_POSITIVE_X + i,texture.__textureID,0);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
	} else {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Invalid texture"));
	}
	if(enableDepthAndStencil) {
		if(context.__supportsPackedDepthStencil) {
			if(context.__depthStencilRenderBuffer == null) {
				context.__depthStencilRenderBuffer = gl.createRenderbuffer();
				openfl__$internal_stage3D_GLUtils.CheckGLError();
			}
			gl.bindRenderbuffer(gl.RENDERBUFFER,context.__depthStencilRenderBuffer);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			gl.renderbufferStorage(gl.RENDERBUFFER,openfl_display3D_Context3D.DEPTH_STENCIL,width,height);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT,gl.RENDERBUFFER,context.__depthStencilRenderBuffer);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		} else {
			if(context.__depthRenderBuffer == null) {
				context.__depthRenderBuffer = gl.createRenderbuffer();
				openfl__$internal_stage3D_GLUtils.CheckGLError();
			}
			if(context.__stencilRenderBuffer == null) {
				context.__stencilRenderBuffer = gl.createRenderbuffer();
				openfl__$internal_stage3D_GLUtils.CheckGLError();
			}
			gl.bindRenderbuffer(gl.RENDERBUFFER,context.__depthRenderBuffer);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_COMPONENT16,width,height);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			gl.bindRenderbuffer(gl.RENDERBUFFER,context.__stencilRenderBuffer);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			gl.renderbufferStorage(gl.RENDERBUFFER,gl.STENCIL_INDEX8,width,height);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_ATTACHMENT,gl.RENDERBUFFER,context.__depthRenderBuffer);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.STENCIL_ATTACHMENT,gl.RENDERBUFFER,context.__stencilRenderBuffer);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
		gl.bindRenderbuffer(gl.RENDERBUFFER,null);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
	openfl__$internal_stage3D_opengl_GLContext3D.__setViewport(0,0,width,height);
	if(context.__enableErrorChecking) {
		var code = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
		if(code != gl.FRAMEBUFFER_COMPLETE) {
			haxe_Log.trace("Error: Context3D.setRenderToTexture status:" + code + " width:" + width + " height:" + height,{ fileName : "GLContext3D.hx", lineNumber : 753, className : "openfl._internal.stage3D.opengl.GLContext3D", methodName : "setRenderToTexture"});
		}
	}
	context.__positionScale[1] = -1.0;
	if(context.__program != null) {
		context.__program.__setPositionScale(context.__positionScale);
	}
	gl.frontFace(gl.CW);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	context.__renderToTexture = texture;
	context.__scissorRectangle = null;
	context.__rttDepthAndStencil = enableDepthAndStencil;
	openfl__$internal_stage3D_opengl_GLContext3D.__updateScissorRectangle();
	openfl__$internal_stage3D_opengl_GLContext3D.__updateDepthAndStencilState();
};
openfl__$internal_stage3D_opengl_GLContext3D.setSamplerStateAt = function(context,sampler,wrap,filter,mipfilter) {
	if(sampler < 0 || sampler > 8) {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("sampler out of range"));
	}
	var gl = context.__renderSession.gl;
	var state = context.__samplerStates[sampler];
	switch(wrap) {
	case 0:
		state.set_wrapModeS(gl.CLAMP_TO_EDGE);
		state.set_wrapModeT(gl.CLAMP_TO_EDGE);
		break;
	case 1:
		state.set_wrapModeS(gl.CLAMP_TO_EDGE);
		state.set_wrapModeT(gl.REPEAT);
		break;
	case 2:
		state.set_wrapModeS(gl.REPEAT);
		state.set_wrapModeT(gl.REPEAT);
		break;
	case 3:
		state.set_wrapModeS(gl.REPEAT);
		state.set_wrapModeT(gl.CLAMP_TO_EDGE);
		break;
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_Error("wrap bad enum"));
	}
	switch(filter) {
	case 0:
		if(context.__supportsAnisotropicFiltering) {
			state.set_maxAniso(context.__maxAnisotropyTexture2D < 16 ? context.__maxAnisotropyTexture2D : 16);
		}
		break;
	case 1:
		if(context.__supportsAnisotropicFiltering) {
			state.set_maxAniso(context.__maxAnisotropyTexture2D < 2 ? context.__maxAnisotropyTexture2D : 2);
		}
		break;
	case 2:
		if(context.__supportsAnisotropicFiltering) {
			state.set_maxAniso(context.__maxAnisotropyTexture2D < 4 ? context.__maxAnisotropyTexture2D : 4);
		}
		break;
	case 3:
		if(context.__supportsAnisotropicFiltering) {
			state.set_maxAniso(context.__maxAnisotropyTexture2D < 8 ? context.__maxAnisotropyTexture2D : 8);
		}
		break;
	case 4:
		state.set_magFilter(gl.LINEAR);
		if(context.__supportsAnisotropicFiltering) {
			state.set_maxAniso(1);
		}
		break;
	case 5:
		state.set_magFilter(gl.NEAREST);
		if(context.__supportsAnisotropicFiltering) {
			state.set_maxAniso(1);
		}
		break;
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_Error("filter bad enum"));
	}
	switch(mipfilter) {
	case 0:
		state.set_minFilter(filter == 5 ? gl.NEAREST_MIPMAP_LINEAR : gl.LINEAR_MIPMAP_LINEAR);
		break;
	case 1:
		state.set_minFilter(filter == 5 ? gl.NEAREST_MIPMAP_NEAREST : gl.LINEAR_MIPMAP_NEAREST);
		break;
	case 2:
		state.set_minFilter(filter == 5 ? gl.NEAREST : gl.LINEAR);
		break;
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_Error("mipfiter bad enum"));
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setScissorRectangle = function(context,rectangle) {
	openfl__$internal_stage3D_opengl_GLContext3D.context = context;
	openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
	context.__scissorRectangle = rectangle != null ? rectangle.clone() : null;
	openfl__$internal_stage3D_opengl_GLContext3D.__updateScissorRectangle();
};
openfl__$internal_stage3D_opengl_GLContext3D.setStencilActions = function(context,triangleFace,compareMode,actionOnBothPass,actionOnDepthFail,actionOnDepthPassStencilFail) {
	if(actionOnDepthPassStencilFail == null) {
		actionOnDepthPassStencilFail = 5;
	}
	if(actionOnDepthFail == null) {
		actionOnDepthFail = 5;
	}
	if(actionOnBothPass == null) {
		actionOnBothPass = 5;
	}
	if(compareMode == null) {
		compareMode = 0;
	}
	if(triangleFace == null) {
		triangleFace = 2;
	}
	openfl__$internal_stage3D_opengl_GLContext3D.context = context;
	openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
	context.__stencilCompareMode = compareMode;
	openfl__$internal_stage3D_opengl_GLContext3D.gl.stencilOpSeparate(openfl__$internal_stage3D_opengl_GLContext3D.__getGLTriangleFace(triangleFace),openfl__$internal_stage3D_opengl_GLContext3D.__getGLStencilAction(actionOnDepthPassStencilFail),openfl__$internal_stage3D_opengl_GLContext3D.__getGLStencilAction(actionOnDepthFail),openfl__$internal_stage3D_opengl_GLContext3D.__getGLStencilAction(actionOnBothPass));
	openfl__$internal_stage3D_opengl_GLContext3D.gl.stencilFunc(openfl__$internal_stage3D_opengl_GLContext3D.__getGLCompareMode(context.__stencilCompareMode),context.__stencilRef,context.__stencilReadMask);
};
openfl__$internal_stage3D_opengl_GLContext3D.setStencilReferenceValue = function(context,referenceValue,readMask,writeMask) {
	if(writeMask == null) {
		writeMask = 255;
	}
	if(readMask == null) {
		readMask = 255;
	}
	openfl__$internal_stage3D_opengl_GLContext3D.context = context;
	openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
	context.__stencilReadMask = readMask;
	context.__stencilRef = referenceValue;
	openfl__$internal_stage3D_opengl_GLContext3D.gl.stencilFunc(openfl__$internal_stage3D_opengl_GLContext3D.__getGLCompareMode(context.__stencilCompareMode),context.__stencilRef,context.__stencilReadMask);
	openfl__$internal_stage3D_opengl_GLContext3D.gl.stencilMask(writeMask);
};
openfl__$internal_stage3D_opengl_GLContext3D.setTextureAt = function(context,sampler,texture) {
	if(context.__samplerTextures.data.get(sampler) != texture) {
		context.__samplerTextures.data.set(sampler,texture);
		context.__samplerDirty |= 1 << sampler;
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.setVertexBufferAt = function(context,index,buffer,bufferOffset,format) {
	if(format == null) {
		format = 4;
	}
	if(bufferOffset == null) {
		bufferOffset = 0;
	}
	var gl = context.__renderSession.gl;
	if(buffer == null) {
		gl.disableVertexAttribArray(index);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		gl.bindBuffer(gl.ARRAY_BUFFER,null);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		return;
	}
	gl.enableVertexAttribArray(index);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.bindBuffer(gl.ARRAY_BUFFER,buffer.__id);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var byteOffset = bufferOffset * 4;
	switch(format) {
	case 0:
		gl.vertexAttribPointer(index,4,gl.UNSIGNED_BYTE,true,buffer.__stride,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(byteOffset));
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		break;
	case 1:
		gl.vertexAttribPointer(index,1,gl.FLOAT,false,buffer.__stride,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(byteOffset));
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		break;
	case 2:
		gl.vertexAttribPointer(index,2,gl.FLOAT,false,buffer.__stride,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(byteOffset));
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		break;
	case 3:
		gl.vertexAttribPointer(index,3,gl.FLOAT,false,buffer.__stride,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(byteOffset));
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		break;
	case 4:
		gl.vertexAttribPointer(index,4,gl.FLOAT,false,buffer.__stride,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(byteOffset));
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		break;
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.__flushSamplerState = function() {
	var sampler = 0;
	while(openfl__$internal_stage3D_opengl_GLContext3D.context.__samplerDirty != 0) {
		if((openfl__$internal_stage3D_opengl_GLContext3D.context.__samplerDirty & 1 << sampler) != 0) {
			if(openfl_display3D_Context3D.__stateCache.updateActiveTextureSample(sampler)) {
				openfl__$internal_stage3D_opengl_GLContext3D.gl.activeTexture(openfl__$internal_stage3D_opengl_GLContext3D.gl.TEXTURE0 + sampler);
				openfl__$internal_stage3D_GLUtils.CheckGLError();
			}
			var texture = openfl__$internal_stage3D_opengl_GLContext3D.context.__samplerTextures.data.get(sampler);
			if(texture != null) {
				var target = texture.__textureTarget;
				openfl__$internal_stage3D_opengl_GLContext3D.gl.bindTexture(target,texture.__getTexture());
				openfl__$internal_stage3D_GLUtils.CheckGLError();
				texture.__setSamplerState(openfl__$internal_stage3D_opengl_GLContext3D.context.__samplerStates[sampler]);
			} else {
				openfl__$internal_stage3D_opengl_GLContext3D.gl.bindTexture(openfl__$internal_stage3D_opengl_GLContext3D.gl.TEXTURE_2D,null);
				openfl__$internal_stage3D_GLUtils.CheckGLError();
			}
			if(openfl__$internal_stage3D_opengl_GLContext3D.context.__samplerStates[sampler].textureAlpha) {
				openfl__$internal_stage3D_opengl_GLContext3D.gl.activeTexture(openfl__$internal_stage3D_opengl_GLContext3D.gl.TEXTURE0 + sampler + 4);
				openfl__$internal_stage3D_GLUtils.CheckGLError();
				if(texture != null && texture.__alphaTexture != null) {
					var target1 = texture.__alphaTexture.__textureTarget;
					openfl__$internal_stage3D_opengl_GLContext3D.gl.bindTexture(target1,texture.__alphaTexture.__getTexture());
					openfl__$internal_stage3D_GLUtils.CheckGLError();
					texture.__alphaTexture.__setSamplerState(openfl__$internal_stage3D_opengl_GLContext3D.context.__samplerStates[sampler]);
					openfl__$internal_stage3D_opengl_GLContext3D.gl.uniform1i(openfl__$internal_stage3D_opengl_GLContext3D.context.__program.__alphaSamplerEnabled[sampler].location,1);
					openfl__$internal_stage3D_GLUtils.CheckGLError();
				} else {
					openfl__$internal_stage3D_opengl_GLContext3D.gl.bindTexture(openfl__$internal_stage3D_opengl_GLContext3D.gl.TEXTURE_2D,null);
					openfl__$internal_stage3D_GLUtils.CheckGLError();
					openfl__$internal_stage3D_opengl_GLContext3D.gl.uniform1i(openfl__$internal_stage3D_opengl_GLContext3D.context.__program.__alphaSamplerEnabled[sampler].location,0);
					openfl__$internal_stage3D_GLUtils.CheckGLError();
				}
			}
			openfl__$internal_stage3D_opengl_GLContext3D.context.__samplerDirty &= ~(1 << sampler);
		}
		++sampler;
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.__getGLCompareMode = function(compareMode) {
	switch(compareMode) {
	case 0:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.ALWAYS;
	case 1:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.EQUAL;
	case 2:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.GREATER;
	case 3:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.GEQUAL;
	case 4:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.LESS;
	case 5:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.LEQUAL;
	case 6:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.NEVER;
	case 7:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.NOTEQUAL;
	default:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.EQUAL;
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.__getGLTriangleFace = function(triangleFace) {
	switch(triangleFace) {
	case 0:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.BACK;
	case 1:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.FRONT;
	case 2:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.FRONT_AND_BACK;
	case 3:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.NONE;
	default:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.FRONT_AND_BACK;
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.__getGLStencilAction = function(stencilAction) {
	switch(stencilAction) {
	case 0:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.DECR;
	case 1:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.DECR_WRAP;
	case 2:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.INCR;
	case 3:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.INCR_WRAP;
	case 4:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.INVERT;
	case 5:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.KEEP;
	case 6:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.REPLACE;
	case 7:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.ZERO;
	default:
		return openfl__$internal_stage3D_opengl_GLContext3D.gl.KEEP;
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.__hasGLExtension = function(name) {
	return openfl__$internal_stage3D_opengl_GLContext3D.gl.getSupportedExtensions().indexOf(name) != -1;
};
openfl__$internal_stage3D_opengl_GLContext3D.__setViewport = function(originX,originY,width,height) {
	if(openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture != null) {
		originY *= -1;
	}
	if(openfl_display3D_Context3D.__stateCache.updateViewport(originX,originY,width,height)) {
		openfl__$internal_stage3D_opengl_GLContext3D.gl.viewport(originX,originY,width,height);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.__updateDepthAndStencilState = function() {
	var depthAndStencil = openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture != null ? openfl__$internal_stage3D_opengl_GLContext3D.context.__rttDepthAndStencil : openfl__$internal_stage3D_opengl_GLContext3D.context.__backBufferEnableDepthAndStencil;
	if(depthAndStencil) {
		openfl__$internal_stage3D_opengl_GLContext3D.gl.enable(openfl__$internal_stage3D_opengl_GLContext3D.gl.DEPTH_TEST);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		openfl__$internal_stage3D_opengl_GLContext3D.gl.enable(openfl__$internal_stage3D_opengl_GLContext3D.gl.STENCIL_TEST);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	} else {
		openfl__$internal_stage3D_opengl_GLContext3D.gl.disable(openfl__$internal_stage3D_opengl_GLContext3D.gl.DEPTH_TEST);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		openfl__$internal_stage3D_opengl_GLContext3D.gl.disable(openfl__$internal_stage3D_opengl_GLContext3D.gl.STENCIL_TEST);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
};
openfl__$internal_stage3D_opengl_GLContext3D.__updateBlendFactorsTEMP = function(context) {
	openfl__$internal_stage3D_opengl_GLContext3D.context = context;
	openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
	openfl__$internal_stage3D_opengl_GLContext3D.__updateBlendFactors();
};
openfl__$internal_stage3D_opengl_GLContext3D.__updateBlendFactors = function() {
	if(openfl_display3D_Context3D.__stateCache._srcBlendFactor == null || openfl_display3D_Context3D.__stateCache._destBlendFactor == null) {
		return;
	}
	var src = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE;
	var dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.ZERO;
	var _g = openfl_display3D_Context3D.__stateCache._srcBlendFactor;
	switch(_g) {
	case 0:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.DST_ALPHA;
		break;
	case 1:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.DST_COLOR;
		break;
	case 2:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE;
		break;
	case 3:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE_MINUS_DST_ALPHA;
		break;
	case 4:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE_MINUS_DST_COLOR;
		break;
	case 5:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE_MINUS_SRC_ALPHA;
		break;
	case 7:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.SRC_ALPHA;
		break;
	case 9:
		src = openfl__$internal_stage3D_opengl_GLContext3D.gl.ZERO;
		break;
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
	}
	var _g1 = openfl_display3D_Context3D.__stateCache._destBlendFactor;
	switch(_g1) {
	case 0:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.DST_ALPHA;
		break;
	case 2:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE;
		break;
	case 3:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE_MINUS_DST_ALPHA;
		break;
	case 5:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE_MINUS_SRC_ALPHA;
		break;
	case 6:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.ONE_MINUS_SRC_COLOR;
		break;
	case 7:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.SRC_ALPHA;
		break;
	case 8:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.SRC_COLOR;
		break;
	case 9:
		dest = openfl__$internal_stage3D_opengl_GLContext3D.gl.ZERO;
		break;
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
	}
	openfl__$internal_stage3D_opengl_GLContext3D.gl.enable(openfl__$internal_stage3D_opengl_GLContext3D.gl.BLEND);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	openfl__$internal_stage3D_opengl_GLContext3D.gl.blendFunc(src,dest);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLContext3D.__updateScissorRectangle = function() {
	if(openfl__$internal_stage3D_opengl_GLContext3D.context.__scissorRectangle == null) {
		openfl__$internal_stage3D_opengl_GLContext3D.gl.disable(openfl__$internal_stage3D_opengl_GLContext3D.gl.SCISSOR_TEST);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		return;
	}
	openfl__$internal_stage3D_opengl_GLContext3D.gl.enable(openfl__$internal_stage3D_opengl_GLContext3D.gl.SCISSOR_TEST);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var height = 0;
	var offsetX = 0;
	var offsetY = 0;
	if(openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture != null) {
		if(js_Boot.__instanceof(openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture,openfl_display3D_textures_Texture)) {
			var texture2D = openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture;
			height = texture2D.__height;
		} else if(js_Boot.__instanceof(openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture,openfl_display3D_textures_RectangleTexture)) {
			var rectTexture = openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture;
			height = rectTexture.__height;
		}
	} else {
		height = openfl__$internal_stage3D_opengl_GLContext3D.context.backBufferHeight;
		offsetX = openfl__$internal_stage3D_opengl_GLContext3D.context.__stage3D.get_x() | 0;
		offsetY = openfl__$internal_stage3D_opengl_GLContext3D.context.__stage3D.get_y() | 0;
	}
	openfl__$internal_stage3D_opengl_GLContext3D.gl.scissor((openfl__$internal_stage3D_opengl_GLContext3D.context.__scissorRectangle.x | 0) + offsetX,height - (openfl__$internal_stage3D_opengl_GLContext3D.context.__scissorRectangle.y | 0) - (openfl__$internal_stage3D_opengl_GLContext3D.context.__scissorRectangle.height | 0) + offsetY,openfl__$internal_stage3D_opengl_GLContext3D.context.__scissorRectangle.width | 0,openfl__$internal_stage3D_opengl_GLContext3D.context.__scissorRectangle.height | 0);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLContext3D.__updateBackbufferViewportTEMP = function(context) {
	openfl__$internal_stage3D_opengl_GLContext3D.context = context;
	openfl__$internal_stage3D_opengl_GLContext3D.gl = context.__renderSession.gl;
	openfl__$internal_stage3D_opengl_GLContext3D.__updateBackbufferViewport();
};
openfl__$internal_stage3D_opengl_GLContext3D.__updateBackbufferViewport = function() {
	if(!openfl_display_Stage3D.__active) {
		openfl_display_Stage3D.__active = true;
		openfl__$internal_stage3D_opengl_GLContext3D.context.__renderSession.renderer.clear();
	}
	if(openfl__$internal_stage3D_opengl_GLContext3D.context.__renderToTexture == null && openfl__$internal_stage3D_opengl_GLContext3D.context.backBufferWidth > 0 && openfl__$internal_stage3D_opengl_GLContext3D.context.backBufferHeight > 0) {
		openfl__$internal_stage3D_opengl_GLContext3D.__setViewport(openfl__$internal_stage3D_opengl_GLContext3D.context.__stage3D.get_x() | 0,openfl__$internal_stage3D_opengl_GLContext3D.context.__stage3D.get_y() | 0,openfl__$internal_stage3D_opengl_GLContext3D.context.backBufferWidth,openfl__$internal_stage3D_opengl_GLContext3D.context.backBufferHeight);
	}
};
var openfl__$internal_stage3D_opengl_GLCubeTexture = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLCubeTexture"] = openfl__$internal_stage3D_opengl_GLCubeTexture;
openfl__$internal_stage3D_opengl_GLCubeTexture.__name__ = ["openfl","_internal","stage3D","opengl","GLCubeTexture"];
openfl__$internal_stage3D_opengl_GLCubeTexture.create = function(cubeTexture,renderSession) {
	var gl = renderSession.gl;
	cubeTexture.__textureTarget = gl.TEXTURE_CUBE_MAP;
	cubeTexture.__uploadedSides = 0;
};
openfl__$internal_stage3D_opengl_GLCubeTexture.uploadCompressedTextureFromByteArray = function(cubeTexture,renderSession,data,byteArrayOffset) {
	var reader = new openfl__$internal_stage3D_atf_ATFReader(data,byteArrayOffset);
	var alpha = reader.readHeader(cubeTexture.__size,cubeTexture.__size,true);
	var gl = renderSession.gl;
	gl.bindTexture(cubeTexture.__textureTarget,cubeTexture.__textureID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var hasTexture = false;
	reader.readTextures(function(side,level,gpuFormat,width,height,blockLength,bytes) {
		var format = openfl__$internal_stage3D_opengl_GLTextureBase.__compressedTextureFormats.toTextureFormat(alpha,gpuFormat);
		if(format == 0) {
			return;
		}
		hasTexture = true;
		var target = openfl__$internal_stage3D_opengl_GLCubeTexture.__sideToTarget(gl,side);
		cubeTexture.__format = format;
		cubeTexture.__internalFormat = format;
		if(alpha && gpuFormat == 2) {
			var size = blockLength / 2 | 0;
			gl.compressedTexImage2D(target,level,cubeTexture.__internalFormat,width,height,0,size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytes(bytes));
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			var alphaTexture = new openfl_display3D_textures_CubeTexture(cubeTexture.__context,cubeTexture.__size,3,cubeTexture.__optimizeForRenderToTexture,cubeTexture.__streamingLevels);
			alphaTexture.__format = format;
			alphaTexture.__internalFormat = format;
			gl.bindTexture(alphaTexture.__textureTarget,alphaTexture.__textureID);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			var alphaTexture1 = alphaTexture.__internalFormat;
			var this1 = new lime_utils_BytePointerData(bytes,size);
			gl.compressedTexImage2D(target,level,alphaTexture1,width,height,0,size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(this1));
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			cubeTexture.__alphaTexture = alphaTexture;
		} else {
			gl.compressedTexImage2D(target,level,cubeTexture.__internalFormat,width,height,0,blockLength,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytes(bytes));
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
	});
	if(!hasTexture) {
		var _g = 0;
		while(_g < 6) {
			var side1 = _g++;
			var elements = cubeTexture.__size * cubeTexture.__size * 4;
			var this2;
			if(elements != null) {
				this2 = new Uint8Array(elements);
			} else {
				this2 = null;
			}
			var data1 = this2;
			var tmp = openfl__$internal_stage3D_opengl_GLCubeTexture.__sideToTarget(gl,side1);
			gl.texImage2D(tmp,0,cubeTexture.__internalFormat,cubeTexture.__size,cubeTexture.__size,0,cubeTexture.__format,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data1));
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
	}
	gl.bindTexture(cubeTexture.__textureTarget,null);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromBitmapData = function(cubeTexture,renderSession,source,side,miplevel,generateMipmap) {
	if(generateMipmap == null) {
		generateMipmap = false;
	}
	if(miplevel == null) {
		miplevel = 0;
	}
	var size = cubeTexture.__size >> miplevel;
	if(size == 0) {
		return;
	}
	var image = cubeTexture.__getImage(source);
	openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromTypedArray(cubeTexture,renderSession,image.get_data(),side,miplevel);
};
openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromByteArray = function(cubeTexture,renderSession,data,byteArrayOffset,side,miplevel) {
	if(byteArrayOffset == 0) {
		openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromTypedArray(cubeTexture,renderSession,data.b,side,miplevel);
		return;
	}
	var buffer = openfl_utils__$ByteArray_ByteArray_$Impl_$.toArrayBuffer(data);
	var this1;
	if(buffer != null) {
		this1 = new Uint8Array(buffer,byteArrayOffset);
	} else {
		this1 = null;
	}
	openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromTypedArray(cubeTexture,renderSession,this1,side,miplevel);
};
openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromTypedArray = function(cubeTexture,renderSession,data,side,miplevel) {
	if(data == null) {
		return;
	}
	var gl = renderSession.gl;
	var size = cubeTexture.__size >> miplevel;
	if(size == 0) {
		return;
	}
	var target = openfl__$internal_stage3D_opengl_GLCubeTexture.__sideToTarget(gl,side);
	gl.bindTexture(gl.TEXTURE_CUBE_MAP,cubeTexture.__textureID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.texImage2D(target,miplevel,cubeTexture.__internalFormat,size,size,0,cubeTexture.__format,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data));
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.bindTexture(cubeTexture.__textureTarget,null);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	cubeTexture.__uploadedSides |= 1 << side;
};
openfl__$internal_stage3D_opengl_GLCubeTexture.setSamplerState = function(cubeTexture,renderSession,state) {
	if(!state.equals(cubeTexture.__samplerState)) {
		var gl = renderSession.gl;
		if(state.minFilter != gl.NEAREST && state.minFilter != gl.LINEAR && !state.mipmapGenerated) {
			gl.generateMipmap(gl.TEXTURE_CUBE_MAP);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			state.mipmapGenerated = true;
		}
		if(state.maxAniso != 0.0) {
			gl.texParameterf(gl.TEXTURE_CUBE_MAP,openfl_display3D_Context3D.TEXTURE_MAX_ANISOTROPY_EXT,state.maxAniso);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
	}
	openfl__$internal_stage3D_opengl_GLTextureBase.setSamplerState(cubeTexture,renderSession,state);
};
openfl__$internal_stage3D_opengl_GLCubeTexture.__sideToTarget = function(gl,side) {
	switch(side) {
	case 0:
		return gl.TEXTURE_CUBE_MAP_NEGATIVE_X;
	case 1:
		return gl.TEXTURE_CUBE_MAP_POSITIVE_X;
	case 2:
		return gl.TEXTURE_CUBE_MAP_NEGATIVE_Y;
	case 3:
		return gl.TEXTURE_CUBE_MAP_POSITIVE_Y;
	case 4:
		return gl.TEXTURE_CUBE_MAP_NEGATIVE_Z;
	case 5:
		return gl.TEXTURE_CUBE_MAP_POSITIVE_Z;
	default:
		throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
	}
};
var openfl__$internal_stage3D_opengl_GLIndexBuffer3D = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLIndexBuffer3D"] = openfl__$internal_stage3D_opengl_GLIndexBuffer3D;
openfl__$internal_stage3D_opengl_GLIndexBuffer3D.__name__ = ["openfl","_internal","stage3D","opengl","GLIndexBuffer3D"];
openfl__$internal_stage3D_opengl_GLIndexBuffer3D.create = function(indexBuffer,renderSession,bufferUsage) {
	var gl = renderSession.gl;
	indexBuffer.__elementType = gl.UNSIGNED_SHORT;
	indexBuffer.__id = gl.createBuffer();
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	indexBuffer.__usage = bufferUsage == 0 ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;
};
openfl__$internal_stage3D_opengl_GLIndexBuffer3D.dispose = function(indexBuffer,renderSession) {
	var gl = renderSession.gl;
	gl.deleteBuffer(indexBuffer.__id);
};
openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromByteArray = function(indexBuffer,renderSession,data,byteArrayOffset,startOffset,count) {
	var offset = byteArrayOffset + startOffset * 2;
	var buffer = openfl_utils__$ByteArray_ByteArray_$Impl_$.toArrayBuffer(data);
	var this1;
	if(buffer != null) {
		if(count == null) {
			this1 = new Int16Array(buffer,offset);
		} else {
			this1 = new Int16Array(buffer,offset,count);
		}
	} else {
		this1 = null;
	}
	openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromTypedArray(indexBuffer,renderSession,this1);
};
openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromTypedArray = function(indexBuffer,renderSession,data) {
	if(data == null) {
		return;
	}
	var gl = renderSession.gl;
	gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indexBuffer.__id);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data.byteLength,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data),indexBuffer.__usage);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromVector = function(indexBuffer,renderSession,data,startOffset,count) {
	if(data == null) {
		return;
	}
	var gl = renderSession.gl;
	var length = startOffset + count;
	var existingInt16Array = indexBuffer.__tempInt16Array;
	if(indexBuffer.__tempInt16Array == null || indexBuffer.__tempInt16Array.length < count) {
		var this1;
		if(count != null) {
			this1 = new Int16Array(count);
		} else {
			this1 = null;
		}
		indexBuffer.__tempInt16Array = this1;
		if(existingInt16Array != null) {
			indexBuffer.__tempInt16Array.set(existingInt16Array);
		}
	}
	var _g1 = startOffset;
	var _g = length;
	while(_g1 < _g) {
		var i = _g1++;
		indexBuffer.__tempInt16Array[i - startOffset] = data.data.get(i);
	}
	openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromTypedArray(indexBuffer,renderSession,indexBuffer.__tempInt16Array);
};
var openfl__$internal_stage3D_opengl_GLProgram3D = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLProgram3D"] = openfl__$internal_stage3D_opengl_GLProgram3D;
openfl__$internal_stage3D_opengl_GLProgram3D.__name__ = ["openfl","_internal","stage3D","opengl","GLProgram3D"];
openfl__$internal_stage3D_opengl_GLProgram3D.dispose = function(program,renderSession) {
	openfl__$internal_stage3D_opengl_GLProgram3D.program = program;
	openfl__$internal_stage3D_opengl_GLProgram3D.renderSession = renderSession;
	openfl__$internal_stage3D_opengl_GLProgram3D.__deleteShaders();
};
openfl__$internal_stage3D_opengl_GLProgram3D.flushUniform = function(uniform,gl) {
	var index = uniform.regIndex * 4;
	var _g = uniform.type;
	switch(_g) {
	case 35664:
		var uniform1 = uniform.location;
		var uniform2 = uniform.regCount;
		var size = uniform.regCount * 2;
		lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
		gl.uniform2fv(uniform1,uniform2,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(uniform.regDataPointer));
		break;
	case 35665:
		var uniform3 = uniform.location;
		var uniform4 = uniform.regCount;
		var size1 = uniform.regCount * 3;
		lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
		gl.uniform3fv(uniform3,uniform4,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(uniform.regDataPointer));
		break;
	case 35666:
		var uniform5 = uniform.location;
		var uniform6 = uniform.regCount;
		var size2 = uniform.regCount * 4;
		lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
		gl.uniform4fv(uniform5,uniform6,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(uniform.regDataPointer));
		break;
	case 35674:
		var uniform7 = uniform.location;
		var uniform8 = uniform.size;
		var size3 = uniform.size * 2 * 2;
		lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
		gl.uniformMatrix2fv(uniform7,uniform8,false,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(uniform.regDataPointer));
		break;
	case 35675:
		var uniform9 = uniform.location;
		var uniform10 = uniform.size;
		var size4 = uniform.size * 3 * 3;
		lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
		gl.uniformMatrix3fv(uniform9,uniform10,false,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(uniform.regDataPointer));
		break;
	case 35676:
		var uniform11 = uniform.location;
		var uniform12 = uniform.size;
		var size5 = uniform.size * 4 * 4;
		lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
		gl.uniformMatrix4fv(uniform11,uniform12,false,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(uniform.regDataPointer));
		break;
	default:
		var uniform13 = uniform.location;
		var uniform14 = uniform.regCount;
		var size6 = uniform.regCount * 4;
		lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
		gl.uniform4fv(uniform13,uniform14,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(uniform.regDataPointer));
	}
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLProgram3D.setPositionScale = function(program,renderSession,positionScale) {
	var gl = renderSession.gl;
	gl.uniform4fv(program.__positionScale.location,1,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(positionScale));
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLProgram3D.upload = function(program,renderSession,vertexProgram,fragmentProgram) {
	openfl__$internal_stage3D_opengl_GLProgram3D.program = program;
	openfl__$internal_stage3D_opengl_GLProgram3D.renderSession = renderSession;
	var samplerStates = [];
	var glslVertex = openfl__$internal_stage3D_AGALConverter.convertToGLSL(vertexProgram,null);
	var glslFragment = openfl__$internal_stage3D_AGALConverter.convertToGLSL(fragmentProgram,samplerStates);
	openfl__$internal_stage3D_opengl_GLProgram3D.__uploadFromGLSL(glslVertex,glslFragment);
	var _g1 = 0;
	var _g = samplerStates.length;
	while(_g1 < _g) {
		var i = _g1++;
		program.__samplerStates.data.set(i,samplerStates[i]);
	}
};
openfl__$internal_stage3D_opengl_GLProgram3D["use"] = function(program,renderSession) {
	var gl = renderSession.gl;
	gl.useProgram(program.__programID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	program.__vertexUniformMap.markAllDirty();
	program.__fragmentUniformMap.markAllDirty();
	var _g_head = program.__samplerUniforms.h;
	while(_g_head != null) {
		var val = _g_head.item;
		_g_head = _g_head.next;
		var sampler = val;
		if(sampler.regCount == 1) {
			gl.uniform1i(sampler.location,sampler.regIndex);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		} else {
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("!!! TODO: uniform location on webgl"));
		}
	}
	var _g_head1 = program.__alphaSamplerUniforms.h;
	while(_g_head1 != null) {
		var val1 = _g_head1.item;
		_g_head1 = _g_head1.next;
		var sampler1 = val1;
		if(sampler1.regCount == 1) {
			gl.uniform1i(sampler1.location,sampler1.regIndex);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		} else {
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError("!!! TODO: uniform location on webgl"));
		}
	}
};
openfl__$internal_stage3D_opengl_GLProgram3D.__buildUniformList = function() {
	var gl = openfl__$internal_stage3D_opengl_GLProgram3D.renderSession.gl;
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__uniforms.clear();
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__samplerUniforms.clear();
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__alphaSamplerUniforms.clear();
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__alphaSamplerEnabled = [];
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__samplerUsageMask = 0;
	var numActive = 0;
	numActive = gl.getProgramParameter(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID,gl.ACTIVE_UNIFORMS);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var vertexUniforms = new List();
	var fragmentUniforms = new List();
	var _g1 = 0;
	var _g = numActive;
	while(_g1 < _g) {
		var i = _g1++;
		var info = gl.getActiveUniform(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID,i);
		var name = info.name;
		var size = info.size;
		var uniformType = info.type;
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		var uniform = new openfl_display3D_Uniform(gl);
		uniform.name = name;
		uniform.size = size;
		uniform.type = uniformType;
		uniform.location = gl.getUniformLocation(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID,uniform.name);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		var indexBracket = uniform.name.indexOf("[");
		if(indexBracket >= 0) {
			uniform.name = uniform.name.substring(0,indexBracket);
		}
		var _g2 = uniform.type;
		switch(_g2) {
		case 35674:
			uniform.regCount = 2;
			break;
		case 35675:
			uniform.regCount = 3;
			break;
		case 35676:
			uniform.regCount = 4;
			break;
		default:
			uniform.regCount = 1;
		}
		uniform.regCount *= uniform.size;
		openfl__$internal_stage3D_opengl_GLProgram3D.program.__uniforms.add(uniform);
		if(uniform.name == "vcPositionScale") {
			openfl__$internal_stage3D_opengl_GLProgram3D.program.__positionScale = uniform;
		} else if(StringTools.startsWith(uniform.name,"vc")) {
			uniform.regIndex = Std.parseInt(uniform.name.substring(2));
			uniform.regData = openfl__$internal_stage3D_opengl_GLProgram3D.program.__context.__vertexConstants;
			vertexUniforms.add(uniform);
		} else if(StringTools.startsWith(uniform.name,"fc")) {
			uniform.regIndex = Std.parseInt(uniform.name.substring(2));
			uniform.regData = openfl__$internal_stage3D_opengl_GLProgram3D.program.__context.__fragmentConstants;
			fragmentUniforms.add(uniform);
		} else if(StringTools.startsWith(uniform.name,"sampler") && uniform.name.indexOf("alpha") == -1) {
			uniform.regIndex = Std.parseInt(uniform.name.substring(7));
			openfl__$internal_stage3D_opengl_GLProgram3D.program.__samplerUniforms.add(uniform);
			var _g4 = 0;
			var _g3 = uniform.regCount;
			while(_g4 < _g3) {
				var reg = _g4++;
				openfl__$internal_stage3D_opengl_GLProgram3D.program.__samplerUsageMask |= 1 << uniform.regIndex + reg;
			}
		} else if(StringTools.startsWith(uniform.name,"sampler") && StringTools.endsWith(uniform.name,"_alpha")) {
			var len = uniform.name.indexOf("_") - 7;
			uniform.regIndex = Std.parseInt(uniform.name.substring(7,7 + len)) + 4;
			openfl__$internal_stage3D_opengl_GLProgram3D.program.__alphaSamplerUniforms.add(uniform);
		} else if(StringTools.startsWith(uniform.name,"sampler") && StringTools.endsWith(uniform.name,"_alphaEnabled")) {
			uniform.regIndex = Std.parseInt(uniform.name.substring(7));
			openfl__$internal_stage3D_opengl_GLProgram3D.program.__alphaSamplerEnabled[uniform.regIndex] = uniform;
		}
		if(lime_utils_Log.level == 5) {
			haxe_Log.trace("" + i + " name:" + uniform.name + " type:" + uniform.type + " size:" + uniform.size + " location:" + uniform.location,{ fileName : "GLProgram3D.hx", lineNumber : 253, className : "openfl._internal.stage3D.opengl.GLProgram3D", methodName : "__buildUniformList"});
		}
	}
	var tmp = Lambda.array(vertexUniforms);
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexUniformMap = new openfl_display3D_UniformMap(tmp);
	var tmp1 = Lambda.array(fragmentUniforms);
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentUniformMap = new openfl_display3D_UniformMap(tmp1);
};
openfl__$internal_stage3D_opengl_GLProgram3D.__deleteShaders = function() {
	var gl = openfl__$internal_stage3D_opengl_GLProgram3D.renderSession.gl;
	if(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID != null) {
		openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID = null;
	}
	if(openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID != null) {
		gl.deleteShader(openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID = null;
	}
	if(openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID != null) {
		gl.deleteShader(openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID = null;
	}
};
openfl__$internal_stage3D_opengl_GLProgram3D.__getUniformRegisters = function(uniform,index,size) {
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(uniform.regDataPointer,null,uniform.regData,null,index * 4);
	return uniform.regDataPointer;
};
openfl__$internal_stage3D_opengl_GLProgram3D.__uploadFromGLSL = function(vertexShaderSource,fragmentShaderSource) {
	var gl = openfl__$internal_stage3D_opengl_GLProgram3D.renderSession.gl;
	openfl__$internal_stage3D_opengl_GLProgram3D.__deleteShaders();
	if(lime_utils_Log.level == 5) {
		lime_utils_Log.info(vertexShaderSource,{ fileName : "GLProgram3D.hx", lineNumber : 328, className : "openfl._internal.stage3D.opengl.GLProgram3D", methodName : "__uploadFromGLSL"});
		lime_utils_Log.info(fragmentShaderSource,{ fileName : "GLProgram3D.hx", lineNumber : 329, className : "openfl._internal.stage3D.opengl.GLProgram3D", methodName : "__uploadFromGLSL"});
	}
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexSource = vertexShaderSource;
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentSource = fragmentShaderSource;
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID = gl.createShader(gl.VERTEX_SHADER);
	gl.shaderSource(openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID,vertexShaderSource);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.compileShader(openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var shaderCompiled = gl.getShaderParameter(openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID,gl.COMPILE_STATUS);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	if(shaderCompiled == 0) {
		var vertexInfoLog = gl.getShaderInfoLog(openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID);
		if(vertexInfoLog != null && vertexInfoLog.length != 0) {
			haxe_Log.trace("vertex: " + vertexInfoLog,{ fileName : "GLProgram3D.hx", lineNumber : 353, className : "openfl._internal.stage3D.opengl.GLProgram3D", methodName : "__uploadFromGLSL"});
		}
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Error compiling vertex shader: " + vertexInfoLog));
	}
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID = gl.createShader(gl.FRAGMENT_SHADER);
	gl.shaderSource(openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID,fragmentShaderSource);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.compileShader(openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var fragmentCompiled = gl.getShaderParameter(openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID,gl.COMPILE_STATUS);
	if(fragmentCompiled == 0) {
		var fragmentInfoLog = gl.getShaderInfoLog(openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID);
		if(fragmentInfoLog != null && fragmentInfoLog.length != 0) {
			haxe_Log.trace("fragment: " + fragmentInfoLog,{ fileName : "GLProgram3D.hx", lineNumber : 376, className : "openfl._internal.stage3D.opengl.GLProgram3D", methodName : "__uploadFromGLSL"});
		}
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Error compiling fragment shader: " + fragmentInfoLog));
	}
	openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID = gl.createProgram();
	gl.attachShader(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID,openfl__$internal_stage3D_opengl_GLProgram3D.program.__vertexShaderID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.attachShader(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID,openfl__$internal_stage3D_opengl_GLProgram3D.program.__fragmentShaderID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var _g = 0;
	while(_g < 16) {
		var i = _g++;
		var name = "va" + i;
		if(vertexShaderSource.indexOf(" " + name) != -1) {
			gl.bindAttribLocation(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID,i,name);
		}
	}
	gl.linkProgram(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID);
	var infoLog = gl.getProgramInfoLog(openfl__$internal_stage3D_opengl_GLProgram3D.program.__programID);
	if(infoLog != null && infoLog.length != 0 && StringTools.trim(infoLog) != "") {
		haxe_Log.trace("program: " + infoLog,{ fileName : "GLProgram3D.hx", lineNumber : 409, className : "openfl._internal.stage3D.opengl.GLProgram3D", methodName : "__uploadFromGLSL"});
	}
	openfl__$internal_stage3D_opengl_GLProgram3D.__buildUniformList();
};
var openfl__$internal_stage3D_opengl_GLRectangleTexture = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLRectangleTexture"] = openfl__$internal_stage3D_opengl_GLRectangleTexture;
openfl__$internal_stage3D_opengl_GLRectangleTexture.__name__ = ["openfl","_internal","stage3D","opengl","GLRectangleTexture"];
openfl__$internal_stage3D_opengl_GLRectangleTexture.create = function(rectangleTexture,renderSession) {
	var gl = renderSession.gl;
	rectangleTexture.__textureTarget = gl.TEXTURE_2D;
	openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromTypedArray(rectangleTexture,renderSession,null);
};
openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromBitmapData = function(rectangleTexture,renderSession,source) {
	if(source == null) {
		return;
	}
	var image = rectangleTexture.__getImage(source);
	if(image == null) {
		return;
	}
	openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromTypedArray(rectangleTexture,renderSession,image.get_data());
};
openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromByteArray = function(rectangleTexture,renderSession,data,byteArrayOffset) {
	if(byteArrayOffset == 0) {
		openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromTypedArray(rectangleTexture,renderSession,data.b);
		return;
	}
	var buffer = openfl_utils__$ByteArray_ByteArray_$Impl_$.toArrayBuffer(data);
	var this1;
	if(buffer != null) {
		this1 = new Uint8Array(buffer,byteArrayOffset);
	} else {
		this1 = null;
	}
	openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromTypedArray(rectangleTexture,renderSession,this1);
};
openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromTypedArray = function(rectangleTexture,renderSession,data) {
	var gl = renderSession.gl;
	gl.bindTexture(rectangleTexture.__textureTarget,rectangleTexture.__textureID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.texImage2D(rectangleTexture.__textureTarget,0,rectangleTexture.__internalFormat,rectangleTexture.__width,rectangleTexture.__height,0,rectangleTexture.__format,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data));
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.bindTexture(rectangleTexture.__textureTarget,null);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLRectangleTexture.setSamplerState = function(rectangleTexture,renderSession,state) {
	if(!state.equals(rectangleTexture.__samplerState)) {
		var gl = renderSession.gl;
		if(state.maxAniso != 0.0) {
			gl.texParameterf(gl.TEXTURE_2D,openfl_display3D_Context3D.TEXTURE_MAX_ANISOTROPY_EXT,state.maxAniso);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
	}
	openfl__$internal_stage3D_opengl_GLTextureBase.setSamplerState(rectangleTexture,renderSession,state);
};
var openfl__$internal_stage3D_opengl_GLStage3D = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLStage3D"] = openfl__$internal_stage3D_opengl_GLStage3D;
openfl__$internal_stage3D_opengl_GLStage3D.__name__ = ["openfl","_internal","stage3D","opengl","GLStage3D"];
openfl__$internal_stage3D_opengl_GLStage3D.render = function(stage3D,renderSession) {
	if(stage3D.context3D != null) {
		renderSession.blendModeManager.setBlendMode(null);
		if(renderSession.shaderManager.currentShader != null) {
			renderSession.shaderManager.setShader(null);
			if(stage3D.context3D.__program != null) {
				stage3D.context3D.__program.__use();
			}
		}
	}
	if(openfl__$internal_stage3D_GLUtils.debug) {
		renderSession.gl.getError();
	}
};
var openfl__$internal_stage3D_opengl_GLTexture = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLTexture"] = openfl__$internal_stage3D_opengl_GLTexture;
openfl__$internal_stage3D_opengl_GLTexture.__name__ = ["openfl","_internal","stage3D","opengl","GLTexture"];
openfl__$internal_stage3D_opengl_GLTexture.create = function(texture,renderSession) {
	var gl = renderSession.gl;
	texture.__textureTarget = gl.TEXTURE_2D;
	gl.bindTexture(texture.__textureTarget,texture.__textureID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.texImage2D(texture.__textureTarget,0,texture.__internalFormat,texture.__width,texture.__height,0,texture.__format,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.bindTexture(texture.__textureTarget,null);
	openfl__$internal_stage3D_opengl_GLTexture.uploadFromTypedArray(texture,renderSession,null);
};
openfl__$internal_stage3D_opengl_GLTexture.uploadCompressedTextureFromByteArray = function(texture,renderSession,data,byteArrayOffset) {
	var reader = new openfl__$internal_stage3D_atf_ATFReader(data,byteArrayOffset);
	var alpha = reader.readHeader(texture.__width,texture.__height,false);
	var gl = renderSession.gl;
	gl.bindTexture(texture.__textureTarget,texture.__textureID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	var hasTexture = false;
	reader.readTextures(function(target,level,gpuFormat,width,height,blockLength,bytes) {
		var format = openfl__$internal_stage3D_opengl_GLTextureBase.__compressedTextureFormats.toTextureFormat(alpha,gpuFormat);
		if(format == 0) {
			return;
		}
		hasTexture = true;
		texture.__format = format;
		texture.__internalFormat = format;
		if(alpha && gpuFormat == 2) {
			var size = blockLength / 2 | 0;
			gl.compressedTexImage2D(texture.__textureTarget,level,texture.__internalFormat,width,height,0,size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytes(bytes));
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			var alphaTexture = new openfl_display3D_textures_Texture(texture.__context,texture.__width,texture.__height,3,texture.__optimizeForRenderToTexture,texture.__streamingLevels);
			alphaTexture.__format = format;
			alphaTexture.__internalFormat = format;
			gl.bindTexture(alphaTexture.__textureTarget,alphaTexture.__textureID);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			var alphaTexture1 = alphaTexture.__textureTarget;
			var alphaTexture2 = alphaTexture.__internalFormat;
			var this1 = new lime_utils_BytePointerData(bytes,size);
			gl.compressedTexImage2D(alphaTexture1,level,alphaTexture2,width,height,0,size,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytesPointer(this1));
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			texture.__alphaTexture = alphaTexture;
		} else {
			gl.compressedTexImage2D(texture.__textureTarget,level,texture.__internalFormat,width,height,0,blockLength,lime_utils__$DataPointer_DataPointer_$Impl_$.fromBytes(bytes));
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
	});
	if(!hasTexture) {
		var elements = texture.__width * texture.__height * 4;
		var this2;
		if(elements != null) {
			this2 = new Uint8Array(elements);
		} else {
			this2 = null;
		}
		var data1 = this2;
		gl.texImage2D(texture.__textureTarget,0,texture.__internalFormat,texture.__width,texture.__height,0,texture.__format,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data1));
		openfl__$internal_stage3D_GLUtils.CheckGLError();
	}
	gl.bindTexture(texture.__textureTarget,null);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLTexture.uploadFromBitmapData = function(texture,renderSession,source,miplevel,generateMipmap) {
	if(source == null) {
		return;
	}
	var width = texture.__width >> miplevel;
	var height = texture.__height >> miplevel;
	if(width == 0 && height == 0) {
		return;
	}
	if(width == 0) {
		width = 1;
	}
	if(height == 0) {
		height = 1;
	}
	if(source.width != width || source.height != height) {
		var copy = new openfl_display_BitmapData(width,height,true,0);
		copy.draw(source);
		source = copy;
	}
	var image = texture.__getImage(source);
	openfl__$internal_stage3D_opengl_GLTexture.uploadFromTypedArray(texture,renderSession,image.get_data(),miplevel);
};
openfl__$internal_stage3D_opengl_GLTexture.uploadFromByteArray = function(texture,renderSession,data,byteArrayOffset,miplevel) {
	if(miplevel == null) {
		miplevel = 0;
	}
	if(byteArrayOffset == 0) {
		openfl__$internal_stage3D_opengl_GLTexture.uploadFromTypedArray(texture,renderSession,data.b,miplevel);
		return;
	}
	var buffer = openfl_utils__$ByteArray_ByteArray_$Impl_$.toArrayBuffer(data);
	var this1;
	if(buffer != null) {
		this1 = new Uint8Array(buffer,byteArrayOffset);
	} else {
		this1 = null;
	}
	openfl__$internal_stage3D_opengl_GLTexture.uploadFromTypedArray(texture,renderSession,this1,miplevel);
};
openfl__$internal_stage3D_opengl_GLTexture.uploadFromTypedArray = function(texture,renderSession,data,miplevel) {
	if(miplevel == null) {
		miplevel = 0;
	}
	if(data == null) {
		return;
	}
	var gl = renderSession.gl;
	var width = texture.__width >> miplevel;
	var height = texture.__height >> miplevel;
	if(width == 0 && height == 0) {
		return;
	}
	if(width == 0) {
		width = 1;
	}
	if(height == 0) {
		height = 1;
	}
	gl.bindTexture(texture.__textureTarget,texture.__textureID);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.texImage2D(texture.__textureTarget,miplevel,texture.__internalFormat,width,height,0,texture.__format,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data));
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.bindTexture(texture.__textureTarget,null);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLTexture.setSamplerState = function(texture,renderSession,state) {
	if(!state.equals(texture.__samplerState)) {
		var gl = renderSession.gl;
		if(state.minFilter != gl.NEAREST && state.minFilter != gl.LINEAR && !state.mipmapGenerated) {
			gl.generateMipmap(gl.TEXTURE_2D);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
			state.mipmapGenerated = true;
		}
		if(state.maxAniso != 0.0) {
			gl.texParameterf(gl.TEXTURE_2D,openfl_display3D_Context3D.TEXTURE_MAX_ANISOTROPY_EXT,state.maxAniso);
			openfl__$internal_stage3D_GLUtils.CheckGLError();
		}
	}
	openfl__$internal_stage3D_opengl_GLTextureBase.setSamplerState(texture,renderSession,state);
};
var openfl__$internal_stage3D_opengl_GLTextureBase = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLTextureBase"] = openfl__$internal_stage3D_opengl_GLTextureBase;
openfl__$internal_stage3D_opengl_GLTextureBase.__name__ = ["openfl","_internal","stage3D","opengl","GLTextureBase"];
openfl__$internal_stage3D_opengl_GLTextureBase.create = function(textureBase,renderSession) {
	var gl = renderSession.gl;
	textureBase.__textureID = gl.createTexture();
	textureBase.__textureContext = gl;
	if(openfl__$internal_stage3D_opengl_GLTextureBase.__supportsBGRA == null) {
		openfl__$internal_stage3D_opengl_GLTextureBase.__textureInternalFormat = gl.RGBA;
		var bgraExtension = null;
		bgraExtension = gl.getExtension("EXT_bgra");
		if(bgraExtension == null) {
			bgraExtension = gl.getExtension("EXT_texture_format_BGRA8888");
		}
		if(bgraExtension == null) {
			bgraExtension = gl.getExtension("APPLE_texture_format_BGRA8888");
		}
		if(bgraExtension != null) {
			openfl__$internal_stage3D_opengl_GLTextureBase.__supportsBGRA = true;
			openfl__$internal_stage3D_opengl_GLTextureBase.__textureFormat = bgraExtension.BGRA_EXT;
			if(gl.type == lime_graphics_opengl_GLContextType.GLES) {
				openfl__$internal_stage3D_opengl_GLTextureBase.__textureInternalFormat = bgraExtension.BGRA_EXT;
			}
		} else {
			openfl__$internal_stage3D_opengl_GLTextureBase.__supportsBGRA = false;
			openfl__$internal_stage3D_opengl_GLTextureBase.__textureFormat = gl.RGBA;
		}
	}
	if(openfl__$internal_stage3D_opengl_GLTextureBase.__compressedTextureFormats == null) {
		openfl__$internal_stage3D_opengl_GLTextureBase.__compressedTextureFormats = new openfl__$internal_stage3D_GLCompressedTextureFormats(gl);
	}
	textureBase.__internalFormat = openfl__$internal_stage3D_opengl_GLTextureBase.__textureInternalFormat;
	textureBase.__format = openfl__$internal_stage3D_opengl_GLTextureBase.__textureFormat;
};
openfl__$internal_stage3D_opengl_GLTextureBase.dispose = function(textureBase,renderSession) {
	var gl = renderSession.gl;
	if(textureBase.__alphaTexture != null) {
		textureBase.__alphaTexture.dispose();
	}
	gl.deleteTexture(textureBase.__textureID);
};
openfl__$internal_stage3D_opengl_GLTextureBase.getImage = function(textureBase,renderSession,bitmapData) {
	var image = bitmapData.image;
	if(!bitmapData.__isValid || image == null) {
		return null;
	}
	if(!image.get_premultiplied() && image.get_transparent()) {
		image = image.clone();
		image.set_premultiplied(true);
	}
	return image;
};
openfl__$internal_stage3D_opengl_GLTextureBase.setSamplerState = function(textureBase,renderSession,state) {
	if(!state.equals(textureBase.__samplerState)) {
		var gl = renderSession.gl;
		gl.bindTexture(textureBase.__textureTarget,textureBase.__textureID);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		gl.texParameteri(textureBase.__textureTarget,gl.TEXTURE_MIN_FILTER,state.minFilter);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		gl.texParameteri(textureBase.__textureTarget,gl.TEXTURE_MAG_FILTER,state.magFilter);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		gl.texParameteri(textureBase.__textureTarget,gl.TEXTURE_WRAP_S,state.wrapModeS);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		gl.texParameteri(textureBase.__textureTarget,gl.TEXTURE_WRAP_T,state.wrapModeT);
		openfl__$internal_stage3D_GLUtils.CheckGLError();
		var tmp = state.lodBias != 0.0;
		textureBase.__samplerState = state;
		textureBase.__samplerState.__samplerDirty = false;
	}
};
var openfl__$internal_stage3D_opengl_GLVertexBuffer3D = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLVertexBuffer3D"] = openfl__$internal_stage3D_opengl_GLVertexBuffer3D;
openfl__$internal_stage3D_opengl_GLVertexBuffer3D.__name__ = ["openfl","_internal","stage3D","opengl","GLVertexBuffer3D"];
openfl__$internal_stage3D_opengl_GLVertexBuffer3D.create = function(vertexBuffer,renderSession,bufferUsage) {
	var gl = renderSession.gl;
	vertexBuffer.__id = gl.createBuffer();
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	vertexBuffer.__stride = vertexBuffer.__vertexSize * 4;
	vertexBuffer.__usage = bufferUsage == 0 ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;
};
openfl__$internal_stage3D_opengl_GLVertexBuffer3D.dispose = function(vertexBuffer,renderSession) {
	var gl = renderSession.gl;
	gl.deleteBuffer(vertexBuffer.__id);
};
openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromByteArray = function(vertexBuffer,renderSession,data,byteArrayOffset,startVertex,numVertices) {
	var offset = byteArrayOffset + startVertex * vertexBuffer.__stride;
	var length = numVertices * vertexBuffer.__vertexSize;
	var buffer = openfl_utils__$ByteArray_ByteArray_$Impl_$.toArrayBuffer(data);
	var this1;
	if(buffer != null) {
		if(length == null) {
			this1 = new Float32Array(buffer,offset);
		} else {
			this1 = new Float32Array(buffer,offset,length);
		}
	} else {
		this1 = null;
	}
	openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromTypedArray(vertexBuffer,renderSession,this1);
};
openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromTypedArray = function(vertexBuffer,renderSession,data) {
	if(data == null) {
		return;
	}
	var gl = renderSession.gl;
	gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer.__id);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
	gl.bufferData(gl.ARRAY_BUFFER,data.byteLength,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(data),vertexBuffer.__usage);
	openfl__$internal_stage3D_GLUtils.CheckGLError();
};
openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromVector = function(vertexBuffer,renderSession,data,startVertex,numVertices) {
	if(data == null) {
		return;
	}
	var gl = renderSession.gl;
	var start = startVertex * vertexBuffer.__vertexSize;
	var count = numVertices * vertexBuffer.__vertexSize;
	var length = start + count;
	var existingFloat32Array = vertexBuffer.__tempFloat32Array;
	if(vertexBuffer.__tempFloat32Array == null || vertexBuffer.__tempFloat32Array.length < count) {
		var this1;
		if(count != null) {
			this1 = new Float32Array(count);
		} else {
			this1 = null;
		}
		vertexBuffer.__tempFloat32Array = this1;
		if(existingFloat32Array != null) {
			vertexBuffer.__tempFloat32Array.set(existingFloat32Array);
		}
	}
	var _g1 = start;
	var _g = length;
	while(_g1 < _g) {
		var i = _g1++;
		vertexBuffer.__tempFloat32Array[i - start] = data.data.get(i);
	}
	openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromTypedArray(vertexBuffer,renderSession,vertexBuffer.__tempFloat32Array);
};
var openfl__$internal_stage3D_opengl_GLVideoTexture = function() { };
$hxClasses["openfl._internal.stage3D.opengl.GLVideoTexture"] = openfl__$internal_stage3D_opengl_GLVideoTexture;
openfl__$internal_stage3D_opengl_GLVideoTexture.__name__ = ["openfl","_internal","stage3D","opengl","GLVideoTexture"];
openfl__$internal_stage3D_opengl_GLVideoTexture.create = function(videoTexture,renderSession) {
	var gl = renderSession.gl;
	videoTexture.__textureTarget = gl.TEXTURE_2D;
};
openfl__$internal_stage3D_opengl_GLVideoTexture.getTexture = function(videoTexture,renderSession) {
	return videoTexture.__textureID;
};
var openfl__$internal_swf_FilterType = $hxClasses["openfl._internal.swf.FilterType"] = { __ename__ : ["openfl","_internal","swf","FilterType"], __constructs__ : ["BlurFilter","ColorMatrixFilter","DropShadowFilter","GlowFilter"] };
openfl__$internal_swf_FilterType.BlurFilter = function(blurX,blurY,quality) { var $x = ["BlurFilter",0,blurX,blurY,quality]; $x.__enum__ = openfl__$internal_swf_FilterType; $x.toString = $estr; return $x; };
openfl__$internal_swf_FilterType.ColorMatrixFilter = function(matrix) { var $x = ["ColorMatrixFilter",1,matrix]; $x.__enum__ = openfl__$internal_swf_FilterType; $x.toString = $estr; return $x; };
openfl__$internal_swf_FilterType.DropShadowFilter = function(distance,angle,color,alpha,blurX,blurY,strength,quality,inner,knockout,hideObject) { var $x = ["DropShadowFilter",2,distance,angle,color,alpha,blurX,blurY,strength,quality,inner,knockout,hideObject]; $x.__enum__ = openfl__$internal_swf_FilterType; $x.toString = $estr; return $x; };
openfl__$internal_swf_FilterType.GlowFilter = function(color,alpha,blurX,blurY,strength,quality,inner,knockout) { var $x = ["GlowFilter",3,color,alpha,blurX,blurY,strength,quality,inner,knockout]; $x.__enum__ = openfl__$internal_swf_FilterType; $x.toString = $estr; return $x; };
var openfl_utils_AssetLibrary = function() {
	lime_utils_AssetLibrary.call(this);
};
$hxClasses["openfl.utils.AssetLibrary"] = openfl_utils_AssetLibrary;
openfl_utils_AssetLibrary.__name__ = ["openfl","utils","AssetLibrary"];
openfl_utils_AssetLibrary.fromBytes = function(bytes,rootPath) {
	return openfl_utils_AssetLibrary.fromManifest(lime_utils_AssetManifest.fromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes),rootPath));
};
openfl_utils_AssetLibrary.fromFile = function(path,rootPath) {
	return openfl_utils_AssetLibrary.fromManifest(lime_utils_AssetManifest.fromFile(path,rootPath));
};
openfl_utils_AssetLibrary.fromManifest = function(manifest) {
	var library = lime_utils_AssetLibrary.fromManifest(manifest);
	if(library != null) {
		if(js_Boot.__instanceof(library,openfl_utils_AssetLibrary)) {
			return library;
		} else {
			var _library = new openfl_utils_AssetLibrary();
			_library.__proxy = library;
			return _library;
		}
	} else {
		return null;
	}
};
openfl_utils_AssetLibrary.loadFromBytes = function(bytes,rootPath) {
	return lime_utils_AssetManifest.loadFromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes),rootPath).then(function(manifest) {
		return openfl_utils_AssetLibrary.loadFromManifest(manifest);
	});
};
openfl_utils_AssetLibrary.loadFromFile = function(path,rootPath) {
	return lime_utils_AssetManifest.loadFromFile(path,rootPath).then(function(manifest) {
		return openfl_utils_AssetLibrary.loadFromManifest(manifest);
	});
};
openfl_utils_AssetLibrary.loadFromManifest = function(manifest) {
	var library = openfl_utils_AssetLibrary.fromManifest(manifest);
	if(library != null) {
		return library.load().then(function(library1) {
			return lime_app_Future.withValue(library1);
		});
	} else {
		return lime_app_Future.withError("Could not load asset manifest");
	}
};
openfl_utils_AssetLibrary.__super__ = lime_utils_AssetLibrary;
openfl_utils_AssetLibrary.prototype = $extend(lime_utils_AssetLibrary.prototype,{
	__proxy: null
	,exists: function(id,type) {
		if(this.__proxy != null) {
			return this.__proxy.exists(id,type);
		} else {
			return lime_utils_AssetLibrary.prototype.exists.call(this,id,type);
		}
	}
	,getAsset: function(id,type) {
		if(this.__proxy != null) {
			return this.__proxy.getAsset(id,type);
		} else {
			return lime_utils_AssetLibrary.prototype.getAsset.call(this,id,type);
		}
	}
	,getAudioBuffer: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.getAudioBuffer(id);
		} else {
			return lime_utils_AssetLibrary.prototype.getAudioBuffer.call(this,id);
		}
	}
	,getBytes: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.getBytes(id);
		} else {
			return lime_utils_AssetLibrary.prototype.getBytes.call(this,id);
		}
	}
	,getFont: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.getFont(id);
		} else {
			return lime_utils_AssetLibrary.prototype.getFont.call(this,id);
		}
	}
	,getImage: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.getImage(id);
		} else {
			return lime_utils_AssetLibrary.prototype.getImage.call(this,id);
		}
	}
	,getMovieClip: function(id) {
		return null;
	}
	,getPath: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.getPath(id);
		} else {
			return lime_utils_AssetLibrary.prototype.getPath.call(this,id);
		}
	}
	,getText: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.getText(id);
		} else {
			return lime_utils_AssetLibrary.prototype.getText.call(this,id);
		}
	}
	,isLocal: function(id,type) {
		if(this.__proxy != null) {
			return this.__proxy.isLocal(id,type);
		} else {
			return lime_utils_AssetLibrary.prototype.isLocal.call(this,id,type);
		}
	}
	,list: function(type) {
		if(this.__proxy != null) {
			return this.__proxy.list(type);
		} else {
			return lime_utils_AssetLibrary.prototype.list.call(this,type);
		}
	}
	,loadAsset: function(id,type) {
		if(this.__proxy != null) {
			return this.__proxy.loadAsset(id,type);
		} else {
			return lime_utils_AssetLibrary.prototype.loadAsset.call(this,id,type);
		}
	}
	,load: function() {
		if(this.__proxy != null) {
			return this.__proxy.load();
		} else {
			return lime_utils_AssetLibrary.prototype.load.call(this);
		}
	}
	,loadAudioBuffer: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.loadAudioBuffer(id);
		} else {
			return lime_utils_AssetLibrary.prototype.loadAudioBuffer.call(this,id);
		}
	}
	,loadBytes: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.loadBytes(id);
		} else {
			return lime_utils_AssetLibrary.prototype.loadBytes.call(this,id);
		}
	}
	,loadFont: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.loadFont(id);
		} else {
			return lime_utils_AssetLibrary.prototype.loadFont.call(this,id);
		}
	}
	,loadImage: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.loadImage(id);
		} else {
			return lime_utils_AssetLibrary.prototype.loadImage.call(this,id);
		}
	}
	,loadMovieClip: function(id) {
		var _gthis = this;
		return new lime_app_Future(function() {
			return _gthis.getMovieClip(id);
		});
	}
	,loadText: function(id) {
		if(this.__proxy != null) {
			return this.__proxy.loadText(id);
		} else {
			return lime_utils_AssetLibrary.prototype.loadText.call(this,id);
		}
	}
	,unload: function() {
		if(this.__proxy != null) {
			this.__proxy.unload();
			return;
		} else {
			lime_utils_AssetLibrary.prototype.unload.call(this);
			return;
		}
	}
	,__class__: openfl_utils_AssetLibrary
});
var openfl__$internal_swf_SWFLibrary = function(id) {
	openfl_utils_AssetLibrary.call(this);
	this.id = id;
};
$hxClasses["openfl._internal.swf.SWFLibrary"] = openfl__$internal_swf_SWFLibrary;
openfl__$internal_swf_SWFLibrary.__name__ = ["openfl","_internal","swf","SWFLibrary"];
openfl__$internal_swf_SWFLibrary.__super__ = openfl_utils_AssetLibrary;
openfl__$internal_swf_SWFLibrary.prototype = $extend(openfl_utils_AssetLibrary.prototype,{
	applicationDomain: null
	,context: null
	,id: null
	,loader: null
	,exists: function(id,type) {
		if(id == "" && type == "MOVIE_CLIP") {
			return true;
		}
		if(type == "IMAGE" || type == "MOVIE_CLIP") {
			return this.applicationDomain.hasDefinition(id);
		}
		return false;
	}
	,getImage: function(id) {
		return lime_graphics_Image.fromBitmapData(Type.createEmptyInstance(this.applicationDomain.getDefinition(id)));
	}
	,getMovieClip: function(id) {
		if(id == "") {
			return this.loader.content;
		} else {
			return Type.createInstance(this.applicationDomain.getDefinition(id),[]);
		}
	}
	,isLocal: function(id,type) {
		return true;
	}
	,load: function() {
		var _gthis = this;
		var promise = new lime_app_Promise();
		var bytes = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(haxe_Resource.getBytes("swf:" + this.id));
		var tmp;
		if(bytes == null) {
			var key = this.id;
			var _this = this.classTypes;
			if(__map_reserved[key] != null) {
				tmp = _this.existsReserved(key);
			} else {
				tmp = _this.h.hasOwnProperty(key);
			}
		} else {
			tmp = false;
		}
		if(tmp) {
			var key1 = this.id;
			var _this1 = this.classTypes;
			bytes = js_Boot.__cast(Type.createInstance(__map_reserved[key1] != null ? _this1.getReserved(key1) : _this1.h[key1],[]) , openfl_utils_ByteArrayData);
		}
		var tmp1;
		if(bytes == null) {
			var key2 = this.id;
			var _this2 = this.paths;
			if(__map_reserved[key2] != null) {
				tmp1 = _this2.existsReserved(key2);
			} else {
				tmp1 = _this2.h.hasOwnProperty(key2);
			}
		} else {
			tmp1 = true;
		}
		if(tmp1) {
			this.context = new openfl_system_LoaderContext(false,openfl_system_ApplicationDomain.currentDomain,null);
			this.context.allowCodeImport = true;
			this.loader = new openfl_display_Loader();
			this.loader.contentLoaderInfo.addEventListener("ioError",function(event) {
				promise.error(event.text);
			});
			this.loader.contentLoaderInfo.addEventListener("progress",function(event1) {
				promise.progress(event1.bytesLoaded,event1.bytesTotal);
			});
			this.loader.contentLoaderInfo.addEventListener("complete",function(_) {
				_gthis.applicationDomain = _gthis.loader.contentLoaderInfo.applicationDomain;
				promise.complete(_gthis);
			});
			if(bytes != null) {
				this.loader.loadBytes(bytes,this.context);
			} else {
				var key3 = this.id;
				var _this3 = this.paths;
				this.loader.load(new openfl_net_URLRequest(__map_reserved[key3] != null ? _this3.getReserved(key3) : _this3.h[key3]),this.context);
			}
		} else {
			this.applicationDomain = openfl_system_ApplicationDomain.currentDomain;
			promise.complete(this);
		}
		return promise.future;
	}
	,__class__: openfl__$internal_swf_SWFLibrary
});
var openfl__$internal_swf_SWFLite = function() {
	this.symbols = new haxe_ds_IntMap();
};
$hxClasses["openfl._internal.swf.SWFLite"] = openfl__$internal_swf_SWFLite;
openfl__$internal_swf_SWFLite.__name__ = ["openfl","_internal","swf","SWFLite"];
openfl__$internal_swf_SWFLite.resolveClass = function(name) {
	var value = Type.resolveClass(name);
	if(value == null) {
		value = Type.resolveClass(StringTools.replace(name,"openfl._legacy","openfl"));
	}
	if(value == null) {
		value = Type.resolveClass(StringTools.replace(name,"openfl._v2","openfl"));
	}
	return value;
};
openfl__$internal_swf_SWFLite.resolveEnum = function(name) {
	var value = Type.resolveEnum(name);
	if(value == null) {
		value = Type.resolveEnum(StringTools.replace(name,"openfl._legacy","openfl"));
	}
	if(value == null) {
		value = Type.resolveEnum(StringTools.replace(name,"openfl._v2","openfl"));
	}
	return value;
};
openfl__$internal_swf_SWFLite.unserialize = function(data) {
	if(data == null) {
		return null;
	}
	var unserializer = new haxe_Unserializer(data);
	unserializer.setResolver({ resolveClass : openfl__$internal_swf_SWFLite.resolveClass, resolveEnum : openfl__$internal_swf_SWFLite.resolveEnum});
	return unserializer.unserialize();
};
openfl__$internal_swf_SWFLite.prototype = {
	frameRate: null
	,library: null
	,root: null
	,symbols: null
	,createButton: function(className) {
		return null;
	}
	,createMovieClip: function(className) {
		if(className == null) {
			className = "";
		}
		if(className == "") {
			return this.root.__createObject(this);
		} else {
			var symbol = this.symbols.iterator();
			while(symbol.hasNext()) {
				var symbol1 = symbol.next();
				if(symbol1.className == className) {
					if(js_Boot.__instanceof(symbol1,openfl__$internal_symbols_SpriteSymbol)) {
						return (js_Boot.__cast(symbol1 , openfl__$internal_symbols_SpriteSymbol)).__createObject(this);
					}
				}
			}
		}
		return null;
	}
	,getBitmapData: function(className) {
		var symbol = this.symbols.iterator();
		while(symbol.hasNext()) {
			var symbol1 = symbol.next();
			if(symbol1.className == className) {
				if(js_Boot.__instanceof(symbol1,openfl__$internal_symbols_BitmapSymbol)) {
					var bitmap = symbol1;
					return openfl_utils_Assets.getBitmapData(bitmap.path);
				}
			}
		}
		return null;
	}
	,hasSymbol: function(className) {
		var symbol = this.symbols.iterator();
		while(symbol.hasNext()) {
			var symbol1 = symbol.next();
			if(symbol1.className == className) {
				return true;
			}
		}
		return false;
	}
	,serialize: function() {
		var serializer = new haxe_Serializer();
		serializer.serialize(this);
		return serializer.toString();
	}
	,__class__: openfl__$internal_swf_SWFLite
};
var openfl__$internal_swf_SWFLiteLibrary = function(id) {
	openfl_utils_AssetLibrary.call(this);
	this.id = id;
	this.alphaCheck = new haxe_ds_StringMap();
	this.imageClassNames = new haxe_ds_StringMap();
	this.rootPath = "";
};
$hxClasses["openfl._internal.swf.SWFLiteLibrary"] = openfl__$internal_swf_SWFLiteLibrary;
openfl__$internal_swf_SWFLiteLibrary.__name__ = ["openfl","_internal","swf","SWFLiteLibrary"];
openfl__$internal_swf_SWFLiteLibrary.__super__ = openfl_utils_AssetLibrary;
openfl__$internal_swf_SWFLiteLibrary.prototype = $extend(openfl_utils_AssetLibrary.prototype,{
	alphaCheck: null
	,id: null
	,imageClassNames: null
	,preloading: null
	,rootPath: null
	,swf: null
	,exists: function(id,type) {
		if(this.swf == null) {
			return false;
		}
		if(id == "" && type == "MOVIE_CLIP") {
			return true;
		}
		if(type == "IMAGE" || type == "MOVIE_CLIP") {
			if(this.swf != null) {
				return this.swf.hasSymbol(id);
			} else {
				return false;
			}
		}
		return false;
	}
	,getImage: function(id) {
		var _this = this.imageClassNames;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.imageClassNames;
			if(__map_reserved[id] != null) {
				id = _this1.getReserved(id);
			} else {
				id = _this1.h[id];
			}
		}
		var _this2 = this.alphaCheck;
		if(!(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id))) {
			var symbol = this.swf.symbols.iterator();
			while(symbol.hasNext()) {
				var symbol1 = symbol.next();
				if(js_Boot.__instanceof(symbol1,openfl__$internal_symbols_BitmapSymbol) && (js_Boot.__cast(symbol1 , openfl__$internal_symbols_BitmapSymbol)).path == id) {
					var bitmapSymbol = symbol1;
					if(bitmapSymbol.alpha != null) {
						var image = openfl_utils_AssetLibrary.prototype.getImage.call(this,id);
						var alpha = openfl_utils_AssetLibrary.prototype.getImage.call(this,bitmapSymbol.alpha);
						this.__copyChannel(image,alpha);
						var _this3 = this.cachedImages;
						if(__map_reserved[id] != null) {
							_this3.setReserved(id,image);
						} else {
							_this3.h[id] = image;
						}
						this.cachedImages.remove(bitmapSymbol.alpha);
						var _this4 = this.alphaCheck;
						if(__map_reserved[id] != null) {
							_this4.setReserved(id,true);
						} else {
							_this4.h[id] = true;
						}
						return image;
					}
				}
			}
		}
		return openfl_utils_AssetLibrary.prototype.getImage.call(this,id);
	}
	,getMovieClip: function(id) {
		if(this.swf != null) {
			return this.swf.createMovieClip(id);
		} else {
			return null;
		}
	}
	,isLocal: function(id,type) {
		return true;
	}
	,load: function() {
		var _gthis = this;
		if(this.id != null) {
			var key = this.id;
			var _this = this.preload;
			if(__map_reserved[key] != null) {
				_this.setReserved(key,true);
			} else {
				_this.h[key] = true;
			}
		}
		var promise = new lime_app_Promise();
		this.preloading = true;
		var onComplete = function(data) {
			var key1 = _gthis.id;
			var _this1 = _gthis.cachedText;
			if(__map_reserved[key1] != null) {
				_this1.setReserved(key1,data);
			} else {
				_this1.h[key1] = data;
			}
			_gthis.swf = openfl__$internal_swf_SWFLite.unserialize(data);
			_gthis.swf.library = _gthis;
			var bitmapSymbol;
			var symbol = _gthis.swf.symbols.iterator();
			while(symbol.hasNext()) {
				var symbol1 = symbol.next();
				if(js_Boot.__instanceof(symbol1,openfl__$internal_symbols_BitmapSymbol)) {
					bitmapSymbol = symbol1;
					if(bitmapSymbol.className != null) {
						var key2 = bitmapSymbol.className;
						var value = bitmapSymbol.path;
						var _this2 = _gthis.imageClassNames;
						if(__map_reserved[key2] != null) {
							_this2.setReserved(key2,value);
						} else {
							_this2.h[key2] = value;
						}
					}
				}
			}
			var key3 = _gthis.id;
			var value1 = _gthis.swf;
			var _this3 = openfl__$internal_swf_SWFLite.instances;
			if(__map_reserved[key3] != null) {
				_this3.setReserved(key3,value1);
			} else {
				_this3.h[key3] = value1;
			}
			_gthis.__load().onProgress($bind(promise,promise.progress)).onError($bind(promise,promise.error)).onComplete(function(_) {
				_gthis.preloading = false;
				promise.complete(_gthis);
			});
		};
		if(openfl_utils_Assets.exists(this.id)) {
			this.loadText(this.id).onError($bind(promise,promise.error)).onComplete(onComplete);
		} else {
			var id = this.paths.keys();
			while(id.hasNext()) {
				var id1 = id.next();
				var _this4 = this.preload;
				if(__map_reserved[id1] != null) {
					_this4.setReserved(id1,true);
				} else {
					_this4.h[id1] = true;
				}
			}
			var path = this.rootPath != null && this.rootPath != "" ? this.rootPath + "/" + this.id : this.id;
			var loader = new openfl_net_URLLoader();
			loader.addEventListener("complete",function(_1) {
				onComplete(loader.data);
			});
			loader.addEventListener("ioError",function(e) {
				promise.error(e);
			});
			loader.load(new openfl_net_URLRequest(path));
		}
		return promise.future;
	}
	,loadImage: function(id) {
		var _gthis = this;
		var _this = this.imageClassNames;
		if(__map_reserved[id] != null ? _this.existsReserved(id) : _this.h.hasOwnProperty(id)) {
			var _this1 = this.imageClassNames;
			if(__map_reserved[id] != null) {
				id = _this1.getReserved(id);
			} else {
				id = _this1.h[id];
			}
		}
		var tmp;
		if(!this.preloading) {
			var _this2 = this.alphaCheck;
			tmp = !(__map_reserved[id] != null ? _this2.existsReserved(id) : _this2.h.hasOwnProperty(id));
		} else {
			tmp = false;
		}
		if(tmp) {
			var symbol = this.swf.symbols.iterator();
			while(symbol.hasNext()) {
				var symbol1 = symbol.next();
				if(js_Boot.__instanceof(symbol1,openfl__$internal_symbols_BitmapSymbol) && (js_Boot.__cast(symbol1 , openfl__$internal_symbols_BitmapSymbol)).path == id) {
					var bitmapSymbol = [symbol1];
					if(bitmapSymbol[0].alpha != null) {
						var promise = [new lime_app_Promise()];
						this.__loadImage(id).onError(($_=promise[0],$bind($_,$_.error))).onComplete((function(promise1,bitmapSymbol1) {
							return function(image) {
								_gthis.__loadImage(bitmapSymbol1[0].alpha).onError(($_=promise1[0],$bind($_,$_.error))).onComplete((function(promise2,bitmapSymbol2) {
									return function(alpha) {
										_gthis.__copyChannel(image,alpha);
										var _this3 = _gthis.cachedImages;
										if(__map_reserved[id] != null) {
											_this3.setReserved(id,image);
										} else {
											_this3.h[id] = image;
										}
										_gthis.cachedImages.remove(bitmapSymbol2[0].alpha);
										var _this4 = _gthis.alphaCheck;
										if(__map_reserved[id] != null) {
											_this4.setReserved(id,true);
										} else {
											_this4.h[id] = true;
										}
										promise2[0].complete(image);
									};
								})(promise1,bitmapSymbol1));
							};
						})(promise,bitmapSymbol));
						return promise[0].future;
					}
				}
			}
		}
		return openfl_utils_AssetLibrary.prototype.loadImage.call(this,id);
	}
	,unload: function() {
		if(this.swf == null) {
			return;
		}
		var bitmap;
		var symbol = this.swf.symbols.iterator();
		while(symbol.hasNext()) {
			var symbol1 = symbol.next();
			if(js_Boot.__instanceof(symbol1,openfl__$internal_symbols_BitmapSymbol)) {
				bitmap = symbol1;
				openfl_utils_Assets.cache.removeBitmapData(bitmap.path);
			}
		}
	}
	,__copyChannel: function(image,alpha) {
		if(alpha != null) {
			image.copyChannel(alpha,alpha.get_rect(),new lime_math_Vector2(),lime_graphics_ImageChannel.RED,lime_graphics_ImageChannel.ALPHA);
		}
		image.buffer.premultiplied = true;
		image.set_premultiplied(false);
	}
	,__fromManifest: function(manifest) {
		this.rootPath = manifest.rootPath;
		openfl_utils_AssetLibrary.prototype.__fromManifest.call(this,manifest);
	}
	,__load: function() {
		return openfl_utils_AssetLibrary.prototype.load.call(this);
	}
	,__loadImage: function(id) {
		return openfl_utils_AssetLibrary.prototype.loadImage.call(this,id);
	}
	,__class__: openfl__$internal_swf_SWFLiteLibrary
});
var openfl__$internal_swf_ShapeCommand = $hxClasses["openfl._internal.swf.ShapeCommand"] = { __ename__ : ["openfl","_internal","swf","ShapeCommand"], __constructs__ : ["BeginBitmapFill","BeginFill","BeginGradientFill","CurveTo","EndFill","LineStyle","LineTo","MoveTo"] };
openfl__$internal_swf_ShapeCommand.BeginBitmapFill = function(bitmap,matrix,repeat,smooth) { var $x = ["BeginBitmapFill",0,bitmap,matrix,repeat,smooth]; $x.__enum__ = openfl__$internal_swf_ShapeCommand; $x.toString = $estr; return $x; };
openfl__$internal_swf_ShapeCommand.BeginFill = function(color,alpha) { var $x = ["BeginFill",1,color,alpha]; $x.__enum__ = openfl__$internal_swf_ShapeCommand; $x.toString = $estr; return $x; };
openfl__$internal_swf_ShapeCommand.BeginGradientFill = function(fillType,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) { var $x = ["BeginGradientFill",2,fillType,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio]; $x.__enum__ = openfl__$internal_swf_ShapeCommand; $x.toString = $estr; return $x; };
openfl__$internal_swf_ShapeCommand.CurveTo = function(controlX,controlY,anchorX,anchorY) { var $x = ["CurveTo",3,controlX,controlY,anchorX,anchorY]; $x.__enum__ = openfl__$internal_swf_ShapeCommand; $x.toString = $estr; return $x; };
openfl__$internal_swf_ShapeCommand.EndFill = ["EndFill",4];
openfl__$internal_swf_ShapeCommand.EndFill.toString = $estr;
openfl__$internal_swf_ShapeCommand.EndFill.__enum__ = openfl__$internal_swf_ShapeCommand;
openfl__$internal_swf_ShapeCommand.LineStyle = function(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit) { var $x = ["LineStyle",5,thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit]; $x.__enum__ = openfl__$internal_swf_ShapeCommand; $x.toString = $estr; return $x; };
openfl__$internal_swf_ShapeCommand.LineTo = function(x,y) { var $x = ["LineTo",6,x,y]; $x.__enum__ = openfl__$internal_swf_ShapeCommand; $x.toString = $estr; return $x; };
openfl__$internal_swf_ShapeCommand.MoveTo = function(x,y) { var $x = ["MoveTo",7,x,y]; $x.__enum__ = openfl__$internal_swf_ShapeCommand; $x.toString = $estr; return $x; };
var openfl__$internal_symbols_SWFSymbol = function() {
};
$hxClasses["openfl._internal.symbols.SWFSymbol"] = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_SWFSymbol.__name__ = ["openfl","_internal","symbols","SWFSymbol"];
openfl__$internal_symbols_SWFSymbol.prototype = {
	className: null
	,id: null
	,__createObject: function(swf) {
		return null;
	}
	,__class__: openfl__$internal_symbols_SWFSymbol
};
var openfl__$internal_symbols_BitmapSymbol = function() {
	openfl__$internal_symbols_SWFSymbol.call(this);
};
$hxClasses["openfl._internal.symbols.BitmapSymbol"] = openfl__$internal_symbols_BitmapSymbol;
openfl__$internal_symbols_BitmapSymbol.__name__ = ["openfl","_internal","symbols","BitmapSymbol"];
openfl__$internal_symbols_BitmapSymbol.__super__ = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_BitmapSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype,{
	alpha: null
	,path: null
	,smooth: null
	,__createObject: function(swf) {
		return new openfl_display_Bitmap(openfl_display_BitmapData.fromImage(swf.library.getImage(this.path)),1,this.smooth != false);
	}
	,__class__: openfl__$internal_symbols_BitmapSymbol
});
var openfl__$internal_symbols_ButtonSymbol = function() {
	openfl__$internal_symbols_SWFSymbol.call(this);
};
$hxClasses["openfl._internal.symbols.ButtonSymbol"] = openfl__$internal_symbols_ButtonSymbol;
openfl__$internal_symbols_ButtonSymbol.__name__ = ["openfl","_internal","symbols","ButtonSymbol"];
openfl__$internal_symbols_ButtonSymbol.__super__ = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_ButtonSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype,{
	downState: null
	,hitState: null
	,overState: null
	,upState: null
	,__createObject: function(swf) {
		var simpleButton = null;
		openfl_display_SimpleButton.__initSWF = swf;
		openfl_display_SimpleButton.__initSymbol = this;
		if(this.className != null) {
			var symbolType = Type.resolveClass(this.className);
			if(symbolType != null) {
				simpleButton = Type.createInstance(symbolType,[]);
			}
		}
		if(simpleButton == null) {
			simpleButton = new openfl_display_SimpleButton();
		}
		return simpleButton;
	}
	,__class__: openfl__$internal_symbols_ButtonSymbol
});
var openfl__$internal_symbols_DynamicTextSymbol = function() {
	openfl__$internal_symbols_SWFSymbol.call(this);
};
$hxClasses["openfl._internal.symbols.DynamicTextSymbol"] = openfl__$internal_symbols_DynamicTextSymbol;
openfl__$internal_symbols_DynamicTextSymbol.__name__ = ["openfl","_internal","symbols","DynamicTextSymbol"];
openfl__$internal_symbols_DynamicTextSymbol.__super__ = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_DynamicTextSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype,{
	align: null
	,border: null
	,color: null
	,fontHeight: null
	,fontID: null
	,fontName: null
	,height: null
	,html: null
	,indent: null
	,input: null
	,leading: null
	,leftMargin: null
	,multiline: null
	,password: null
	,rightMargin: null
	,selectable: null
	,text: null
	,width: null
	,wordWrap: null
	,x: null
	,y: null
	,__createObject: function(swf) {
		var textField = new openfl_text_TextField();
		textField.__fromSymbol(swf,this);
		return textField;
	}
	,__class__: openfl__$internal_symbols_DynamicTextSymbol
});
var openfl__$internal_symbols_FontSymbol = function() {
	openfl__$internal_symbols_SWFSymbol.call(this);
};
$hxClasses["openfl._internal.symbols.FontSymbol"] = openfl__$internal_symbols_FontSymbol;
openfl__$internal_symbols_FontSymbol.__name__ = ["openfl","_internal","symbols","FontSymbol"];
openfl__$internal_symbols_FontSymbol.__super__ = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_FontSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype,{
	advances: null
	,ascent: null
	,bold: null
	,codes: null
	,descent: null
	,glyphs: null
	,italic: null
	,leading: null
	,name: null
	,__class__: openfl__$internal_symbols_FontSymbol
});
var openfl__$internal_symbols_ShapeSymbol = function() {
	openfl__$internal_symbols_SWFSymbol.call(this);
};
$hxClasses["openfl._internal.symbols.ShapeSymbol"] = openfl__$internal_symbols_ShapeSymbol;
openfl__$internal_symbols_ShapeSymbol.__name__ = ["openfl","_internal","symbols","ShapeSymbol"];
openfl__$internal_symbols_ShapeSymbol.__super__ = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_ShapeSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype,{
	commands: null
	,rendered: null
	,__createObject: function(swf) {
		var shape = new openfl_display_Shape();
		var graphics = shape.get_graphics();
		if(this.rendered != null) {
			graphics.copyFrom(this.rendered.get_graphics());
			return shape;
		}
		var _g = 0;
		var _g1 = this.commands;
		while(_g < _g1.length) {
			var command = _g1[_g];
			++_g;
			switch(command[1]) {
			case 0:
				var smooth = command[5];
				var repeat = command[4];
				var matrix = command[3];
				var bitmapID = command[2];
				var bitmapSymbol = swf.symbols.get(bitmapID);
				var bitmap = swf.library.getImage(bitmapSymbol.path);
				if(bitmap != null) {
					graphics.beginBitmapFill(openfl_display_BitmapData.fromImage(bitmap),matrix,repeat,smooth);
				}
				break;
			case 1:
				var alpha = command[3];
				var color = command[2];
				graphics.beginFill(color,alpha);
				break;
			case 2:
				var focalPointRatio = command[9];
				var interpolationMethod = command[8];
				var spreadMethod = command[7];
				var matrix1 = command[6];
				var ratios = command[5];
				var alphas = command[4];
				var colors = command[3];
				var fillType = command[2];
				graphics.beginGradientFill(fillType,colors,alphas,ratios,matrix1,spreadMethod,interpolationMethod,focalPointRatio);
				break;
			case 3:
				var anchorY = command[5];
				var anchorX = command[4];
				var controlY = command[3];
				var controlX = command[2];
				graphics.curveTo(controlX,controlY,anchorX,anchorY);
				break;
			case 4:
				graphics.endFill();
				break;
			case 5:
				var miterLimit = command[9];
				var joints = command[8];
				var caps = command[7];
				var scaleMode = command[6];
				var pixelHinting = command[5];
				var alpha1 = command[4];
				var color1 = command[3];
				var thickness = command[2];
				if(thickness != null) {
					graphics.lineStyle(thickness,color1,alpha1,pixelHinting,scaleMode,caps,joints,miterLimit);
				} else {
					graphics.lineStyle();
				}
				break;
			case 6:
				var y = command[3];
				var x = command[2];
				graphics.lineTo(x,y);
				break;
			case 7:
				var y1 = command[3];
				var x1 = command[2];
				graphics.moveTo(x1,y1);
				break;
			}
		}
		this.commands = null;
		this.rendered = new openfl_display_Shape();
		this.rendered.get_graphics().copyFrom(shape.get_graphics());
		return shape;
	}
	,__class__: openfl__$internal_symbols_ShapeSymbol
});
var openfl__$internal_symbols_SpriteSymbol = function() {
	openfl__$internal_symbols_SWFSymbol.call(this);
	this.frames = [];
};
$hxClasses["openfl._internal.symbols.SpriteSymbol"] = openfl__$internal_symbols_SpriteSymbol;
openfl__$internal_symbols_SpriteSymbol.__name__ = ["openfl","_internal","symbols","SpriteSymbol"];
openfl__$internal_symbols_SpriteSymbol.__super__ = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_SpriteSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype,{
	baseClassName: null
	,frames: null
	,__createObject: function(swf) {
		openfl_display_MovieClip.__initSWF = swf;
		openfl_display_MovieClip.__initSymbol = this;
		var symbolType = null;
		if(this.className != null) {
			symbolType = Type.resolveClass(this.className);
			var tmp = symbolType == null;
		}
		if(symbolType == null && this.baseClassName != null) {
			symbolType = Type.resolveClass(this.baseClassName);
			var tmp1 = symbolType == null;
		}
		var movieClip = null;
		if(symbolType != null) {
			movieClip = Type.createInstance(symbolType,[]);
		} else {
			movieClip = new openfl_display_MovieClip();
		}
		return movieClip;
	}
	,__class__: openfl__$internal_symbols_SpriteSymbol
});
var openfl__$internal_symbols_StaticTextSymbol = function() {
	openfl__$internal_symbols_SWFSymbol.call(this);
};
$hxClasses["openfl._internal.symbols.StaticTextSymbol"] = openfl__$internal_symbols_StaticTextSymbol;
openfl__$internal_symbols_StaticTextSymbol.__name__ = ["openfl","_internal","symbols","StaticTextSymbol"];
openfl__$internal_symbols_StaticTextSymbol.__super__ = openfl__$internal_symbols_SWFSymbol;
openfl__$internal_symbols_StaticTextSymbol.prototype = $extend(openfl__$internal_symbols_SWFSymbol.prototype,{
	matrix: null
	,records: null
	,rendered: null
	,__createObject: function(swf) {
		var staticText = new openfl_text_StaticText();
		var graphics = staticText.__graphics;
		if(this.rendered != null) {
			staticText.text = this.rendered.text;
			graphics.copyFrom(this.rendered.__graphics);
			return staticText;
		}
		var text = "";
		if(this.records != null) {
			var font = null;
			var color = 16777215;
			var offsetX = this.matrix.tx;
			var offsetY = this.matrix.ty;
			var scale;
			var index;
			var code;
			var _g = 0;
			var _g1 = this.records;
			while(_g < _g1.length) {
				var record = _g1[_g];
				++_g;
				if(record.fontID != null) {
					font = swf.symbols.h[record.fontID];
				}
				if(record.offsetX != null) {
					offsetX = this.matrix.tx + record.offsetX * 0.05;
				}
				if(record.offsetY != null) {
					offsetY = this.matrix.ty + record.offsetY * 0.05;
				}
				if(record.color != null) {
					color = record.color;
				}
				if(font != null) {
					scale = record.fontHeight / 1024 * 0.05;
					var _g3 = 0;
					var _g2 = record.glyphs.length;
					while(_g3 < _g2) {
						var i = _g3++;
						index = record.glyphs[i];
						text += String.fromCharCode(font.codes[index]);
						var _g4 = 0;
						var _g5 = font.glyphs[index];
						while(_g4 < _g5.length) {
							var command = _g5[_g4];
							++_g4;
							switch(command[1]) {
							case 1:
								var alpha = command[3];
								graphics.beginFill(color & 16777215,(color >> 24 & 255) / 255);
								break;
							case 3:
								var anchorY = command[5];
								var anchorX = command[4];
								var controlY = command[3];
								var controlX = command[2];
								graphics.curveTo(controlX * scale + offsetX,controlY * scale + offsetY,anchorX * scale + offsetX,anchorY * scale + offsetY);
								break;
							case 4:
								graphics.endFill();
								break;
							case 5:
								var miterLimit = command[9];
								var joints = command[8];
								var caps = command[7];
								var scaleMode = command[6];
								var pixelHinting = command[5];
								var alpha1 = command[4];
								var color1 = command[3];
								var thickness = command[2];
								if(thickness != null) {
									graphics.lineStyle(thickness,color1,alpha1,pixelHinting,scaleMode,caps,joints,miterLimit);
								} else {
									graphics.lineStyle();
								}
								break;
							case 6:
								var y = command[3];
								var x = command[2];
								graphics.lineTo(x * scale + offsetX,y * scale + offsetY);
								break;
							case 7:
								var y1 = command[3];
								var x1 = command[2];
								graphics.moveTo(x1 * scale + offsetX,y1 * scale + offsetY);
								break;
							default:
							}
						}
						offsetX += record.advances[i] * 0.05;
					}
				}
			}
		}
		staticText.text = text;
		this.records = null;
		this.rendered = new openfl_text_StaticText();
		this.rendered.text = text;
		this.rendered.__graphics.copyFrom(staticText.__graphics);
		return staticText;
	}
	,__class__: openfl__$internal_symbols_StaticTextSymbol
});
var openfl__$internal_symbols_StaticTextRecord = function() {
};
$hxClasses["openfl._internal.symbols.StaticTextRecord"] = openfl__$internal_symbols_StaticTextRecord;
openfl__$internal_symbols_StaticTextRecord.__name__ = ["openfl","_internal","symbols","StaticTextRecord"];
openfl__$internal_symbols_StaticTextRecord.prototype = {
	advances: null
	,color: null
	,fontHeight: null
	,fontID: null
	,glyphs: null
	,offsetX: null
	,offsetY: null
	,__class__: openfl__$internal_symbols_StaticTextRecord
};
var openfl__$internal_text_HTMLParser = function() { };
$hxClasses["openfl._internal.text.HTMLParser"] = openfl__$internal_text_HTMLParser;
openfl__$internal_text_HTMLParser.__name__ = ["openfl","_internal","text","HTMLParser"];
openfl__$internal_text_HTMLParser.parse = function(value,textFormat,textFormatRanges) {
	value = value.replace(openfl__$internal_text_HTMLParser.__regexBreakTag.r,"\n");
	value = value.replace(openfl__$internal_text_HTMLParser.__regexEntities[0].r,"\"");
	value = value.replace(openfl__$internal_text_HTMLParser.__regexEntities[1].r,"'");
	value = value.replace(openfl__$internal_text_HTMLParser.__regexEntities[2].r,"&");
	value = value.replace(openfl__$internal_text_HTMLParser.__regexEntities[5].r," ");
	var segments = value.split("<");
	if(segments.length == 1) {
		value = value.replace(openfl__$internal_text_HTMLParser.__regexHTMLTag.r,"");
		if(textFormatRanges.data.get_length() > 1) {
			var len = textFormatRanges.data.get_length() - 1;
			new openfl__$Vector_AbstractVector(textFormatRanges.data.splice(1,len));
		}
		value = value.replace(openfl__$internal_text_HTMLParser.__regexEntities[3].r,"<");
		value = value.replace(openfl__$internal_text_HTMLParser.__regexEntities[4].r,">");
		var range = textFormatRanges.data.get(0);
		range.format = textFormat;
		range.start = 0;
		range.end = value.length;
		return value;
	} else {
		var len1 = textFormatRanges.data.get_length();
		new openfl__$Vector_AbstractVector(textFormatRanges.data.splice(0,len1));
		value = "";
		var segment;
		var _g1 = 0;
		var _g = segments.length;
		while(_g1 < _g) {
			var i = _g1++;
			segment = segments[i];
			segment = segment.replace(openfl__$internal_text_HTMLParser.__regexEntities[3].r,"<");
			segment = segment.replace(openfl__$internal_text_HTMLParser.__regexEntities[4].r,">");
			segments[i] = segment;
		}
		var formatStack = [textFormat.clone()];
		var sub;
		var noLineBreak = false;
		var _g2 = 0;
		while(_g2 < segments.length) {
			var segment1 = segments[_g2];
			++_g2;
			if(segment1 == "") {
				continue;
			}
			var isClosingTag = HxOverrides.substr(segment1,0,1) == "/";
			var tagEndIndex = segment1.indexOf(">");
			var start = tagEndIndex + 1;
			var spaceIndex = segment1.indexOf(" ");
			var tagName = segment1.substring(isClosingTag ? 1 : 0,spaceIndex > -1 && spaceIndex < tagEndIndex ? spaceIndex : tagEndIndex);
			var format;
			if(isClosingTag) {
				formatStack.pop();
				format = formatStack[formatStack.length - 1].clone();
				if(tagName.toLowerCase() == "p" && textFormatRanges.data.get_length() > 0) {
					value += "\n";
					noLineBreak = true;
				}
				if(start < segment1.length) {
					sub = HxOverrides.substr(segment1,start,null);
					var x = new openfl__$internal_text_TextFormatRange(format,value.length,value.length + sub.length);
					textFormatRanges.data.push(x);
					value += sub;
					noLineBreak = false;
				}
			} else {
				format = formatStack[formatStack.length - 1].clone();
				if(tagEndIndex > -1) {
					var _g11 = tagName.toLowerCase();
					switch(_g11) {
					case "a":
						if(openfl__$internal_text_HTMLParser.__regexHref.match(segment1)) {
							format.url = openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexHref);
						}
						break;
					case "b":
						format.bold = true;
						break;
					case "em":case "i":
						format.italic = true;
						break;
					case "font":
						if(openfl__$internal_text_HTMLParser.__regexFace.match(segment1)) {
							format.font = openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexFace);
						}
						if(openfl__$internal_text_HTMLParser.__regexColor.match(segment1)) {
							format.color = Std.parseInt("0x" + openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexColor));
						}
						if(openfl__$internal_text_HTMLParser.__regexSize.match(segment1)) {
							var sizeAttr = openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexSize);
							var firstChar = HxOverrides.cca(sizeAttr,0);
							if(firstChar == 43 || firstChar == 45) {
								var parentFormat = formatStack.length >= 2 ? formatStack[formatStack.length - 2] : textFormat;
								format.size = parentFormat.size + Std.parseInt(sizeAttr);
							} else {
								format.size = Std.parseInt(sizeAttr);
							}
						}
						break;
					case "p":
						if(textFormatRanges.data.get_length() > 0 && !noLineBreak) {
							value += "\n";
						}
						if(openfl__$internal_text_HTMLParser.__regexAlign.match(segment1)) {
							format.align = openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.fromString(openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexAlign).toLowerCase());
						}
						break;
					case "textformat":
						if(openfl__$internal_text_HTMLParser.__regexBlockIndent.match(segment1)) {
							format.blockIndent = Std.parseInt(openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexBlockIndent));
						}
						if(openfl__$internal_text_HTMLParser.__regexIndent.match(segment1)) {
							format.indent = Std.parseInt(openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexIndent));
						}
						if(openfl__$internal_text_HTMLParser.__regexLeading.match(segment1)) {
							format.leading = Std.parseInt(openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexLeading));
						}
						if(openfl__$internal_text_HTMLParser.__regexLeftMargin.match(segment1)) {
							format.leftMargin = Std.parseInt(openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexLeftMargin));
						}
						if(openfl__$internal_text_HTMLParser.__regexRightMargin.match(segment1)) {
							format.rightMargin = Std.parseInt(openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexRightMargin));
						}
						if(openfl__$internal_text_HTMLParser.__regexTabStops.match(segment1)) {
							var values = openfl__$internal_text_HTMLParser.__getAttributeMatch(openfl__$internal_text_HTMLParser.__regexTabStops).split(" ");
							var tabStops = [];
							var _g12 = 0;
							while(_g12 < values.length) {
								var stop = values[_g12];
								++_g12;
								tabStops.push(Std.parseInt(stop));
							}
							format.tabStops = tabStops;
						}
						break;
					case "u":
						format.underline = true;
						break;
					}
					formatStack.push(format);
					if(start < segment1.length) {
						sub = segment1.substring(start);
						var x1 = new openfl__$internal_text_TextFormatRange(format,value.length,value.length + sub.length);
						textFormatRanges.data.push(x1);
						value += sub;
						noLineBreak = false;
					}
				} else {
					var x2 = new openfl__$internal_text_TextFormatRange(format,value.length,value.length + segment1.length);
					textFormatRanges.data.push(x2);
					value += segment1;
					noLineBreak = false;
				}
			}
		}
		if(textFormatRanges.data.get_length() == 0) {
			var x3 = new openfl__$internal_text_TextFormatRange(formatStack[0],0,0);
			textFormatRanges.data.push(x3);
		}
	}
	return value;
};
openfl__$internal_text_HTMLParser.__getAttributeMatch = function(regex) {
	if(regex.matched(2) != null) {
		return regex.matched(2);
	} else {
		return regex.matched(3);
	}
};
var openfl__$internal_text_TextEngine = function(textField) {
	this.textField = textField;
	this.width = 100;
	this.height = 100;
	this.set_text("");
	this.bounds = new openfl_geom_Rectangle(0,0,0,0);
	this.type = 0;
	this.autoSize = 2;
	this.embedFonts = false;
	this.selectable = true;
	this.borderColor = 0;
	this.border = false;
	this.backgroundColor = 16777215;
	this.background = false;
	this.gridFitType = 1;
	this.maxChars = 0;
	this.multiline = false;
	this.sharpness = 0;
	this.scrollH = 0;
	this.scrollV = 1;
	this.wordWrap = false;
	this.lineAscents = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	this.lineBreaks = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
	this.lineDescents = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	this.lineLeadings = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	this.lineHeights = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	this.lineWidths = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	this.layoutGroups = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
	this.textFormatRanges = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
};
$hxClasses["openfl._internal.text.TextEngine"] = openfl__$internal_text_TextEngine;
openfl__$internal_text_TextEngine.__name__ = ["openfl","_internal","text","TextEngine"];
openfl__$internal_text_TextEngine.findFont = function(name) {
	return null;
};
openfl__$internal_text_TextEngine.findFontVariant = function(format) {
	var fontName = format.font;
	var bold = format.bold;
	var italic = format.italic;
	var fontNamePrefix = StringTools.replace(StringTools.replace(fontName," Normal","")," Regular","");
	var tmp;
	if(bold && italic) {
		var _this = openfl_text_Font.__fontByName;
		var key = fontNamePrefix + " Bold Italic";
		if(__map_reserved[key] != null) {
			tmp = _this.existsReserved(key);
		} else {
			tmp = _this.h.hasOwnProperty(key);
		}
	} else {
		tmp = false;
	}
	if(tmp) {
		return openfl__$internal_text_TextEngine.findFont(fontNamePrefix + " Bold Italic");
	} else {
		var tmp1;
		if(bold) {
			var _this1 = openfl_text_Font.__fontByName;
			var key1 = fontNamePrefix + " Bold";
			if(__map_reserved[key1] != null) {
				tmp1 = _this1.existsReserved(key1);
			} else {
				tmp1 = _this1.h.hasOwnProperty(key1);
			}
		} else {
			tmp1 = false;
		}
		if(tmp1) {
			return openfl__$internal_text_TextEngine.findFont(fontNamePrefix + " Bold");
		} else {
			var tmp2;
			if(italic) {
				var _this2 = openfl_text_Font.__fontByName;
				var key2 = fontNamePrefix + " Italic";
				if(__map_reserved[key2] != null) {
					tmp2 = _this2.existsReserved(key2);
				} else {
					tmp2 = _this2.h.hasOwnProperty(key2);
				}
			} else {
				tmp2 = false;
			}
			if(tmp2) {
				return openfl__$internal_text_TextEngine.findFont(fontNamePrefix + " Italic");
			}
		}
	}
	return openfl__$internal_text_TextEngine.findFont(fontName);
};
openfl__$internal_text_TextEngine.getFormatHeight = function(format) {
	var ascent;
	var descent;
	var leading = 0;
	descent = leading;
	ascent = descent;
	return ascent + descent + leading;
};
openfl__$internal_text_TextEngine.getFont = function(format) {
	var fontName = format.font;
	var bold = format.bold;
	var italic = format.italic;
	if(fontName == null) {
		fontName = "_serif";
	}
	var fontNamePrefix = StringTools.replace(StringTools.replace(fontName," Normal","")," Regular","");
	var tmp;
	if(bold && italic) {
		var _this = openfl_text_Font.__fontByName;
		var key = fontNamePrefix + " Bold Italic";
		if(__map_reserved[key] != null) {
			tmp = _this.existsReserved(key);
		} else {
			tmp = _this.h.hasOwnProperty(key);
		}
	} else {
		tmp = false;
	}
	if(tmp) {
		fontName = fontNamePrefix + " Bold Italic";
		bold = false;
		italic = false;
	} else {
		var tmp1;
		if(bold) {
			var _this1 = openfl_text_Font.__fontByName;
			var key1 = fontNamePrefix + " Bold";
			if(__map_reserved[key1] != null) {
				tmp1 = _this1.existsReserved(key1);
			} else {
				tmp1 = _this1.h.hasOwnProperty(key1);
			}
		} else {
			tmp1 = false;
		}
		if(tmp1) {
			fontName = fontNamePrefix + " Bold";
			bold = false;
		} else {
			var tmp2;
			if(italic) {
				var _this2 = openfl_text_Font.__fontByName;
				var key2 = fontNamePrefix + " Italic";
				if(__map_reserved[key2] != null) {
					tmp2 = _this2.existsReserved(key2);
				} else {
					tmp2 = _this2.h.hasOwnProperty(key2);
				}
			} else {
				tmp2 = false;
			}
			if(tmp2) {
				fontName = fontNamePrefix + " Italic";
				italic = false;
			} else {
				if(bold && (fontName.indexOf(" Bold ") > -1 || StringTools.endsWith(fontName," Bold"))) {
					bold = false;
				}
				if(italic && (fontName.indexOf(" Italic ") > -1 || StringTools.endsWith(fontName," Italic"))) {
					italic = false;
				}
			}
		}
	}
	var font = italic ? "italic " : "normal ";
	font += "normal ";
	font += bold ? "bold " : "normal ";
	font += format.size + "px";
	font += "/" + (format.leading + format.size + 3) + "px ";
	var font1;
	switch(fontName) {
	case "_sans":
		font1 = "sans-serif";
		break;
	case "_serif":
		font1 = "serif";
		break;
	case "_typewriter":
		font1 = "monospace";
		break;
	default:
		var _this_r = new RegExp("^[\\s'\"]+(.*)[\\s'\"]+$","".split("u").join(""));
		font1 = "'" + fontName.replace(_this_r,"$1") + "'";
	}
	font += "" + font1;
	return font;
};
openfl__$internal_text_TextEngine.getFontInstance = function(format) {
	return null;
};
openfl__$internal_text_TextEngine.prototype = {
	antiAliasType: null
	,autoSize: null
	,background: null
	,backgroundColor: null
	,border: null
	,borderColor: null
	,bottomScrollV: null
	,bounds: null
	,caretIndex: null
	,embedFonts: null
	,gridFitType: null
	,height: null
	,layoutGroups: null
	,lineAscents: null
	,lineBreaks: null
	,lineDescents: null
	,lineLeadings: null
	,lineHeights: null
	,lineWidths: null
	,maxChars: null
	,maxScrollH: null
	,maxScrollV: null
	,multiline: null
	,numLines: null
	,restrict: null
	,scrollH: null
	,scrollV: null
	,selectable: null
	,sharpness: null
	,text: null
	,textHeight: null
	,textFormatRanges: null
	,textWidth: null
	,type: null
	,width: null
	,wordWrap: null
	,textField: null
	,__cursorTimer: null
	,__hasFocus: null
	,__isKeyDown: null
	,__measuredHeight: null
	,__measuredWidth: null
	,__restrictRegexp: null
	,__selectionStart: null
	,__showCursor: null
	,__textFormat: null
	,__textLayout: null
	,__texture: null
	,__useIntAdvances: null
	,__cairoFont: null
	,__font: null
	,createRestrictRegexp: function(restrict) {
		var declinedRange = new EReg("\\^(.-.|.)","gu");
		var declined = "";
		var accepted = declinedRange.map(restrict,function(ereg) {
			declined += ereg.matched(1);
			return "";
		});
		var testRegexpParts = [];
		if(accepted.length > 0) {
			testRegexpParts.push("[^" + restrict + "]");
		}
		if(declined.length > 0) {
			testRegexpParts.push("[" + declined + "]");
		}
		return new EReg("(" + testRegexpParts.join("|") + ")","g");
	}
	,getBounds: function() {
		var padding = this.border ? 1 : 0;
		this.bounds.width = this.width + padding;
		this.bounds.height = this.height + padding;
	}
	,getLine: function(index) {
		if(index < 0 || index > this.lineBreaks.data.get_length() + 1) {
			return null;
		}
		if(this.lineBreaks.data.get_length() == 0) {
			return this.text;
		} else {
			return lime_text__$UTF8String_UTF8String_$Impl_$.substring(this.text,index > 0 ? this.lineBreaks.data.get(index - 1) : 0,this.lineBreaks.data.get(index));
		}
	}
	,getLineBreakIndex: function(startIndex) {
		if(startIndex == null) {
			startIndex = 0;
		}
		var br = lime_text__$UTF8String_UTF8String_$Impl_$.indexOf(this.text,"<br>",startIndex);
		var cr = lime_text__$UTF8String_UTF8String_$Impl_$.indexOf(this.text,"\n",startIndex);
		var lf = lime_text__$UTF8String_UTF8String_$Impl_$.indexOf(this.text,"\r",startIndex);
		if(cr == -1 && br == -1) {
			return lf;
		}
		if(lf == -1 && br == -1) {
			return cr;
		}
		if(lf == -1 && cr == -1) {
			return br;
		}
		if(cr == -1) {
			return Math.min(br,lf) | 0;
		}
		if(lf == -1) {
			return Math.min(br,cr) | 0;
		}
		if(br == -1) {
			return Math.min(cr,lf) | 0;
		}
		return Math.min(Math.min(cr,lf),br) | 0;
	}
	,getLineMeasurements: function() {
		this.lineAscents.data.set_length(0);
		this.lineDescents.data.set_length(0);
		this.lineLeadings.data.set_length(0);
		this.lineHeights.data.set_length(0);
		this.lineWidths.data.set_length(0);
		var currentLineAscent = 0.0;
		var currentLineDescent = 0.0;
		var currentLineLeading = null;
		var currentLineHeight = 0.0;
		var currentLineWidth = 0.0;
		var currentTextHeight = 0.0;
		this.textWidth = 0;
		this.textHeight = 0;
		this.numLines = 1;
		this.bottomScrollV = 0;
		this.maxScrollH = 0;
		var _g = 0;
		var _g1 = this.layoutGroups;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			while(group.lineIndex > this.numLines - 1) {
				this.lineAscents.data.push(currentLineAscent);
				this.lineDescents.data.push(currentLineDescent);
				this.lineLeadings.data.push(currentLineLeading != null ? currentLineLeading : 0);
				this.lineHeights.data.push(currentLineHeight);
				this.lineWidths.data.push(currentLineWidth);
				currentLineAscent = 0;
				currentLineDescent = 0;
				currentLineLeading = null;
				currentLineHeight = 0;
				currentLineWidth = 0;
				this.numLines++;
				if(this.textHeight <= this.height - 2) {
					this.bottomScrollV++;
				}
			}
			currentLineAscent = Math.max(currentLineAscent,group.ascent);
			currentLineDescent = Math.max(currentLineDescent,group.descent);
			if(currentLineLeading == null) {
				currentLineLeading = group.leading;
			} else {
				currentLineLeading = Math.max(currentLineLeading,group.leading) | 0;
			}
			currentLineHeight = Math.max(currentLineHeight,group.height);
			currentLineWidth = group.offsetX - 2 + group.width;
			if(currentLineWidth > this.textWidth) {
				this.textWidth = currentLineWidth;
			}
			currentTextHeight = group.offsetY - 2 + group.ascent + group.descent;
			if(currentTextHeight > this.textHeight) {
				this.textHeight = currentTextHeight;
			}
		}
		if(this.textHeight == 0 && this.textField != null) {
			var currentFormat = this.textField.__textFormat;
			var ascent;
			var descent;
			var leading;
			var heightValue;
			if(currentFormat.__ascent != null) {
				ascent = currentFormat.size * currentFormat.__ascent;
				descent = currentFormat.size * currentFormat.__descent;
			} else {
				ascent = currentFormat.size;
				descent = currentFormat.size * 0.185;
			}
			leading = currentFormat.leading;
			heightValue = ascent + descent + leading;
			currentLineAscent = ascent;
			currentLineDescent = descent;
			currentLineLeading = leading;
			currentTextHeight = ascent + descent;
			this.textHeight = currentTextHeight;
		}
		this.lineAscents.data.push(currentLineAscent);
		this.lineDescents.data.push(currentLineDescent);
		this.lineLeadings.data.push(currentLineLeading != null ? currentLineLeading : 0);
		this.lineHeights.data.push(currentLineHeight);
		this.lineWidths.data.push(currentLineWidth);
		if(this.numLines == 1) {
			this.bottomScrollV = 1;
			if(currentLineLeading > 0) {
				this.textHeight += currentLineLeading;
			}
		} else if(this.textHeight <= this.height - 2) {
			this.bottomScrollV++;
		}
		if(this.autoSize != 2) {
			var _g2 = this.autoSize;
			switch(_g2) {
			case 0:case 1:case 3:
				if(!this.wordWrap) {
					this.width = this.textWidth + 4;
				}
				this.height = this.textHeight + 4;
				this.bottomScrollV = this.numLines;
				break;
			default:
			}
		}
		if(this.textWidth > this.width - 4) {
			this.maxScrollH = this.textWidth - this.width + 4 | 0;
		} else {
			this.maxScrollH = 0;
		}
		this.maxScrollV = this.numLines - this.bottomScrollV + 1;
	}
	,getLayoutGroups: function() {
		var _gthis = this;
		this.layoutGroups.data.set_length(0);
		if(this.text == null || lime_text__$UTF8String_UTF8String_$Impl_$.equals(this.text,"")) {
			return;
		}
		var rangeIndex = -1;
		var formatRange = null;
		var font = null;
		var currentFormat = openfl_text_TextField.__defaultTextFormat.clone();
		var leading = 0;
		var ascent = 0.0;
		var maxAscent = 0.0;
		var descent = 0.0;
		var layoutGroup = null;
		var positions = null;
		var widthValue = 0.0;
		var heightValue = 0.0;
		var maxHeightValue = 0.0;
		var previousSpaceIndex = -2;
		var spaceIndex = lime_text__$UTF8String_UTF8String_$Impl_$.indexOf(this.text," ");
		var breakIndex = this.getLineBreakIndex();
		var offsetX = 2.0;
		var offsetY = 2.0;
		var textIndex = 0;
		var lineIndex = 0;
		var lineFormat = null;
		if(rangeIndex < _gthis.textFormatRanges.data.get_length() - 1) {
			++rangeIndex;
			formatRange = _gthis.textFormatRanges.data.get(rangeIndex);
			currentFormat.__merge(formatRange.format);
		}
		if(heightValue > maxHeightValue) {
			maxHeightValue = heightValue;
		}
		if(ascent > maxAscent) {
			maxAscent = ascent;
		}
		lineFormat = formatRange.format;
		var wrap;
		var maxLoops = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.text) + 1;
		while(textIndex < maxLoops) if(breakIndex > -1 && (spaceIndex == -1 || breakIndex < spaceIndex) && formatRange.end >= breakIndex) {
			if(textIndex <= breakIndex) {
				if(this.wordWrap && previousSpaceIndex <= textIndex && this.width >= 4) {
					var text = lime_text__$UTF8String_UTF8String_$Impl_$.substring(_gthis.text,textIndex,breakIndex);
					if(_gthis.__textLayout == null) {
						_gthis.__textLayout = new lime_text_TextLayout();
					}
					var width = 0.0;
					_gthis.__textLayout.set_text(null);
					_gthis.__textLayout.set_font(font);
					if(formatRange.format.size != null) {
						_gthis.__textLayout.set_size(formatRange.format.size);
					}
					_gthis.__textLayout.set_text(text);
					var _g = 0;
					var _g1 = _gthis.__textLayout.get_positions();
					while(_g < _g1.length) {
						var position = _g1[_g];
						++_g;
						width += position.advance.x;
					}
					var tempWidth = width;
					while(offsetX + tempWidth > _gthis.width - 2) {
						var i = 1;
						while(textIndex + i < breakIndex + 1) {
							var text1 = lime_text__$UTF8String_UTF8String_$Impl_$.substr(_gthis.text,textIndex,i);
							if(_gthis.__textLayout == null) {
								_gthis.__textLayout = new lime_text_TextLayout();
							}
							var width1 = 0.0;
							_gthis.__textLayout.set_text(null);
							_gthis.__textLayout.set_font(font);
							if(formatRange.format.size != null) {
								_gthis.__textLayout.set_size(formatRange.format.size);
							}
							_gthis.__textLayout.set_text(text1);
							var _g2 = 0;
							var _g11 = _gthis.__textLayout.get_positions();
							while(_g2 < _g11.length) {
								var position1 = _g11[_g2];
								++_g2;
								width1 += position1.advance.x;
							}
							tempWidth = width1;
							if(offsetX + tempWidth > _gthis.width - 2) {
								--i;
								break;
							}
							++i;
						}
						if(i == 0 && tempWidth > _gthis.width - 4) {
							i = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(_gthis.text);
						}
						if(i == 0) {
							offsetX = 2;
							offsetY += layoutGroup.height;
							++lineIndex;
							break;
						} else {
							var endIndex = textIndex + i;
							if(layoutGroup == null || layoutGroup.startIndex != layoutGroup.endIndex) {
								layoutGroup = new openfl__$internal_text_TextLayoutGroup(formatRange.format,textIndex,endIndex);
								_gthis.layoutGroups.data.push(layoutGroup);
							} else {
								layoutGroup.format = formatRange.format;
								layoutGroup.startIndex = textIndex;
								layoutGroup.endIndex = endIndex;
							}
							var text2 = _gthis.text;
							if(_gthis.__textLayout == null) {
								_gthis.__textLayout = new lime_text_TextLayout();
							}
							var width2 = 0.0;
							_gthis.__textLayout.set_text(null);
							_gthis.__textLayout.set_font(font);
							if(formatRange.format.size != null) {
								_gthis.__textLayout.set_size(formatRange.format.size);
							}
							_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text2,textIndex,textIndex + i));
							layoutGroup.positions = _gthis.__textLayout.get_positions();
							layoutGroup.offsetX = offsetX;
							layoutGroup.ascent = ascent;
							layoutGroup.descent = descent;
							layoutGroup.leading = leading;
							layoutGroup.lineIndex = lineIndex;
							layoutGroup.offsetY = offsetY;
							var positions1 = layoutGroup.positions;
							var width3 = 0.0;
							var _g3 = 0;
							while(_g3 < positions1.length) {
								var position2 = positions1[_g3];
								++_g3;
								width3 += position2.advance.x;
							}
							layoutGroup.width = width3;
							layoutGroup.height = heightValue;
							layoutGroup = null;
							if(ascent > maxAscent) {
								maxAscent = ascent;
							}
							if(heightValue > maxHeightValue) {
								maxHeightValue = heightValue;
							}
							var _g4 = 0;
							var _g12 = _gthis.layoutGroups;
							while(_g4 < _g12.data.get_length()) {
								var lg = _g12.data.get(_g4);
								++_g4;
								if(lg.lineIndex < lineIndex) {
									continue;
								}
								if(lg.lineIndex > lineIndex) {
									break;
								}
								lg.ascent = maxAscent;
								lg.height = maxHeightValue;
							}
							offsetY += maxHeightValue;
							maxAscent = 0.0;
							maxHeightValue = 0.0;
							++lineIndex;
							offsetX = 2;
							textIndex += i;
							var text3 = _gthis.text;
							if(_gthis.__textLayout == null) {
								_gthis.__textLayout = new lime_text_TextLayout();
							}
							var width4 = 0.0;
							_gthis.__textLayout.set_text(null);
							_gthis.__textLayout.set_font(font);
							if(formatRange.format.size != null) {
								_gthis.__textLayout.set_size(formatRange.format.size);
							}
							_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text3,textIndex,breakIndex));
							positions = _gthis.__textLayout.get_positions();
							var width5 = 0.0;
							var _g5 = 0;
							while(_g5 < positions.length) {
								var position3 = positions[_g5];
								++_g5;
								width5 += position3.advance.x;
							}
							widthValue = width5;
							tempWidth = widthValue;
						}
					}
				}
				if(layoutGroup == null || layoutGroup.startIndex != layoutGroup.endIndex) {
					layoutGroup = new openfl__$internal_text_TextLayoutGroup(formatRange.format,textIndex,breakIndex);
					_gthis.layoutGroups.data.push(layoutGroup);
				} else {
					layoutGroup.format = formatRange.format;
					layoutGroup.startIndex = textIndex;
					layoutGroup.endIndex = breakIndex;
				}
				var text4 = this.text;
				if(_gthis.__textLayout == null) {
					_gthis.__textLayout = new lime_text_TextLayout();
				}
				var width6 = 0.0;
				_gthis.__textLayout.set_text(null);
				_gthis.__textLayout.set_font(font);
				if(formatRange.format.size != null) {
					_gthis.__textLayout.set_size(formatRange.format.size);
				}
				_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text4,textIndex,breakIndex));
				layoutGroup.positions = _gthis.__textLayout.get_positions();
				layoutGroup.offsetX = offsetX;
				layoutGroup.ascent = ascent;
				layoutGroup.descent = descent;
				layoutGroup.leading = leading;
				layoutGroup.lineIndex = lineIndex;
				layoutGroup.offsetY = offsetY;
				var positions2 = layoutGroup.positions;
				var width7 = 0.0;
				var _g6 = 0;
				while(_g6 < positions2.length) {
					var position4 = positions2[_g6];
					++_g6;
					width7 += position4.advance.x;
				}
				layoutGroup.width = width7;
				layoutGroup.height = heightValue;
				layoutGroup = null;
			} else if(layoutGroup != null && layoutGroup.startIndex != layoutGroup.endIndex) {
				if(layoutGroup.endIndex == spaceIndex) {
					var index = layoutGroup.positions.length - 1;
					layoutGroup.width -= index >= 0 && index < layoutGroup.positions.length ? layoutGroup.positions[index].advance.x : 0;
				}
				layoutGroup = null;
			}
			if(formatRange.end == breakIndex) {
				if(rangeIndex < _gthis.textFormatRanges.data.get_length() - 1) {
					++rangeIndex;
					formatRange = _gthis.textFormatRanges.data.get(rangeIndex);
					currentFormat.__merge(formatRange.format);
				}
				if(heightValue > maxHeightValue) {
					maxHeightValue = heightValue;
				}
				if(ascent > maxAscent) {
					maxAscent = ascent;
				}
				lineFormat = formatRange.format;
			}
			if(breakIndex >= lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.text) - 1) {
				offsetY -= maxHeightValue;
			}
			if(ascent > maxAscent) {
				maxAscent = ascent;
			}
			if(heightValue > maxHeightValue) {
				maxHeightValue = heightValue;
			}
			var _g7 = 0;
			var _g13 = _gthis.layoutGroups;
			while(_g7 < _g13.data.get_length()) {
				var lg1 = _g13.data.get(_g7);
				++_g7;
				if(lg1.lineIndex < lineIndex) {
					continue;
				}
				if(lg1.lineIndex > lineIndex) {
					break;
				}
				lg1.ascent = maxAscent;
				lg1.height = maxHeightValue;
			}
			offsetY += maxHeightValue;
			maxAscent = 0.0;
			maxHeightValue = 0.0;
			++lineIndex;
			offsetX = 2;
			textIndex = breakIndex + 1;
			breakIndex = this.getLineBreakIndex(textIndex);
		} else if(formatRange.end >= spaceIndex && spaceIndex > -1 && textIndex < formatRange.end) {
			if(layoutGroup != null && layoutGroup.startIndex != layoutGroup.endIndex) {
				layoutGroup = null;
			}
			wrap = false;
			while(textIndex != formatRange.end) {
				var endIndex1 = -1;
				if(spaceIndex == -1) {
					endIndex1 = breakIndex;
				} else {
					endIndex1 = spaceIndex + 1;
					if(breakIndex > -1 && breakIndex < endIndex1) {
						endIndex1 = breakIndex;
					}
				}
				if(endIndex1 == -1 || endIndex1 > formatRange.end) {
					endIndex1 = formatRange.end;
				}
				var text5 = this.text;
				if(_gthis.__textLayout == null) {
					_gthis.__textLayout = new lime_text_TextLayout();
				}
				var width8 = 0.0;
				_gthis.__textLayout.set_text(null);
				_gthis.__textLayout.set_font(font);
				if(formatRange.format.size != null) {
					_gthis.__textLayout.set_size(formatRange.format.size);
				}
				_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text5,textIndex,endIndex1));
				positions = _gthis.__textLayout.get_positions();
				var width9 = 0.0;
				var _g8 = 0;
				while(_g8 < positions.length) {
					var position5 = positions[_g8];
					++_g8;
					width9 += position5.advance.x;
				}
				widthValue = width9;
				if(lineFormat.align == 2) {
					if(positions.length > 0 && textIndex == previousSpaceIndex) {
						++textIndex;
						var spaceWidth = positions.shift().advance.x;
						widthValue -= spaceWidth;
						offsetX += spaceWidth;
					}
					if(positions.length > 0 && endIndex1 == spaceIndex + 1) {
						--endIndex1;
						var spaceWidth1 = positions.pop().advance.x;
						widthValue -= spaceWidth1;
					}
				}
				if(this.wordWrap) {
					if(offsetX + widthValue > this.width - 2) {
						wrap = true;
						if(positions.length > 0 && endIndex1 == spaceIndex + 1) {
							var lastPosition = positions[positions.length - 1];
							var spaceWidth2 = lastPosition.advance.x;
							if(offsetX + widthValue - spaceWidth2 <= this.width - 2) {
								wrap = false;
							}
						}
					}
				}
				if(wrap) {
					if(lineFormat.align != 2 && (layoutGroup != null || this.layoutGroups.data.get_length() > 0)) {
						var previous = layoutGroup;
						if(previous == null) {
							var this1 = this.layoutGroups;
							var index1 = this.layoutGroups.data.get_length() - 1;
							previous = this1.data.get(index1);
						}
						var index2 = previous.positions.length - 1;
						previous.width -= index2 >= 0 && index2 < previous.positions.length ? previous.positions[index2].advance.x : 0;
						previous.endIndex--;
					}
					var i1 = this.layoutGroups.data.get_length() - 1;
					var offsetCount = 0;
					while(true) {
						layoutGroup = this.layoutGroups.data.get(i1);
						if(i1 > 0 && layoutGroup.startIndex > previousSpaceIndex) {
							++offsetCount;
						} else {
							break;
						}
						--i1;
					}
					if(textIndex == previousSpaceIndex + 1) {
						if(ascent > maxAscent) {
							maxAscent = ascent;
						}
						if(heightValue > maxHeightValue) {
							maxHeightValue = heightValue;
						}
						var _g9 = 0;
						var _g14 = _gthis.layoutGroups;
						while(_g9 < _g14.data.get_length()) {
							var lg2 = _g14.data.get(_g9);
							++_g9;
							if(lg2.lineIndex < lineIndex) {
								continue;
							}
							if(lg2.lineIndex > lineIndex) {
								break;
							}
							lg2.ascent = maxAscent;
							lg2.height = maxHeightValue;
						}
						offsetY += maxHeightValue;
						maxAscent = 0.0;
						maxHeightValue = 0.0;
						++lineIndex;
						offsetX = 2;
					}
					offsetX = 2;
					if(offsetCount > 0) {
						var this2 = this.layoutGroups;
						var index3 = this.layoutGroups.data.get_length() - offsetCount;
						var bumpX = this2.data.get(index3).offsetX;
						var _g15 = this.layoutGroups.data.get_length() - offsetCount;
						var _g10 = this.layoutGroups.data.get_length();
						while(_g15 < _g10) {
							var i2 = _g15++;
							layoutGroup = this.layoutGroups.data.get(i2);
							layoutGroup.offsetX -= bumpX;
							layoutGroup.offsetY = offsetY;
							layoutGroup.lineIndex = lineIndex;
							offsetX += layoutGroup.width;
						}
					}
					if(this.width >= 4) {
						var text6 = lime_text__$UTF8String_UTF8String_$Impl_$.substring(_gthis.text,textIndex,endIndex1);
						if(_gthis.__textLayout == null) {
							_gthis.__textLayout = new lime_text_TextLayout();
						}
						var width10 = 0.0;
						_gthis.__textLayout.set_text(null);
						_gthis.__textLayout.set_font(font);
						if(formatRange.format.size != null) {
							_gthis.__textLayout.set_size(formatRange.format.size);
						}
						_gthis.__textLayout.set_text(text6);
						var _g16 = 0;
						var _g17 = _gthis.__textLayout.get_positions();
						while(_g16 < _g17.length) {
							var position6 = _g17[_g16];
							++_g16;
							width10 += position6.advance.x;
						}
						var tempWidth1 = width10;
						while(offsetX + tempWidth1 > _gthis.width - 2) {
							var i3 = 1;
							while(textIndex + i3 < endIndex1 + 1) {
								var text7 = lime_text__$UTF8String_UTF8String_$Impl_$.substr(_gthis.text,textIndex,i3);
								if(_gthis.__textLayout == null) {
									_gthis.__textLayout = new lime_text_TextLayout();
								}
								var width11 = 0.0;
								_gthis.__textLayout.set_text(null);
								_gthis.__textLayout.set_font(font);
								if(formatRange.format.size != null) {
									_gthis.__textLayout.set_size(formatRange.format.size);
								}
								_gthis.__textLayout.set_text(text7);
								var _g18 = 0;
								var _g19 = _gthis.__textLayout.get_positions();
								while(_g18 < _g19.length) {
									var position7 = _g19[_g18];
									++_g18;
									width11 += position7.advance.x;
								}
								tempWidth1 = width11;
								if(offsetX + tempWidth1 > _gthis.width - 2) {
									--i3;
									break;
								}
								++i3;
							}
							if(i3 == 0 && tempWidth1 > _gthis.width - 4) {
								i3 = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(_gthis.text);
							}
							if(i3 == 0) {
								offsetX = 2;
								offsetY += layoutGroup.height;
								++lineIndex;
								break;
							} else {
								var endIndex2 = textIndex + i3;
								if(layoutGroup == null || layoutGroup.startIndex != layoutGroup.endIndex) {
									layoutGroup = new openfl__$internal_text_TextLayoutGroup(formatRange.format,textIndex,endIndex2);
									_gthis.layoutGroups.data.push(layoutGroup);
								} else {
									layoutGroup.format = formatRange.format;
									layoutGroup.startIndex = textIndex;
									layoutGroup.endIndex = endIndex2;
								}
								var text8 = _gthis.text;
								if(_gthis.__textLayout == null) {
									_gthis.__textLayout = new lime_text_TextLayout();
								}
								var width12 = 0.0;
								_gthis.__textLayout.set_text(null);
								_gthis.__textLayout.set_font(font);
								if(formatRange.format.size != null) {
									_gthis.__textLayout.set_size(formatRange.format.size);
								}
								_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text8,textIndex,textIndex + i3));
								layoutGroup.positions = _gthis.__textLayout.get_positions();
								layoutGroup.offsetX = offsetX;
								layoutGroup.ascent = ascent;
								layoutGroup.descent = descent;
								layoutGroup.leading = leading;
								layoutGroup.lineIndex = lineIndex;
								layoutGroup.offsetY = offsetY;
								var positions3 = layoutGroup.positions;
								var width13 = 0.0;
								var _g20 = 0;
								while(_g20 < positions3.length) {
									var position8 = positions3[_g20];
									++_g20;
									width13 += position8.advance.x;
								}
								layoutGroup.width = width13;
								layoutGroup.height = heightValue;
								layoutGroup = null;
								if(ascent > maxAscent) {
									maxAscent = ascent;
								}
								if(heightValue > maxHeightValue) {
									maxHeightValue = heightValue;
								}
								var _g21 = 0;
								var _g110 = _gthis.layoutGroups;
								while(_g21 < _g110.data.get_length()) {
									var lg3 = _g110.data.get(_g21);
									++_g21;
									if(lg3.lineIndex < lineIndex) {
										continue;
									}
									if(lg3.lineIndex > lineIndex) {
										break;
									}
									lg3.ascent = maxAscent;
									lg3.height = maxHeightValue;
								}
								offsetY += maxHeightValue;
								maxAscent = 0.0;
								maxHeightValue = 0.0;
								++lineIndex;
								offsetX = 2;
								textIndex += i3;
								var text9 = _gthis.text;
								if(_gthis.__textLayout == null) {
									_gthis.__textLayout = new lime_text_TextLayout();
								}
								var width14 = 0.0;
								_gthis.__textLayout.set_text(null);
								_gthis.__textLayout.set_font(font);
								if(formatRange.format.size != null) {
									_gthis.__textLayout.set_size(formatRange.format.size);
								}
								_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text9,textIndex,endIndex1));
								positions = _gthis.__textLayout.get_positions();
								var width15 = 0.0;
								var _g22 = 0;
								while(_g22 < positions.length) {
									var position9 = positions[_g22];
									++_g22;
									width15 += position9.advance.x;
								}
								widthValue = width15;
								tempWidth1 = widthValue;
							}
						}
					}
					if(layoutGroup == null || layoutGroup.startIndex != layoutGroup.endIndex) {
						layoutGroup = new openfl__$internal_text_TextLayoutGroup(formatRange.format,textIndex,endIndex1);
						_gthis.layoutGroups.data.push(layoutGroup);
					} else {
						layoutGroup.format = formatRange.format;
						layoutGroup.startIndex = textIndex;
						layoutGroup.endIndex = endIndex1;
					}
					layoutGroup.positions = positions;
					layoutGroup.offsetX = offsetX;
					layoutGroup.ascent = ascent;
					layoutGroup.descent = descent;
					layoutGroup.leading = leading;
					layoutGroup.lineIndex = lineIndex;
					layoutGroup.offsetY = offsetY;
					layoutGroup.width = widthValue;
					layoutGroup.height = heightValue;
					offsetX += widthValue;
					textIndex = endIndex1;
					wrap = false;
				} else {
					if(layoutGroup != null && textIndex == spaceIndex) {
						if(lineFormat.align != 2) {
							layoutGroup.endIndex = spaceIndex;
							layoutGroup.positions = layoutGroup.positions.concat(positions);
							layoutGroup.width += widthValue;
						}
					} else if(layoutGroup == null || lineFormat.align == 2) {
						if(layoutGroup == null || layoutGroup.startIndex != layoutGroup.endIndex) {
							layoutGroup = new openfl__$internal_text_TextLayoutGroup(formatRange.format,textIndex,endIndex1);
							_gthis.layoutGroups.data.push(layoutGroup);
						} else {
							layoutGroup.format = formatRange.format;
							layoutGroup.startIndex = textIndex;
							layoutGroup.endIndex = endIndex1;
						}
						layoutGroup.positions = positions;
						layoutGroup.offsetX = offsetX;
						layoutGroup.ascent = ascent;
						layoutGroup.descent = descent;
						layoutGroup.leading = leading;
						layoutGroup.lineIndex = lineIndex;
						layoutGroup.offsetY = offsetY;
						layoutGroup.width = widthValue;
						layoutGroup.height = heightValue;
					} else {
						layoutGroup.endIndex = endIndex1;
						layoutGroup.positions = layoutGroup.positions.concat(positions);
						layoutGroup.width += widthValue;
						if(breakIndex == endIndex1) {
							++endIndex1;
						}
					}
					offsetX += widthValue;
					textIndex = endIndex1;
				}
				var nextSpaceIndex = lime_text__$UTF8String_UTF8String_$Impl_$.indexOf(this.text," ",textIndex);
				if(formatRange.end <= previousSpaceIndex) {
					layoutGroup = null;
					textIndex = formatRange.end;
					if(rangeIndex < _gthis.textFormatRanges.data.get_length() - 1) {
						++rangeIndex;
						formatRange = _gthis.textFormatRanges.data.get(rangeIndex);
						currentFormat.__merge(formatRange.format);
					}
					if(heightValue > maxHeightValue) {
						maxHeightValue = heightValue;
					}
					if(ascent > maxAscent) {
						maxAscent = ascent;
					}
				} else {
					if(breakIndex == previousSpaceIndex) {
						layoutGroup.endIndex = breakIndex;
						if(breakIndex - layoutGroup.startIndex - layoutGroup.positions.length < 0) {
							layoutGroup.positions.push(null);
						}
						textIndex = breakIndex + 1;
					}
					previousSpaceIndex = spaceIndex;
					spaceIndex = nextSpaceIndex;
				}
				if(breakIndex > -1 && breakIndex <= textIndex && (spaceIndex > breakIndex || spaceIndex == -1) || textIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.text) || spaceIndex > formatRange.end) {
					break;
				}
			}
		} else {
			if(textIndex > formatRange.end) {
				break;
			} else if(textIndex < formatRange.end || textIndex == lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.text)) {
				if(this.wordWrap && this.width >= 4) {
					var endIndex3 = formatRange.end;
					var text10 = lime_text__$UTF8String_UTF8String_$Impl_$.substring(_gthis.text,textIndex,endIndex3);
					if(_gthis.__textLayout == null) {
						_gthis.__textLayout = new lime_text_TextLayout();
					}
					var width16 = 0.0;
					_gthis.__textLayout.set_text(null);
					_gthis.__textLayout.set_font(font);
					if(formatRange.format.size != null) {
						_gthis.__textLayout.set_size(formatRange.format.size);
					}
					_gthis.__textLayout.set_text(text10);
					var _g23 = 0;
					var _g111 = _gthis.__textLayout.get_positions();
					while(_g23 < _g111.length) {
						var position10 = _g111[_g23];
						++_g23;
						width16 += position10.advance.x;
					}
					var tempWidth2 = width16;
					while(offsetX + tempWidth2 > _gthis.width - 2) {
						var i4 = 1;
						while(textIndex + i4 < endIndex3 + 1) {
							var text11 = lime_text__$UTF8String_UTF8String_$Impl_$.substr(_gthis.text,textIndex,i4);
							if(_gthis.__textLayout == null) {
								_gthis.__textLayout = new lime_text_TextLayout();
							}
							var width17 = 0.0;
							_gthis.__textLayout.set_text(null);
							_gthis.__textLayout.set_font(font);
							if(formatRange.format.size != null) {
								_gthis.__textLayout.set_size(formatRange.format.size);
							}
							_gthis.__textLayout.set_text(text11);
							var _g24 = 0;
							var _g112 = _gthis.__textLayout.get_positions();
							while(_g24 < _g112.length) {
								var position11 = _g112[_g24];
								++_g24;
								width17 += position11.advance.x;
							}
							tempWidth2 = width17;
							if(offsetX + tempWidth2 > _gthis.width - 2) {
								--i4;
								break;
							}
							++i4;
						}
						if(i4 == 0 && tempWidth2 > _gthis.width - 4) {
							i4 = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(_gthis.text);
						}
						if(i4 == 0) {
							offsetX = 2;
							offsetY += layoutGroup.height;
							++lineIndex;
							break;
						} else {
							var endIndex4 = textIndex + i4;
							if(layoutGroup == null || layoutGroup.startIndex != layoutGroup.endIndex) {
								layoutGroup = new openfl__$internal_text_TextLayoutGroup(formatRange.format,textIndex,endIndex4);
								_gthis.layoutGroups.data.push(layoutGroup);
							} else {
								layoutGroup.format = formatRange.format;
								layoutGroup.startIndex = textIndex;
								layoutGroup.endIndex = endIndex4;
							}
							var text12 = _gthis.text;
							if(_gthis.__textLayout == null) {
								_gthis.__textLayout = new lime_text_TextLayout();
							}
							var width18 = 0.0;
							_gthis.__textLayout.set_text(null);
							_gthis.__textLayout.set_font(font);
							if(formatRange.format.size != null) {
								_gthis.__textLayout.set_size(formatRange.format.size);
							}
							_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text12,textIndex,textIndex + i4));
							layoutGroup.positions = _gthis.__textLayout.get_positions();
							layoutGroup.offsetX = offsetX;
							layoutGroup.ascent = ascent;
							layoutGroup.descent = descent;
							layoutGroup.leading = leading;
							layoutGroup.lineIndex = lineIndex;
							layoutGroup.offsetY = offsetY;
							var positions4 = layoutGroup.positions;
							var width19 = 0.0;
							var _g25 = 0;
							while(_g25 < positions4.length) {
								var position12 = positions4[_g25];
								++_g25;
								width19 += position12.advance.x;
							}
							layoutGroup.width = width19;
							layoutGroup.height = heightValue;
							layoutGroup = null;
							if(ascent > maxAscent) {
								maxAscent = ascent;
							}
							if(heightValue > maxHeightValue) {
								maxHeightValue = heightValue;
							}
							var _g26 = 0;
							var _g113 = _gthis.layoutGroups;
							while(_g26 < _g113.data.get_length()) {
								var lg4 = _g113.data.get(_g26);
								++_g26;
								if(lg4.lineIndex < lineIndex) {
									continue;
								}
								if(lg4.lineIndex > lineIndex) {
									break;
								}
								lg4.ascent = maxAscent;
								lg4.height = maxHeightValue;
							}
							offsetY += maxHeightValue;
							maxAscent = 0.0;
							maxHeightValue = 0.0;
							++lineIndex;
							offsetX = 2;
							textIndex += i4;
							var text13 = _gthis.text;
							if(_gthis.__textLayout == null) {
								_gthis.__textLayout = new lime_text_TextLayout();
							}
							var width20 = 0.0;
							_gthis.__textLayout.set_text(null);
							_gthis.__textLayout.set_font(font);
							if(formatRange.format.size != null) {
								_gthis.__textLayout.set_size(formatRange.format.size);
							}
							_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text13,textIndex,endIndex3));
							positions = _gthis.__textLayout.get_positions();
							var width21 = 0.0;
							var _g27 = 0;
							while(_g27 < positions.length) {
								var position13 = positions[_g27];
								++_g27;
								width21 += position13.advance.x;
							}
							widthValue = width21;
							tempWidth2 = widthValue;
						}
					}
				}
				var text14 = this.text;
				var endIndex5 = formatRange.end;
				if(_gthis.__textLayout == null) {
					_gthis.__textLayout = new lime_text_TextLayout();
				}
				var width22 = 0.0;
				_gthis.__textLayout.set_text(null);
				_gthis.__textLayout.set_font(font);
				if(formatRange.format.size != null) {
					_gthis.__textLayout.set_size(formatRange.format.size);
				}
				_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text14,textIndex,endIndex5));
				positions = _gthis.__textLayout.get_positions();
				var width23 = 0.0;
				var _g28 = 0;
				while(_g28 < positions.length) {
					var position14 = positions[_g28];
					++_g28;
					width23 += position14.advance.x;
				}
				widthValue = width23;
				var endIndex6 = formatRange.end;
				if(layoutGroup == null || layoutGroup.startIndex != layoutGroup.endIndex) {
					layoutGroup = new openfl__$internal_text_TextLayoutGroup(formatRange.format,textIndex,endIndex6);
					_gthis.layoutGroups.data.push(layoutGroup);
				} else {
					layoutGroup.format = formatRange.format;
					layoutGroup.startIndex = textIndex;
					layoutGroup.endIndex = endIndex6;
				}
				var text15 = this.text;
				var endIndex7 = formatRange.end;
				if(_gthis.__textLayout == null) {
					_gthis.__textLayout = new lime_text_TextLayout();
				}
				var width24 = 0.0;
				_gthis.__textLayout.set_text(null);
				_gthis.__textLayout.set_font(font);
				if(formatRange.format.size != null) {
					_gthis.__textLayout.set_size(formatRange.format.size);
				}
				_gthis.__textLayout.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(text15,textIndex,endIndex7));
				layoutGroup.positions = _gthis.__textLayout.get_positions();
				layoutGroup.offsetX = offsetX;
				layoutGroup.ascent = ascent;
				layoutGroup.descent = descent;
				layoutGroup.leading = leading;
				layoutGroup.lineIndex = lineIndex;
				layoutGroup.offsetY = offsetY;
				var positions5 = layoutGroup.positions;
				var width25 = 0.0;
				var _g29 = 0;
				while(_g29 < positions5.length) {
					var position15 = positions5[_g29];
					++_g29;
					width25 += position15.advance.x;
				}
				layoutGroup.width = width25;
				layoutGroup.height = heightValue;
				offsetX += widthValue;
				textIndex = formatRange.end;
			}
			if(rangeIndex < _gthis.textFormatRanges.data.get_length() - 1) {
				++rangeIndex;
				formatRange = _gthis.textFormatRanges.data.get(rangeIndex);
				currentFormat.__merge(formatRange.format);
			}
			if(heightValue > maxHeightValue) {
				maxHeightValue = heightValue;
			}
			if(ascent > maxAscent) {
				maxAscent = ascent;
			}
			if(textIndex == formatRange.end) {
				if(ascent > maxAscent) {
					maxAscent = ascent;
				}
				if(heightValue > maxHeightValue) {
					maxHeightValue = heightValue;
				}
				var _g30 = 0;
				var _g114 = _gthis.layoutGroups;
				while(_g30 < _g114.data.get_length()) {
					var lg5 = _g114.data.get(_g30);
					++_g30;
					if(lg5.lineIndex < lineIndex) {
						continue;
					}
					if(lg5.lineIndex > lineIndex) {
						break;
					}
					lg5.ascent = maxAscent;
					lg5.height = maxHeightValue;
				}
				offsetY += maxHeightValue;
				maxAscent = 0.0;
				maxHeightValue = 0.0;
				++lineIndex;
				offsetX = 2;
				++textIndex;
				break;
			}
		}
	}
	,setTextAlignment: function() {
		var lineIndex = -1;
		var offsetX = 0.0;
		var totalWidth = this.width - 4;
		var group;
		var lineLength;
		var _g1 = 0;
		var _g = this.layoutGroups.data.get_length();
		while(_g1 < _g) {
			var i = _g1++;
			group = this.layoutGroups.data.get(i);
			if(group.lineIndex != lineIndex) {
				lineIndex = group.lineIndex;
				var _g2 = group.format.align;
				switch(_g2) {
				case 0:
					if(this.lineWidths.data.get(lineIndex) < totalWidth) {
						offsetX = Math.round((totalWidth - this.lineWidths.data.get(lineIndex)) / 2);
					} else {
						offsetX = 0;
					}
					break;
				case 2:
					if(this.lineWidths.data.get(lineIndex) < totalWidth) {
						lineLength = 1;
						var _g3 = i + 1;
						var _g21 = this.layoutGroups.data.get_length();
						while(_g3 < _g21) {
							var j = _g3++;
							if(this.layoutGroups.data.get(j).lineIndex == lineIndex) {
								if(j == 0 || lime_text__$UTF8String_UTF8String_$Impl_$.charCodeAt(this.text,this.layoutGroups.data.get(j).startIndex - 1) == 32) {
									++lineLength;
								}
							} else {
								break;
							}
						}
						if(lineLength > 1) {
							group = this.layoutGroups.data.get(i + lineLength - 1);
							var endChar = lime_text__$UTF8String_UTF8String_$Impl_$.charCodeAt(this.text,group.endIndex);
							if(group.endIndex < lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.text) && endChar != 10 && endChar != 13) {
								offsetX = (totalWidth - this.lineWidths.data.get(lineIndex)) / (lineLength - 1);
								var j1 = 0;
								while(true) {
									if(j1 > 1 && lime_text__$UTF8String_UTF8String_$Impl_$.charCodeAt(this.text,this.layoutGroups.data.get(j1).startIndex - 1) != 32) {
										this.layoutGroups.data.get(i + j1).offsetX += offsetX * (j1 - 1);
										++j1;
									}
									this.layoutGroups.data.get(i + j1).offsetX += offsetX * j1;
									if(!(++j1 < lineLength)) {
										break;
									}
								}
							}
						}
					}
					offsetX = 0;
					break;
				case 4:
					if(this.lineWidths.data.get(lineIndex) < totalWidth) {
						offsetX = Math.round(totalWidth - this.lineWidths.data.get(lineIndex));
					} else {
						offsetX = 0;
					}
					break;
				default:
					offsetX = 0;
				}
			}
			if(offsetX > 0) {
				group.offsetX += offsetX;
			}
		}
	}
	,update: function() {
		if(this.text == null || this.textFormatRanges.data.get_length() == 0) {
			this.lineAscents.data.set_length(0);
			this.lineBreaks.data.set_length(0);
			this.lineDescents.data.set_length(0);
			this.lineLeadings.data.set_length(0);
			this.lineHeights.data.set_length(0);
			this.lineWidths.data.set_length(0);
			this.layoutGroups.data.set_length(0);
			this.textWidth = 0;
			this.textHeight = 0;
			this.numLines = 1;
			this.maxScrollH = 0;
			this.maxScrollV = 1;
			this.bottomScrollV = 1;
		} else {
			this.getLayoutGroups();
			this.getLineMeasurements();
			this.setTextAlignment();
		}
		this.getBounds();
	}
	,set_restrict: function(value) {
		if(lime_text__$UTF8String_UTF8String_$Impl_$.equals(this.restrict,value)) {
			return this.restrict;
		}
		this.restrict = value;
		if(this.restrict == null || lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.restrict) == 0) {
			this.__restrictRegexp = null;
		} else {
			this.__restrictRegexp = this.createRestrictRegexp(value);
		}
		return this.restrict;
	}
	,set_text: function(value) {
		if(value == null) {
			return this.text = value;
		}
		if(this.__restrictRegexp != null) {
			value = this.__restrictRegexp.split(value).join("");
		}
		if(this.maxChars > 0 && value.length > this.maxChars) {
			value = HxOverrides.substr(value,0,this.maxChars);
		}
		this.text = value;
		return this.text;
	}
	,__class__: openfl__$internal_text_TextEngine
	,__properties__: {set_text:"set_text",set_restrict:"set_restrict"}
};
var openfl__$internal_text_TextFormatRange = function(format,start,end) {
	this.format = format;
	this.start = start;
	this.end = end;
};
$hxClasses["openfl._internal.text.TextFormatRange"] = openfl__$internal_text_TextFormatRange;
openfl__$internal_text_TextFormatRange.__name__ = ["openfl","_internal","text","TextFormatRange"];
openfl__$internal_text_TextFormatRange.prototype = {
	end: null
	,format: null
	,start: null
	,__class__: openfl__$internal_text_TextFormatRange
};
var openfl__$internal_text_TextLayoutGroup = function(format,startIndex,endIndex) {
	this.format = format;
	this.startIndex = startIndex;
	this.endIndex = endIndex;
};
$hxClasses["openfl._internal.text.TextLayoutGroup"] = openfl__$internal_text_TextLayoutGroup;
openfl__$internal_text_TextLayoutGroup.__name__ = ["openfl","_internal","text","TextLayoutGroup"];
openfl__$internal_text_TextLayoutGroup.prototype = {
	ascent: null
	,descent: null
	,endIndex: null
	,format: null
	,height: null
	,leading: null
	,lineIndex: null
	,offsetX: null
	,offsetY: null
	,positions: null
	,startIndex: null
	,width: null
	,getAdvance: function(index) {
		if(index >= 0 && index < this.positions.length) {
			return this.positions[index].advance.x;
		} else {
			return 0;
		}
	}
	,__class__: openfl__$internal_text_TextLayoutGroup
};
var openfl__$internal_timeline_Frame = function() {
};
$hxClasses["openfl._internal.timeline.Frame"] = openfl__$internal_timeline_Frame;
openfl__$internal_timeline_Frame.__name__ = ["openfl","_internal","timeline","Frame"];
openfl__$internal_timeline_Frame.prototype = {
	label: null
	,objects: null
	,script: null
	,scriptSource: null
	,__class__: openfl__$internal_timeline_Frame
};
var openfl__$internal_timeline_FrameObject = function() {
};
$hxClasses["openfl._internal.timeline.FrameObject"] = openfl__$internal_timeline_FrameObject;
openfl__$internal_timeline_FrameObject.__name__ = ["openfl","_internal","timeline","FrameObject"];
openfl__$internal_timeline_FrameObject.prototype = {
	blendMode: null
	,cacheAsBitmap: null
	,clipDepth: null
	,colorTransform: null
	,depth: null
	,filters: null
	,id: null
	,matrix: null
	,name: null
	,symbol: null
	,type: null
	,visible: null
	,__class__: openfl__$internal_timeline_FrameObject
};
var openfl__$internal_timeline_FrameObjectType = $hxClasses["openfl._internal.timeline.FrameObjectType"] = { __ename__ : ["openfl","_internal","timeline","FrameObjectType"], __constructs__ : ["CREATE","UPDATE","DESTROY"] };
openfl__$internal_timeline_FrameObjectType.CREATE = ["CREATE",0];
openfl__$internal_timeline_FrameObjectType.CREATE.toString = $estr;
openfl__$internal_timeline_FrameObjectType.CREATE.__enum__ = openfl__$internal_timeline_FrameObjectType;
openfl__$internal_timeline_FrameObjectType.UPDATE = ["UPDATE",1];
openfl__$internal_timeline_FrameObjectType.UPDATE.toString = $estr;
openfl__$internal_timeline_FrameObjectType.UPDATE.__enum__ = openfl__$internal_timeline_FrameObjectType;
openfl__$internal_timeline_FrameObjectType.DESTROY = ["DESTROY",2];
openfl__$internal_timeline_FrameObjectType.DESTROY.toString = $estr;
openfl__$internal_timeline_FrameObjectType.DESTROY.__enum__ = openfl__$internal_timeline_FrameObjectType;
var openfl__$internal_utils_PerlinNoise = function(seed,octaves,falloff) {
	if(seed == null) {
		seed = 123;
	}
	if(falloff == null) {
		falloff = .5;
	}
	this.octaves = octaves == null ? 4 : octaves;
	this.baseFactor = 0.015625;
	this.seedOffset(seed);
	this.octFreqPers(falloff);
};
$hxClasses["openfl._internal.utils.PerlinNoise"] = openfl__$internal_utils_PerlinNoise;
openfl__$internal_utils_PerlinNoise.__name__ = ["openfl","_internal","utils","PerlinNoise"];
openfl__$internal_utils_PerlinNoise.prototype = {
	octaves: null
	,aOctFreq: null
	,aOctPers: null
	,fPersMax: null
	,iXoffset: null
	,iYoffset: null
	,iZoffset: null
	,baseFactor: null
	,fill: function(bitmap,_x,_y,_z,_) {
		var baseX = _x * this.baseFactor + this.iXoffset;
		_y = _y * this.baseFactor + this.iYoffset;
		_z = _z * this.baseFactor + this.iZoffset;
		var width = bitmap.width;
		var height = bitmap.height;
		var p = openfl__$internal_utils_PerlinNoise.P;
		var octaves = this.octaves;
		var aOctFreq = this.aOctFreq;
		var aOctPers = this.aOctPers;
		var _g1 = 0;
		var _g = height;
		while(_g1 < _g) {
			var py = _g1++;
			_x = baseX;
			var _g3 = 0;
			var _g2 = width;
			while(_g3 < _g2) {
				var px = _g3++;
				var s = 0.;
				var _g5 = 0;
				var _g4 = octaves;
				while(_g5 < _g4) {
					var i = _g5++;
					var fFreq = aOctFreq[i];
					var fPers = aOctPers[i];
					var x = _x * fFreq;
					var y = _y * fFreq;
					var z = _z * fFreq;
					var xf = x - x % 1;
					var yf = y - y % 1;
					var zf = z - z % 1;
					var X = (xf | 0) & 255;
					var Y = (yf | 0) & 255;
					var Z = (zf | 0) & 255;
					x -= xf;
					y -= yf;
					z -= zf;
					var u = x * x * x * (x * (x * 6 - 15) + 10);
					var v = y * y * y * (y * (y * 6 - 15) + 10);
					var w = z * z * z * (z * (z * 6 - 15) + 10);
					var A = p[X] + Y;
					var AA = p[A] + Z;
					var AB = p[A + 1] + Z;
					var B = p[X + 1] + Y;
					var BA = p[B] + Z;
					var BB = p[B + 1] + Z;
					var x1 = x - 1;
					var y1 = y - 1;
					var z1 = z - 1;
					var hash = p[BB + 1] & 15;
					var g1 = ((hash & 1) == 0 ? hash < 8 ? x1 : y1 : hash < 8 ? -x1 : -y1) + ((hash & 2) == 0 ? hash < 4 ? y1 : hash == 12 ? x1 : z1 : hash < 4 ? -y1 : hash == 14 ? -x1 : -z1);
					hash = p[AB + 1] & 15;
					var g2 = ((hash & 1) == 0 ? hash < 8 ? x : y1 : hash < 8 ? -x : -y1) + ((hash & 2) == 0 ? hash < 4 ? y1 : hash == 12 ? x : z1 : hash < 4 ? -y1 : hash == 14 ? -x : -z1);
					hash = p[BA + 1] & 15;
					var g3 = ((hash & 1) == 0 ? hash < 8 ? x1 : y : hash < 8 ? -x1 : -y) + ((hash & 2) == 0 ? hash < 4 ? y : hash == 12 ? x1 : z1 : hash < 4 ? -y : hash == 14 ? -x1 : -z1);
					hash = p[AA + 1] & 15;
					var g4 = ((hash & 1) == 0 ? hash < 8 ? x : y : hash < 8 ? -x : -y) + ((hash & 2) == 0 ? hash < 4 ? y : hash == 12 ? x : z1 : hash < 4 ? -y : hash == 14 ? -x : -z1);
					hash = p[BB] & 15;
					var g5 = ((hash & 1) == 0 ? hash < 8 ? x1 : y1 : hash < 8 ? -x1 : -y1) + ((hash & 2) == 0 ? hash < 4 ? y1 : hash == 12 ? x1 : z : hash < 4 ? -y1 : hash == 14 ? -x1 : -z);
					hash = p[AB] & 15;
					var g6 = ((hash & 1) == 0 ? hash < 8 ? x : y1 : hash < 8 ? -x : -y1) + ((hash & 2) == 0 ? hash < 4 ? y1 : hash == 12 ? x : z : hash < 4 ? -y1 : hash == 14 ? -x : -z);
					hash = p[BA] & 15;
					var g7 = ((hash & 1) == 0 ? hash < 8 ? x1 : y : hash < 8 ? -x1 : -y) + ((hash & 2) == 0 ? hash < 4 ? y : hash == 12 ? x1 : z : hash < 4 ? -y : hash == 14 ? -x1 : -z);
					hash = p[AA] & 15;
					var g8 = ((hash & 1) == 0 ? hash < 8 ? x : y : hash < 8 ? -x : -y) + ((hash & 2) == 0 ? hash < 4 ? y : hash == 12 ? x : z : hash < 4 ? -y : hash == 14 ? -x : -z);
					g2 += u * (g1 - g2);
					g4 += u * (g3 - g4);
					g6 += u * (g5 - g6);
					g8 += u * (g7 - g8);
					g4 += v * (g2 - g4);
					g8 += v * (g6 - g8);
					s += (g8 + w * (g4 - g8)) * fPers;
				}
				var color = (s * this.fPersMax + 1) * 128 | 0;
				bitmap.setPixel32(px,py,-16777216 | color << 16 | color << 8 | color);
				_x += this.baseFactor;
			}
			_y += this.baseFactor;
		}
	}
	,octFreqPers: function(fPersistence) {
		var fFreq;
		var fPers;
		this.aOctFreq = [];
		this.aOctPers = [];
		this.fPersMax = 0;
		var _g1 = 0;
		var _g = this.octaves;
		while(_g1 < _g) {
			var i = _g1++;
			fFreq = Math.pow(2,i);
			fPers = Math.pow(fPersistence,i);
			this.fPersMax += fPers;
			this.aOctFreq.push(fFreq);
			this.aOctPers.push(fPers);
		}
		this.fPersMax = 1 / this.fPersMax;
	}
	,seedOffset: function(iSeed) {
		iSeed = iSeed * 16807. % 2147483647 | 0;
		this.iXoffset = iSeed;
		iSeed = iSeed * 16807. % 2147483647 | 0;
		this.iYoffset = iSeed;
		iSeed = iSeed * 16807. % 2147483647 | 0;
		this.iZoffset = iSeed;
	}
	,__class__: openfl__$internal_utils_PerlinNoise
};
var openfl_display_Application = function() {
	lime_app_Application.call(this);
	if(openfl__$internal_Lib.application == null) {
		openfl__$internal_Lib.application = this;
	}
};
$hxClasses["openfl.display.Application"] = openfl_display_Application;
openfl_display_Application.__name__ = ["openfl","display","Application"];
openfl_display_Application.__super__ = lime_app_Application;
openfl_display_Application.prototype = $extend(lime_app_Application.prototype,{
	create: function(config) {
		this.config = config;
		this.backend.create(config);
		if(openfl__$internal_Lib.current == null) {
			openfl__$internal_Lib.current = new openfl_display_MovieClip();
		}
		openfl__$internal_Lib.current.__loaderInfo = openfl_display_LoaderInfo.create(null);
		openfl__$internal_Lib.current.__loaderInfo.content = openfl__$internal_Lib.current;
		if(config != null) {
			if(Object.prototype.hasOwnProperty.call(config,"fps")) {
				this.backend.setFrameRate(config.fps);
			}
			if(Object.prototype.hasOwnProperty.call(config,"windows")) {
				var _g = 0;
				var _g1 = config.windows;
				while(_g < _g1.length) {
					var windowConfig = _g1[_g];
					++_g;
					var $window = new openfl_display_Window(windowConfig);
					this.createWindow($window);
				}
			}
			if(this.__preloader == null || this.__preloader.complete) {
				this.onPreloadComplete();
			}
		}
	}
	,__class__: openfl_display_Application
});
var openfl_display_BitmapData = function(width,height,transparent,fillColor) {
	if(fillColor == null) {
		fillColor = -1;
	}
	if(transparent == null) {
		transparent = true;
	}
	this.transparent = transparent;
	if(width < 0) {
		width = 0;
	} else {
		width = width;
	}
	if(height < 0) {
		height = 0;
	} else {
		height = height;
	}
	this.width = width;
	this.height = height;
	this.rect = new openfl_geom_Rectangle(0,0,width,height);
	if(width > 0 && height > 0) {
		if(transparent) {
			if((fillColor & -16777216) == 0) {
				fillColor = 0;
			}
		} else {
			fillColor = -16777216 | fillColor & 16777215;
		}
		fillColor = fillColor << 8 | fillColor >>> 24 & 255;
		this.image = new lime_graphics_Image(null,0,0,width,height,fillColor);
		this.image.set_transparent(transparent);
		this.__isValid = true;
		this.readable = true;
	}
	this.__worldTransform = new openfl_geom_Matrix();
	this.__worldColorTransform = new openfl_geom_ColorTransform();
	this.__renderable = true;
};
$hxClasses["openfl.display.BitmapData"] = openfl_display_BitmapData;
openfl_display_BitmapData.__name__ = ["openfl","display","BitmapData"];
openfl_display_BitmapData.__interfaces__ = [openfl_display_IBitmapDrawable];
openfl_display_BitmapData.fromBase64 = function(base64,type) {
	var bitmapData = new openfl_display_BitmapData(0,0,true,0);
	var image = lime_graphics_Image.fromBase64(base64,type);
	bitmapData.__fromImage(image);
	return bitmapData;
};
openfl_display_BitmapData.fromBytes = function(bytes,rawAlpha) {
	var bitmapData = new openfl_display_BitmapData(0,0,true,0);
	var image = lime_graphics_Image.fromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes));
	bitmapData.__fromImage(image);
	if(rawAlpha != null) {
		bitmapData.__applyAlpha(rawAlpha);
	}
	return bitmapData;
};
openfl_display_BitmapData.fromFile = function(path) {
	var bitmapData = new openfl_display_BitmapData(0,0,true,0);
	bitmapData.__fromFile(path);
	return bitmapData;
};
openfl_display_BitmapData.fromImage = function(image,transparent) {
	if(transparent == null) {
		transparent = true;
	}
	if(image == null || image.buffer == null) {
		return null;
	}
	var bitmapData = new openfl_display_BitmapData(0,0,transparent,0);
	bitmapData.__fromImage(image);
	bitmapData.image.set_transparent(transparent);
	return bitmapData;
};
openfl_display_BitmapData.fromTexture = function(texture) {
	if(texture == null) {
		return null;
	}
	var bitmapData = new openfl_display_BitmapData(texture.__width,texture.__height,true,0);
	bitmapData.readable = false;
	bitmapData.__texture = texture.__textureID;
	bitmapData.__textureContext = texture.__textureContext;
	bitmapData.image = null;
	return bitmapData;
};
openfl_display_BitmapData.loadFromBase64 = function(base64,type) {
	return lime_graphics_Image.loadFromBase64(base64,type).then(function(image) {
		return lime_app_Future.withValue(openfl_display_BitmapData.fromImage(image));
	});
};
openfl_display_BitmapData.loadFromBytes = function(bytes,rawAlpha) {
	return lime_graphics_Image.loadFromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes)).then(function(image) {
		var bitmapData = openfl_display_BitmapData.fromImage(image);
		if(rawAlpha != null) {
			bitmapData.__applyAlpha(rawAlpha);
		}
		return lime_app_Future.withValue(bitmapData);
	});
};
openfl_display_BitmapData.loadFromFile = function(path) {
	return lime_graphics_Image.loadFromFile(path).then(function(image) {
		return lime_app_Future.withValue(openfl_display_BitmapData.fromImage(image));
	});
};
openfl_display_BitmapData.prototype = {
	height: null
	,image: null
	,readable: null
	,rect: null
	,transparent: null
	,width: null
	,__blendMode: null
	,__buffer: null
	,__bufferColorTransform: null
	,__bufferContext: null
	,__bufferAlpha: null
	,__bufferData: null
	,__framebuffer: null
	,__framebufferContext: null
	,__isMask: null
	,__isValid: null
	,__renderable: null
	,__surface: null
	,__texture: null
	,__textureContext: null
	,__textureVersion: null
	,__transform: null
	,__worldAlpha: null
	,__worldColorTransform: null
	,__worldTransform: null
	,applyFilter: function(sourceBitmapData,sourceRect,destPoint,filter) {
		if(!this.readable || sourceBitmapData == null || !sourceBitmapData.readable) {
			return;
		}
		filter.__applyFilter(this,sourceBitmapData,sourceRect,destPoint);
	}
	,clone: function() {
		if(!this.__isValid) {
			return new openfl_display_BitmapData(this.width,this.height,this.transparent,0);
		} else if(!this.readable && this.image == null) {
			var bitmapData = new openfl_display_BitmapData(0,0,this.transparent,0);
			bitmapData.width = this.width;
			bitmapData.height = this.height;
			bitmapData.rect.copyFrom(this.rect);
			bitmapData.__framebuffer = this.__framebuffer;
			bitmapData.__framebufferContext = this.__framebufferContext;
			bitmapData.__texture = this.__texture;
			bitmapData.__textureContext = this.__textureContext;
			bitmapData.__isValid = true;
			return bitmapData;
		} else {
			return openfl_display_BitmapData.fromImage(this.image.clone(),this.transparent);
		}
	}
	,colorTransform: function(rect,colorTransform) {
		if(!this.readable) {
			return;
		}
		this.image.colorTransform(rect.__toLimeRectangle(),colorTransform.__toLimeColorMatrix());
	}
	,compare: function(otherBitmapData) {
		if(otherBitmapData == this) {
			return 0;
		} else if(otherBitmapData == null) {
			return -1;
		} else if(this.readable == false || otherBitmapData.readable == false) {
			return -2;
		} else if(this.width != otherBitmapData.width) {
			return -3;
		} else if(this.height != otherBitmapData.height) {
			return -4;
		}
		if(this.image != null && otherBitmapData.image != null && this.image.get_format() == otherBitmapData.image.get_format()) {
			var bytes = this.image.get_data();
			var otherBytes = otherBitmapData.image.get_data();
			var equal = true;
			var _g1 = 0;
			var _g = bytes.length;
			while(_g1 < _g) {
				var i = _g1++;
				if(bytes[i] != otherBytes[i]) {
					equal = false;
					break;
				}
			}
			if(equal) {
				return 0;
			}
		}
		var bitmapData = null;
		var foundDifference;
		var pixel;
		var otherPixel;
		var comparePixel;
		var r;
		var g;
		var b;
		var a;
		var _g11 = 0;
		var _g2 = this.height;
		while(_g11 < _g2) {
			var y = _g11++;
			var _g3 = 0;
			var _g21 = this.width;
			while(_g3 < _g21) {
				var x = _g3++;
				foundDifference = false;
				pixel = this.getPixel32(x,y);
				otherPixel = otherBitmapData.getPixel32(x,y);
				comparePixel = 0;
				if(pixel != otherPixel) {
					r = (pixel >>> 16 & 255) - (otherPixel >>> 16 & 255);
					g = (pixel >>> 8 & 255) - (otherPixel >>> 8 & 255);
					b = (pixel & 255) - (otherPixel & 255);
					if(r < 0) {
						r *= -1;
					}
					if(g < 0) {
						g *= -1;
					}
					if(b < 0) {
						b *= -1;
					}
					if(r == 0 && g == 0 && b == 0) {
						a = (pixel >>> 24 & 255) - (otherPixel >>> 24 & 255);
						if(a != 0) {
							comparePixel = (comparePixel >>> 24 & 255 & 255) << 24 | 16711680 | (comparePixel >>> 8 & 255 & 255) << 8 | comparePixel & 255 & 255;
							comparePixel = (comparePixel >>> 24 & 255 & 255) << 24 | (comparePixel >>> 16 & 255 & 255) << 16 | 65280 | comparePixel & 255 & 255;
							comparePixel = (comparePixel >>> 24 & 255 & 255) << 24 | (comparePixel >>> 16 & 255 & 255) << 16 | (comparePixel >>> 8 & 255 & 255) << 8 | 255;
							comparePixel = (a & 255) << 24 | (comparePixel >>> 16 & 255 & 255) << 16 | (comparePixel >>> 8 & 255 & 255) << 8 | comparePixel & 255 & 255;
							foundDifference = true;
						}
					} else {
						comparePixel = (comparePixel >>> 24 & 255 & 255) << 24 | (r & 255) << 16 | (comparePixel >>> 8 & 255 & 255) << 8 | comparePixel & 255 & 255;
						comparePixel = (comparePixel >>> 24 & 255 & 255) << 24 | (comparePixel >>> 16 & 255 & 255) << 16 | (g & 255) << 8 | comparePixel & 255 & 255;
						comparePixel = (comparePixel >>> 24 & 255 & 255) << 24 | (comparePixel >>> 16 & 255 & 255) << 16 | (comparePixel >>> 8 & 255 & 255) << 8 | b & 255;
						comparePixel = -16777216 | (comparePixel >>> 16 & 255 & 255) << 16 | (comparePixel >>> 8 & 255 & 255) << 8 | comparePixel & 255 & 255;
						foundDifference = true;
					}
				}
				if(foundDifference) {
					if(bitmapData == null) {
						bitmapData = new openfl_display_BitmapData(this.width,this.height,this.transparent || otherBitmapData.transparent,0);
					}
					bitmapData.setPixel32(x,y,comparePixel);
				}
			}
		}
		if(bitmapData == null) {
			return 0;
		}
		return bitmapData;
	}
	,copyChannel: function(sourceBitmapData,sourceRect,destPoint,sourceChannel,destChannel) {
		if(!this.readable) {
			return;
		}
		var sourceChannel1;
		switch(sourceChannel) {
		case 1:
			sourceChannel1 = lime_graphics_ImageChannel.RED;
			break;
		case 2:
			sourceChannel1 = lime_graphics_ImageChannel.GREEN;
			break;
		case 4:
			sourceChannel1 = lime_graphics_ImageChannel.BLUE;
			break;
		case 8:
			sourceChannel1 = lime_graphics_ImageChannel.ALPHA;
			break;
		default:
			return;
		}
		var destChannel1;
		switch(destChannel) {
		case 1:
			destChannel1 = lime_graphics_ImageChannel.RED;
			break;
		case 2:
			destChannel1 = lime_graphics_ImageChannel.GREEN;
			break;
		case 4:
			destChannel1 = lime_graphics_ImageChannel.BLUE;
			break;
		case 8:
			destChannel1 = lime_graphics_ImageChannel.ALPHA;
			break;
		default:
			return;
		}
		this.image.copyChannel(sourceBitmapData.image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),sourceChannel1,destChannel1);
	}
	,copyPixels: function(sourceBitmapData,sourceRect,destPoint,alphaBitmapData,alphaPoint,mergeAlpha) {
		if(mergeAlpha == null) {
			mergeAlpha = false;
		}
		if(!this.readable || sourceBitmapData == null) {
			return;
		}
		if(alphaPoint != null) {
			openfl_display_BitmapData.__tempVector.x = alphaPoint.x;
			openfl_display_BitmapData.__tempVector.y = alphaPoint.y;
		}
		this.image.copyPixels(sourceBitmapData.image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),alphaBitmapData != null ? alphaBitmapData.image : null,alphaPoint != null ? openfl_display_BitmapData.__tempVector : null,mergeAlpha);
	}
	,dispose: function() {
		this.image = null;
		this.width = 0;
		this.height = 0;
		this.rect = null;
		this.__isValid = false;
		this.readable = false;
		this.__surface = null;
		this.__buffer = null;
		this.__framebuffer = null;
		this.__framebufferContext = null;
		this.__texture = null;
		this.__textureContext = null;
	}
	,disposeImage: function() {
		this.readable = false;
	}
	,draw: function(source,matrix,colorTransform,blendMode,clipRect,smoothing) {
		if(smoothing == null) {
			smoothing = false;
		}
		if(matrix == null) {
			matrix = new openfl_geom_Matrix();
			if(source.__transform != null) {
				matrix.copyFrom(source.__transform);
				matrix.tx = 0;
				matrix.ty = 0;
			}
		}
		if(!this.readable) {
			if(lime_graphics_opengl_GL.context != null) {
				var gl = lime_graphics_opengl_GL.context;
				gl.bindFramebuffer(gl.FRAMEBUFFER,this.__getFramebuffer(gl));
				gl.viewport(0,0,this.width,this.height);
				var renderer = new openfl__$internal_renderer_opengl_GLRenderer(null,gl,this);
				var renderSession = renderer.renderSession;
				renderSession.clearRenderDirty = false;
				renderSession.shaderManager = (js_Boot.__cast(null , openfl__$internal_renderer_opengl_GLRenderer)).renderSession.shaderManager;
				var matrixCache = source.__worldTransform;
				source.__updateTransforms(matrix);
				source.__updateChildren(false);
				source.__renderGL(renderer.renderSession);
				source.__updateTransforms(matrixCache);
				source.__updateChildren(true);
				gl.bindFramebuffer(gl.FRAMEBUFFER,null);
			}
		}
	}
	,drawWithQuality: function(source,matrix,colorTransform,blendMode,clipRect,smoothing,quality) {
		if(smoothing == null) {
			smoothing = false;
		}
		this.draw(source,matrix,colorTransform,blendMode,clipRect,quality != 2 && smoothing);
	}
	,encode: function(rect,compressor,byteArray) {
		if(!this.readable || rect == null) {
			byteArray = null;
			return byteArray;
		}
		if(byteArray == null) {
			var this1 = new openfl_utils_ByteArrayData(0);
			byteArray = this1;
		}
		var image = this.image;
		if(!rect.equals(this.rect)) {
			var matrix = openfl_geom_Matrix.__pool.get();
			matrix.tx = Math.round(-rect.x);
			matrix.ty = Math.round(-rect.y);
			var bitmapData = new openfl_display_BitmapData(Math.ceil(rect.width),Math.ceil(rect.height),true,0);
			bitmapData.draw(this,matrix);
			image = bitmapData.image;
			openfl_geom_Matrix.__pool.release(matrix);
		}
		if(js_Boot.__instanceof(compressor,openfl_display_PNGEncoderOptions)) {
			byteArray.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(image.encode("png")));
			return byteArray;
		} else if(js_Boot.__instanceof(compressor,openfl_display_JPEGEncoderOptions)) {
			byteArray.writeBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(image.encode("jpg",(js_Boot.__cast(compressor , openfl_display_JPEGEncoderOptions)).quality)));
			return byteArray;
		}
		byteArray = null;
		return byteArray;
	}
	,fillRect: function(rect,color) {
		if(rect == null) {
			return;
		}
		if(this.transparent && (color & -16777216) == 0) {
			color = 0;
		}
		if(this.readable) {
			this.image.fillRect(rect.__toLimeRectangle(),color,1);
		} else if(this.__framebuffer != null) {
			var gl = lime_graphics_opengl_GL.context;
			var color1 = color;
			var useScissor = !this.rect.equals(rect);
			gl.bindFramebuffer(gl.FRAMEBUFFER,this.__framebuffer);
			if(useScissor) {
				gl.enable(gl.SCISSOR_TEST);
				gl.scissor(Math.round(rect.x),Math.round(rect.y),Math.round(rect.width),Math.round(rect.height));
			}
			gl.clearColor((color1 >>> 16 & 255) / 255,(color1 >>> 8 & 255) / 255,(color1 & 255) / 255,(color1 >>> 24 & 255) / 255);
			gl.clear(gl.COLOR_BUFFER_BIT);
			if(useScissor) {
				gl.disable(gl.SCISSOR_TEST);
			}
			gl.bindFramebuffer(gl.FRAMEBUFFER,null);
		}
	}
	,floodFill: function(x,y,color) {
		if(!this.readable) {
			return;
		}
		this.image.floodFill(x,y,color,1);
	}
	,generateFilterRect: function(sourceRect,filter) {
		return sourceRect.clone();
	}
	,getBuffer: function(gl,alpha,colorTransform) {
		if(this.__buffer == null || this.__bufferContext != gl) {
			var uvWidth = 1;
			var uvHeight = 1;
			var this1 = new Float32Array(104);
			this.__bufferData = this1;
			this.__bufferData[0] = this.width;
			this.__bufferData[1] = this.height;
			this.__bufferData[3] = uvWidth;
			this.__bufferData[4] = uvHeight;
			this.__bufferData[27] = this.height;
			this.__bufferData[30] = uvHeight;
			this.__bufferData[52] = this.width;
			this.__bufferData[55] = uvWidth;
			var _g = 0;
			while(_g < 4) {
				var i = _g++;
				this.__bufferData[26 * i + 5] = alpha;
				if(colorTransform != null) {
					this.__bufferData[26 * i + 6] = colorTransform.redMultiplier;
					this.__bufferData[26 * i + 11] = colorTransform.greenMultiplier;
					this.__bufferData[26 * i + 16] = colorTransform.blueMultiplier;
					this.__bufferData[26 * i + 21] = colorTransform.alphaMultiplier;
					this.__bufferData[26 * i + 22] = colorTransform.redOffset / 255;
					this.__bufferData[26 * i + 23] = colorTransform.greenOffset / 255;
					this.__bufferData[26 * i + 24] = colorTransform.blueOffset / 255;
					this.__bufferData[26 * i + 25] = colorTransform.alphaOffset / 255;
				} else {
					this.__bufferData[26 * i + 6] = 1;
					this.__bufferData[26 * i + 11] = 1;
					this.__bufferData[26 * i + 16] = 1;
					this.__bufferData[26 * i + 21] = 1;
				}
			}
			this.__bufferAlpha = alpha;
			this.__bufferColorTransform = colorTransform != null ? colorTransform.__clone() : null;
			this.__bufferContext = gl;
			this.__buffer = gl.createBuffer();
			gl.bindBuffer(gl.ARRAY_BUFFER,this.__buffer);
			gl.bufferData(gl.ARRAY_BUFFER,this.__bufferData.byteLength,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(this.__bufferData),gl.STATIC_DRAW);
		} else {
			var dirty = false;
			if(this.__bufferAlpha != alpha) {
				dirty = true;
				var _g1 = 0;
				while(_g1 < 4) {
					var i1 = _g1++;
					this.__bufferData[26 * i1 + 5] = alpha;
				}
				this.__bufferAlpha = alpha;
			}
			if(this.__bufferColorTransform == null && colorTransform != null || this.__bufferColorTransform != null && !this.__bufferColorTransform.__equals(colorTransform)) {
				dirty = true;
				if(colorTransform != null) {
					if(this.__bufferColorTransform == null) {
						this.__bufferColorTransform = colorTransform.__clone();
					} else {
						this.__bufferColorTransform.__copyFrom(colorTransform);
					}
					var _g2 = 0;
					while(_g2 < 4) {
						var i2 = _g2++;
						this.__bufferData[26 * i2 + 6] = colorTransform.redMultiplier;
						this.__bufferData[26 * i2 + 11] = colorTransform.greenMultiplier;
						this.__bufferData[26 * i2 + 16] = colorTransform.blueMultiplier;
						this.__bufferData[26 * i2 + 21] = colorTransform.alphaMultiplier;
						this.__bufferData[26 * i2 + 22] = colorTransform.redOffset / 255;
						this.__bufferData[26 * i2 + 23] = colorTransform.greenOffset / 255;
						this.__bufferData[26 * i2 + 24] = colorTransform.blueOffset / 255;
						this.__bufferData[26 * i2 + 25] = colorTransform.alphaOffset / 255;
					}
				} else {
					var _g3 = 0;
					while(_g3 < 4) {
						var i3 = _g3++;
						this.__bufferData[26 * i3 + 6] = 1;
						this.__bufferData[26 * i3 + 11] = 1;
						this.__bufferData[26 * i3 + 16] = 1;
						this.__bufferData[26 * i3 + 21] = 1;
						this.__bufferData[26 * i3 + 22] = 0;
						this.__bufferData[26 * i3 + 23] = 0;
						this.__bufferData[26 * i3 + 24] = 0;
						this.__bufferData[26 * i3 + 25] = 0;
					}
				}
			}
			gl.bindBuffer(gl.ARRAY_BUFFER,this.__buffer);
			if(dirty) {
				gl.bufferData(gl.ARRAY_BUFFER,this.__bufferData.byteLength,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(this.__bufferData),gl.STATIC_DRAW);
			}
		}
		return this.__buffer;
	}
	,getColorBoundsRect: function(mask,color,findColor) {
		if(findColor == null) {
			findColor = true;
		}
		if(!this.readable) {
			return new openfl_geom_Rectangle(0,0,this.width,this.height);
		}
		if(!this.transparent || (mask >> 24 & 255) > 0) {
			var color1 = color;
			if((color1 >>> 24 & 255) == 0) {
				color1 = 0;
			}
		}
		var rect = this.image.getColorBoundsRect(mask,color,findColor,1);
		return new openfl_geom_Rectangle(rect.x,rect.y,rect.width,rect.height);
	}
	,getPixel: function(x,y) {
		if(!this.readable) {
			return 0;
		}
		return this.image.getPixel(x,y,1);
	}
	,getPixel32: function(x,y) {
		if(!this.readable) {
			return 0;
		}
		return this.image.getPixel32(x,y,1);
	}
	,getPixels: function(rect) {
		if(!this.readable) {
			return null;
		}
		if(rect == null) {
			rect = this.rect;
		}
		var byteArray = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(this.image.getPixels(rect.__toLimeRectangle(),1));
		byteArray.__endian = 0;
		return byteArray;
	}
	,getSurface: function() {
		if(!this.readable) {
			return null;
		}
		if(this.__surface == null) {
			this.__surface = lime_graphics_cairo__$CairoImageSurface_CairoImageSurface_$Impl_$.fromImage(this.image);
		}
		return this.__surface;
	}
	,getTexture: function(gl) {
		if(!this.__isValid) {
			return null;
		}
		if(this.__texture == null || this.__textureContext != gl) {
			this.__textureContext = gl;
			this.__texture = gl.createTexture();
			gl.bindTexture(gl.TEXTURE_2D,this.__texture);
			gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);
			gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);
			gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);
			gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);
			this.__textureVersion = -1;
		}
		if(this.image != null && this.image.version != this.__textureVersion) {
			var internalFormat;
			var format;
			if(this.__surface != null) {
				lime_graphics_cairo__$CairoSurface_CairoSurface_$Impl_$.flush(this.__surface);
			}
			if(this.image.buffer.bitsPerPixel == 1) {
				internalFormat = gl.ALPHA;
				format = gl.ALPHA;
			} else {
				if(openfl_display_BitmapData.__supportsBGRA == null) {
					openfl_display_BitmapData.__textureInternalFormat = gl.RGBA;
					var bgraExtension = null;
					bgraExtension = gl.getExtension("EXT_bgra");
					if(bgraExtension == null) {
						bgraExtension = gl.getExtension("EXT_texture_format_BGRA8888");
					}
					if(bgraExtension == null) {
						bgraExtension = gl.getExtension("APPLE_texture_format_BGRA8888");
					}
					if(bgraExtension != null) {
						openfl_display_BitmapData.__supportsBGRA = true;
						openfl_display_BitmapData.__textureFormat = bgraExtension.BGRA_EXT;
						if(gl.type == lime_graphics_opengl_GLContextType.GLES) {
							openfl_display_BitmapData.__textureInternalFormat = bgraExtension.BGRA_EXT;
						}
					} else {
						openfl_display_BitmapData.__supportsBGRA = false;
						openfl_display_BitmapData.__textureFormat = gl.RGBA;
					}
				}
				internalFormat = openfl_display_BitmapData.__textureInternalFormat;
				format = openfl_display_BitmapData.__textureFormat;
			}
			gl.bindTexture(gl.TEXTURE_2D,this.__texture);
			var textureImage = this.image;
			if(!textureImage.get_premultiplied() && textureImage.get_transparent()) {
				textureImage = textureImage.clone();
				textureImage.set_premultiplied(true);
			}
			gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,textureImage.buffer.width,textureImage.buffer.height,0,format,gl.UNSIGNED_BYTE,lime_utils__$DataPointer_DataPointer_$Impl_$.fromArrayBufferView(textureImage.get_data()));
			gl.bindTexture(gl.TEXTURE_2D,null);
			this.__textureVersion = this.image.version;
		}
		if(!this.readable && this.image != null) {
			this.__surface = null;
			this.image = null;
		}
		return this.__texture;
	}
	,getVector: function(rect) {
		var pixels = this.getPixels(rect);
		var length = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(pixels) / 4 | 0;
		var result = openfl__$Vector_Vector_$Impl_$.toIntVector(null,length,true);
		var _g1 = 0;
		var _g = length;
		while(_g1 < _g) {
			var i = _g1++;
			var value = pixels.readUnsignedInt();
			result.data.set(i,value);
		}
		return result;
	}
	,histogram: function(hRect) {
		var rect = hRect != null ? hRect : new openfl_geom_Rectangle(0,0,this.width,this.height);
		var pixels = this.getPixels(rect);
		var _g = [];
		var _g1 = 0;
		while(_g1 < 4) {
			var i = _g1++;
			var _g2 = [];
			var _g3 = 0;
			while(_g3 < 256) {
				var j = _g3++;
				_g2.push(0);
			}
			_g.push(_g2);
		}
		var result = _g;
		var _g21 = 0;
		var _g11 = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(pixels);
		while(_g21 < _g11) {
			var i1 = _g21++;
			++result[i1 % 4][pixels.readUnsignedByte()];
		}
		return result;
	}
	,hitTest: function(firstPoint,firstAlphaThreshold,secondObject,secondBitmapDataPoint,secondAlphaThreshold) {
		if(secondAlphaThreshold == null) {
			secondAlphaThreshold = 1;
		}
		if(!this.readable) {
			return false;
		}
		if(js_Boot.__instanceof(secondObject,openfl_display_Bitmap)) {
			secondObject = (js_Boot.__cast(secondObject , openfl_display_Bitmap)).__bitmapData;
		}
		if(js_Boot.__instanceof(secondObject,openfl_geom_Point)) {
			var secondPoint = secondObject;
			var x = secondPoint.x - firstPoint.x | 0;
			var y = secondPoint.y - firstPoint.y | 0;
			if(this.rect.contains(x,y)) {
				var pixel = this.getPixel32(x,y);
				if((pixel >> 24 & 255) > firstAlphaThreshold) {
					return true;
				}
			}
		} else if(js_Boot.__instanceof(secondObject,openfl_display_BitmapData)) {
			var secondBitmapData = secondObject;
			var x1;
			var y1;
			if(secondBitmapDataPoint == null) {
				x1 = 0;
				y1 = 0;
			} else {
				x1 = secondBitmapDataPoint.x - firstPoint.x | 0;
				y1 = secondBitmapDataPoint.y - firstPoint.y | 0;
			}
			if(this.rect.contains(x1,y1)) {
				var hitRect = openfl_geom_Rectangle.__pool.get();
				hitRect.setTo(x1,y1,Math.min(secondBitmapData.width,this.width - x1),Math.min(secondBitmapData.height,this.height - y1));
				var pixels = this.getPixels(hitRect);
				hitRect.offset(-x1,-y1);
				var testPixels = secondBitmapData.getPixels(hitRect);
				var length = hitRect.width * hitRect.height | 0;
				var pixel1;
				var testPixel;
				openfl_geom_Rectangle.__pool.release(hitRect);
				var _g1 = 0;
				var _g = length;
				while(_g1 < _g) {
					var i = _g1++;
					pixel1 = pixels.readUnsignedInt();
					testPixel = testPixels.readUnsignedInt();
					if((pixel1 >> 24 & 255) > firstAlphaThreshold && (testPixel >> 24 & 255) > secondAlphaThreshold) {
						return true;
					}
				}
				return false;
			}
		} else if(js_Boot.__instanceof(secondObject,openfl_geom_Rectangle)) {
			var secondRectangle = openfl_geom_Rectangle.__pool.get();
			secondRectangle.copyFrom(secondObject);
			secondRectangle.offset(-firstPoint.x,-firstPoint.y);
			secondRectangle.__contract(0,0,this.width,this.height);
			if(secondRectangle.width > 0 && secondRectangle.height > 0) {
				var pixels1 = this.getPixels(secondRectangle);
				var length1 = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(pixels1) / 4 | 0;
				var pixel2;
				var _g11 = 0;
				var _g2 = length1;
				while(_g11 < _g2) {
					var i1 = _g11++;
					pixel2 = pixels1.readUnsignedInt();
					if((pixel2 >> 24 & 255) > firstAlphaThreshold) {
						openfl_geom_Rectangle.__pool.release(secondRectangle);
						return true;
					}
				}
			}
			openfl_geom_Rectangle.__pool.release(secondRectangle);
		}
		return false;
	}
	,lock: function() {
	}
	,merge: function(sourceBitmapData,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
		if(!this.readable || sourceBitmapData == null || !sourceBitmapData.readable || sourceRect == null || destPoint == null) {
			return;
		}
		this.image.merge(sourceBitmapData.image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
	}
	,noise: function(randomSeed,low,high,channelOptions,grayScale) {
		if(grayScale == null) {
			grayScale = false;
		}
		if(channelOptions == null) {
			channelOptions = 7;
		}
		if(high == null) {
			high = 255;
		}
		if(low == null) {
			low = 0;
		}
		if(!this.readable) {
			return;
		}
		var func = function() {
			randomSeed = randomSeed * 1103515245 + 12345;
			return (Math.abs(randomSeed / 65536) | 0) % 32768;
		};
		var rand = func;
		rand();
		var range = high - low;
		var this1 = new openfl_utils_ByteArrayData(0);
		var data = this1;
		var redChannel = (channelOptions & 1) == 1;
		var greenChannel = (channelOptions & 2) >> 1 == 1;
		var blueChannel = (channelOptions & 4) >> 2 == 1;
		var alphaChannel = (channelOptions & 8) >> 3 == 1;
		var _g1 = 0;
		var _g = this.height;
		while(_g1 < _g) {
			var y = _g1++;
			var _g3 = 0;
			var _g2 = this.width;
			while(_g3 < _g2) {
				var x = _g3++;
				var red = 0;
				var blue = 0;
				var green = 0;
				var alpha = 255;
				if(grayScale) {
					blue = low + rand() % range;
					green = blue;
					red = green;
					alpha = 255;
				} else {
					if(redChannel) {
						red = low + rand() % range;
					}
					if(greenChannel) {
						green = low + rand() % range;
					}
					if(blueChannel) {
						blue = low + rand() % range;
					}
					if(alphaChannel) {
						alpha = low + rand() % range;
					}
				}
				var rgb = alpha;
				rgb = (rgb << 8) + red;
				rgb = (rgb << 8) + green;
				rgb = (rgb << 8) + blue;
				this.setPixel32(x,y,rgb);
			}
		}
	}
	,paletteMap: function(sourceBitmapData,sourceRect,destPoint,redArray,greenArray,blueArray,alphaArray) {
		var sw = sourceRect.width | 0;
		var sh = sourceRect.height | 0;
		var pixels = sourceBitmapData.getPixels(sourceRect);
		var pixelValue;
		var r;
		var g;
		var b;
		var a;
		var color;
		var _g1 = 0;
		var _g = sh * sw;
		while(_g1 < _g) {
			var i = _g1++;
			pixelValue = pixels.readUnsignedInt();
			if(alphaArray == null) {
				a = pixelValue & -16777216;
			} else {
				a = alphaArray[pixelValue >> 24 & 255];
			}
			if(redArray == null) {
				r = pixelValue & 16711680;
			} else {
				r = redArray[pixelValue >> 16 & 255];
			}
			if(greenArray == null) {
				g = pixelValue & 65280;
			} else {
				g = greenArray[pixelValue >> 8 & 255];
			}
			if(blueArray == null) {
				b = pixelValue & 255;
			} else {
				b = blueArray[pixelValue & 255];
			}
			color = a + r + g + b;
			pixels.position = i * 4;
			pixels.writeUnsignedInt(color);
		}
		pixels.position = 0;
		var destRect = openfl_geom_Rectangle.__pool.get();
		destRect.setTo(destPoint.x,destPoint.y,sw,sh);
		this.setPixels(destRect,pixels);
		openfl_geom_Rectangle.__pool.release(destRect);
	}
	,perlinNoise: function(baseX,baseY,numOctaves,randomSeed,stitch,fractalNoise,channelOptions,grayScale,offsets) {
		if(grayScale == null) {
			grayScale = false;
		}
		if(channelOptions == null) {
			channelOptions = 7;
		}
		if(!this.readable) {
			return;
		}
		var noise = new openfl__$internal_utils_PerlinNoise(randomSeed,numOctaves,0.01);
		noise.fill(this,baseX,baseY,0);
	}
	,scroll: function(x,y) {
		if(!this.readable) {
			return;
		}
		this.image.scroll(x,y);
	}
	,setPixel: function(x,y,color) {
		if(!this.readable) {
			return;
		}
		this.image.setPixel(x,y,color,1);
	}
	,setPixel32: function(x,y,color) {
		if(!this.readable) {
			return;
		}
		this.image.setPixel32(x,y,color,1);
	}
	,setPixels: function(rect,byteArray) {
		if(!this.readable || rect == null) {
			return;
		}
		var length = rect.width * rect.height * 4;
		if(_$UInt_UInt_$Impl_$.toFloat(byteArray.length - byteArray.position) < length) {
			throw new js__$Boot_HaxeError(new openfl_errors_Error("End of file was encountered.",2030));
		}
		this.image.setPixels(rect.__toLimeRectangle(),openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytePointer(byteArray),1,openfl_utils__$Endian_Endian_$Impl_$.toLimeEndian(byteArray.__endian));
	}
	,setVector: function(rect,inputVector) {
		var this1 = new openfl_utils_ByteArrayData(0);
		var byteArray = this1;
		openfl_utils__$ByteArray_ByteArray_$Impl_$.set_length(byteArray,inputVector.data.get_length() * 4);
		var _g = 0;
		while(_g < inputVector.data.get_length()) {
			var color = inputVector.data.get(_g);
			++_g;
			byteArray.writeUnsignedInt(color);
		}
		byteArray.position = 0;
		this.setPixels(rect,byteArray);
	}
	,threshold: function(sourceBitmapData,sourceRect,destPoint,operation,threshold,color,mask,copySource) {
		if(copySource == null) {
			copySource = false;
		}
		if(mask == null) {
			mask = -1;
		}
		if(color == null) {
			color = 0;
		}
		if(sourceBitmapData == null || sourceRect == null || destPoint == null || sourceRect.x > sourceBitmapData.width || sourceRect.y > sourceBitmapData.height || destPoint.x > this.width || destPoint.y > this.height) {
			return 0;
		}
		return this.image.threshold(sourceBitmapData.image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),operation,threshold,color,mask,copySource,1);
	}
	,unlock: function(changeRect) {
	}
	,__applyAlpha: function(alpha) {
		var data = this.image.buffer.data;
		var _g1 = 0;
		var _g = openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(alpha);
		while(_g1 < _g) {
			var i = _g1++;
			data[i * 4 + 3] = alpha.readUnsignedByte();
		}
		this.image.version++;
	}
	,__draw: function(source,matrix,colorTransform,blendMode,clipRect,smoothing) {
		if(smoothing == null) {
			smoothing = false;
		}
		if(matrix == null) {
			matrix = new openfl_geom_Matrix();
			if(source.__transform != null) {
				matrix.copyFrom(source.__transform);
				matrix.tx = 0;
				matrix.ty = 0;
			}
		}
		if(!this.readable) {
			if(lime_graphics_opengl_GL.context != null) {
				var gl = lime_graphics_opengl_GL.context;
				gl.bindFramebuffer(gl.FRAMEBUFFER,this.__getFramebuffer(gl));
				gl.viewport(0,0,this.width,this.height);
				var renderer = new openfl__$internal_renderer_opengl_GLRenderer(null,gl,this);
				var renderSession = renderer.renderSession;
				renderSession.clearRenderDirty = true;
				renderSession.shaderManager = (js_Boot.__cast(null , openfl__$internal_renderer_opengl_GLRenderer)).renderSession.shaderManager;
				var matrixCache = source.__worldTransform;
				source.__updateTransforms(matrix);
				source.__updateChildren(false);
				source.__renderGL(renderer.renderSession);
				source.__updateTransforms(matrixCache);
				source.__updateChildren(true);
				gl.bindFramebuffer(gl.FRAMEBUFFER,null);
			}
		}
	}
	,__fromBase64: function(base64,type) {
		var image = lime_graphics_Image.fromBase64(base64,type);
		this.__fromImage(image);
	}
	,__fromBytes: function(bytes,rawAlpha) {
		var image = lime_graphics_Image.fromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes));
		this.__fromImage(image);
		if(rawAlpha != null) {
			this.__applyAlpha(rawAlpha);
		}
	}
	,__fromFile: function(path) {
		var image = lime_graphics_Image.fromFile(path);
		this.__fromImage(image);
	}
	,__fromImage: function(image) {
		if(image != null && image.buffer != null) {
			this.image = image;
			this.width = image.width;
			this.height = image.height;
			this.rect = new openfl_geom_Rectangle(0,0,image.width,image.height);
			this.readable = true;
			this.__isValid = true;
		}
	}
	,__getBounds: function(rect,matrix) {
		var bounds = openfl_geom_Rectangle.__pool.get();
		this.rect.__transform(bounds,matrix);
		rect.__expand(bounds.x,bounds.y,bounds.width,bounds.height);
		openfl_geom_Rectangle.__pool.release(bounds);
	}
	,__getFramebuffer: function(gl) {
		if(this.__framebuffer == null || this.__framebufferContext != gl) {
			this.getTexture(gl);
			this.__framebufferContext = gl;
			this.__framebuffer = gl.createFramebuffer();
			gl.bindFramebuffer(gl.FRAMEBUFFER,this.__framebuffer);
			gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,this.__texture,0);
		}
		return this.__framebuffer;
	}
	,__loadFromBase64: function(base64,type) {
		var _gthis = this;
		return lime_graphics_Image.loadFromBase64(base64,type).then(function(image) {
			_gthis.__fromImage(image);
			return lime_app_Future.withValue(_gthis);
		});
	}
	,__loadFromBytes: function(bytes,rawAlpha) {
		var _gthis = this;
		return lime_graphics_Image.loadFromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes)).then(function(image) {
			_gthis.__fromImage(image);
			if(rawAlpha != null) {
				_gthis.__applyAlpha(rawAlpha);
			}
			return lime_app_Future.withValue(_gthis);
		});
	}
	,__loadFromFile: function(path) {
		var _gthis = this;
		return lime_graphics_Image.loadFromFile(path).then(function(image) {
			_gthis.__fromImage(image);
			return lime_app_Future.withValue(_gthis);
		});
	}
	,__renderCairo: function(renderSession) {
	}
	,__renderCairoMask: function(renderSession) {
	}
	,__renderCanvas: function(renderSession) {
	}
	,__renderCanvasMask: function(renderSession) {
	}
	,__renderGL: function(renderSession) {
		var renderer = renderSession.renderer;
		var gl = renderSession.gl;
		renderSession.blendModeManager.setBlendMode(10);
		var shader = renderSession.shaderManager.defaultShader;
		shader.get_data().uImage0.input = this;
		var tmp = renderSession.allowSmoothing && renderSession.upscaled;
		shader.get_data().uImage0.smoothing = tmp;
		shader.get_data().uMatrix.value = renderer.getMatrix(this.__worldTransform);
		renderSession.shaderManager.setShader(shader);
		gl.bindBuffer(gl.ARRAY_BUFFER,this.getBuffer(gl,1,this.__worldColorTransform));
		gl.vertexAttribPointer(shader.get_data().aPosition.index,3,gl.FLOAT,false,24,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
		gl.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl.FLOAT,false,24,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
		gl.vertexAttribPointer(shader.get_data().aAlpha.index,1,gl.FLOAT,false,24,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(20));
		gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
	}
	,__renderGLMask: function(renderSession) {
		var renderer = renderSession.renderer;
		var gl = renderSession.gl;
		var shader = openfl__$internal_renderer_opengl_GLMaskManager.maskShader;
		shader.get_data().uImage0.input = this;
		var tmp = renderSession.allowSmoothing && renderSession.upscaled;
		shader.get_data().uImage0.smoothing = tmp;
		shader.get_data().uMatrix.value = renderer.getMatrix(this.__worldTransform);
		renderSession.shaderManager.setShader(shader);
		gl.bindBuffer(gl.ARRAY_BUFFER,this.getBuffer(gl,1,this.__worldColorTransform));
		gl.vertexAttribPointer(shader.get_data().aPosition.index,3,gl.FLOAT,false,24,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(0));
		gl.vertexAttribPointer(shader.get_data().aTexCoord.index,2,gl.FLOAT,false,24,lime_utils__$DataPointer_DataPointer_$Impl_$.fromInt(12));
		gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
	}
	,__resize: function(width,height) {
		this.width = width;
		this.height = height;
		this.rect.width = width;
		this.rect.height = height;
	}
	,__sync: function() {
	}
	,__updateChildren: function(transformOnly) {
	}
	,__updateMask: function(maskGraphics) {
	}
	,__updateTransforms: function(overrideTransform) {
		if(overrideTransform == null) {
			this.__worldTransform.identity();
		} else {
			this.__worldTransform = overrideTransform;
		}
	}
	,__class__: openfl_display_BitmapData
};
var openfl_display__$BlendMode_BlendMode_$Impl_$ = {};
$hxClasses["openfl.display._BlendMode.BlendMode_Impl_"] = openfl_display__$BlendMode_BlendMode_$Impl_$;
openfl_display__$BlendMode_BlendMode_$Impl_$.__name__ = ["openfl","display","_BlendMode","BlendMode_Impl_"];
openfl_display__$BlendMode_BlendMode_$Impl_$.fromString = function(value) {
	switch(value) {
	case "add":
		return 0;
	case "alpha":
		return 1;
	case "darken":
		return 2;
	case "difference":
		return 3;
	case "erase":
		return 4;
	case "hardlight":
		return 5;
	case "invert":
		return 6;
	case "layer":
		return 7;
	case "lighten":
		return 8;
	case "multiply":
		return 9;
	case "normal":
		return 10;
	case "overlay":
		return 11;
	case "screen":
		return 12;
	case "shader":
		return 13;
	case "subtract":
		return 14;
	default:
		return null;
	}
};
openfl_display__$BlendMode_BlendMode_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "add";
	case 1:
		return "alpha";
	case 2:
		return "darken";
	case 3:
		return "difference";
	case 4:
		return "erase";
	case 5:
		return "hardlight";
	case 6:
		return "invert";
	case 7:
		return "layer";
	case 8:
		return "lighten";
	case 9:
		return "multiply";
	case 10:
		return "normal";
	case 11:
		return "overlay";
	case 12:
		return "screen";
	case 13:
		return "shader";
	case 14:
		return "subtract";
	default:
		return null;
	}
};
var openfl_display__$CapsStyle_CapsStyle_$Impl_$ = {};
$hxClasses["openfl.display._CapsStyle.CapsStyle_Impl_"] = openfl_display__$CapsStyle_CapsStyle_$Impl_$;
openfl_display__$CapsStyle_CapsStyle_$Impl_$.__name__ = ["openfl","display","_CapsStyle","CapsStyle_Impl_"];
openfl_display__$CapsStyle_CapsStyle_$Impl_$.fromString = function(value) {
	switch(value) {
	case "none":
		return 0;
	case "round":
		return 1;
	case "square":
		return 2;
	default:
		return null;
	}
};
openfl_display__$CapsStyle_CapsStyle_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "none";
	case 1:
		return "round";
	case 2:
		return "square";
	default:
		return null;
	}
};
var openfl_display_InteractiveObject = function() {
	openfl_display_DisplayObject.call(this);
	this.doubleClickEnabled = false;
	this.mouseEnabled = true;
	this.needsSoftKeyboard = false;
	this.__tabEnabled = null;
	this.__tabIndex = -1;
};
$hxClasses["openfl.display.InteractiveObject"] = openfl_display_InteractiveObject;
openfl_display_InteractiveObject.__name__ = ["openfl","display","InteractiveObject"];
openfl_display_InteractiveObject.__super__ = openfl_display_DisplayObject;
openfl_display_InteractiveObject.prototype = $extend(openfl_display_DisplayObject.prototype,{
	doubleClickEnabled: null
	,focusRect: null
	,mouseEnabled: null
	,needsSoftKeyboard: null
	,softKeyboardInputAreaOfInterest: null
	,__tabEnabled: null
	,__tabIndex: null
	,requestSoftKeyboard: function() {
		openfl__$internal_Lib.notImplemented({ fileName : "InteractiveObject.hx", lineNumber : 55, className : "openfl.display.InteractiveObject", methodName : "requestSoftKeyboard"});
		return false;
	}
	,__allowMouseFocus: function() {
		return this.get_tabEnabled();
	}
	,__getInteractive: function(stack) {
		if(stack != null) {
			stack.push(this);
			if(this.parent != null) {
				this.parent.__getInteractive(stack);
			}
		}
		return true;
	}
	,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		if(!hitObject.get_visible() || this.__isMask || interactiveOnly && !this.mouseEnabled) {
			return false;
		}
		return openfl_display_DisplayObject.prototype.__hitTest.call(this,x,y,shapeFlag,stack,interactiveOnly,hitObject);
	}
	,get_tabEnabled: function() {
		if(this.__tabEnabled == true) {
			return true;
		} else {
			return false;
		}
	}
	,set_tabEnabled: function(value) {
		return this.__tabEnabled = value;
	}
	,get_tabIndex: function() {
		return this.__tabIndex;
	}
	,set_tabIndex: function(value) {
		return this.__tabIndex = value;
	}
	,__class__: openfl_display_InteractiveObject
	,__properties__: $extend(openfl_display_DisplayObject.prototype.__properties__,{set_tabIndex:"set_tabIndex",get_tabIndex:"get_tabIndex",set_tabEnabled:"set_tabEnabled",get_tabEnabled:"get_tabEnabled"})
});
var openfl_display_DisplayObjectContainer = function() {
	openfl_display_InteractiveObject.call(this);
	this.mouseChildren = true;
	this.__children = [];
	this.__removedChildren = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
};
$hxClasses["openfl.display.DisplayObjectContainer"] = openfl_display_DisplayObjectContainer;
openfl_display_DisplayObjectContainer.__name__ = ["openfl","display","DisplayObjectContainer"];
openfl_display_DisplayObjectContainer.__super__ = openfl_display_InteractiveObject;
openfl_display_DisplayObjectContainer.prototype = $extend(openfl_display_InteractiveObject.prototype,{
	mouseChildren: null
	,tabChildren: null
	,__removedChildren: null
	,addChild: function(child) {
		return this.addChildAt(child,this.get_numChildren());
	}
	,addChildAt: function(child,index) {
		if(child == null) {
			var error = new openfl_errors_TypeError("Error #2007: Parameter child must be non-null.");
			error.errorID = 2007;
			throw new js__$Boot_HaxeError(error);
		} else if(child.stage == child) {
			var error1 = new openfl_errors_ArgumentError("Error #3783: A Stage object cannot be added as the child of another object.");
			error1.errorID = 3783;
			throw new js__$Boot_HaxeError(error1);
		}
		if(index > this.__children.length || index < 0) {
			throw new js__$Boot_HaxeError("Invalid index position " + index);
		}
		if(child.parent == this) {
			if(this.__children[index] != child) {
				HxOverrides.remove(this.__children,child);
				this.__children.splice(index,0,child);
				if(!this.__renderDirty) {
					this.__renderDirty = true;
					this.__setParentRenderDirty();
				}
			}
		} else {
			if(child.parent != null) {
				child.parent.removeChild(child);
			}
			this.__children.splice(index,0,child);
			child.parent = this;
			var addedToStage = this.stage != null && child.stage == null;
			if(addedToStage) {
				this.__setStageReference(this.stage);
			}
			child.__setTransformDirty();
			if(!child.__renderDirty) {
				child.__renderDirty = true;
				child.__setParentRenderDirty();
			}
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
			var event = new openfl_events_Event("added",true);
			event.target = child;
			child.__dispatchWithCapture(event);
			if(addedToStage) {
				var event1 = new openfl_events_Event("addedToStage",false,false);
				child.__dispatchWithCapture(event1);
				child.__dispatchChildren(event1);
			}
		}
		return child;
	}
	,areInaccessibleObjectsUnderPoint: function(point) {
		return false;
	}
	,contains: function(child) {
		while(child != this && child != null) child = child.parent;
		return child == this;
	}
	,getChildAt: function(index) {
		if(index >= 0 && index < this.__children.length) {
			return this.__children[index];
		}
		return null;
	}
	,getChildByName: function(name) {
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			if(child.get_name() == name) {
				return child;
			}
		}
		return null;
	}
	,getChildIndex: function(child) {
		var _g1 = 0;
		var _g = this.__children.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.__children[i] == child) {
				return i;
			}
		}
		return -1;
	}
	,getObjectsUnderPoint: function(point) {
		var stack = [];
		this.__hitTest(point.x,point.y,false,stack,false,this);
		stack.reverse();
		return stack;
	}
	,removeChild: function(child) {
		if(child != null && child.parent == this) {
			child.__setTransformDirty();
			if(!child.__renderDirty) {
				child.__renderDirty = true;
				child.__setParentRenderDirty();
			}
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
			var event = new openfl_events_Event("removed",true);
			child.__dispatchWithCapture(event);
			if(this.stage != null) {
				if(child.stage != null && this.stage.get_focus() == child) {
					this.stage.set_focus(null);
				}
				var event1 = new openfl_events_Event("removedFromStage",false,false);
				child.__dispatchWithCapture(event1);
				child.__dispatchChildren(event1);
				child.__setStageReference(null);
			}
			child.parent = null;
			HxOverrides.remove(this.__children,child);
			this.__removedChildren.data.push(child);
			child.__setTransformDirty();
		}
		return child;
	}
	,removeChildAt: function(index) {
		if(index >= 0 && index < this.__children.length) {
			return this.removeChild(this.__children[index]);
		}
		return null;
	}
	,removeChildren: function(beginIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 2147483647;
		}
		if(beginIndex == null) {
			beginIndex = 0;
		}
		if(endIndex == 2147483647) {
			endIndex = this.__children.length - 1;
			if(endIndex < 0) {
				return;
			}
		}
		if(beginIndex > this.__children.length - 1) {
			return;
		} else if(endIndex < beginIndex || beginIndex < 0 || endIndex > this.__children.length) {
			throw new js__$Boot_HaxeError(new openfl_errors_RangeError("The supplied index is out of bounds."));
		}
		var numRemovals = endIndex - beginIndex;
		while(numRemovals >= 0) {
			this.removeChildAt(beginIndex);
			--numRemovals;
		}
	}
	,resolve: function(fieldName) {
		if(this.__children == null) {
			return null;
		}
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			if(child.get_name() == fieldName) {
				return child;
			}
		}
		return null;
	}
	,setChildIndex: function(child,index) {
		if(index >= 0 && index <= this.__children.length && child.parent == this) {
			HxOverrides.remove(this.__children,child);
			this.__children.splice(index,0,child);
		}
	}
	,stopAllMovieClips: function() {
		this.__stopAllMovieClips();
	}
	,swapChildren: function(child1,child2) {
		if(child1.parent == this && child2.parent == this) {
			var index1 = this.__children.indexOf(child1);
			var index2 = this.__children.indexOf(child2);
			this.__children[index1] = child2;
			this.__children[index2] = child1;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
	}
	,swapChildrenAt: function(index1,index2) {
		var swap = this.__children[index1];
		this.__children[index1] = this.__children[index2];
		this.__children[index2] = swap;
		swap = null;
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
	}
	,__dispatchChildren: function(event) {
		if(this.__children != null) {
			var _g = 0;
			var _g1 = this.__children;
			while(_g < _g1.length) {
				var child = _g1[_g];
				++_g;
				event.target = child;
				if(!child.__dispatchWithCapture(event)) {
					break;
				}
				child.__dispatchChildren(event);
			}
		}
	}
	,__enterFrame: function(deltaTime) {
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			child.__enterFrame(deltaTime);
		}
	}
	,__getBounds: function(rect,matrix) {
		openfl_display_InteractiveObject.prototype.__getBounds.call(this,rect,matrix);
		if(this.__children.length == 0) {
			return;
		}
		if(matrix != null) {
			this.__updateTransforms(matrix);
			this.__updateChildren(true);
		}
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			if(child.__scaleX == 0 || child.__scaleY == 0) {
				continue;
			}
			child.__getBounds(rect,child.__worldTransform);
		}
		if(matrix != null) {
			this.__updateTransforms();
			this.__updateChildren(true);
		}
	}
	,__getFilterBounds: function(rect,matrix) {
		openfl_display_InteractiveObject.prototype.__getFilterBounds.call(this,rect,matrix);
		if(this.__children.length == 0) {
			return;
		}
		if(matrix != null) {
			this.__updateTransforms(matrix);
			this.__updateChildren(true);
		}
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			if(child.__scaleX == 0 || child.__scaleY == 0 || child.__isMask) {
				continue;
			}
			child.__getFilterBounds(rect,child.__worldTransform);
		}
		if(matrix != null) {
			this.__updateTransforms();
			this.__updateChildren(true);
		}
	}
	,__getRenderBounds: function(rect,matrix) {
		if(this.__scrollRect != null) {
			openfl_display_InteractiveObject.prototype.__getRenderBounds.call(this,rect,matrix);
			return;
		} else {
			openfl_display_InteractiveObject.prototype.__getBounds.call(this,rect,matrix);
		}
		if(this.__children.length == 0) {
			return;
		}
		if(matrix != null) {
			this.__updateTransforms(matrix);
			this.__updateChildren(true);
		}
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			if(child.__scaleX == 0 || child.__scaleY == 0 || child.__isMask) {
				continue;
			}
			child.__getRenderBounds(rect,child.__worldTransform);
		}
		if(matrix != null) {
			this.__updateTransforms();
			this.__updateChildren(true);
		}
	}
	,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		if(!hitObject.get_visible() || this.__isMask || interactiveOnly && !this.mouseEnabled && !this.mouseChildren) {
			return false;
		}
		if(this.get_mask() != null && !this.get_mask().__hitTestMask(x,y)) {
			return false;
		}
		if(this.__scrollRect != null) {
			var point = openfl_geom_Point.__pool.get();
			point.setTo(x,y);
			var _this = this.__getRenderTransform();
			var norm = _this.a * _this.d - _this.b * _this.c;
			if(norm == 0) {
				point.x = -_this.tx;
				point.y = -_this.ty;
			} else {
				var px = 1.0 / norm * (_this.c * (_this.ty - point.y) + _this.d * (point.x - _this.tx));
				point.y = 1.0 / norm * (_this.a * (point.y - _this.ty) + _this.b * (_this.tx - point.x));
				point.x = px;
			}
			if(!this.__scrollRect.containsPoint(point)) {
				openfl_geom_Point.__pool.release(point);
				return false;
			}
			openfl_geom_Point.__pool.release(point);
		}
		var i = this.__children.length;
		if(interactiveOnly) {
			if(stack == null || !this.mouseChildren) {
				while(--i >= 0) if(this.__children[i].__hitTest(x,y,shapeFlag,null,true,this.__children[i])) {
					if(stack != null) {
						stack.push(hitObject);
					}
					return true;
				}
			} else if(stack != null) {
				var length = stack.length;
				var interactive = false;
				var hitTest = false;
				while(--i >= 0) {
					interactive = this.__children[i].__getInteractive(null);
					if(interactive || this.mouseEnabled && !hitTest) {
						if(this.__children[i].__hitTest(x,y,shapeFlag,stack,true,this.__children[i])) {
							hitTest = true;
							if(interactive && stack.length > length) {
								break;
							}
						}
					}
				}
				if(hitTest) {
					stack.splice(length,0,hitObject);
					return true;
				}
			}
		} else {
			while(--i >= 0) this.__children[i].__hitTest(x,y,shapeFlag,stack,false,this.__children[i]);
		}
		return false;
	}
	,__hitTestMask: function(x,y) {
		var i = this.__children.length;
		while(--i >= 0) if(this.__children[i].__hitTestMask(x,y)) {
			return true;
		}
		return false;
	}
	,__readGraphicsData: function(graphicsData,recurse) {
		openfl_display_InteractiveObject.prototype.__readGraphicsData.call(this,graphicsData,recurse);
		if(recurse) {
			var _g = 0;
			var _g1 = this.__children;
			while(_g < _g1.length) {
				var child = _g1[_g];
				++_g;
				child.__readGraphicsData(graphicsData,recurse);
			}
		}
	}
	,__renderCairo: function(renderSession) {
	}
	,__renderCairoMask: function(renderSession) {
	}
	,__renderCanvas: function(renderSession) {
		if(!this.__renderable || this.__worldAlpha <= 0 || this.get_mask() != null && (this.get_mask().get_width() <= 0 || this.get_mask().get_height() <= 0)) {
			return;
		}
		openfl_display_InteractiveObject.prototype.__renderCanvas.call(this,renderSession);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			return;
		}
		renderSession.maskManager.pushObject(this);
		if(renderSession.clearRenderDirty) {
			var _g = 0;
			var _g1 = this.__children;
			while(_g < _g1.length) {
				var child = _g1[_g];
				++_g;
				child.__renderCanvas(renderSession);
				child.__renderDirty = false;
			}
			this.__renderDirty = false;
		} else {
			var _g2 = 0;
			var _g11 = this.__children;
			while(_g2 < _g11.length) {
				var child1 = _g11[_g2];
				++_g2;
				child1.__renderCanvas(renderSession);
			}
		}
		var _g3 = 0;
		var _g12 = this.__removedChildren;
		while(_g3 < _g12.data.get_length()) {
			var orphan = _g12.data.get(_g3);
			++_g3;
			if(orphan.stage == null) {
				orphan.__cleanup();
			}
		}
		this.__removedChildren.data.set_length(0);
		renderSession.maskManager.popObject(this);
	}
	,__renderCanvasMask: function(renderSession) {
		if(this.__graphics != null) {
			openfl__$internal_renderer_canvas_CanvasGraphics.renderMask(this.__graphics,renderSession);
		}
		var bounds = openfl_geom_Rectangle.__pool.get();
		this.__getLocalBounds(bounds);
		renderSession.context.rect(0,0,bounds.width,bounds.height);
		openfl_geom_Rectangle.__pool.release(bounds);
	}
	,__renderDOM: function(renderSession) {
		openfl_display_InteractiveObject.prototype.__renderDOM.call(this,renderSession);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			return;
		}
		renderSession.maskManager.pushObject(this);
		if(renderSession.clearRenderDirty) {
			var _g = 0;
			var _g1 = this.__children;
			while(_g < _g1.length) {
				var child = _g1[_g];
				++_g;
				child.__renderDOM(renderSession);
				child.__renderDirty = false;
			}
			this.__renderDirty = false;
		} else {
			var _g2 = 0;
			var _g11 = this.__children;
			while(_g2 < _g11.length) {
				var child1 = _g11[_g2];
				++_g2;
				child1.__renderDOM(renderSession);
			}
		}
		var _g3 = 0;
		var _g12 = this.__removedChildren;
		while(_g3 < _g12.data.get_length()) {
			var orphan = _g12.data.get(_g3);
			++_g3;
			if(orphan.stage == null) {
				orphan.__renderDOM(renderSession);
			}
		}
		this.__removedChildren.data.set_length(0);
		renderSession.maskManager.popObject(this);
	}
	,__renderDOMClear: function(renderSession) {
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			child.__renderDOMClear(renderSession);
		}
		var _g2 = 0;
		var _g11 = this.__removedChildren;
		while(_g2 < _g11.data.get_length()) {
			var orphan = _g11.data.get(_g2);
			++_g2;
			if(orphan.stage == null) {
				orphan.__renderDOMClear(renderSession);
			}
		}
	}
	,__renderGL: function(renderSession) {
		if(!this.__renderable || this.__worldAlpha <= 0) {
			return;
		}
		openfl_display_InteractiveObject.prototype.__renderGL.call(this,renderSession);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			return;
		}
		if(this.__children.length > 0) {
			renderSession.maskManager.pushObject(this);
			renderSession.filterManager.pushObject(this);
			if(renderSession.clearRenderDirty) {
				var _g = 0;
				var _g1 = this.__children;
				while(_g < _g1.length) {
					var child = _g1[_g];
					++_g;
					child.__renderGL(renderSession);
					child.__renderDirty = false;
				}
				this.__renderDirty = false;
			} else {
				var _g2 = 0;
				var _g11 = this.__children;
				while(_g2 < _g11.length) {
					var child1 = _g11[_g2];
					++_g2;
					child1.__renderGL(renderSession);
				}
			}
		}
		var _g3 = 0;
		var _g12 = this.__removedChildren;
		while(_g3 < _g12.data.get_length()) {
			var orphan = _g12.data.get(_g3);
			++_g3;
			if(orphan.stage == null) {
				orphan.__cleanup();
			}
		}
		this.__removedChildren.data.set_length(0);
		if(this.__children.length > 0) {
			renderSession.filterManager.popObject(this);
			renderSession.maskManager.popObject(this);
		}
	}
	,__renderGLMask: function(renderSession) {
		openfl_display_InteractiveObject.prototype.__renderGLMask.call(this,renderSession);
		if(this.__cacheBitmap != null && !this.__cacheBitmapRender) {
			return;
		}
		if(renderSession.clearRenderDirty) {
			var _g = 0;
			var _g1 = this.__children;
			while(_g < _g1.length) {
				var child = _g1[_g];
				++_g;
				child.__renderGLMask(renderSession);
				child.__renderDirty = false;
			}
			this.__renderDirty = false;
		} else {
			var _g2 = 0;
			var _g11 = this.__children;
			while(_g2 < _g11.length) {
				var child1 = _g11[_g2];
				++_g2;
				child1.__renderGLMask(renderSession);
			}
		}
		var _g3 = 0;
		var _g12 = this.__removedChildren;
		while(_g3 < _g12.data.get_length()) {
			var orphan = _g12.data.get(_g3);
			++_g3;
			if(orphan.stage == null) {
				orphan.__cleanup();
			}
		}
		this.__removedChildren.data.set_length(0);
	}
	,__setStageReference: function(stage) {
		openfl_display_InteractiveObject.prototype.__setStageReference.call(this,stage);
		if(this.__children != null) {
			var _g = 0;
			var _g1 = this.__children;
			while(_g < _g1.length) {
				var child = _g1[_g];
				++_g;
				child.__setStageReference(stage);
			}
		}
	}
	,__setWorldTransformInvalid: function() {
		if(!this.__worldTransformInvalid) {
			this.__worldTransformInvalid = true;
			if(this.__children != null) {
				var _g = 0;
				var _g1 = this.__children;
				while(_g < _g1.length) {
					var child = _g1[_g];
					++_g;
					child.__setWorldTransformInvalid();
				}
			}
		}
	}
	,__stopAllMovieClips: function() {
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			child.__stopAllMovieClips();
		}
	}
	,__update: function(transformOnly,updateChildren,maskGraphics) {
		openfl_display_InteractiveObject.prototype.__update.call(this,transformOnly,updateChildren,maskGraphics);
		if(updateChildren) {
			var _g = 0;
			var _g1 = this.__children;
			while(_g < _g1.length) {
				var child = _g1[_g];
				++_g;
				child.__update(transformOnly,true,maskGraphics);
			}
		}
	}
	,__updateChildren: function(transformOnly) {
		openfl_display_InteractiveObject.prototype.__updateChildren.call(this,transformOnly);
		var _g = 0;
		var _g1 = this.__children;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			child.__update(transformOnly,true);
		}
	}
	,get_numChildren: function() {
		return this.__children.length;
	}
	,__class__: openfl_display_DisplayObjectContainer
	,__properties__: $extend(openfl_display_InteractiveObject.prototype.__properties__,{get_numChildren:"get_numChildren"})
});
var openfl_display_FrameLabel = function(name,frame) {
	openfl_events_EventDispatcher.call(this);
	this.__name = name;
	this.__frame = frame;
};
$hxClasses["openfl.display.FrameLabel"] = openfl_display_FrameLabel;
openfl_display_FrameLabel.__name__ = ["openfl","display","FrameLabel"];
openfl_display_FrameLabel.__super__ = openfl_events_EventDispatcher;
openfl_display_FrameLabel.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	__frame: null
	,__name: null
	,get_frame: function() {
		return this.__frame;
	}
	,get_name: function() {
		return this.__name;
	}
	,__class__: openfl_display_FrameLabel
	,__properties__: {get_name:"get_name",get_frame:"get_frame"}
});
var openfl_display__$GradientType_GradientType_$Impl_$ = {};
$hxClasses["openfl.display._GradientType.GradientType_Impl_"] = openfl_display__$GradientType_GradientType_$Impl_$;
openfl_display__$GradientType_GradientType_$Impl_$.__name__ = ["openfl","display","_GradientType","GradientType_Impl_"];
openfl_display__$GradientType_GradientType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "linear":
		return 0;
	case "radial":
		return 1;
	default:
		return null;
	}
};
openfl_display__$GradientType_GradientType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "linear";
	case 1:
		return "radial";
	default:
		return null;
	}
};
var openfl_display_Graphics = function(owner) {
	this.__dirty = true;
	this.__owner = owner;
	this.__commands = new openfl__$internal_renderer_DrawCommandBuffer();
	this.__strokePadding = 0;
	this.__positionX = 0;
	this.__positionY = 0;
	this.__renderTransform = new openfl_geom_Matrix();
	this.__worldTransform = new openfl_geom_Matrix();
	this.__width = 0;
	this.__height = 0;
};
$hxClasses["openfl.display.Graphics"] = openfl_display_Graphics;
openfl_display_Graphics.__name__ = ["openfl","display","Graphics"];
openfl_display_Graphics.prototype = {
	__bounds: null
	,__commands: null
	,__dirty: null
	,__height: null
	,__managed: null
	,__positionX: null
	,__positionY: null
	,__renderTransform: null
	,__strokePadding: null
	,__transformDirty: null
	,__visible: null
	,__owner: null
	,__width: null
	,__worldTransform: null
	,__cairo: null
	,__bitmap: null
	,beginBitmapFill: function(bitmap,matrix,repeat,smooth) {
		if(smooth == null) {
			smooth = false;
		}
		if(repeat == null) {
			repeat = true;
		}
		this.__commands.beginBitmapFill(bitmap,matrix != null ? matrix.clone() : null,repeat,smooth);
		this.__visible = true;
	}
	,beginFill: function(color,alpha) {
		if(alpha == null) {
			alpha = 1;
		}
		if(color == null) {
			color = 0;
		}
		this.__commands.beginFill(color & 16777215,alpha);
		if(alpha > 0) {
			this.__visible = true;
		}
	}
	,beginGradientFill: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
		if(focalPointRatio == null) {
			focalPointRatio = 0;
		}
		if(interpolationMethod == null) {
			interpolationMethod = 1;
		}
		if(spreadMethod == null) {
			spreadMethod = 0;
		}
		this.__commands.beginGradientFill(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio);
		var _g = 0;
		while(_g < alphas.length) {
			var alpha = alphas[_g];
			++_g;
			if(alpha > 0) {
				this.__visible = true;
				break;
			}
		}
	}
	,clear: function() {
		this.__commands.clear();
		this.__strokePadding = 0;
		if(this.__bounds != null) {
			this.set___dirty(true);
			this.__transformDirty = true;
			this.__bounds = null;
		}
		this.__visible = false;
	}
	,copyFrom: function(sourceGraphics) {
		this.__bounds = sourceGraphics.__bounds != null ? sourceGraphics.__bounds.clone() : null;
		this.__commands = sourceGraphics.__commands.copy();
		this.set___dirty(true);
		this.__strokePadding = sourceGraphics.__strokePadding;
		this.__positionX = sourceGraphics.__positionX;
		this.__positionY = sourceGraphics.__positionY;
		this.__transformDirty = true;
		this.__visible = sourceGraphics.__visible;
	}
	,cubicCurveTo: function(controlX1,controlY1,controlX2,controlY2,anchorX,anchorY) {
		this.__inflateBounds(this.__positionX - this.__strokePadding,this.__positionY - this.__strokePadding);
		this.__inflateBounds(this.__positionX + this.__strokePadding,this.__positionY + this.__strokePadding);
		var ix1;
		var iy1;
		var ix2;
		var iy2;
		ix1 = anchorX;
		ix2 = anchorX;
		if(!((controlX1 < anchorX && controlX1 > this.__positionX || controlX1 > anchorX && controlX1 < this.__positionX) && (controlX2 < anchorX && controlX2 > this.__positionX || controlX2 > anchorX && controlX2 < this.__positionX))) {
			var u = 2 * this.__positionX - 4 * controlX1 + 2 * controlX2;
			var v = controlX1 - this.__positionX;
			var w = -this.__positionX + 3 * controlX1 + anchorX - 3 * controlX2;
			var t1 = (-u + Math.sqrt(u * u - 4 * v * w)) / (2 * w);
			var t2 = (-u - Math.sqrt(u * u - 4 * v * w)) / (2 * w);
			if(t1 > 0 && t1 < 1) {
				ix1 = this.__calculateBezierCubicPoint(t1,this.__positionX,controlX1,controlX2,anchorX);
			}
			if(t2 > 0 && t2 < 1) {
				ix2 = this.__calculateBezierCubicPoint(t2,this.__positionX,controlX1,controlX2,anchorX);
			}
		}
		iy1 = anchorY;
		iy2 = anchorY;
		if(!((controlY1 < anchorY && controlY1 > this.__positionX || controlY1 > anchorY && controlY1 < this.__positionX) && (controlY2 < anchorY && controlY2 > this.__positionX || controlY2 > anchorY && controlY2 < this.__positionX))) {
			var u1 = 2 * this.__positionX - 4 * controlY1 + 2 * controlY2;
			var v1 = controlY1 - this.__positionX;
			var w1 = -this.__positionX + 3 * controlY1 + anchorY - 3 * controlY2;
			var t11 = (-u1 + Math.sqrt(u1 * u1 - 4 * v1 * w1)) / (2 * w1);
			var t21 = (-u1 - Math.sqrt(u1 * u1 - 4 * v1 * w1)) / (2 * w1);
			if(t11 > 0 && t11 < 1) {
				iy1 = this.__calculateBezierCubicPoint(t11,this.__positionX,controlY1,controlY2,anchorY);
			}
			if(t21 > 0 && t21 < 1) {
				iy2 = this.__calculateBezierCubicPoint(t21,this.__positionX,controlY1,controlY2,anchorY);
			}
		}
		this.__inflateBounds(ix1 - this.__strokePadding,iy1 - this.__strokePadding);
		this.__inflateBounds(ix1 + this.__strokePadding,iy1 + this.__strokePadding);
		this.__inflateBounds(ix2 - this.__strokePadding,iy2 - this.__strokePadding);
		this.__inflateBounds(ix2 + this.__strokePadding,iy2 + this.__strokePadding);
		this.__positionX = anchorX;
		this.__positionY = anchorY;
		this.__inflateBounds(this.__positionX - this.__strokePadding,this.__positionY - this.__strokePadding);
		this.__inflateBounds(this.__positionX + this.__strokePadding,this.__positionY + this.__strokePadding);
		this.__commands.cubicCurveTo(controlX1,controlY1,controlX2,controlY2,anchorX,anchorY);
		this.set___dirty(true);
	}
	,curveTo: function(controlX,controlY,anchorX,anchorY) {
		this.__inflateBounds(this.__positionX - this.__strokePadding,this.__positionY - this.__strokePadding);
		this.__inflateBounds(this.__positionX + this.__strokePadding,this.__positionY + this.__strokePadding);
		var ix;
		var iy;
		if(controlX < anchorX && controlX > this.__positionX || controlX > anchorX && controlX < this.__positionX) {
			ix = anchorX;
		} else {
			var tx = (this.__positionX - controlX) / (this.__positionX - 2 * controlX + anchorX);
			ix = this.__calculateBezierQuadPoint(tx,this.__positionX,controlX,anchorX);
		}
		if(controlY < anchorY && controlY > this.__positionY || controlY > anchorY && controlY < this.__positionY) {
			iy = anchorY;
		} else {
			var ty = (this.__positionY - controlY) / (this.__positionY - 2 * controlY + anchorY);
			iy = this.__calculateBezierQuadPoint(ty,this.__positionY,controlY,anchorY);
		}
		this.__inflateBounds(ix - this.__strokePadding,iy - this.__strokePadding);
		this.__inflateBounds(ix + this.__strokePadding,iy + this.__strokePadding);
		this.__positionX = anchorX;
		this.__positionY = anchorY;
		this.__commands.curveTo(controlX,controlY,anchorX,anchorY);
		this.set___dirty(true);
	}
	,drawCircle: function(x,y,radius) {
		if(radius <= 0) {
			return;
		}
		this.__inflateBounds(x - radius - this.__strokePadding,y - radius - this.__strokePadding);
		this.__inflateBounds(x + radius + this.__strokePadding,y + radius + this.__strokePadding);
		this.__commands.drawCircle(x,y,radius);
		this.set___dirty(true);
	}
	,drawEllipse: function(x,y,width,height) {
		if(width <= 0 || height <= 0) {
			return;
		}
		this.__inflateBounds(x - this.__strokePadding,y - this.__strokePadding);
		this.__inflateBounds(x + width + this.__strokePadding,y + height + this.__strokePadding);
		this.__commands.drawEllipse(x,y,width,height);
		this.set___dirty(true);
	}
	,drawGraphicsData: function(graphicsData) {
		var fill;
		var bitmapFill;
		var gradientFill;
		var stroke;
		var path;
		var trianglePath;
		var _g = 0;
		while(_g < graphicsData.data.get_length()) {
			var graphics = graphicsData.data.get(_g);
			++_g;
			var _g1 = graphics.__graphicsDataType;
			switch(_g1) {
			case openfl_display_GraphicsDataType.STROKE:
				stroke = graphics;
				if(stroke.fill != null) {
					var thickness = stroke.thickness;
					if(isNaN(thickness)) {
						thickness = null;
					}
					var _g11 = stroke.fill.__graphicsFillType;
					switch(_g11) {
					case openfl_display_GraphicsFillType.SOLID_FILL:
						fill = stroke.fill;
						this.lineStyle(thickness,fill.color,fill.alpha,stroke.pixelHinting,stroke.scaleMode,stroke.caps,stroke.joints,stroke.miterLimit);
						break;
					case openfl_display_GraphicsFillType.GRADIENT_FILL:
						gradientFill = stroke.fill;
						this.lineStyle(thickness,0,1,stroke.pixelHinting,stroke.scaleMode,stroke.caps,stroke.joints,stroke.miterLimit);
						this.lineGradientStyle(gradientFill.type,gradientFill.colors,gradientFill.alphas,gradientFill.ratios,gradientFill.matrix,gradientFill.spreadMethod,gradientFill.interpolationMethod,gradientFill.focalPointRatio);
						break;
					case openfl_display_GraphicsFillType.BITMAP_FILL:
						bitmapFill = stroke.fill;
						this.lineStyle(thickness,0,1,stroke.pixelHinting,stroke.scaleMode,stroke.caps,stroke.joints,stroke.miterLimit);
						this.lineBitmapStyle(bitmapFill.bitmapData,bitmapFill.matrix,bitmapFill.repeat,bitmapFill.smooth);
						break;
					default:
					}
				} else {
					this.lineStyle();
				}
				break;
			case openfl_display_GraphicsDataType.SOLID:
				fill = graphics;
				this.beginFill(fill.color,fill.alpha);
				break;
			case openfl_display_GraphicsDataType.GRADIENT:
				gradientFill = graphics;
				this.beginGradientFill(gradientFill.type,gradientFill.colors,gradientFill.alphas,gradientFill.ratios,gradientFill.matrix,gradientFill.spreadMethod,gradientFill.interpolationMethod,gradientFill.focalPointRatio);
				break;
			case openfl_display_GraphicsDataType.PATH:
				path = graphics;
				this.drawPath(path.commands,path.data,path.winding);
				break;
			case openfl_display_GraphicsDataType.BITMAP:
				bitmapFill = graphics;
				this.beginBitmapFill(bitmapFill.bitmapData,bitmapFill.matrix,bitmapFill.repeat,bitmapFill.smooth);
				break;
			case openfl_display_GraphicsDataType.END:
				this.endFill();
				break;
			case openfl_display_GraphicsDataType.TRIANGLE_PATH:
				trianglePath = graphics;
				this.drawTriangles(trianglePath.vertices,trianglePath.indices,trianglePath.uvtData,trianglePath.culling);
				break;
			}
		}
	}
	,drawPath: function(commands,data,winding) {
		if(winding == null) {
			winding = 0;
		}
		var dataIndex = 0;
		if(winding == 1) {
			this.__commands.windingNonZero();
		}
		var _g = 0;
		try {
			while(_g < commands.data.get_length()) {
				var command = commands.data.get(_g);
				++_g;
				switch(command) {
				case 1:
					this.moveTo(data.data.get(dataIndex),data.data.get(dataIndex + 1));
					dataIndex += 2;
					break;
				case 2:
					this.lineTo(data.data.get(dataIndex),data.data.get(dataIndex + 1));
					dataIndex += 2;
					break;
				case 3:
					this.curveTo(data.data.get(dataIndex),data.data.get(dataIndex + 1),data.data.get(dataIndex + 2),data.data.get(dataIndex + 3));
					dataIndex += 4;
					break;
				case 4:
					this.moveTo(data.data.get(dataIndex + 2),data.data.get(dataIndex + 3));
					throw "__break__";
					break;
				case 5:
					this.lineTo(data.data.get(dataIndex + 2),data.data.get(dataIndex + 3));
					throw "__break__";
					break;
				case 6:
					this.cubicCurveTo(data.data.get(dataIndex),data.data.get(dataIndex + 1),data.data.get(dataIndex + 2),data.data.get(dataIndex + 3),data.data.get(dataIndex + 4),data.data.get(dataIndex + 5));
					dataIndex += 6;
					break;
				default:
				}
			}
		} catch( e ) { if( e != "__break__" ) throw e; }
	}
	,drawRect: function(x,y,width,height) {
		if(width <= 0 || height <= 0) {
			return;
		}
		this.__inflateBounds(x - this.__strokePadding,y - this.__strokePadding);
		this.__inflateBounds(x + width + this.__strokePadding,y + height + this.__strokePadding);
		this.__commands.drawRect(x,y,width,height);
		this.set___dirty(true);
	}
	,drawRoundRect: function(x,y,width,height,ellipseWidth,ellipseHeight) {
		if(width <= 0 || height <= 0) {
			return;
		}
		this.__inflateBounds(x - this.__strokePadding,y - this.__strokePadding);
		this.__inflateBounds(x + width + this.__strokePadding,y + height + this.__strokePadding);
		this.__commands.drawRoundRect(x,y,width,height,ellipseWidth,ellipseHeight);
		this.set___dirty(true);
	}
	,drawRoundRectComplex: function(x,y,width,height,topLeftRadius,topRightRadius,bottomLeftRadius,bottomRightRadius) {
		if(width <= 0 || height <= 0) {
			return;
		}
		this.__inflateBounds(x - this.__strokePadding,y - this.__strokePadding);
		this.__inflateBounds(x + width + this.__strokePadding,y + height + this.__strokePadding);
		var xw = x + width;
		var yh = y + height;
		var minSize = width < height ? width * 2 : height * 2;
		if(topLeftRadius < minSize) {
			topLeftRadius = topLeftRadius;
		} else {
			topLeftRadius = minSize;
		}
		if(topRightRadius < minSize) {
			topRightRadius = topRightRadius;
		} else {
			topRightRadius = minSize;
		}
		if(bottomLeftRadius < minSize) {
			bottomLeftRadius = bottomLeftRadius;
		} else {
			bottomLeftRadius = minSize;
		}
		if(bottomRightRadius < minSize) {
			bottomRightRadius = bottomRightRadius;
		} else {
			bottomRightRadius = minSize;
		}
		var anchor = 1 - Math.sin(45 * (Math.PI / 180));
		var control = 1 - Math.tan(22.5 * (Math.PI / 180));
		var a = bottomRightRadius * anchor;
		var s = bottomRightRadius * control;
		this.moveTo(xw,yh - bottomRightRadius);
		this.curveTo(xw,yh - s,xw - a,yh - a);
		this.curveTo(xw - s,yh,xw - bottomRightRadius,yh);
		a = bottomLeftRadius * anchor;
		s = bottomLeftRadius * control;
		this.lineTo(x + bottomLeftRadius,yh);
		this.curveTo(x + s,yh,x + a,yh - a);
		this.curveTo(x,yh - s,x,yh - bottomLeftRadius);
		a = topLeftRadius * anchor;
		s = topLeftRadius * control;
		this.lineTo(x,y + topLeftRadius);
		this.curveTo(x,y + s,x + a,y + a);
		this.curveTo(x + s,y,x + topLeftRadius,y);
		a = topRightRadius * anchor;
		s = topRightRadius * control;
		this.lineTo(xw - topRightRadius,y);
		this.curveTo(xw - s,y,xw - a,y + a);
		this.curveTo(xw,y + s,xw,y + topRightRadius);
		this.lineTo(xw,yh - bottomRightRadius);
		this.set___dirty(true);
	}
	,drawTriangles: function(vertices,indices,uvtData,culling) {
		if(culling == null) {
			culling = 1;
		}
		if(vertices == null) {
			return;
		}
		var vlen = vertices.data.get_length() / 2 | 0;
		if(culling == null) {
			culling = 1;
		}
		if(indices == null) {
			if(vlen % 3 != 0) {
				throw new js__$Boot_HaxeError(new openfl_errors_ArgumentError("Not enough vertices to close a triangle."));
			}
			indices = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
			var _g1 = 0;
			var _g = vlen;
			while(_g1 < _g) {
				var i = _g1++;
				indices.data.push(i);
			}
		}
		this.__inflateBounds(0,0);
		var tmpx = -Infinity;
		var tmpy = -Infinity;
		var maxX = -Infinity;
		var maxY = -Infinity;
		var _g11 = 0;
		var _g2 = vlen;
		while(_g11 < _g2) {
			var i1 = _g11++;
			tmpx = vertices.data.get(i1 * 2);
			tmpy = vertices.data.get(i1 * 2 + 1);
			if(maxX < tmpx) {
				maxX = tmpx;
			}
			if(maxY < tmpy) {
				maxY = tmpy;
			}
		}
		this.__inflateBounds(maxX,maxY);
		this.__commands.drawTriangles(vertices,indices,uvtData,culling);
		this.set___dirty(true);
		this.__visible = true;
	}
	,endFill: function() {
		this.__commands.endFill();
	}
	,lineBitmapStyle: function(bitmap,matrix,repeat,smooth) {
		if(smooth == null) {
			smooth = false;
		}
		if(repeat == null) {
			repeat = true;
		}
		this.__commands.lineBitmapStyle(bitmap,matrix != null ? matrix.clone() : null,repeat,smooth);
	}
	,lineGradientStyle: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
		if(focalPointRatio == null) {
			focalPointRatio = 0;
		}
		if(interpolationMethod == null) {
			interpolationMethod = 1;
		}
		if(spreadMethod == null) {
			spreadMethod = 0;
		}
		this.__commands.lineGradientStyle(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio);
	}
	,lineStyle: function(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit) {
		if(miterLimit == null) {
			miterLimit = 3;
		}
		if(scaleMode == null) {
			scaleMode = 2;
		}
		if(pixelHinting == null) {
			pixelHinting = false;
		}
		if(alpha == null) {
			alpha = 1;
		}
		if(color == null) {
			color = 0;
		}
		if(thickness != null) {
			if(joints == 1) {
				if(thickness > this.__strokePadding) {
					this.__strokePadding = thickness;
				}
			} else if(thickness / 2 > this.__strokePadding) {
				this.__strokePadding = thickness / 2;
			}
		}
		this.__commands.lineStyle(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit);
		if(thickness != null) {
			this.__visible = true;
		}
	}
	,lineTo: function(x,y) {
		if(!isFinite(x) || !isFinite(y)) {
			return;
		}
		this.__inflateBounds(this.__positionX - this.__strokePadding,this.__positionY - this.__strokePadding);
		this.__inflateBounds(this.__positionX + this.__strokePadding,this.__positionY + this.__strokePadding);
		this.__positionX = x;
		this.__positionY = y;
		this.__inflateBounds(this.__positionX - this.__strokePadding,this.__positionY - this.__strokePadding);
		this.__inflateBounds(this.__positionX + this.__strokePadding * 2,this.__positionY + this.__strokePadding);
		this.__commands.lineTo(x,y);
		this.set___dirty(true);
	}
	,moveTo: function(x,y) {
		this.__positionX = x;
		this.__positionY = y;
		this.__commands.moveTo(x,y);
	}
	,readGraphicsData: function(recurse) {
		if(recurse == null) {
			recurse = true;
		}
		var graphicsData = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
		this.__owner.__readGraphicsData(graphicsData,recurse);
		return graphicsData;
	}
	,__calculateBezierCubicPoint: function(t,p1,p2,p3,p4) {
		var iT = 1 - t;
		return p1 * (iT * iT * iT) + 3 * p2 * t * (iT * iT) + 3 * p3 * iT * (t * t) + p4 * (t * t * t);
	}
	,__calculateBezierQuadPoint: function(t,p1,p2,p3) {
		var iT = 1 - t;
		return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3;
	}
	,__cleanup: function() {
		if(this.__bounds != null) {
			this.set___dirty(true);
			this.__transformDirty = true;
		}
		this.__bitmap = null;
		this.__cairo = null;
	}
	,__getBounds: function(rect,matrix) {
		if(this.__bounds == null) {
			return;
		}
		var bounds = openfl_geom_Rectangle.__pool.get();
		this.__bounds.__transform(bounds,matrix);
		rect.__expand(bounds.x,bounds.y,bounds.width,bounds.height);
		openfl_geom_Rectangle.__pool.release(bounds);
	}
	,__hitTest: function(x,y,shapeFlag,matrix) {
		if(this.__bounds == null) {
			return false;
		}
		var norm = matrix.a * matrix.d - matrix.b * matrix.c;
		var px = norm == 0 ? -matrix.tx : 1.0 / norm * (matrix.c * (matrix.ty - y) + matrix.d * (x - matrix.tx));
		var norm1 = matrix.a * matrix.d - matrix.b * matrix.c;
		var py = norm1 == 0 ? -matrix.ty : 1.0 / norm1 * (matrix.a * (y - matrix.ty) + matrix.b * (matrix.tx - x));
		if(px > this.__bounds.x && py > this.__bounds.y && this.__bounds.contains(px,py)) {
			var shapeFlag1 = shapeFlag;
			return true;
		}
		return false;
	}
	,__inflateBounds: function(x,y) {
		if(this.__bounds == null) {
			this.__bounds = new openfl_geom_Rectangle(x,y,0,0);
			this.__transformDirty = true;
			return;
		}
		if(x < this.__bounds.x) {
			this.__bounds.width += this.__bounds.x - x;
			this.__bounds.x = x;
			this.__transformDirty = true;
		}
		if(y < this.__bounds.y) {
			this.__bounds.height += this.__bounds.y - y;
			this.__bounds.y = y;
			this.__transformDirty = true;
		}
		if(x > this.__bounds.x + this.__bounds.width) {
			this.__bounds.width = x - this.__bounds.x;
		}
		if(y > this.__bounds.y + this.__bounds.height) {
			this.__bounds.height = y - this.__bounds.y;
		}
	}
	,__readGraphicsData: function(graphicsData) {
		var data = new openfl__$internal_renderer_DrawCommandReader(this.__commands);
		var path = null;
		var stroke;
		var _g = 0;
		var _g1 = this.__commands.types;
		while(_g < _g1.length) {
			var type = _g1[_g];
			++_g;
			switch(type[1]) {
			case 3:case 4:case 5:case 6:case 7:case 8:case 15:case 16:
				if(path == null) {
					path = new openfl_display_GraphicsPath();
				}
				break;
			default:
				if(path != null) {
					graphicsData.data.push(path);
					path = null;
				}
			}
			switch(type[1]) {
			case 0:
				var _g2 = data.prev;
				switch(_g2[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_BITMAP_FILL;
				var this1 = data;
				var c = this1;
				var x = new openfl_display_GraphicsBitmapFill(c.buffer.o[c.oPos],c.buffer.o[c.oPos + 1],c.buffer.b[c.bPos],c.buffer.b[c.bPos + 1]);
				graphicsData.data.push(x);
				break;
			case 1:
				var _g3 = data.prev;
				switch(_g3[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_FILL;
				var this2 = data;
				var c1 = this2;
				var x1 = new openfl_display_GraphicsSolidFill(c1.buffer.i[c1.iPos],1);
				graphicsData.data.push(x1);
				break;
			case 2:
				var _g4 = data.prev;
				switch(_g4[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.BEGIN_GRADIENT_FILL;
				var this3 = data;
				var c2 = this3;
				var x2 = new openfl_display_GraphicsGradientFill(c2.buffer.o[c2.oPos],c2.buffer.ii[c2.iiPos],c2.buffer.ff[c2.ffPos],c2.buffer.ii[c2.iiPos + 1],c2.buffer.o[c2.oPos + 1],c2.buffer.o[c2.oPos + 2],c2.buffer.o[c2.oPos + 3],c2.buffer.f[c2.fPos]);
				graphicsData.data.push(x2);
				break;
			case 3:
				var _g5 = data.prev;
				switch(_g5[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.CUBIC_CURVE_TO;
				var this4 = data;
				var c3 = this4;
				path.cubicCurveTo(c3.buffer.f[c3.fPos],c3.buffer.f[c3.fPos + 1],c3.buffer.f[c3.fPos + 2],c3.buffer.f[c3.fPos + 3],c3.buffer.f[c3.fPos + 4],c3.buffer.f[c3.fPos + 5]);
				break;
			case 4:
				var _g6 = data.prev;
				switch(_g6[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.CURVE_TO;
				var this5 = data;
				var c4 = this5;
				path.curveTo(c4.buffer.f[c4.fPos],c4.buffer.f[c4.fPos + 1],c4.buffer.f[c4.fPos + 2],c4.buffer.f[c4.fPos + 3]);
				break;
			case 5:
				var _g7 = data.prev;
				switch(_g7[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_CIRCLE;
				var this6 = data;
				var c5 = this6;
				path.__drawCircle(c5.buffer.f[c5.fPos],c5.buffer.f[c5.fPos + 1],c5.buffer.f[c5.fPos + 2]);
				break;
			case 6:
				var _g8 = data.prev;
				switch(_g8[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ELLIPSE;
				var this7 = data;
				var c6 = this7;
				path.__drawEllipse(c6.buffer.f[c6.fPos],c6.buffer.f[c6.fPos + 1],c6.buffer.f[c6.fPos + 2],c6.buffer.f[c6.fPos + 3]);
				break;
			case 7:
				var _g9 = data.prev;
				switch(_g9[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_RECT;
				var this8 = data;
				var c7 = this8;
				path.__drawRect(c7.buffer.f[c7.fPos],c7.buffer.f[c7.fPos + 1],c7.buffer.f[c7.fPos + 2],c7.buffer.f[c7.fPos + 3]);
				break;
			case 8:
				var _g10 = data.prev;
				switch(_g10[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.DRAW_ROUND_RECT;
				var this9 = data;
				var c8 = this9;
				path.__drawRoundRect(c8.buffer.f[c8.fPos],c8.buffer.f[c8.fPos + 1],c8.buffer.f[c8.fPos + 2],c8.buffer.f[c8.fPos + 3],c8.buffer.f[c8.fPos + 4],c8.buffer.o[c8.oPos] != null ? c8.buffer.o[c8.oPos] : c8.buffer.f[c8.fPos + 4]);
				break;
			case 11:
				var _g11 = data.prev;
				switch(_g11[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.END_FILL;
				var this10 = data;
				var x3 = new openfl_display_GraphicsEndFill();
				graphicsData.data.push(x3);
				break;
			case 12:
				var _g12 = data.prev;
				switch(_g12[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_BITMAP_STYLE;
				var this11 = data;
				var c9 = this11;
				path = null;
				break;
			case 13:
				var _g13 = data.prev;
				switch(_g13[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_GRADIENT_STYLE;
				var this12 = data;
				var c10 = this12;
				break;
			case 14:
				var _g14 = data.prev;
				switch(_g14[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_STYLE;
				var this13 = data;
				var c11 = this13;
				stroke = new openfl_display_GraphicsStroke(c11.buffer.o[c11.oPos],c11.buffer.b[c11.bPos],c11.buffer.o[c11.oPos + 1],c11.buffer.o[c11.oPos + 2],c11.buffer.o[c11.oPos + 3],c11.buffer.f[c11.fPos + 1]);
				stroke.fill = new openfl_display_GraphicsSolidFill(c11.buffer.i[c11.iPos],c11.buffer.f[c11.fPos]);
				graphicsData.data.push(stroke);
				break;
			case 15:
				var _g15 = data.prev;
				switch(_g15[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.LINE_TO;
				var this14 = data;
				var c12 = this14;
				path.lineTo(c12.buffer.f[c12.fPos],c12.buffer.f[c12.fPos + 1]);
				break;
			case 16:
				var _g16 = data.prev;
				switch(_g16[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = openfl__$internal_renderer_DrawCommandType.MOVE_TO;
				var this15 = data;
				var c13 = this15;
				path.moveTo(c13.buffer.f[c13.fPos],c13.buffer.f[c13.fPos + 1]);
				break;
			default:
				var _g17 = data.prev;
				switch(_g17[1]) {
				case 0:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 1:
					data.iPos += 1;
					data.fPos += 1;
					break;
				case 2:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 3:
					data.fPos += 6;
					break;
				case 4:
					data.fPos += 4;
					break;
				case 5:
					data.fPos += 3;
					break;
				case 6:
					data.fPos += 4;
					break;
				case 7:
					data.fPos += 4;
					break;
				case 8:
					data.fPos += 5;
					data.oPos += 1;
					break;
				case 10:
					data.oPos += 4;
					break;
				case 11:
					break;
				case 12:
					data.oPos += 2;
					data.bPos += 2;
					break;
				case 13:
					data.oPos += 4;
					data.iiPos += 2;
					data.ffPos += 1;
					data.fPos += 1;
					break;
				case 14:
					data.oPos += 4;
					data.iPos += 1;
					data.fPos += 2;
					data.bPos += 1;
					break;
				case 15:
					data.fPos += 2;
					break;
				case 16:
					data.fPos += 2;
					break;
				case 17:
					data.oPos += 1;
					break;
				case 18:case 19:
					break;
				default:
				}
				data.prev = type;
			}
		}
		if(path != null) {
			graphicsData.data.push(path);
		}
	}
	,__update: function() {
		if(this.__bounds == null || this.__bounds.width <= 0 || this.__bounds.height <= 0) {
			return;
		}
		var parentTransform = this.__owner.__renderTransform;
		var scaleX = 1.0;
		var scaleY = 1.0;
		if(parentTransform != null) {
			if(parentTransform.b == 0) {
				scaleX = Math.abs(parentTransform.a);
			} else {
				scaleX = Math.sqrt(parentTransform.a * parentTransform.a + parentTransform.b * parentTransform.b);
			}
			if(parentTransform.c == 0) {
				scaleY = Math.abs(parentTransform.d);
			} else {
				scaleY = Math.sqrt(parentTransform.c * parentTransform.c + parentTransform.d * parentTransform.d);
			}
		} else {
			return;
		}
		var width = this.__bounds.width * scaleX;
		var height = this.__bounds.height * scaleY;
		if(width < 1 || height < 1) {
			if(this.__width >= 1 || this.__height >= 1) {
				this.set___dirty(true);
			}
			this.__width = 0;
			this.__height = 0;
			return;
		}
		if(openfl_display_Graphics.maxTextureWidth != null && width > openfl_display_Graphics.maxTextureWidth) {
			width = openfl_display_Graphics.maxTextureWidth;
			scaleX = openfl_display_Graphics.maxTextureWidth / this.__bounds.width;
		}
		if(openfl_display_Graphics.maxTextureWidth != null && height > openfl_display_Graphics.maxTextureHeight) {
			height = openfl_display_Graphics.maxTextureHeight;
			scaleY = openfl_display_Graphics.maxTextureHeight / this.__bounds.height;
		}
		this.__renderTransform.a = width / this.__bounds.width;
		this.__renderTransform.d = height / this.__bounds.height;
		var inverseA = 1 / this.__renderTransform.a;
		var inverseD = 1 / this.__renderTransform.d;
		this.__worldTransform.a = inverseA * parentTransform.a;
		this.__worldTransform.b = inverseA * parentTransform.b;
		this.__worldTransform.c = inverseD * parentTransform.c;
		this.__worldTransform.d = inverseD * parentTransform.d;
		var x = this.__bounds.x;
		var y = this.__bounds.y;
		var tx = x * parentTransform.a + y * parentTransform.c + parentTransform.tx;
		var ty = x * parentTransform.b + y * parentTransform.d + parentTransform.ty;
		this.__worldTransform.tx = Math.floor(tx);
		this.__worldTransform.ty = Math.floor(ty);
		var _this = this.__worldTransform;
		var norm = _this.a * _this.d - _this.b * _this.c;
		this.__renderTransform.tx = norm == 0 ? -_this.tx : 1.0 / norm * (_this.c * (_this.ty - ty) + _this.d * (tx - _this.tx));
		var _this1 = this.__worldTransform;
		var norm1 = _this1.a * _this1.d - _this1.b * _this1.c;
		this.__renderTransform.ty = norm1 == 0 ? -_this1.ty : 1.0 / norm1 * (_this1.a * (ty - _this1.ty) + _this1.b * (_this1.tx - tx));
		var newWidth = Math.ceil(width + this.__renderTransform.tx);
		var newHeight = Math.ceil(height + this.__renderTransform.ty);
		if(newWidth != this.__width || newHeight != this.__height) {
			this.set___dirty(true);
		}
		this.__width = newWidth;
		this.__height = newHeight;
	}
	,set___dirty: function(value) {
		if(value && this.__owner != null) {
			var _this = this.__owner;
			if(!_this.__renderDirty) {
				_this.__renderDirty = true;
				_this.__setParentRenderDirty();
			}
		}
		return this.__dirty = value;
	}
	,__class__: openfl_display_Graphics
	,__properties__: {set___dirty:"set___dirty"}
};
var openfl_display_IGraphicsFill = function() { };
$hxClasses["openfl.display.IGraphicsFill"] = openfl_display_IGraphicsFill;
openfl_display_IGraphicsFill.__name__ = ["openfl","display","IGraphicsFill"];
openfl_display_IGraphicsFill.prototype = {
	__graphicsFillType: null
	,__class__: openfl_display_IGraphicsFill
};
var openfl_display_IGraphicsData = function() { };
$hxClasses["openfl.display.IGraphicsData"] = openfl_display_IGraphicsData;
openfl_display_IGraphicsData.__name__ = ["openfl","display","IGraphicsData"];
openfl_display_IGraphicsData.prototype = {
	__graphicsDataType: null
	,__class__: openfl_display_IGraphicsData
};
var openfl_display_GraphicsBitmapFill = function(bitmapData,matrix,repeat,smooth) {
	if(smooth == null) {
		smooth = false;
	}
	if(repeat == null) {
		repeat = true;
	}
	this.bitmapData = bitmapData;
	this.matrix = matrix;
	this.repeat = repeat;
	this.smooth = smooth;
	this.__graphicsDataType = openfl_display_GraphicsDataType.BITMAP;
	this.__graphicsFillType = openfl_display_GraphicsFillType.BITMAP_FILL;
};
$hxClasses["openfl.display.GraphicsBitmapFill"] = openfl_display_GraphicsBitmapFill;
openfl_display_GraphicsBitmapFill.__name__ = ["openfl","display","GraphicsBitmapFill"];
openfl_display_GraphicsBitmapFill.__interfaces__ = [openfl_display_IGraphicsFill,openfl_display_IGraphicsData];
openfl_display_GraphicsBitmapFill.prototype = {
	bitmapData: null
	,matrix: null
	,repeat: null
	,smooth: null
	,__graphicsDataType: null
	,__graphicsFillType: null
	,__class__: openfl_display_GraphicsBitmapFill
};
var openfl_display_GraphicsEndFill = function() {
	this.__graphicsDataType = openfl_display_GraphicsDataType.END;
	this.__graphicsFillType = openfl_display_GraphicsFillType.END_FILL;
};
$hxClasses["openfl.display.GraphicsEndFill"] = openfl_display_GraphicsEndFill;
openfl_display_GraphicsEndFill.__name__ = ["openfl","display","GraphicsEndFill"];
openfl_display_GraphicsEndFill.__interfaces__ = [openfl_display_IGraphicsFill,openfl_display_IGraphicsData];
openfl_display_GraphicsEndFill.prototype = {
	__graphicsDataType: null
	,__graphicsFillType: null
	,__class__: openfl_display_GraphicsEndFill
};
var openfl_display_GraphicsGradientFill = function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
	if(focalPointRatio == null) {
		focalPointRatio = 0;
	}
	if(type == null) {
		type = 0;
	}
	if(spreadMethod == null) {
		spreadMethod = 0;
	}
	if(interpolationMethod == null) {
		interpolationMethod = 1;
	}
	this.type = type;
	this.colors = colors;
	this.alphas = alphas;
	this.ratios = ratios;
	this.matrix = matrix;
	this.spreadMethod = spreadMethod;
	this.interpolationMethod = interpolationMethod;
	this.focalPointRatio = focalPointRatio;
	this.__graphicsDataType = openfl_display_GraphicsDataType.GRADIENT;
	this.__graphicsFillType = openfl_display_GraphicsFillType.GRADIENT_FILL;
};
$hxClasses["openfl.display.GraphicsGradientFill"] = openfl_display_GraphicsGradientFill;
openfl_display_GraphicsGradientFill.__name__ = ["openfl","display","GraphicsGradientFill"];
openfl_display_GraphicsGradientFill.__interfaces__ = [openfl_display_IGraphicsFill,openfl_display_IGraphicsData];
openfl_display_GraphicsGradientFill.prototype = {
	alphas: null
	,colors: null
	,focalPointRatio: null
	,interpolationMethod: null
	,matrix: null
	,ratios: null
	,spreadMethod: null
	,type: null
	,__graphicsDataType: null
	,__graphicsFillType: null
	,__class__: openfl_display_GraphicsGradientFill
};
var openfl_display_IGraphicsPath = function() { };
$hxClasses["openfl.display.IGraphicsPath"] = openfl_display_IGraphicsPath;
openfl_display_IGraphicsPath.__name__ = ["openfl","display","IGraphicsPath"];
var openfl_display_GraphicsPath = function(commands,data,winding) {
	if(winding == null) {
		winding = 0;
	}
	this.commands = commands;
	this.data = data;
	this.winding = winding;
	this.__graphicsDataType = openfl_display_GraphicsDataType.PATH;
};
$hxClasses["openfl.display.GraphicsPath"] = openfl_display_GraphicsPath;
openfl_display_GraphicsPath.__name__ = ["openfl","display","GraphicsPath"];
openfl_display_GraphicsPath.__interfaces__ = [openfl_display_IGraphicsPath,openfl_display_IGraphicsData];
openfl_display_GraphicsPath.prototype = {
	commands: null
	,data: null
	,winding: null
	,__graphicsDataType: null
	,cubicCurveTo: function(controlX1,controlY1,controlX2,controlY2,anchorX,anchorY) {
		if(this.commands == null) {
			this.commands = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
		}
		if(this.data == null) {
			this.data = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		}
		this.commands.data.push(6);
		this.data.data.push(controlX1);
		this.data.data.push(controlY1);
		this.data.data.push(controlX2);
		this.data.data.push(controlY2);
		this.data.data.push(anchorX);
		this.data.data.push(anchorY);
	}
	,curveTo: function(controlX,controlY,anchorX,anchorY) {
		if(this.commands == null) {
			this.commands = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
		}
		if(this.data == null) {
			this.data = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		}
		this.commands.data.push(3);
		this.data.data.push(controlX);
		this.data.data.push(controlY);
		this.data.data.push(anchorX);
		this.data.data.push(anchorY);
	}
	,lineTo: function(x,y) {
		if(this.commands == null) {
			this.commands = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
		}
		if(this.data == null) {
			this.data = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		}
		this.commands.data.push(2);
		this.data.data.push(x);
		this.data.data.push(y);
	}
	,moveTo: function(x,y) {
		if(this.commands == null) {
			this.commands = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
		}
		if(this.data == null) {
			this.data = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		}
		this.commands.data.push(1);
		this.data.data.push(x);
		this.data.data.push(y);
	}
	,wideLineTo: function(x,y) {
		if(this.commands == null) {
			this.commands = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
		}
		if(this.data == null) {
			this.data = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		}
		this.commands.data.push(2);
		this.data.data.push(x);
		this.data.data.push(y);
	}
	,wideMoveTo: function(x,y) {
		if(this.commands == null) {
			this.commands = openfl__$Vector_Vector_$Impl_$.toIntVector(null);
		}
		if(this.data == null) {
			this.data = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		}
		this.commands.data.push(1);
		this.data.data.push(x);
		this.data.data.push(y);
	}
	,__drawCircle: function(x,y,radius) {
		this.__drawRoundRect(x - radius,y - radius,radius * 2,radius * 2,radius * 2,radius * 2);
	}
	,__drawEllipse: function(x,y,width,height) {
		this.__drawRoundRect(x,y,width,height,width,height);
	}
	,__drawRect: function(x,y,width,height) {
		this.moveTo(x,y);
		this.lineTo(x + width,y);
		this.lineTo(x + width,y + height);
		this.lineTo(x,y + height);
		this.lineTo(x,y);
	}
	,__drawRoundRect: function(x,y,width,height,ellipseWidth,ellipseHeight) {
		ellipseWidth *= 0.5;
		ellipseHeight *= 0.5;
		if(ellipseWidth > width / 2) {
			ellipseWidth = width / 2;
		}
		if(ellipseHeight > height / 2) {
			ellipseHeight = height / 2;
		}
		var xe = x + width;
		var ye = y + height;
		var cx1 = -ellipseWidth + ellipseWidth * openfl_display_GraphicsPath.SIN45;
		var cx2 = -ellipseWidth + ellipseWidth * openfl_display_GraphicsPath.TAN22;
		var cy1 = -ellipseHeight + ellipseHeight * openfl_display_GraphicsPath.SIN45;
		var cy2 = -ellipseHeight + ellipseHeight * openfl_display_GraphicsPath.TAN22;
		this.moveTo(xe,ye - ellipseHeight);
		this.curveTo(xe,ye + cy2,xe + cx1,ye + cy1);
		this.curveTo(xe + cx2,ye,xe - ellipseWidth,ye);
		this.lineTo(x + ellipseWidth,ye);
		this.curveTo(x - cx2,ye,x - cx1,ye + cy1);
		this.curveTo(x,ye + cy2,x,ye - ellipseHeight);
		this.lineTo(x,y + ellipseHeight);
		this.curveTo(x,y - cy2,x - cx1,y - cy1);
		this.curveTo(x - cx2,y,x + ellipseWidth,y);
		this.lineTo(xe - ellipseWidth,y);
		this.curveTo(xe + cx2,y,xe + cx1,y - cy1);
		this.curveTo(xe,y - cy2,xe,y + ellipseHeight);
		this.lineTo(xe,ye - ellipseHeight);
	}
	,__class__: openfl_display_GraphicsPath
};
var openfl_display__$GraphicsPathWinding_GraphicsPathWinding_$Impl_$ = {};
$hxClasses["openfl.display._GraphicsPathWinding.GraphicsPathWinding_Impl_"] = openfl_display__$GraphicsPathWinding_GraphicsPathWinding_$Impl_$;
openfl_display__$GraphicsPathWinding_GraphicsPathWinding_$Impl_$.__name__ = ["openfl","display","_GraphicsPathWinding","GraphicsPathWinding_Impl_"];
openfl_display__$GraphicsPathWinding_GraphicsPathWinding_$Impl_$.fromString = function(value) {
	switch(value) {
	case "evenOdd":
		return 0;
	case "nonZero":
		return 1;
	default:
		return null;
	}
};
openfl_display__$GraphicsPathWinding_GraphicsPathWinding_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "evenOdd";
	case 1:
		return "nonZero";
	default:
		return null;
	}
};
var openfl_display_GraphicsSolidFill = function(color,alpha) {
	if(alpha == null) {
		alpha = 1;
	}
	if(color == null) {
		color = 0;
	}
	this.alpha = alpha;
	this.color = color;
	this.__graphicsDataType = openfl_display_GraphicsDataType.SOLID;
	this.__graphicsFillType = openfl_display_GraphicsFillType.SOLID_FILL;
};
$hxClasses["openfl.display.GraphicsSolidFill"] = openfl_display_GraphicsSolidFill;
openfl_display_GraphicsSolidFill.__name__ = ["openfl","display","GraphicsSolidFill"];
openfl_display_GraphicsSolidFill.__interfaces__ = [openfl_display_IGraphicsFill,openfl_display_IGraphicsData];
openfl_display_GraphicsSolidFill.prototype = {
	alpha: null
	,color: null
	,__graphicsDataType: null
	,__graphicsFillType: null
	,__class__: openfl_display_GraphicsSolidFill
};
var openfl_display_IGraphicsStroke = function() { };
$hxClasses["openfl.display.IGraphicsStroke"] = openfl_display_IGraphicsStroke;
openfl_display_IGraphicsStroke.__name__ = ["openfl","display","IGraphicsStroke"];
var openfl_display_GraphicsStroke = function(thickness,pixelHinting,scaleMode,caps,joints,miterLimit,fill) {
	if(miterLimit == null) {
		miterLimit = 3;
	}
	if(joints == null) {
		joints = 2;
	}
	if(caps == null) {
		caps = 0;
	}
	if(scaleMode == null) {
		scaleMode = 2;
	}
	if(pixelHinting == null) {
		pixelHinting = false;
	}
	if(thickness == null) {
		thickness = NaN;
	}
	this.caps = caps;
	this.fill = fill;
	this.joints = joints;
	this.miterLimit = miterLimit;
	this.pixelHinting = pixelHinting;
	this.scaleMode = scaleMode;
	this.thickness = thickness;
	this.__graphicsDataType = openfl_display_GraphicsDataType.STROKE;
};
$hxClasses["openfl.display.GraphicsStroke"] = openfl_display_GraphicsStroke;
openfl_display_GraphicsStroke.__name__ = ["openfl","display","GraphicsStroke"];
openfl_display_GraphicsStroke.__interfaces__ = [openfl_display_IGraphicsStroke,openfl_display_IGraphicsData];
openfl_display_GraphicsStroke.prototype = {
	caps: null
	,fill: null
	,joints: null
	,miterLimit: null
	,pixelHinting: null
	,scaleMode: null
	,thickness: null
	,__graphicsDataType: null
	,__class__: openfl_display_GraphicsStroke
};
var openfl_display_GraphicsTrianglePath = function(vertices,indices,uvtData,culling) {
	if(culling == null) {
		culling = 1;
	}
	this.vertices = vertices;
	this.indices = indices;
	this.uvtData = uvtData;
	this.culling = culling;
	this.__graphicsDataType = openfl_display_GraphicsDataType.TRIANGLE_PATH;
};
$hxClasses["openfl.display.GraphicsTrianglePath"] = openfl_display_GraphicsTrianglePath;
openfl_display_GraphicsTrianglePath.__name__ = ["openfl","display","GraphicsTrianglePath"];
openfl_display_GraphicsTrianglePath.__interfaces__ = [openfl_display_IGraphicsPath,openfl_display_IGraphicsData];
openfl_display_GraphicsTrianglePath.prototype = {
	culling: null
	,indices: null
	,uvtData: null
	,vertices: null
	,__graphicsDataType: null
	,__class__: openfl_display_GraphicsTrianglePath
};
var openfl_display_GraphicsDataType = $hxClasses["openfl.display.GraphicsDataType"] = { __ename__ : ["openfl","display","GraphicsDataType"], __constructs__ : ["STROKE","SOLID","GRADIENT","PATH","BITMAP","END","TRIANGLE_PATH"] };
openfl_display_GraphicsDataType.STROKE = ["STROKE",0];
openfl_display_GraphicsDataType.STROKE.toString = $estr;
openfl_display_GraphicsDataType.STROKE.__enum__ = openfl_display_GraphicsDataType;
openfl_display_GraphicsDataType.SOLID = ["SOLID",1];
openfl_display_GraphicsDataType.SOLID.toString = $estr;
openfl_display_GraphicsDataType.SOLID.__enum__ = openfl_display_GraphicsDataType;
openfl_display_GraphicsDataType.GRADIENT = ["GRADIENT",2];
openfl_display_GraphicsDataType.GRADIENT.toString = $estr;
openfl_display_GraphicsDataType.GRADIENT.__enum__ = openfl_display_GraphicsDataType;
openfl_display_GraphicsDataType.PATH = ["PATH",3];
openfl_display_GraphicsDataType.PATH.toString = $estr;
openfl_display_GraphicsDataType.PATH.__enum__ = openfl_display_GraphicsDataType;
openfl_display_GraphicsDataType.BITMAP = ["BITMAP",4];
openfl_display_GraphicsDataType.BITMAP.toString = $estr;
openfl_display_GraphicsDataType.BITMAP.__enum__ = openfl_display_GraphicsDataType;
openfl_display_GraphicsDataType.END = ["END",5];
openfl_display_GraphicsDataType.END.toString = $estr;
openfl_display_GraphicsDataType.END.__enum__ = openfl_display_GraphicsDataType;
openfl_display_GraphicsDataType.TRIANGLE_PATH = ["TRIANGLE_PATH",6];
openfl_display_GraphicsDataType.TRIANGLE_PATH.toString = $estr;
openfl_display_GraphicsDataType.TRIANGLE_PATH.__enum__ = openfl_display_GraphicsDataType;
var openfl_display_GraphicsFillType = $hxClasses["openfl.display.GraphicsFillType"] = { __ename__ : ["openfl","display","GraphicsFillType"], __constructs__ : ["SOLID_FILL","GRADIENT_FILL","BITMAP_FILL","END_FILL"] };
openfl_display_GraphicsFillType.SOLID_FILL = ["SOLID_FILL",0];
openfl_display_GraphicsFillType.SOLID_FILL.toString = $estr;
openfl_display_GraphicsFillType.SOLID_FILL.__enum__ = openfl_display_GraphicsFillType;
openfl_display_GraphicsFillType.GRADIENT_FILL = ["GRADIENT_FILL",1];
openfl_display_GraphicsFillType.GRADIENT_FILL.toString = $estr;
openfl_display_GraphicsFillType.GRADIENT_FILL.__enum__ = openfl_display_GraphicsFillType;
openfl_display_GraphicsFillType.BITMAP_FILL = ["BITMAP_FILL",2];
openfl_display_GraphicsFillType.BITMAP_FILL.toString = $estr;
openfl_display_GraphicsFillType.BITMAP_FILL.__enum__ = openfl_display_GraphicsFillType;
openfl_display_GraphicsFillType.END_FILL = ["END_FILL",3];
openfl_display_GraphicsFillType.END_FILL.toString = $estr;
openfl_display_GraphicsFillType.END_FILL.__enum__ = openfl_display_GraphicsFillType;
var openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$ = {};
$hxClasses["openfl.display._InterpolationMethod.InterpolationMethod_Impl_"] = openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$;
openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.__name__ = ["openfl","display","_InterpolationMethod","InterpolationMethod_Impl_"];
openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.fromString = function(value) {
	switch(value) {
	case "linearRGB":
		return 0;
	case "rgb":
		return 1;
	default:
		return null;
	}
};
openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "linearRGB";
	case 1:
		return "rgb";
	default:
		return null;
	}
};
var openfl_display_JPEGEncoderOptions = function(quality) {
	if(quality == null) {
		quality = 80;
	}
	this.quality = quality;
};
$hxClasses["openfl.display.JPEGEncoderOptions"] = openfl_display_JPEGEncoderOptions;
openfl_display_JPEGEncoderOptions.__name__ = ["openfl","display","JPEGEncoderOptions"];
openfl_display_JPEGEncoderOptions.prototype = {
	quality: null
	,__class__: openfl_display_JPEGEncoderOptions
};
var openfl_display__$JointStyle_JointStyle_$Impl_$ = {};
$hxClasses["openfl.display._JointStyle.JointStyle_Impl_"] = openfl_display__$JointStyle_JointStyle_$Impl_$;
openfl_display__$JointStyle_JointStyle_$Impl_$.__name__ = ["openfl","display","_JointStyle","JointStyle_Impl_"];
openfl_display__$JointStyle_JointStyle_$Impl_$.fromString = function(value) {
	switch(value) {
	case "bevel":
		return 0;
	case "miter":
		return 1;
	case "round":
		return 2;
	default:
		return null;
	}
};
openfl_display__$JointStyle_JointStyle_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "bevel";
	case 1:
		return "miter";
	case 2:
		return "round";
	default:
		return null;
	}
};
var openfl_display__$LineScaleMode_LineScaleMode_$Impl_$ = {};
$hxClasses["openfl.display._LineScaleMode.LineScaleMode_Impl_"] = openfl_display__$LineScaleMode_LineScaleMode_$Impl_$;
openfl_display__$LineScaleMode_LineScaleMode_$Impl_$.__name__ = ["openfl","display","_LineScaleMode","LineScaleMode_Impl_"];
openfl_display__$LineScaleMode_LineScaleMode_$Impl_$.fromString = function(value) {
	switch(value) {
	case "horizontal":
		return 0;
	case "none":
		return 1;
	case "normal":
		return 2;
	case "vertical":
		return 3;
	default:
		return null;
	}
};
openfl_display__$LineScaleMode_LineScaleMode_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "horizontal";
	case 1:
		return "none";
	case 2:
		return "normal";
	case 3:
		return "vertical";
	default:
		return null;
	}
};
var openfl_display_Loader = function() {
	openfl_display_DisplayObjectContainer.call(this);
	this.contentLoaderInfo = openfl_display_LoaderInfo.create(this);
	this.uncaughtErrorEvents = this.contentLoaderInfo.uncaughtErrorEvents;
};
$hxClasses["openfl.display.Loader"] = openfl_display_Loader;
openfl_display_Loader.__name__ = ["openfl","display","Loader"];
openfl_display_Loader.__super__ = openfl_display_DisplayObjectContainer;
openfl_display_Loader.prototype = $extend(openfl_display_DisplayObjectContainer.prototype,{
	content: null
	,contentLoaderInfo: null
	,uncaughtErrorEvents: null
	,__library: null
	,__path: null
	,__unloaded: null
	,close: function() {
		openfl__$internal_Lib.notImplemented({ fileName : "Loader.hx", lineNumber : 59, className : "openfl.display.Loader", methodName : "close"});
	}
	,load: function(request,context) {
		this.contentLoaderInfo.loaderURL = openfl_Lib.get_current().get_loaderInfo().url;
		this.contentLoaderInfo.url = request.url;
		this.__unloaded = false;
		if(request.contentType == null || request.contentType == "") {
			var extension = "";
			this.__path = request.url;
			var queryIndex = this.__path.indexOf("?");
			if(queryIndex > -1) {
				this.__path = this.__path.substring(0,queryIndex);
			}
			while(StringTools.endsWith(this.__path,"/")) this.__path = this.__path.substring(0,this.__path.length - 1);
			if(StringTools.endsWith(this.__path,".bundle")) {
				this.__path += "/library.json";
				if(queryIndex > -1) {
					request.url = this.__path + request.url.substring(queryIndex);
				} else {
					request.url = this.__path;
				}
			}
			var extIndex = this.__path.lastIndexOf(".");
			if(extIndex > -1) {
				extension = this.__path.substring(extIndex + 1);
			}
			var tmp;
			switch(extension) {
			case "gif":
				tmp = "image/gif";
				break;
			case "jpeg":case "jpg":
				tmp = "image/jpeg";
				break;
			case "js":
				tmp = "application/javascript";
				break;
			case "json":
				tmp = "application/json";
				break;
			case "png":
				tmp = "image/png";
				break;
			case "swf":
				tmp = "application/x-shockwave-flash";
				break;
			default:
				tmp = "application/x-www-form-urlencoded";
			}
			this.contentLoaderInfo.contentType = tmp;
		} else {
			this.contentLoaderInfo.contentType = request.contentType;
		}
		var loader = new openfl_net_URLLoader();
		loader.dataFormat = 0;
		if(this.contentLoaderInfo.contentType.indexOf("/json") > -1 || this.contentLoaderInfo.contentType.indexOf("/javascript") > -1 || this.contentLoaderInfo.contentType.indexOf("/ecmascript") > -1) {
			loader.dataFormat = 1;
		}
		loader.addEventListener("complete",$bind(this,this.loader_onComplete));
		loader.addEventListener("ioError",$bind(this,this.loader_onError));
		loader.addEventListener("progress",$bind(this,this.loader_onProgress));
		loader.load(request);
	}
	,loadBytes: function(buffer,context) {
		openfl_display_BitmapData.loadFromBytes(buffer).onComplete($bind(this,this.BitmapData_onLoad)).onError($bind(this,this.BitmapData_onError));
	}
	,unload: function() {
		if(!this.__unloaded) {
			while(this.get_numChildren() > 0) this.removeChildAt(0);
			if(this.__library != null) {
				openfl_utils_Assets.unloadLibrary(this.contentLoaderInfo.url);
				this.__library = null;
			}
			this.content = null;
			this.contentLoaderInfo.url = null;
			this.contentLoaderInfo.contentType = null;
			this.contentLoaderInfo.content = null;
			this.contentLoaderInfo.bytesLoaded = 0;
			this.contentLoaderInfo.bytesTotal = 0;
			this.contentLoaderInfo.width = 0;
			this.contentLoaderInfo.height = 0;
			this.__unloaded = true;
			this.contentLoaderInfo.dispatchEvent(new openfl_events_Event("unload"));
		}
	}
	,unloadAndStop: function(gc) {
		if(gc == null) {
			gc = true;
		}
		if(this.content != null) {
			this.content.__stopAllMovieClips();
		}
		var _g1 = 0;
		var _g = this.get_numChildren();
		while(_g1 < _g) {
			var i = _g1++;
			this.getChildAt(i).__stopAllMovieClips();
		}
		this.unload();
		var gc1 = gc;
	}
	,__dispatchError: function(text) {
		var event = new openfl_events_IOErrorEvent("ioError");
		event.text = text;
		this.contentLoaderInfo.dispatchEvent(event);
	}
	,BitmapData_onError: function(error) {
		this.__dispatchError(Std.string(error));
	}
	,BitmapData_onLoad: function(bitmapData) {
		this.content = new openfl_display_Bitmap(bitmapData);
		this.contentLoaderInfo.content = this.content;
		this.addChild(this.content);
		this.contentLoaderInfo.dispatchEvent(new openfl_events_Event("complete"));
	}
	,BitmapData_onProgress: function(bytesLoaded,bytesTotal) {
		var event = new openfl_events_ProgressEvent("progress");
		event.bytesLoaded = bytesLoaded;
		event.bytesTotal = bytesTotal;
		this.contentLoaderInfo.dispatchEvent(event);
	}
	,loader_onComplete: function(event) {
		var _gthis = this;
		var loader = event.target;
		if(this.contentLoaderInfo.contentType != null && this.contentLoaderInfo.contentType.indexOf("/json") > -1) {
			var manifest = lime_utils_AssetManifest.parse(loader.data,haxe_io_Path.directory(this.__path));
			if(manifest == null) {
				this.__dispatchError("Cannot parse asset manifest");
				return;
			}
			var library = lime_utils_AssetLibrary.fromManifest(manifest);
			if(library == null) {
				this.__dispatchError("Cannot open library");
				return;
			}
			if(js_Boot.__instanceof(library,openfl_utils_AssetLibrary)) {
				library.load().onComplete(function(_) {
					_gthis.__library = library;
					openfl_utils_Assets.registerLibrary(_gthis.contentLoaderInfo.url,_gthis.__library);
					if(manifest.name != null && !openfl_utils_Assets.hasLibrary(manifest.name)) {
						openfl_utils_Assets.registerLibrary(manifest.name,_gthis.__library);
					}
					_gthis.content = _gthis.__library.getMovieClip("");
					_gthis.contentLoaderInfo.content = _gthis.content;
					_gthis.addChild(_gthis.content);
					_gthis.contentLoaderInfo.dispatchEvent(new openfl_events_Event("complete"));
				}).onError(function(e) {
					_gthis.__dispatchError(e);
				});
			}
		} else if(this.contentLoaderInfo.contentType != null && (this.contentLoaderInfo.contentType.indexOf("/javascript") > -1 || this.contentLoaderInfo.contentType.indexOf("/ecmascript") > -1)) {
			this.content = new openfl_display_Sprite();
			this.contentLoaderInfo.content = this.content;
			this.addChild(this.content);
			this.contentLoaderInfo.dispatchEvent(new openfl_events_Event("complete"));
		} else {
			openfl_display_BitmapData.loadFromBytes(loader.data).onComplete($bind(this,this.BitmapData_onLoad)).onError($bind(this,this.BitmapData_onError));
		}
	}
	,loader_onError: function(event) {
		event.target = this.contentLoaderInfo;
		this.contentLoaderInfo.dispatchEvent(event);
	}
	,loader_onProgress: function(event) {
		event.target = this.contentLoaderInfo;
		this.contentLoaderInfo.dispatchEvent(event);
	}
	,__class__: openfl_display_Loader
});
var openfl_display_LoaderInfo = function() {
	openfl_events_EventDispatcher.call(this);
	this.applicationDomain = openfl_system_ApplicationDomain.currentDomain;
	this.bytesLoaded = 0;
	this.bytesTotal = 0;
	this.childAllowsParent = true;
	this.parameters = { };
};
$hxClasses["openfl.display.LoaderInfo"] = openfl_display_LoaderInfo;
openfl_display_LoaderInfo.__name__ = ["openfl","display","LoaderInfo"];
openfl_display_LoaderInfo.create = function(loader) {
	var loaderInfo = new openfl_display_LoaderInfo();
	loaderInfo.uncaughtErrorEvents = new openfl_events_UncaughtErrorEvents();
	if(loader != null) {
		loaderInfo.loader = loader;
	} else {
		loaderInfo.url = openfl_display_LoaderInfo.__rootURL;
	}
	return loaderInfo;
};
openfl_display_LoaderInfo.__super__ = openfl_events_EventDispatcher;
openfl_display_LoaderInfo.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	applicationDomain: null
	,bytes: null
	,bytesLoaded: null
	,bytesTotal: null
	,childAllowsParent: null
	,content: null
	,contentType: null
	,frameRate: null
	,height: null
	,loader: null
	,loaderURL: null
	,parameters: null
	,parentAllowsChild: null
	,sameDomain: null
	,sharedEvents: null
	,uncaughtErrorEvents: null
	,url: null
	,width: null
	,__completed: null
	,__complete: function() {
		if(!this.__completed) {
			if(this.bytesLoaded < this.bytesTotal) {
				this.bytesLoaded = this.bytesTotal;
			}
			this.__update(this.bytesLoaded,this.bytesTotal);
			this.__completed = true;
			this.dispatchEvent(new openfl_events_Event("complete"));
		}
	}
	,__update: function(bytesLoaded,bytesTotal) {
		this.bytesLoaded = bytesLoaded;
		this.bytesTotal = bytesTotal;
		this.dispatchEvent(new openfl_events_ProgressEvent("progress",false,false,bytesLoaded,bytesTotal));
	}
	,__class__: openfl_display_LoaderInfo
});
var openfl_display_Sprite = function() {
	openfl_display_DisplayObjectContainer.call(this);
	this.buttonMode = false;
	this.useHandCursor = true;
};
$hxClasses["openfl.display.Sprite"] = openfl_display_Sprite;
openfl_display_Sprite.__name__ = ["openfl","display","Sprite"];
openfl_display_Sprite.__super__ = openfl_display_DisplayObjectContainer;
openfl_display_Sprite.prototype = $extend(openfl_display_DisplayObjectContainer.prototype,{
	buttonMode: null
	,dropTarget: null
	,hitArea: null
	,useHandCursor: null
	,startDrag: function(lockCenter,bounds) {
		if(lockCenter == null) {
			lockCenter = false;
		}
		if(this.stage != null) {
			this.stage.__startDrag(this,lockCenter,bounds);
		}
	}
	,stopDrag: function() {
		if(this.stage != null) {
			this.stage.__stopDrag(this);
		}
	}
	,__getCursor: function() {
		if(this.buttonMode && this.useHandCursor) {
			return lime_ui_MouseCursor.POINTER;
		} else {
			return null;
		}
	}
	,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		if(interactiveOnly && !this.mouseEnabled && !this.mouseChildren) {
			return false;
		}
		if(!hitObject.get_visible() || this.__isMask) {
			return this.__hitTestHitArea(x,y,shapeFlag,stack,interactiveOnly,hitObject);
		}
		if(this.get_mask() != null && !this.get_mask().__hitTestMask(x,y)) {
			return this.__hitTestHitArea(x,y,shapeFlag,stack,interactiveOnly,hitObject);
		}
		if(this.__scrollRect != null) {
			var point = openfl_geom_Point.__pool.get();
			point.setTo(x,y);
			var _this = this.__getRenderTransform();
			var norm = _this.a * _this.d - _this.b * _this.c;
			if(norm == 0) {
				point.x = -_this.tx;
				point.y = -_this.ty;
			} else {
				var px = 1.0 / norm * (_this.c * (_this.ty - point.y) + _this.d * (point.x - _this.tx));
				point.y = 1.0 / norm * (_this.a * (point.y - _this.ty) + _this.b * (_this.tx - point.x));
				point.x = px;
			}
			if(!this.__scrollRect.containsPoint(point)) {
				openfl_geom_Point.__pool.release(point);
				return this.__hitTestHitArea(x,y,shapeFlag,stack,true,hitObject);
			}
			openfl_geom_Point.__pool.release(point);
		}
		if(openfl_display_DisplayObjectContainer.prototype.__hitTest.call(this,x,y,shapeFlag,stack,interactiveOnly,hitObject)) {
			return interactiveOnly;
		} else if(this.hitArea == null && this.__graphics != null && this.__graphics.__hitTest(x,y,shapeFlag,this.__getRenderTransform())) {
			if(stack != null && (!interactiveOnly || this.mouseEnabled)) {
				stack.push(hitObject);
			}
			return true;
		}
		return this.__hitTestHitArea(x,y,shapeFlag,stack,interactiveOnly,hitObject);
	}
	,__hitTestHitArea: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		if(this.hitArea != null) {
			if(!this.hitArea.mouseEnabled) {
				this.hitArea.mouseEnabled = true;
				var hitTest = this.hitArea.__hitTest(x,y,shapeFlag,null,true,hitObject);
				this.hitArea.mouseEnabled = false;
				if(hitTest) {
					stack[stack.length] = hitObject;
				}
				return hitTest;
			}
		}
		return false;
	}
	,__hitTestMask: function(x,y) {
		if(openfl_display_DisplayObjectContainer.prototype.__hitTestMask.call(this,x,y)) {
			return true;
		} else if(this.__graphics != null && this.__graphics.__hitTest(x,y,true,this.__getRenderTransform())) {
			return true;
		}
		return false;
	}
	,get_graphics: function() {
		if(this.__graphics == null) {
			this.__graphics = new openfl_display_Graphics(this);
		}
		return this.__graphics;
	}
	,get_tabEnabled: function() {
		if(this.__tabEnabled == null) {
			return this.buttonMode;
		} else {
			return this.__tabEnabled;
		}
	}
	,__class__: openfl_display_Sprite
	,__properties__: $extend(openfl_display_DisplayObjectContainer.prototype.__properties__,{get_graphics:"get_graphics"})
});
var openfl_display_MovieClip = function() {
	openfl_display_Sprite.call(this);
	this.__currentFrame = 1;
	this.__currentLabels = [];
	this.__totalFrames = 0;
	this.enabled = true;
	if(openfl_display_MovieClip.__initSymbol != null) {
		this.__swf = openfl_display_MovieClip.__initSWF;
		this.__symbol = openfl_display_MovieClip.__initSymbol;
		openfl_display_MovieClip.__initSWF = null;
		openfl_display_MovieClip.__initSymbol = null;
		this.__fromSymbol(this.__swf,this.__symbol);
	}
};
$hxClasses["openfl.display.MovieClip"] = openfl_display_MovieClip;
openfl_display_MovieClip.__name__ = ["openfl","display","MovieClip"];
openfl_display_MovieClip.__super__ = openfl_display_Sprite;
openfl_display_MovieClip.prototype = $extend(openfl_display_Sprite.prototype,{
	enabled: null
	,__activeInstances: null
	,__activeInstancesByFrameObjectID: null
	,__currentFrame: null
	,__currentFrameLabel: null
	,__currentLabel: null
	,__currentLabels: null
	,__frameScripts: null
	,__frameTime: null
	,__lastFrameScriptEval: null
	,__lastFrameUpdate: null
	,__playing: null
	,__swf: null
	,__symbol: null
	,__timeElapsed: null
	,__totalFrames: null
	,addFrameScript: function(index,method) {
		if(index < 0) {
			return;
		}
		var frame = index + 1;
		if(method != null) {
			if(this.__frameScripts == null) {
				this.__frameScripts = new haxe_ds_IntMap();
			}
			this.__frameScripts.h[frame] = method;
		} else if(this.__frameScripts != null) {
			this.__frameScripts.remove(frame);
		}
	}
	,gotoAndPlay: function(frame,scene) {
		this.play();
		this.__goto(this.__resolveFrameReference(frame));
	}
	,gotoAndStop: function(frame,scene) {
		this.stop();
		this.__goto(this.__resolveFrameReference(frame));
	}
	,nextFrame: function() {
		this.stop();
		this.__goto(this.__currentFrame + 1);
	}
	,play: function() {
		if(this.__symbol == null || this.__playing || this.__totalFrames < 2) {
			return;
		}
		this.__playing = true;
		this.__frameTime = 1000 / this.__swf.frameRate | 0;
		this.__timeElapsed = 0;
	}
	,prevFrame: function() {
		this.stop();
		this.__goto(this.__currentFrame - 1);
	}
	,stop: function() {
		this.__playing = false;
	}
	,__enterFrame: function(deltaTime) {
		if(this.__symbol != null && this.__playing) {
			var nextFrame = this.__getNextFrame(deltaTime);
			if(this.__lastFrameScriptEval == nextFrame) {
				return;
			}
			if(this.__frameScripts != null) {
				if(nextFrame < this.__currentFrame) {
					if(!this.__evaluateFrameScripts(this.__totalFrames)) {
						return;
					}
					this.__currentFrame = 1;
				}
				if(!this.__evaluateFrameScripts(nextFrame)) {
					return;
				}
			} else {
				this.__currentFrame = nextFrame;
			}
		}
		if(this.__symbol != null && this.__currentFrame != this.__lastFrameUpdate) {
			this.__updateFrameLabel();
			var currentInstancesByFrameObjectID = new haxe_ds_IntMap();
			var frame;
			var frameData;
			var instance;
			var _g1 = 0;
			var _g = this.__currentFrame;
			while(_g1 < _g) {
				var i = _g1++;
				frame = i + 1;
				frameData = this.__symbol.frames[i];
				if(frameData.objects == null) {
					continue;
				}
				var _g2 = 0;
				var _g3 = frameData.objects;
				while(_g2 < _g3.length) {
					var frameObject = _g3[_g2];
					++_g2;
					var _g4 = frameObject.type;
					switch(_g4[1]) {
					case 0:
						instance = this.__activeInstancesByFrameObjectID.get(frameObject.id);
						if(instance != null) {
							currentInstancesByFrameObjectID.h[frameObject.id] = instance;
							this.__updateDisplayObject(instance.displayObject,frameObject);
						}
						break;
					case 1:
						instance = currentInstancesByFrameObjectID.h[frameObject.id];
						if(instance != null && instance.displayObject != null) {
							this.__updateDisplayObject(instance.displayObject,frameObject);
						}
						break;
					case 2:
						currentInstancesByFrameObjectID.remove(frameObject.id);
						break;
					}
				}
			}
			var currentInstances = [];
			var currentMasks = [];
			var instance1 = currentInstancesByFrameObjectID.iterator();
			while(instance1.hasNext()) {
				var instance2 = instance1.next();
				if(currentInstances.indexOf(instance2) == -1) {
					currentInstances.push(instance2);
					if(instance2.clipDepth > 0) {
						currentMasks.push(instance2);
					}
				}
			}
			currentInstances.sort($bind(this,this.__sortDepths));
			var existingChild;
			var targetDepth;
			var targetChild;
			var child;
			var maskApplied;
			var _g11 = 0;
			var _g5 = currentInstances.length;
			while(_g11 < _g5) {
				var i1 = _g11++;
				existingChild = this.__children[i1];
				instance = currentInstances[i1];
				targetDepth = instance.depth;
				targetChild = instance.displayObject;
				if(existingChild != targetChild) {
					child = targetChild;
					this.addChildAt(targetChild,i1);
				} else {
					child = this.__children[i1];
				}
				maskApplied = false;
				var _g21 = 0;
				while(_g21 < currentMasks.length) {
					var mask = currentMasks[_g21];
					++_g21;
					if(targetDepth > mask.depth && targetDepth <= mask.clipDepth) {
						child.set_mask(mask.displayObject);
						maskApplied = true;
						break;
					}
				}
				if(currentMasks.length > 0 && !maskApplied && child.get_mask() != null) {
					child.set_mask(null);
				}
			}
			var child1;
			var i2 = currentInstances.length;
			var length = this.__children.length;
			while(i2 < length) {
				child1 = this.__children[i2];
				var _g6 = 0;
				var _g12 = this.__activeInstances;
				while(_g6 < _g12.length) {
					var instance3 = _g12[_g6];
					++_g6;
					if(instance3.displayObject == child1) {
						this.removeChild(child1);
						--i2;
						--length;
					}
				}
				++i2;
			}
			this.__lastFrameUpdate = this.__currentFrame;
		}
		openfl_display_Sprite.prototype.__enterFrame.call(this,deltaTime);
	}
	,__evaluateFrameScripts: function(advanceToFrame) {
		var _g1 = this.__currentFrame;
		var _g = advanceToFrame + 1;
		while(_g1 < _g) {
			var frame = _g1++;
			if(frame == this.__lastFrameScriptEval) {
				continue;
			}
			this.__lastFrameScriptEval = frame;
			this.__currentFrame = frame;
			if(this.__frameScripts.h.hasOwnProperty(frame)) {
				var script = this.__frameScripts.h[frame];
				script();
				if(this.__currentFrame != frame) {
					return false;
				}
			}
			if(!this.__playing) {
				break;
			}
		}
		return true;
	}
	,__fromSymbol: function(swf,symbol) {
		var _gthis = this;
		if(this.__activeInstances != null) {
			return;
		}
		this.__swf = swf;
		this.__symbol = symbol;
		this.__activeInstances = [];
		this.__activeInstancesByFrameObjectID = new haxe_ds_IntMap();
		this.__currentFrame = 1;
		this.__lastFrameScriptEval = -1;
		this.__lastFrameUpdate = -1;
		this.__totalFrames = this.__symbol.frames.length;
		var frame;
		var frameData;
		var _g1 = 0;
		var _g = this.__symbol.frames.length;
		while(_g1 < _g) {
			var i = _g1++;
			frame = i + 1;
			frameData = this.__symbol.frames[i];
			if(frameData.label != null) {
				this.__currentLabels.push(new openfl_display_FrameLabel(frameData.label,i + 1));
			}
			if(frameData.script != null) {
				if(this.__frameScripts == null) {
					this.__frameScripts = new haxe_ds_IntMap();
				}
				this.__frameScripts.h[frame] = frameData.script;
			} else if(frameData.scriptSource != null) {
				if(this.__frameScripts == null) {
					this.__frameScripts = new haxe_ds_IntMap();
				}
				try {
					var script = [eval("(function(){" + frameData.scriptSource + "})")];
					var wrapper = (function(script1) {
						return function() {
							try {
								script1[0].call(_gthis);
							} catch( e ) {
								haxe_CallStack.lastException = e;
								if (e instanceof js__$Boot_HaxeError) e = e.val;
								haxe_Log.trace("Error evaluating frame script\n " + Std.string(e) + "\n" + haxe_CallStack.exceptionStack().map((function() {
									return function(a) {
										return a[2];
									};
								})()).join("\n") + "\n" + Std.string(e.stack) + "\n" + script1[0].toString(),{ fileName : "MovieClip.hx", lineNumber : 503, className : "openfl.display.MovieClip", methodName : "__fromSymbol"});
							}
						};
					})(script);
					this.__frameScripts.h[frame] = wrapper;
				} catch( e1 ) {
					haxe_CallStack.lastException = e1;
					if(this.__symbol.className != null) {
						lime_utils_Log.warn("Unable to evaluate frame script source for symbol \"" + this.__symbol.className + "\" frame " + frame + "\n" + frameData.scriptSource,{ fileName : "MovieClip.hx", lineNumber : 519, className : "openfl.display.MovieClip", methodName : "__fromSymbol"});
					} else {
						lime_utils_Log.warn("Unable to evaluate frame script source:\n" + frameData.scriptSource,{ fileName : "MovieClip.hx", lineNumber : 523, className : "openfl.display.MovieClip", methodName : "__fromSymbol"});
					}
				}
			}
		}
		var frame1;
		var frameData1;
		var instance;
		var duplicate;
		var symbol1;
		var displayObject;
		var _g11 = 0;
		var _g2 = this.__totalFrames;
		while(_g11 < _g2) {
			var i1 = _g11++;
			frame1 = i1 + 1;
			frameData1 = this.__symbol.frames[i1];
			if(frameData1.objects == null) {
				continue;
			}
			var _g21 = 0;
			var _g3 = frameData1.objects;
			while(_g21 < _g3.length) {
				var frameObject = _g3[_g21];
				++_g21;
				if(frameObject.type == openfl__$internal_timeline_FrameObjectType.CREATE) {
					if(this.__activeInstancesByFrameObjectID.h.hasOwnProperty(frameObject.id)) {
						continue;
					} else {
						instance = null;
						duplicate = false;
						var _g4 = 0;
						var _g5 = this.__activeInstances;
						while(_g4 < _g5.length) {
							var activeInstance = _g5[_g4];
							++_g4;
							if(activeInstance.displayObject != null && activeInstance.characterID == frameObject.symbol && activeInstance.depth == frameObject.depth) {
								instance = activeInstance;
								duplicate = true;
								break;
							}
						}
					}
					if(instance == null) {
						symbol1 = this.__swf.symbols.h[frameObject.symbol];
						if(symbol1 != null) {
							displayObject = symbol1.__createObject(this.__swf);
							if(displayObject != null) {
								displayObject.parent = this;
								displayObject.stage = this.stage;
								instance = new openfl_display__$MovieClip_FrameSymbolInstance(frame1,frameObject.id,frameObject.symbol,frameObject.depth,displayObject,frameObject.clipDepth);
							}
						}
					}
					if(instance != null) {
						this.__activeInstancesByFrameObjectID.h[frameObject.id] = instance;
						if(!duplicate) {
							this.__activeInstances.push(instance);
							this.__updateDisplayObject(instance.displayObject,frameObject);
						}
					}
				}
			}
		}
		if(this.__totalFrames > 1) {
			this.play();
		}
		this.__enterFrame(0);
		var _g6 = 0;
		var _g12 = Type.getInstanceFields(js_Boot.getClass(this));
		while(_g6 < _g12.length) {
			var field = _g12[_g6];
			++_g6;
			var _g22 = 0;
			var _g31 = this.__children;
			while(_g22 < _g31.length) {
				var child = _g31[_g22];
				++_g22;
				if(child.get_name() == field) {
					this[field] = child;
				}
			}
		}
	}
	,__getNextFrame: function(deltaTime) {
		this.__timeElapsed += deltaTime;
		var nextFrame = this.__currentFrame + Math.floor(this.__timeElapsed / this.__frameTime);
		if(nextFrame < 1) {
			nextFrame = 1;
		}
		if(nextFrame > this.__totalFrames) {
			nextFrame = Math.floor((nextFrame - 1) % this.__totalFrames) + 1;
		}
		this.__timeElapsed %= this.__frameTime;
		return nextFrame;
	}
	,__goto: function(frame) {
		if(this.__symbol == null) {
			return;
		}
		if(frame < 1) {
			frame = 1;
		} else if(frame > this.__totalFrames) {
			frame = this.__totalFrames;
		}
		this.__currentFrame = frame;
		this.__enterFrame(0);
	}
	,__resolveFrameReference: function(frame) {
		if(typeof(frame) == "number" && ((frame | 0) === frame)) {
			return frame;
		} else if(typeof(frame) == "string") {
			var label = frame;
			var _g = 0;
			var _g1 = this.__currentLabels;
			while(_g < _g1.length) {
				var frameLabel = _g1[_g];
				++_g;
				if(frameLabel.get_name() == label) {
					return frameLabel.get_frame();
				}
			}
			throw new js__$Boot_HaxeError(new openfl_errors_ArgumentError("Error #2109: Frame label " + label + " not found in scene."));
		} else {
			throw new js__$Boot_HaxeError("Invalid type for frame " + Type.getClassName(frame));
		}
	}
	,__sortDepths: function(a,b) {
		return a.depth - b.depth;
	}
	,__stopAllMovieClips: function() {
		openfl_display_Sprite.prototype.__stopAllMovieClips.call(this);
		this.stop();
	}
	,__updateDisplayObject: function(displayObject,frameObject) {
		if(displayObject == null) {
			return;
		}
		if(frameObject.name != null) {
			displayObject.set_name(frameObject.name);
		}
		if(frameObject.matrix != null) {
			displayObject.get_transform().set_matrix(frameObject.matrix);
		}
		if(frameObject.colorTransform != null) {
			displayObject.get_transform().set_colorTransform(frameObject.colorTransform);
		}
		if(frameObject.filters != null) {
			var filters = [];
			var _g = 0;
			var _g1 = frameObject.filters;
			while(_g < _g1.length) {
				var filter = _g1[_g];
				++_g;
				switch(filter[1]) {
				case 0:
					var quality = filter[4];
					var blurY = filter[3];
					var blurX = filter[2];
					filters.push(new openfl_filters_BlurFilter(blurX,blurY,quality));
					break;
				case 1:
					var matrix = filter[2];
					filters.push(new openfl_filters_ColorMatrixFilter(matrix));
					break;
				case 2:
					var hideObject = filter[12];
					var knockout = filter[11];
					var inner = filter[10];
					var quality1 = filter[9];
					var strength = filter[8];
					var blurY1 = filter[7];
					var blurX1 = filter[6];
					var alpha = filter[5];
					var color = filter[4];
					var angle = filter[3];
					var distance = filter[2];
					filters.push(new openfl_filters_DropShadowFilter(distance,angle,color,alpha,blurX1,blurY1,strength,quality1,inner,knockout,hideObject));
					break;
				case 3:
					var knockout1 = filter[9];
					var inner1 = filter[8];
					var quality2 = filter[7];
					var strength1 = filter[6];
					var blurY2 = filter[5];
					var blurX2 = filter[4];
					var alpha1 = filter[3];
					var color1 = filter[2];
					filters.push(new openfl_filters_GlowFilter(color1,alpha1,blurX2,blurY2,strength1,quality2,inner1,knockout1));
					break;
				}
			}
			displayObject.set_filters(filters);
		} else {
			displayObject.set_filters(null);
		}
		if(frameObject.visible != null) {
			displayObject.set_visible(frameObject.visible);
		}
		if(frameObject.blendMode != null) {
			displayObject.set_blendMode(frameObject.blendMode);
		}
		var tmp = frameObject.cacheAsBitmap != null;
	}
	,__updateFrameLabel: function() {
		this.__currentFrameLabel = this.__symbol.frames[this.__currentFrame - 1].label;
		if(this.__currentFrameLabel != null) {
			this.__currentLabel = this.__currentFrameLabel;
		} else {
			this.__currentLabel = null;
			var _g = 0;
			var _g1 = this.__currentLabels;
			while(_g < _g1.length) {
				var label = _g1[_g];
				++_g;
				if(label.get_frame() < this.__currentFrame) {
					this.__currentLabel = label.get_name();
				} else {
					break;
				}
			}
		}
	}
	,get_currentFrame: function() {
		return this.__currentFrame;
	}
	,get_currentFrameLabel: function() {
		return this.__currentFrameLabel;
	}
	,get_currentLabel: function() {
		return this.__currentLabel;
	}
	,get_currentLabels: function() {
		return this.__currentLabels;
	}
	,get_framesLoaded: function() {
		return this.__totalFrames;
	}
	,get_isPlaying: function() {
		return this.__playing;
	}
	,get_totalFrames: function() {
		return this.__totalFrames;
	}
	,__class__: openfl_display_MovieClip
	,__properties__: $extend(openfl_display_Sprite.prototype.__properties__,{get_totalFrames:"get_totalFrames",get_isPlaying:"get_isPlaying",get_framesLoaded:"get_framesLoaded",get_currentLabels:"get_currentLabels",get_currentLabel:"get_currentLabel",get_currentFrameLabel:"get_currentFrameLabel",get_currentFrame:"get_currentFrame"})
});
var openfl_display__$MovieClip_FrameSymbolInstance = function(initFrame,initFrameObjectID,characterID,depth,displayObject,clipDepth) {
	this.initFrame = initFrame;
	this.initFrameObjectID = initFrameObjectID;
	this.characterID = characterID;
	this.depth = depth;
	this.displayObject = displayObject;
	this.clipDepth = clipDepth;
};
$hxClasses["openfl.display._MovieClip.FrameSymbolInstance"] = openfl_display__$MovieClip_FrameSymbolInstance;
openfl_display__$MovieClip_FrameSymbolInstance.__name__ = ["openfl","display","_MovieClip","FrameSymbolInstance"];
openfl_display__$MovieClip_FrameSymbolInstance.prototype = {
	characterID: null
	,clipDepth: null
	,depth: null
	,displayObject: null
	,initFrame: null
	,initFrameObjectID: null
	,__class__: openfl_display__$MovieClip_FrameSymbolInstance
};
var openfl_display_PNGEncoderOptions = function(fastCompression) {
	if(fastCompression == null) {
		fastCompression = false;
	}
	this.fastCompression = fastCompression;
};
$hxClasses["openfl.display.PNGEncoderOptions"] = openfl_display_PNGEncoderOptions;
openfl_display_PNGEncoderOptions.__name__ = ["openfl","display","PNGEncoderOptions"];
openfl_display_PNGEncoderOptions.prototype = {
	fastCompression: null
	,__class__: openfl_display_PNGEncoderOptions
};
var openfl_display__$PixelSnapping_PixelSnapping_$Impl_$ = {};
$hxClasses["openfl.display._PixelSnapping.PixelSnapping_Impl_"] = openfl_display__$PixelSnapping_PixelSnapping_$Impl_$;
openfl_display__$PixelSnapping_PixelSnapping_$Impl_$.__name__ = ["openfl","display","_PixelSnapping","PixelSnapping_Impl_"];
openfl_display__$PixelSnapping_PixelSnapping_$Impl_$.fromString = function(value) {
	switch(value) {
	case "always":
		return 0;
	case "auto":
		return 1;
	case "never":
		return 2;
	default:
		return null;
	}
};
openfl_display__$PixelSnapping_PixelSnapping_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "always";
	case 1:
		return "auto";
	case 2:
		return "never";
	default:
		return null;
	}
};
var openfl_display_ShaderData = function(byteArray) {
};
$hxClasses["openfl.display.ShaderData"] = openfl_display_ShaderData;
openfl_display_ShaderData.__name__ = ["openfl","display","ShaderData"];
openfl_display_ShaderData.prototype = {
	aAlpha: null
	,aPosition: null
	,aTexCoord: null
	,uImage0: null
	,uMatrix: null
	,__class__: openfl_display_ShaderData
};
var openfl_display_ShaderInput = function() {
	this.channels = 0;
	this.height = 0;
	this.index = 0;
	this.width = 0;
};
$hxClasses["openfl.display.ShaderInput"] = openfl_display_ShaderInput;
openfl_display_ShaderInput.__name__ = ["openfl","display","ShaderInput"];
openfl_display_ShaderInput.prototype = {
	channels: null
	,height: null
	,index: null
	,input: null
	,name: null
	,smoothing: null
	,width: null
	,__class__: openfl_display_ShaderInput
};
var openfl_display_ShaderParameter = function() {
	this.index = 0;
};
$hxClasses["openfl.display.ShaderParameter"] = openfl_display_ShaderParameter;
openfl_display_ShaderParameter.__name__ = ["openfl","display","ShaderParameter"];
openfl_display_ShaderParameter.prototype = {
	index: null
	,name: null
	,type: null
	,value: null
	,__class__: openfl_display_ShaderParameter
};
var openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$ = {};
$hxClasses["openfl.display._ShaderParameterType.ShaderParameterType_Impl_"] = openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.__name__ = ["openfl","display","_ShaderParameterType","ShaderParameterType_Impl_"];
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "bool":
		return 0;
	case "bool2":
		return 1;
	case "bool3":
		return 1;
	case "bool4":
		return 1;
	case "float":
		return 4;
	case "float2":
		return 5;
	case "float3":
		return 6;
	case "float4":
		return 7;
	case "int":
		return 8;
	case "int2":
		return 9;
	case "int3":
		return 10;
	case "int4":
		return 11;
	case "matrix2x2":
		return 12;
	case "matrix2x3":
		return 13;
	case "matrix2x4":
		return 14;
	case "matrix3x2":
		return 15;
	case "matrix3x3":
		return 16;
	case "matrix3x4":
		return 17;
	case "matrix4x2":
		return 18;
	case "matrix4x3":
		return 19;
	case "matrix4x4":
		return 20;
	default:
		return null;
	}
};
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "bool";
	case 1:
		return "bool2";
	case 2:
		return "bool3";
	case 3:
		return "bool4";
	case 4:
		return "float";
	case 5:
		return "float2";
	case 6:
		return "float3";
	case 7:
		return "float4";
	case 8:
		return "int";
	case 9:
		return "int2";
	case 10:
		return "int3";
	case 11:
		return "int4";
	case 12:
		return "matrix2x2";
	case 13:
		return "matrix2x3";
	case 14:
		return "matrix2x4";
	case 15:
		return "matrix3x2";
	case 16:
		return "matrix3x3";
	case 17:
		return "matrix3x4";
	case 18:
		return "matrix4x2";
	case 19:
		return "matrix4x3";
	case 20:
		return "matrix4x4";
	default:
		return null;
	}
};
var openfl_display__$ShaderPrecision_ShaderPrecision_$Impl_$ = {};
$hxClasses["openfl.display._ShaderPrecision.ShaderPrecision_Impl_"] = openfl_display__$ShaderPrecision_ShaderPrecision_$Impl_$;
openfl_display__$ShaderPrecision_ShaderPrecision_$Impl_$.__name__ = ["openfl","display","_ShaderPrecision","ShaderPrecision_Impl_"];
openfl_display__$ShaderPrecision_ShaderPrecision_$Impl_$.fromString = function(value) {
	switch(value) {
	case "fast":
		return 0;
	case "full":
		return 1;
	default:
		return null;
	}
};
openfl_display__$ShaderPrecision_ShaderPrecision_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "fast";
	case 1:
		return "full";
	default:
		return null;
	}
};
var openfl_display_Shape = function() {
	openfl_display_DisplayObject.call(this);
};
$hxClasses["openfl.display.Shape"] = openfl_display_Shape;
openfl_display_Shape.__name__ = ["openfl","display","Shape"];
openfl_display_Shape.__interfaces__ = [openfl_display_IShaderDrawable];
openfl_display_Shape.__super__ = openfl_display_DisplayObject;
openfl_display_Shape.prototype = $extend(openfl_display_DisplayObject.prototype,{
	shader: null
	,get_graphics: function() {
		if(this.__graphics == null) {
			this.__graphics = new openfl_display_Graphics(this);
		}
		return this.__graphics;
	}
	,__class__: openfl_display_Shape
	,__properties__: $extend(openfl_display_DisplayObject.prototype.__properties__,{get_graphics:"get_graphics"})
});
var openfl_display_SimpleButton = function(upState,overState,downState,hitTestState) {
	openfl_display_InteractiveObject.call(this);
	this.enabled = true;
	this.trackAsMenu = false;
	this.useHandCursor = true;
	this.__upState = upState != null ? upState : new openfl_display_DisplayObject();
	this.__overState = overState;
	this.__downState = downState;
	this.__hitTestState = hitTestState != null ? hitTestState : new openfl_display_DisplayObject();
	this.addEventListener("mouseDown",$bind(this,this.__this_onMouseDown));
	this.addEventListener("mouseOut",$bind(this,this.__this_onMouseOut));
	this.addEventListener("mouseOver",$bind(this,this.__this_onMouseOver));
	this.addEventListener("mouseUp",$bind(this,this.__this_onMouseUp));
	this.__tabEnabled = true;
	this.set___currentState(this.__upState);
	if(openfl_display_SimpleButton.__initSymbol != null) {
		var swf = openfl_display_SimpleButton.__initSWF;
		this.__symbol = openfl_display_SimpleButton.__initSymbol;
		openfl_display_SimpleButton.__initSWF = null;
		openfl_display_SimpleButton.__initSymbol = null;
		this.__fromSymbol(swf,this.__symbol);
	}
};
$hxClasses["openfl.display.SimpleButton"] = openfl_display_SimpleButton;
openfl_display_SimpleButton.__name__ = ["openfl","display","SimpleButton"];
openfl_display_SimpleButton.__super__ = openfl_display_InteractiveObject;
openfl_display_SimpleButton.prototype = $extend(openfl_display_InteractiveObject.prototype,{
	enabled: null
	,trackAsMenu: null
	,useHandCursor: null
	,__currentState: null
	,__downState: null
	,__hitTestState: null
	,__ignoreEvent: null
	,__overState: null
	,__previousStates: null
	,__soundTransform: null
	,__symbol: null
	,__upState: null
	,__fromSymbol: function(swf,symbol) {
		this.__symbol = symbol;
		if(symbol.downState != null) {
			this.set_downState(symbol.downState.__createObject(swf));
		}
		if(symbol.hitState != null) {
			this.set_hitTestState(symbol.hitState.__createObject(swf));
		}
		if(symbol.overState != null) {
			this.set_overState(symbol.overState.__createObject(swf));
		}
		if(symbol.upState != null) {
			this.set_upState(symbol.upState.__createObject(swf));
		}
	}
	,__getBounds: function(rect,matrix) {
		openfl_display_InteractiveObject.prototype.__getBounds.call(this,rect,matrix);
		if(matrix != null) {
			this.__updateTransforms(matrix);
			this.__updateChildren(true);
		}
		this.__currentState.__getBounds(rect,this.__currentState.__worldTransform);
		if(matrix != null) {
			this.__updateTransforms();
			this.__updateChildren(true);
		}
	}
	,__getRenderBounds: function(rect,matrix) {
		if(this.__scrollRect != null) {
			openfl_display_InteractiveObject.prototype.__getRenderBounds.call(this,rect,matrix);
			return;
		} else {
			openfl_display_InteractiveObject.prototype.__getBounds.call(this,rect,matrix);
		}
		if(matrix != null) {
			this.__updateTransforms(matrix);
			this.__updateChildren(true);
		}
		this.__currentState.__getRenderBounds(rect,this.__currentState.__worldTransform);
		if(matrix != null) {
			this.__updateTransforms();
			this.__updateChildren(true);
		}
	}
	,__getCursor: function() {
		if(this.useHandCursor && !this.__ignoreEvent) {
			return lime_ui_MouseCursor.POINTER;
		} else {
			return null;
		}
	}
	,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		var hitTest = false;
		if(this.get_hitTestState() != null) {
			if(this.get_hitTestState().__hitTest(x,y,shapeFlag,stack,interactiveOnly,hitObject)) {
				if(stack != null) {
					if(stack.length == 0) {
						stack[0] = hitObject;
					} else {
						stack[stack.length - 1] = hitObject;
					}
				}
				hitTest = true;
			}
		} else if(this.__currentState != null) {
			if(!hitObject.get_visible() || this.__isMask || interactiveOnly && !this.mouseEnabled) {
				return false;
			}
			if(this.get_mask() != null && !this.get_mask().__hitTestMask(x,y)) {
				return false;
			}
			if(this.__currentState.__hitTest(x,y,shapeFlag,stack,interactiveOnly,hitObject)) {
				hitTest = interactiveOnly;
			}
		}
		if(stack != null) {
			while(stack.length > 1 && stack[stack.length - 1] == stack[stack.length - 2]) stack.pop();
		}
		return hitTest;
	}
	,__hitTestMask: function(x,y) {
		var hitTest = false;
		if(this.__currentState.__hitTestMask(x,y)) {
			hitTest = true;
		}
		return hitTest;
	}
	,__renderCairo: function(renderSession) {
		if(!this.__renderable || this.__worldAlpha <= 0 || this.__currentState == null) {
			return;
		}
		renderSession.maskManager.pushObject(this);
		this.__currentState.__renderCairo(renderSession);
		renderSession.maskManager.popObject(this);
	}
	,__renderCairoMask: function(renderSession) {
		this.__currentState.__renderCairoMask(renderSession);
	}
	,__renderCanvas: function(renderSession) {
		if(!this.__renderable || this.__worldAlpha <= 0 || this.__currentState == null) {
			return;
		}
		renderSession.maskManager.pushObject(this);
		this.__currentState.__renderCanvas(renderSession);
		renderSession.maskManager.popObject(this);
	}
	,__renderCanvasMask: function(renderSession) {
		var bounds = openfl_geom_Rectangle.__pool.get();
		this.__getLocalBounds(bounds);
		renderSession.context.rect(0,0,bounds.width,bounds.height);
		openfl_geom_Rectangle.__pool.release(bounds);
		this.__currentState.__renderCanvasMask(renderSession);
	}
	,__renderDOM: function(renderSession) {
		renderSession.maskManager.pushObject(this);
		var _g = 0;
		var _g1 = this.__previousStates;
		while(_g < _g1.data.get_length()) {
			var previousState = _g1.data.get(_g);
			++_g;
			previousState.__renderDOM(renderSession);
		}
		this.__previousStates.data.set_length(0);
		if(this.__currentState != null) {
			if(this.__currentState.stage != this.stage) {
				this.__currentState.__setStageReference(this.stage);
			}
			this.__currentState.__renderDOM(renderSession);
		}
		renderSession.maskManager.popObject(this);
	}
	,__renderGL: function(renderSession) {
		if(!this.__renderable || this.__worldAlpha <= 0 || this.__currentState == null) {
			return;
		}
		renderSession.maskManager.pushObject(this);
		this.__currentState.__renderGL(renderSession);
		renderSession.maskManager.popObject(this);
	}
	,__renderGLMask: function(renderSession) {
		if(this.__currentState == null) {
			return;
		}
		this.__currentState.__renderGLMask(renderSession);
	}
	,__setStageReference: function(stage) {
		openfl_display_InteractiveObject.prototype.__setStageReference.call(this,stage);
		if(this.__currentState != null) {
			this.__currentState.__setStageReference(stage);
		}
		if(this.get_hitTestState() != null && this.get_hitTestState() != this.__currentState) {
			this.get_hitTestState().__setStageReference(stage);
		}
	}
	,__setTransformDirty: function() {
		openfl_display_InteractiveObject.prototype.__setTransformDirty.call(this);
		if(this.__currentState != null) {
			this.__currentState.__setTransformDirty();
		}
		if(this.get_hitTestState() != null && this.get_hitTestState() != this.__currentState) {
			this.get_hitTestState().__setTransformDirty();
		}
	}
	,__update: function(transformOnly,updateChildren,maskGraphics) {
		openfl_display_InteractiveObject.prototype.__update.call(this,transformOnly,updateChildren,maskGraphics);
		if(updateChildren) {
			if(this.__currentState != null) {
				this.__currentState.__update(transformOnly,true,maskGraphics);
			}
			if(this.get_hitTestState() != null && this.get_hitTestState() != this.__currentState) {
				this.get_hitTestState().__update(transformOnly,true,maskGraphics);
			}
		}
	}
	,__updateChildren: function(transformOnly) {
		openfl_display_InteractiveObject.prototype.__updateChildren.call(this,transformOnly);
		if(this.__currentState != null) {
			this.__currentState.__updateChildren(transformOnly);
		}
		if(this.get_hitTestState() != null && this.get_hitTestState() != this.__currentState) {
			this.get_hitTestState().__updateChildren(transformOnly);
		}
	}
	,__updateTransforms: function(overrideTransform) {
		openfl_display_InteractiveObject.prototype.__updateTransforms.call(this,overrideTransform);
		if(this.__currentState != null) {
			this.__currentState.__updateTransforms();
		}
		if(this.get_hitTestState() != null && this.get_hitTestState() != this.__currentState) {
			this.get_hitTestState().__updateTransforms();
		}
	}
	,get_downState: function() {
		return this.__downState;
	}
	,set_downState: function(downState) {
		if(this.__downState != null && this.__currentState == this.__downState) {
			this.set___currentState(this.__downState);
		}
		return this.__downState = downState;
	}
	,get_hitTestState: function() {
		return this.__hitTestState;
	}
	,set_hitTestState: function(hitTestState) {
		if(this.__hitTestState != null && this.__hitTestState != hitTestState) {
			if(this.__hitTestState != this.get_downState() && this.__hitTestState != this.get_upState() && this.__hitTestState != this.get_overState()) {
				this.__hitTestState.__renderParent = null;
			}
		}
		if(hitTestState != null) {
			hitTestState.__renderParent = this;
			if(!hitTestState.__renderDirty) {
				hitTestState.__renderDirty = true;
				hitTestState.__setParentRenderDirty();
			}
		}
		return this.__hitTestState = hitTestState;
	}
	,get_overState: function() {
		return this.__overState;
	}
	,set_overState: function(overState) {
		if(this.__overState != null && this.__currentState == this.__overState) {
			this.set___currentState(overState);
		}
		return this.__overState = overState;
	}
	,get_soundTransform: function() {
		if(this.__soundTransform == null) {
			this.__soundTransform = new openfl_media_SoundTransform();
		}
		return new openfl_media_SoundTransform(this.__soundTransform.volume,this.__soundTransform.pan);
	}
	,set_soundTransform: function(value) {
		this.__soundTransform = new openfl_media_SoundTransform(value.volume,value.pan);
		return value;
	}
	,get_upState: function() {
		return this.__upState;
	}
	,set_upState: function(upState) {
		if(this.__upState != null && this.__currentState == this.__upState) {
			this.set___currentState(upState);
		}
		return this.__upState = upState;
	}
	,set___currentState: function(value) {
		if(this.__currentState != null && this.__currentState != this.get_hitTestState()) {
			this.__currentState.__renderParent = null;
		}
		if(value != null && value.parent != null) {
			value.parent.removeChild(value);
		}
		if(value != this.__currentState) {
			if(value != null) {
				value.__renderParent = this;
				if(!value.__renderDirty) {
					value.__renderDirty = true;
					value.__setParentRenderDirty();
				}
			}
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		this.__currentState = value;
		return value;
	}
	,__this_onMouseDown: function(event) {
		this.set___currentState(this.get_downState());
	}
	,__this_onMouseOut: function(event) {
		this.__ignoreEvent = false;
		if(this.get_upState() != this.__currentState) {
			this.set___currentState(this.get_upState());
		}
	}
	,__this_onMouseOver: function(event) {
		if(event.buttonDown) {
			this.__ignoreEvent = true;
		}
		if(this.get_overState() != this.__currentState && this.get_overState() != null && !this.__ignoreEvent) {
			this.set___currentState(this.get_overState());
		}
	}
	,__this_onMouseUp: function(event) {
		this.__ignoreEvent = false;
		if(this.get_overState() != null) {
			this.set___currentState(this.get_overState());
		} else {
			this.set___currentState(this.get_upState());
		}
	}
	,__class__: openfl_display_SimpleButton
	,__properties__: $extend(openfl_display_InteractiveObject.prototype.__properties__,{set___currentState:"set___currentState",set_upState:"set_upState",get_upState:"get_upState",set_soundTransform:"set_soundTransform",get_soundTransform:"get_soundTransform",set_overState:"set_overState",get_overState:"get_overState",set_hitTestState:"set_hitTestState",get_hitTestState:"get_hitTestState",set_downState:"set_downState",get_downState:"get_downState"})
});
var openfl_display__$SpreadMethod_SpreadMethod_$Impl_$ = {};
$hxClasses["openfl.display._SpreadMethod.SpreadMethod_Impl_"] = openfl_display__$SpreadMethod_SpreadMethod_$Impl_$;
openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.__name__ = ["openfl","display","_SpreadMethod","SpreadMethod_Impl_"];
openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.fromString = function(value) {
	switch(value) {
	case "pad":
		return 0;
	case "reflect":
		return 1;
	case "repeat":
		return 2;
	default:
		return null;
	}
};
openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "pad";
	case 1:
		return "reflect";
	case 2:
		return "repeat";
	default:
		return null;
	}
};
var openfl_display_Stage = function(width,height,color,documentClass,windowConfig) {
	if(height == null) {
		height = 0;
	}
	if(width == null) {
		width = 0;
	}
	openfl_display_DisplayObjectContainer.call(this);
	if(!isNaN(width)) {
		if(openfl_Lib.get_current().__loaderInfo == null) {
			openfl_Lib.get_current().__loaderInfo = openfl_display_LoaderInfo.create(null);
			openfl_Lib.get_current().__loaderInfo.content = openfl_Lib.get_current();
		}
		var resizable = width == 0 && width == 0;
		this.element = null;
		if(windowConfig == null) {
			windowConfig = { };
		}
		windowConfig.width = width;
		windowConfig.height = height;
		windowConfig.element = this.element;
		windowConfig.resizable = resizable;
		if(!Object.prototype.hasOwnProperty.call(windowConfig,"stencilBuffer")) {
			windowConfig.stencilBuffer = true;
		}
		if(!Object.prototype.hasOwnProperty.call(windowConfig,"depthBuffer")) {
			windowConfig.depthBuffer = true;
		}
		if(!Object.prototype.hasOwnProperty.call(windowConfig,"background")) {
			windowConfig.background = null;
		}
		this.window = new lime_ui_Window(windowConfig);
		this.window.stage = this;
		var app = new lime_app_Application();
		app.create({ });
		app.createWindow(this.window);
		app.exec();
		this.set_color(color);
	} else {
		this.window = width;
		this.set_color(height);
	}
	this.set_name(null);
	this.__contentsScaleFactor = this.window.__scale;
	this.__deltaTime = 0;
	this.__displayState = 2;
	this.__mouseX = 0;
	this.__mouseY = 0;
	this.__lastClickTime = 0;
	this.__logicalWidth = 0;
	this.__logicalHeight = 0;
	this.__displayMatrix = new openfl_geom_Matrix();
	this.__renderDirty = true;
	this.__wasFullscreen = this.window.__fullscreen;
	this.stage3Ds = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
	var this1 = this.stage3Ds;
	var x = new openfl_display_Stage3D();
	this1.data.push(x);
	this.__resize();
	this.stage = this;
	this.align = 6;
	this.allowsFullScreen = true;
	this.allowsFullScreenInteractive = true;
	this.quality = 1;
	this.scaleMode = 2;
	this.showDefaultContextMenu = true;
	this.softKeyboardRect = new openfl_geom_Rectangle();
	this.stageFocusRect = true;
	this.__clearBeforeRender = true;
	this.__stack = [];
	this.__rollOutStack = [];
	this.__touchData = new haxe_ds_IntMap();
	if(openfl_Lib.get_current().stage == null) {
		this.stage.addChild(openfl_Lib.get_current());
	}
	if(!this.window.config.resizable) {
		this.__setLogicalSize(this.window.config.width,this.window.config.height);
	}
	if(documentClass != null) {
		openfl_display_DisplayObject.__initStage = this;
		var sprite = Type.createInstance(documentClass,[]);
		this.addChild(sprite);
	}
	lime_app_Application.current.addModule(this);
};
$hxClasses["openfl.display.Stage"] = openfl_display_Stage;
openfl_display_Stage.__name__ = ["openfl","display","Stage"];
openfl_display_Stage.__interfaces__ = [lime_app_IModule];
openfl_display_Stage.__super__ = openfl_display_DisplayObjectContainer;
openfl_display_Stage.prototype = $extend(openfl_display_DisplayObjectContainer.prototype,{
	align: null
	,allowsFullScreen: null
	,allowsFullScreenInteractive: null
	,application: null
	,element: null
	,quality: null
	,scaleMode: null
	,showDefaultContextMenu: null
	,softKeyboardRect: null
	,stage3Ds: null
	,stageFocusRect: null
	,stageHeight: null
	,stageWidth: null
	,window: null
	,__cacheFocus: null
	,__clearBeforeRender: null
	,__color: null
	,__colorSplit: null
	,__colorString: null
	,__contentsScaleFactor: null
	,__deltaTime: null
	,__dirty: null
	,__displayMatrix: null
	,__displayState: null
	,__dragBounds: null
	,__dragObject: null
	,__dragOffsetX: null
	,__dragOffsetY: null
	,__focus: null
	,__fullscreen: null
	,__invalidated: null
	,__lastClickTime: null
	,__logicalWidth: null
	,__logicalHeight: null
	,__macKeyboard: null
	,__mouseDownLeft: null
	,__mouseDownMiddle: null
	,__mouseDownRight: null
	,__mouseOverTarget: null
	,__mouseX: null
	,__mouseY: null
	,__primaryTouch: null
	,__renderer: null
	,__rendering: null
	,__rollOutStack: null
	,__stack: null
	,__touchData: null
	,__transparent: null
	,__wasDirty: null
	,__wasFullscreen: null
	,addRenderer: function(renderer) {
		var f = $bind(this,this.render);
		var a1 = renderer;
		var tmp = function() {
			f(a1);
		};
		renderer.onRender.add(tmp);
		var f1 = $bind(this,this.onRenderContextLost);
		var a11 = renderer;
		var tmp1 = function() {
			f1(a11);
		};
		renderer.onContextLost.add(tmp1);
		var f2 = $bind(this,this.onRenderContextRestored);
		var a12 = renderer;
		var tmp2 = function(a2) {
			f2(a12,a2);
		};
		renderer.onContextRestored.add(tmp2);
	}
	,addWindow: function(window) {
		if(this.window != window) {
			return;
		}
		var f = $bind(this,this.onWindowActivate);
		var a1 = window;
		var tmp = function() {
			f(a1);
		};
		window.onActivate.add(tmp);
		var f1 = $bind(this,this.onWindowClose);
		var a11 = window;
		var tmp1 = function() {
			f1(a11);
		};
		window.onClose.add(tmp1,false,-9000);
		var f2 = $bind(this,this.onWindowCreate);
		var a12 = window;
		var tmp2 = function() {
			f2(a12);
		};
		window.onCreate.add(tmp2);
		var f3 = $bind(this,this.onWindowDeactivate);
		var a13 = window;
		var tmp3 = function() {
			f3(a13);
		};
		window.onDeactivate.add(tmp3);
		var f4 = $bind(this,this.onWindowDropFile);
		var a14 = window;
		var tmp4 = function(a2) {
			f4(a14,a2);
		};
		window.onDropFile.add(tmp4);
		var f5 = $bind(this,this.onWindowEnter);
		var a15 = window;
		var tmp5 = function() {
			f5(a15);
		};
		window.onEnter.add(tmp5);
		var f6 = $bind(this,this.onWindowFocusIn);
		var a16 = window;
		var tmp6 = function() {
			f6(a16);
		};
		window.onFocusIn.add(tmp6);
		var f7 = $bind(this,this.onWindowFocusOut);
		var a17 = window;
		var tmp7 = function() {
			f7(a17);
		};
		window.onFocusOut.add(tmp7);
		var f8 = $bind(this,this.onWindowFullscreen);
		var a18 = window;
		var tmp8 = function() {
			f8(a18);
		};
		window.onFullscreen.add(tmp8);
		var f9 = $bind(this,this.onKeyDown);
		var a19 = window;
		var tmp9 = function(a21,a3) {
			f9(a19,a21,a3);
		};
		window.onKeyDown.add(tmp9);
		var f10 = $bind(this,this.onKeyUp);
		var a110 = window;
		var tmp10 = function(a22,a31) {
			f10(a110,a22,a31);
		};
		window.onKeyUp.add(tmp10);
		var f11 = $bind(this,this.onWindowLeave);
		var a111 = window;
		var tmp11 = function() {
			f11(a111);
		};
		window.onLeave.add(tmp11);
		var f12 = $bind(this,this.onWindowMinimize);
		var a112 = window;
		var tmp12 = function() {
			f12(a112);
		};
		window.onMinimize.add(tmp12);
		var f13 = $bind(this,this.onMouseDown);
		var a113 = window;
		var tmp13 = function(x,y,a23) {
			f13(a113,x,y,a23);
		};
		window.onMouseDown.add(tmp13);
		var f14 = $bind(this,this.onMouseMove);
		var a114 = window;
		var tmp14 = function(x1,y1) {
			f14(a114,x1,y1);
		};
		window.onMouseMove.add(tmp14);
		var f15 = $bind(this,this.onMouseMoveRelative);
		var a115 = window;
		var tmp15 = function(x2,y2) {
			f15(a115,x2,y2);
		};
		window.onMouseMoveRelative.add(tmp15);
		var f16 = $bind(this,this.onMouseUp);
		var a116 = window;
		var tmp16 = function(x3,y3,a24) {
			f16(a116,x3,y3,a24);
		};
		window.onMouseUp.add(tmp16);
		var f17 = $bind(this,this.onMouseWheel);
		var a117 = window;
		var tmp17 = function(a25,a32) {
			f17(a117,a25,a32);
		};
		window.onMouseWheel.add(tmp17);
		var f18 = $bind(this,this.onWindowMove);
		var a118 = window;
		var tmp18 = function(x4,y4) {
			f18(a118,x4,y4);
		};
		window.onMove.add(tmp18);
		var f19 = $bind(this,this.onWindowResize);
		var a119 = window;
		var tmp19 = function(a26,a33) {
			f19(a119,a26,a33);
		};
		window.onResize.add(tmp19);
		var f20 = $bind(this,this.onWindowRestore);
		var a120 = window;
		var tmp20 = function() {
			f20(a120);
		};
		window.onRestore.add(tmp20);
		var f21 = $bind(this,this.onTextEdit);
		var a121 = window;
		var tmp21 = function(a27,a34,a4) {
			f21(a121,a27,a34,a4);
		};
		window.onTextEdit.add(tmp21);
		var f22 = $bind(this,this.onTextInput);
		var a122 = window;
		var tmp22 = function(a28) {
			f22(a122,a28);
		};
		window.onTextInput.add(tmp22);
		if(window.id > -1) {
			this.onWindowCreate(window);
		}
	}
	,registerModule: function(application) {
		application.onExit.add($bind(this,this.onModuleExit),false,0);
		application.onUpdate.add($bind(this,this.update));
		var gamepad = lime_ui_Gamepad.devices.iterator();
		while(gamepad.hasNext()) {
			var gamepad1 = gamepad.next();
			this.__onGamepadConnect(gamepad1);
		}
		lime_ui_Gamepad.onConnect.add($bind(this,this.__onGamepadConnect));
		lime_ui_Touch.onStart.add($bind(this,this.onTouchStart));
		lime_ui_Touch.onMove.add($bind(this,this.onTouchMove));
		lime_ui_Touch.onEnd.add($bind(this,this.onTouchEnd));
	}
	,removeRenderer: function(renderer) {
	}
	,removeWindow: function(window) {
	}
	,setPreloader: function(preloader) {
	}
	,unregisterModule: function(application) {
		application.onExit.remove($bind(this,this.onModuleExit));
		application.onUpdate.remove($bind(this,this.update));
		lime_ui_Gamepad.onConnect.remove($bind(this,this.__onGamepadConnect));
		lime_ui_Touch.onStart.remove($bind(this,this.onTouchStart));
		lime_ui_Touch.onMove.remove($bind(this,this.onTouchMove));
		lime_ui_Touch.onEnd.remove($bind(this,this.onTouchEnd));
	}
	,invalidate: function() {
		this.__invalidated = true;
	}
	,localToGlobal: function(pos) {
		return pos.clone();
	}
	,onGamepadAxisMove: function(gamepad,axis,value) {
		try {
			openfl_ui_GameInput.__onGamepadAxisMove(gamepad,axis,value);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
		}
	}
	,onGamepadButtonDown: function(gamepad,button) {
		try {
			openfl_ui_GameInput.__onGamepadButtonDown(gamepad,button);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
		}
	}
	,onGamepadButtonUp: function(gamepad,button) {
		try {
			openfl_ui_GameInput.__onGamepadButtonUp(gamepad,button);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
		}
	}
	,onGamepadConnect: function(gamepad) {
		try {
			openfl_ui_GameInput.__onGamepadConnect(gamepad);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
		}
	}
	,onGamepadDisconnect: function(gamepad) {
		try {
			openfl_ui_GameInput.__onGamepadDisconnect(gamepad);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
		}
	}
	,onJoystickAxisMove: function(joystick,axis,value) {
	}
	,onJoystickButtonDown: function(joystick,button) {
	}
	,onJoystickButtonUp: function(joystick,button) {
	}
	,onJoystickConnect: function(joystick) {
	}
	,onJoystickDisconnect: function(joystick) {
	}
	,onJoystickHatMove: function(joystick,hat,position) {
	}
	,onJoystickTrackballMove: function(joystick,trackball,value) {
	}
	,onKeyDown: function(window,keyCode,modifier) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__onKey("keyDown",keyCode,modifier);
	}
	,onKeyUp: function(window,keyCode,modifier) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__onKey("keyUp",keyCode,modifier);
	}
	,onModuleExit: function(code) {
		if(this.window != null) {
			this.__broadcastEvent(new openfl_events_Event("deactivate"));
		}
	}
	,onMouseDown: function(window,x,y,button) {
		if(this.window == null || this.window != window) {
			return;
		}
		var type;
		switch(button) {
		case 1:
			type = "middleMouseDown";
			break;
		case 2:
			type = "rightMouseDown";
			break;
		default:
			type = "mouseDown";
		}
		this.__onMouse(type,x * window.__scale | 0,y * window.__scale | 0,button);
	}
	,onMouseMove: function(window,x,y) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__onMouse("mouseMove",x * window.__scale | 0,y * window.__scale | 0,0);
	}
	,onMouseMoveRelative: function(window,x,y) {
	}
	,onMouseUp: function(window,x,y,button) {
		if(this.window == null || this.window != window) {
			return;
		}
		var type;
		switch(button) {
		case 1:
			type = "middleMouseUp";
			break;
		case 2:
			type = "rightMouseUp";
			break;
		default:
			type = "mouseUp";
		}
		this.__onMouse(type,x * window.__scale | 0,y * window.__scale | 0,button);
		if(!this.showDefaultContextMenu && button == 2) {
			window.onMouseUp.cancel();
		}
	}
	,onMouseWheel: function(window,deltaX,deltaY) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__onMouseWheel(deltaX * window.__scale | 0,deltaY * window.__scale | 0);
	}
	,onPreloadComplete: function() {
	}
	,onPreloadProgress: function(loaded,total) {
	}
	,onRenderContextLost: function(renderer) {
		this.__renderer = null;
	}
	,onRenderContextRestored: function(renderer,context) {
		this.__createRenderer();
	}
	,onTextEdit: function(window,text,start,length) {
	}
	,onTextInput: function(window,text) {
		if(this.window == null || this.window != window) {
			return;
		}
		var stack = [];
		if(this.__focus == null) {
			this.__getInteractive(stack);
		} else {
			this.__focus.__getInteractive(stack);
		}
		var event = new openfl_events_TextEvent("textInput",true,false,text);
		if(stack.length > 0) {
			stack.reverse();
			this.__dispatchStack(event,stack);
		} else {
			this.__dispatchEvent(event);
		}
	}
	,onTouchMove: function(touch) {
		this.__onTouch("touchMove",touch);
	}
	,onTouchEnd: function(touch) {
		if(this.__primaryTouch == touch) {
			this.__primaryTouch = null;
		}
		this.__onTouch("touchEnd",touch);
	}
	,onTouchStart: function(touch) {
		if(this.__primaryTouch == null) {
			this.__primaryTouch = touch;
		}
		this.__onTouch("touchBegin",touch);
	}
	,onWindowActivate: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
	}
	,onWindowClose: function(window) {
		if(this.window == window) {
			this.window = null;
		}
		this.__primaryTouch = null;
		this.__broadcastEvent(new openfl_events_Event("deactivate"));
	}
	,onWindowCreate: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
		if(window.renderer != null) {
			this.__createRenderer();
		}
	}
	,onWindowDeactivate: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
	}
	,onWindowDropFile: function(window,file) {
	}
	,onWindowEnter: function(window) {
	}
	,onWindowFocusIn: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__renderDirty = true;
		this.__broadcastEvent(new openfl_events_Event("activate"));
		this.set_focus(this.__cacheFocus);
	}
	,onWindowFocusOut: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__primaryTouch = null;
		this.__broadcastEvent(new openfl_events_Event("deactivate"));
		var currentFocus = this.get_focus();
		this.set_focus(null);
		this.__cacheFocus = currentFocus;
	}
	,onWindowFullscreen: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__resize();
		if(!this.__wasFullscreen) {
			this.__wasFullscreen = true;
			if(this.__displayState == 2) {
				this.__displayState = 1;
			}
			this.__dispatchEvent(new openfl_events_FullScreenEvent("fullScreen",false,false,false,true));
		}
	}
	,onWindowLeave: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__dispatchEvent(new openfl_events_Event("mouseLeave"));
	}
	,onWindowMinimize: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
	}
	,onWindowMove: function(window,x,y) {
	}
	,onWindowResize: function(window,width,height) {
		if(this.window == null || this.window != window) {
			return;
		}
		this.__renderDirty = true;
		this.__resize();
		if(this.__wasFullscreen && !window.__fullscreen) {
			this.__wasFullscreen = false;
			this.__displayState = 2;
			this.__dispatchEvent(new openfl_events_FullScreenEvent("fullScreen",false,false,true,true));
		}
	}
	,onWindowRestore: function(window) {
		if(this.window == null || this.window != window) {
			return;
		}
	}
	,render: function(renderer) {
		if(renderer.window == null || renderer.window != this.window) {
			return;
		}
		if(this.__rendering) {
			return;
		}
		this.__rendering = true;
		if(this.__renderer != null && (openfl_display_Stage3D.__active || this.stage3Ds.data.get(0).__contextRequested)) {
			this.__renderer.clear();
			this.__renderer.renderStage3D();
			this.__renderDirty = true;
		}
		this.__broadcastEvent(new openfl_events_Event("enterFrame"));
		this.__broadcastEvent(new openfl_events_Event("frameConstructed"));
		this.__broadcastEvent(new openfl_events_Event("exitFrame"));
		if(this.__invalidated) {
			this.__invalidated = false;
			this.__broadcastEvent(new openfl_events_Event("render"));
		}
		this.__renderable = true;
		this.__enterFrame(this.__deltaTime);
		this.__deltaTime = 0;
		this.__update(false,true);
		if(this.__renderer != null && this.__renderDirty) {
			if(!openfl_display_Stage3D.__active) {
				this.__renderer.clear();
			}
			if(renderer.type == lime_graphics_RendererType.CAIRO) {
				var _g = renderer.context;
				if(_g[1] == 4) {
					var cairo = _g[2];
				}
			}
			this.__renderer.render();
		} else {
			renderer.onRender.cancel();
		}
		this.__rendering = false;
	}
	,update: function(deltaTime) {
		this.__deltaTime = deltaTime;
	}
	,__broadcastEvent: function(event) {
		var key = event.type;
		var _this = openfl_display_DisplayObject.__broadcastEvents;
		if(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key)) {
			var key1 = event.type;
			var _this1 = openfl_display_DisplayObject.__broadcastEvents;
			var dispatchers = __map_reserved[key1] != null ? _this1.getReserved(key1) : _this1.h[key1];
			var _g = 0;
			while(_g < dispatchers.length) {
				var dispatcher = dispatchers[_g];
				++_g;
				if(dispatcher.stage == this || dispatcher.stage == null) {
					try {
						dispatcher.__dispatch(event);
					} catch( e ) {
						haxe_CallStack.lastException = e;
						if (e instanceof js__$Boot_HaxeError) e = e.val;
						this.__handleError(e);
					}
				}
			}
		}
	}
	,__createRenderer: function() {
		var _g = this.window.renderer.context;
		switch(_g[1]) {
		case 0:
			var gl = _g[2];
			break;
		case 1:
			var context = _g[2];
			this.__renderer = new openfl__$internal_renderer_canvas_CanvasRenderer(this,context);
			break;
		case 2:
			var element = _g[2];
			this.__renderer = new openfl__$internal_renderer_dom_DOMRenderer(this,element);
			break;
		case 4:
			var cairo = _g[2];
			break;
		case 5:
			var ctx = _g[2];
			break;
		default:
		}
	}
	,__dispatchEvent: function(event) {
		try {
			return openfl_display_DisplayObjectContainer.prototype.__dispatchEvent.call(this,event);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
			return false;
		}
	}
	,__dispatchStack: function(event,stack) {
		try {
			var target;
			var length = stack.length;
			if(length == 0) {
				event.eventPhase = 2;
				target = event.target;
				target.__dispatch(event);
			} else {
				event.eventPhase = 1;
				event.target = stack[stack.length - 1];
				var _g1 = 0;
				var _g = length - 1;
				while(_g1 < _g) {
					var i = _g1++;
					stack[i].__dispatch(event);
					if(event.__isCanceled) {
						return;
					}
				}
				event.eventPhase = 2;
				target = event.target;
				target.__dispatch(event);
				if(event.__isCanceled) {
					return;
				}
				if(event.bubbles) {
					event.eventPhase = 3;
					var i1 = length - 2;
					while(i1 >= 0) {
						stack[i1].__dispatch(event);
						if(event.__isCanceled) {
							return;
						}
						--i1;
					}
				}
			}
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
		}
	}
	,__dispatchTarget: function(target,event) {
		try {
			return target.__dispatchEvent(event);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			this.__handleError(e);
			return false;
		}
	}
	,__drag: function(mouse) {
		var parent = this.__dragObject.parent;
		if(parent != null) {
			var _this = parent.__getWorldTransform();
			var norm = _this.a * _this.d - _this.b * _this.c;
			if(norm == 0) {
				mouse.x = -_this.tx;
				mouse.y = -_this.ty;
			} else {
				var px = 1.0 / norm * (_this.c * (_this.ty - mouse.y) + _this.d * (mouse.x - _this.tx));
				mouse.y = 1.0 / norm * (_this.a * (mouse.y - _this.ty) + _this.b * (_this.tx - mouse.x));
				mouse.x = px;
			}
		}
		var x = mouse.x + this.__dragOffsetX;
		var y = mouse.y + this.__dragOffsetY;
		if(this.__dragBounds != null) {
			if(x < this.__dragBounds.x) {
				x = this.__dragBounds.x;
			} else if(x > this.__dragBounds.get_right()) {
				x = this.__dragBounds.get_right();
			}
			if(y < this.__dragBounds.y) {
				y = this.__dragBounds.y;
			} else if(y > this.__dragBounds.get_bottom()) {
				y = this.__dragBounds.get_bottom();
			}
		}
		this.__dragObject.set_x(x);
		this.__dragObject.set_y(y);
	}
	,__getInteractive: function(stack) {
		if(stack != null) {
			stack.push(this);
		}
		return true;
	}
	,__globalToLocal: function(global,local) {
		if(global != local) {
			local.copyFrom(global);
		}
		return local;
	}
	,__handleError: function(e) {
		var event = new openfl_events_UncaughtErrorEvent("uncaughtError",true,true,e);
		openfl_Lib.get_current().__loaderInfo.uncaughtErrorEvents.dispatchEvent(event);
		if(!event.__preventDefault) {
			try {
				var exc = haxe_CallStack.lastException;
				if(exc != null && Object.prototype.hasOwnProperty.call(exc,"stack") && exc.stack != null && exc.stack != "") {
					console.log(exc.stack);
					e.stack = exc.stack;
				} else {
					var msg = haxe_CallStack.toString(haxe_CallStack.callStack());
					console.log(msg);
				}
			} catch( e2 ) {
				haxe_CallStack.lastException = e2;
			}
			throw e;
		}
	}
	,__onKey: function(type,keyCode,modifier) {
		openfl_events_MouseEvent.__altKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_altKey(modifier);
		openfl_events_MouseEvent.__commandKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier);
		openfl_events_MouseEvent.__ctrlKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(modifier);
		openfl_events_MouseEvent.__shiftKey = lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier);
		var stack = [];
		if(this.__focus == null) {
			this.__getInteractive(stack);
		} else {
			this.__focus.__getInteractive(stack);
		}
		if(stack.length > 0) {
			var keyLocation;
			switch(keyCode) {
			case 1073741908:case 1073741909:case 1073741910:case 1073741911:case 1073741912:case 1073741913:case 1073741914:case 1073741915:case 1073741916:case 1073741917:case 1073741918:case 1073741919:case 1073741920:case 1073741921:case 1073741922:case 1073741923:case 1073742044:
				keyLocation = 3;
				break;
			case 1073742048:case 1073742049:case 1073742050:case 1073742051:
				keyLocation = 1;
				break;
			case 1073742052:case 1073742053:case 1073742054:case 1073742055:
				keyLocation = 2;
				break;
			default:
				keyLocation = 0;
			}
			var keyCode1;
			switch(keyCode) {
			case 8:
				keyCode1 = 8;
				break;
			case 9:
				keyCode1 = 9;
				break;
			case 13:
				keyCode1 = 13;
				break;
			case 27:
				keyCode1 = 27;
				break;
			case 32:
				keyCode1 = 32;
				break;
			case 33:
				keyCode1 = 49;
				break;
			case 34:
				keyCode1 = 222;
				break;
			case 35:
				keyCode1 = 51;
				break;
			case 36:
				keyCode1 = 52;
				break;
			case 37:
				keyCode1 = 53;
				break;
			case 38:
				keyCode1 = 55;
				break;
			case 39:
				keyCode1 = 222;
				break;
			case 40:
				keyCode1 = 57;
				break;
			case 41:
				keyCode1 = 48;
				break;
			case 42:
				keyCode1 = 56;
				break;
			case 44:
				keyCode1 = 188;
				break;
			case 45:
				keyCode1 = 189;
				break;
			case 46:
				keyCode1 = 190;
				break;
			case 47:
				keyCode1 = 191;
				break;
			case 48:
				keyCode1 = 48;
				break;
			case 49:
				keyCode1 = 49;
				break;
			case 50:
				keyCode1 = 50;
				break;
			case 51:
				keyCode1 = 51;
				break;
			case 52:
				keyCode1 = 52;
				break;
			case 53:
				keyCode1 = 53;
				break;
			case 54:
				keyCode1 = 54;
				break;
			case 55:
				keyCode1 = 55;
				break;
			case 56:
				keyCode1 = 56;
				break;
			case 57:
				keyCode1 = 57;
				break;
			case 58:
				keyCode1 = 186;
				break;
			case 59:
				keyCode1 = 186;
				break;
			case 60:
				keyCode1 = 60;
				break;
			case 61:
				keyCode1 = 187;
				break;
			case 62:
				keyCode1 = 190;
				break;
			case 63:
				keyCode1 = 191;
				break;
			case 64:
				keyCode1 = 50;
				break;
			case 91:
				keyCode1 = 219;
				break;
			case 92:
				keyCode1 = 220;
				break;
			case 93:
				keyCode1 = 221;
				break;
			case 94:
				keyCode1 = 54;
				break;
			case 95:
				keyCode1 = 189;
				break;
			case 96:
				keyCode1 = 192;
				break;
			case 97:
				keyCode1 = 65;
				break;
			case 98:
				keyCode1 = 66;
				break;
			case 99:
				keyCode1 = 67;
				break;
			case 100:
				keyCode1 = 68;
				break;
			case 101:
				keyCode1 = 69;
				break;
			case 102:
				keyCode1 = 70;
				break;
			case 103:
				keyCode1 = 71;
				break;
			case 104:
				keyCode1 = 72;
				break;
			case 105:
				keyCode1 = 73;
				break;
			case 106:
				keyCode1 = 74;
				break;
			case 107:
				keyCode1 = 75;
				break;
			case 108:
				keyCode1 = 76;
				break;
			case 109:
				keyCode1 = 77;
				break;
			case 110:
				keyCode1 = 78;
				break;
			case 111:
				keyCode1 = 79;
				break;
			case 112:
				keyCode1 = 80;
				break;
			case 113:
				keyCode1 = 81;
				break;
			case 114:
				keyCode1 = 82;
				break;
			case 115:
				keyCode1 = 83;
				break;
			case 116:
				keyCode1 = 84;
				break;
			case 117:
				keyCode1 = 85;
				break;
			case 118:
				keyCode1 = 86;
				break;
			case 119:
				keyCode1 = 87;
				break;
			case 120:
				keyCode1 = 88;
				break;
			case 121:
				keyCode1 = 89;
				break;
			case 122:
				keyCode1 = 90;
				break;
			case 127:
				keyCode1 = 46;
				break;
			case 1073741881:
				keyCode1 = 20;
				break;
			case 1073741882:
				keyCode1 = 112;
				break;
			case 1073741883:
				keyCode1 = 113;
				break;
			case 1073741884:
				keyCode1 = 114;
				break;
			case 1073741885:
				keyCode1 = 115;
				break;
			case 1073741886:
				keyCode1 = 116;
				break;
			case 1073741887:
				keyCode1 = 117;
				break;
			case 1073741888:
				keyCode1 = 118;
				break;
			case 1073741889:
				keyCode1 = 119;
				break;
			case 1073741890:
				keyCode1 = 120;
				break;
			case 1073741891:
				keyCode1 = 121;
				break;
			case 1073741892:
				keyCode1 = 122;
				break;
			case 1073741893:
				keyCode1 = 123;
				break;
			case 1073741894:
				keyCode1 = 301;
				break;
			case 1073741895:
				keyCode1 = 145;
				break;
			case 1073741896:
				keyCode1 = 19;
				break;
			case 1073741897:
				keyCode1 = 45;
				break;
			case 1073741898:
				keyCode1 = 36;
				break;
			case 1073741899:
				keyCode1 = 33;
				break;
			case 1073741901:
				keyCode1 = 35;
				break;
			case 1073741902:
				keyCode1 = 34;
				break;
			case 1073741903:
				keyCode1 = 39;
				break;
			case 1073741904:
				keyCode1 = 37;
				break;
			case 1073741905:
				keyCode1 = 40;
				break;
			case 1073741906:
				keyCode1 = 38;
				break;
			case 1073741907:
				keyCode1 = 144;
				break;
			case 1073741908:
				keyCode1 = 111;
				break;
			case 1073741909:
				keyCode1 = 106;
				break;
			case 1073741910:
				keyCode1 = 109;
				break;
			case 1073741911:
				keyCode1 = 107;
				break;
			case 1073741912:
				keyCode1 = 108;
				break;
			case 1073741913:
				keyCode1 = 97;
				break;
			case 1073741914:
				keyCode1 = 98;
				break;
			case 1073741915:
				keyCode1 = 99;
				break;
			case 1073741916:
				keyCode1 = 100;
				break;
			case 1073741917:
				keyCode1 = 101;
				break;
			case 1073741918:
				keyCode1 = 102;
				break;
			case 1073741919:
				keyCode1 = 103;
				break;
			case 1073741920:
				keyCode1 = 104;
				break;
			case 1073741921:
				keyCode1 = 105;
				break;
			case 1073741922:
				keyCode1 = 96;
				break;
			case 1073741923:
				keyCode1 = 110;
				break;
			case 1073741925:
				keyCode1 = 302;
				break;
			case 1073741928:
				keyCode1 = 124;
				break;
			case 1073741929:
				keyCode1 = 125;
				break;
			case 1073741930:
				keyCode1 = 126;
				break;
			case 1073741982:
				keyCode1 = 13;
				break;
			case 1073742044:
				keyCode1 = 110;
				break;
			case 1073742048:
				keyCode1 = 17;
				break;
			case 1073742049:
				keyCode1 = 16;
				break;
			case 1073742050:
				keyCode1 = 18;
				break;
			case 1073742051:
				keyCode1 = 15;
				break;
			case 1073742052:
				keyCode1 = 17;
				break;
			case 1073742053:
				keyCode1 = 16;
				break;
			case 1073742054:
				keyCode1 = 18;
				break;
			case 1073742055:
				keyCode1 = 15;
				break;
			default:
				keyCode1 = keyCode;
			}
			var charCode = openfl_ui_Keyboard.__getCharCode(keyCode1,lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier));
			var event = new openfl_events_KeyboardEvent(type,true,true,charCode,keyCode1,keyLocation,this.__macKeyboard ? lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(modifier) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier) : lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(modifier),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_altKey(modifier),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(modifier),lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier));
			stack.reverse();
			this.__dispatchStack(event,stack);
			if(event.__preventDefault) {
				if(type == "keyDown") {
					this.window.onKeyDown.cancel();
				} else {
					this.window.onKeyUp.cancel();
				}
			}
		}
	}
	,__onGamepadConnect: function(gamepad) {
		this.onGamepadConnect(gamepad);
		var f = $bind(this,this.onGamepadAxisMove);
		var a1 = gamepad;
		var tmp = function(a2,a3) {
			f(a1,a2,a3);
		};
		gamepad.onAxisMove.add(tmp);
		var f1 = $bind(this,this.onGamepadButtonDown);
		var a11 = gamepad;
		var tmp1 = function(a21) {
			f1(a11,a21);
		};
		gamepad.onButtonDown.add(tmp1);
		var f2 = $bind(this,this.onGamepadButtonUp);
		var a12 = gamepad;
		var tmp2 = function(a22) {
			f2(a12,a22);
		};
		gamepad.onButtonUp.add(tmp2);
		var f3 = $bind(this,this.onGamepadDisconnect);
		var a13 = gamepad;
		var tmp3 = function() {
			f3(a13);
		};
		gamepad.onDisconnect.add(tmp3);
	}
	,__onMouse: function(type,x,y,button) {
		if(button > 2) {
			return;
		}
		var targetPoint = openfl_geom_Point.__pool.get();
		targetPoint.setTo(x,y);
		var _this = this.__displayMatrix;
		var norm = _this.a * _this.d - _this.b * _this.c;
		if(norm == 0) {
			targetPoint.x = -_this.tx;
			targetPoint.y = -_this.ty;
		} else {
			var px = 1.0 / norm * (_this.c * (_this.ty - targetPoint.y) + _this.d * (targetPoint.x - _this.tx));
			targetPoint.y = 1.0 / norm * (_this.a * (targetPoint.y - _this.ty) + _this.b * (_this.tx - targetPoint.x));
			targetPoint.x = px;
		}
		this.__mouseX = targetPoint.x;
		this.__mouseY = targetPoint.y;
		var stack = [];
		var target = null;
		if(this.__hitTest(this.__mouseX,this.__mouseY,true,stack,true,this)) {
			target = stack[stack.length - 1];
		} else {
			target = this;
			stack = [this];
		}
		if(target == null) {
			target = this;
		}
		var clickType = null;
		switch(type) {
		case "middleMouseDown":
			this.__mouseDownMiddle = target;
			break;
		case "middleMouseUp":
			if(this.__mouseDownMiddle == target) {
				clickType = "middleClick";
			}
			this.__mouseDownMiddle = null;
			break;
		case "mouseDown":
			if(target.__allowMouseFocus()) {
				this.set_focus(target);
			} else {
				this.set_focus(null);
			}
			this.__mouseDownLeft = target;
			openfl_events_MouseEvent.__buttonDown = true;
			break;
		case "mouseUp":
			if(this.__mouseDownLeft != null) {
				openfl_events_MouseEvent.__buttonDown = false;
				if(this.__mouseX < 0 || this.__mouseY < 0) {
					this.__dispatchEvent(openfl_events_MouseEvent.__create("releaseOutside",1,this.__mouseX,this.__mouseY,new openfl_geom_Point(this.__mouseX,this.__mouseY),this));
				} else if(this.__mouseDownLeft == target) {
					clickType = "click";
				}
				this.__mouseDownLeft = null;
			}
			break;
		case "rightMouseDown":
			this.__mouseDownRight = target;
			break;
		case "rightMouseUp":
			if(this.__mouseDownRight == target) {
				clickType = "rightClick";
			}
			this.__mouseDownRight = null;
			break;
		default:
		}
		var localPoint = openfl_geom_Point.__pool.get();
		this.__dispatchStack(openfl_events_MouseEvent.__create(type,button,this.__mouseX,this.__mouseY,target.__globalToLocal(targetPoint,localPoint),target),stack);
		if(clickType != null) {
			this.__dispatchStack(openfl_events_MouseEvent.__create(clickType,button,this.__mouseX,this.__mouseY,target.__globalToLocal(targetPoint,localPoint),target),stack);
			if(type == "mouseUp" && (js_Boot.__cast(target , openfl_display_InteractiveObject)).doubleClickEnabled) {
				var currentTime = openfl_Lib.getTimer();
				if(currentTime - this.__lastClickTime < 500) {
					this.__dispatchStack(openfl_events_MouseEvent.__create("doubleClick",button,this.__mouseX,this.__mouseY,target.__globalToLocal(targetPoint,localPoint),target),stack);
					this.__lastClickTime = 0;
				} else {
					this.__lastClickTime = currentTime;
				}
			}
		}
		if(openfl_ui_Mouse.__cursor == "auto") {
			var cursor = null;
			if(this.__mouseDownLeft != null) {
				cursor = this.__mouseDownLeft.__getCursor();
			} else {
				var _g = 0;
				while(_g < stack.length) {
					var target1 = stack[_g];
					++_g;
					cursor = target1.__getCursor();
					if(cursor != null) {
						lime_ui_Mouse.set_cursor(cursor);
						break;
					}
				}
			}
			if(cursor == null) {
				lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.ARROW);
			}
		}
		var event;
		if(target != this.__mouseOverTarget) {
			if(this.__mouseOverTarget != null) {
				event = openfl_events_MouseEvent.__create("mouseOut",button,this.__mouseX,this.__mouseY,this.__mouseOverTarget.__globalToLocal(targetPoint,localPoint),this.__mouseOverTarget);
				this.__dispatchTarget(this.__mouseOverTarget,event);
			}
		}
		var _g1 = 0;
		var _g11 = this.__rollOutStack;
		while(_g1 < _g11.length) {
			var target2 = _g11[_g1];
			++_g1;
			if(stack.indexOf(target2) == -1) {
				HxOverrides.remove(this.__rollOutStack,target2);
				event = openfl_events_MouseEvent.__create("rollOut",button,this.__mouseX,this.__mouseY,this.__mouseOverTarget.__globalToLocal(targetPoint,localPoint),this.__mouseOverTarget);
				event.bubbles = false;
				this.__dispatchTarget(target2,event);
			}
		}
		var _g2 = 0;
		while(_g2 < stack.length) {
			var target3 = stack[_g2];
			++_g2;
			if(this.__rollOutStack.indexOf(target3) == -1 && this.__mouseOverTarget != null) {
				if(target3.hasEventListener("rollOver")) {
					event = openfl_events_MouseEvent.__create("rollOver",button,this.__mouseX,this.__mouseY,this.__mouseOverTarget.__globalToLocal(targetPoint,localPoint),target3);
					event.bubbles = false;
					this.__dispatchTarget(target3,event);
				}
				if(target3.hasEventListener("rollOut")) {
					this.__rollOutStack.push(target3);
				}
			}
		}
		if(target != this.__mouseOverTarget) {
			if(target != null) {
				event = openfl_events_MouseEvent.__create("mouseOver",button,this.__mouseX,this.__mouseY,target.__globalToLocal(targetPoint,localPoint),target);
				event.bubbles = true;
				this.__dispatchTarget(target,event);
			}
			this.__mouseOverTarget = target;
		}
		if(this.__dragObject != null) {
			this.__drag(targetPoint);
			var dropTarget = null;
			if(this.__mouseOverTarget == this.__dragObject) {
				var cacheMouseEnabled = this.__dragObject.mouseEnabled;
				var cacheMouseChildren = this.__dragObject.mouseChildren;
				this.__dragObject.mouseEnabled = false;
				this.__dragObject.mouseChildren = false;
				var stack1 = [];
				if(this.__hitTest(this.__mouseX,this.__mouseY,true,stack1,true,this)) {
					dropTarget = stack1[stack1.length - 1];
				}
				this.__dragObject.mouseEnabled = cacheMouseEnabled;
				this.__dragObject.mouseChildren = cacheMouseChildren;
			} else if(this.__mouseOverTarget != this) {
				dropTarget = this.__mouseOverTarget;
			}
			this.__dragObject.dropTarget = dropTarget;
		}
		openfl_geom_Point.__pool.release(targetPoint);
		openfl_geom_Point.__pool.release(localPoint);
	}
	,__onMouseWheel: function(deltaX,deltaY) {
		var x = this.__mouseX;
		var y = this.__mouseY;
		var stack = [];
		var target = null;
		if(this.__hitTest(this.__mouseX,this.__mouseY,true,stack,true,this)) {
			target = stack[stack.length - 1];
		} else {
			target = this;
			stack = [this];
		}
		if(target == null) {
			target = this;
		}
		var targetPoint = openfl_geom_Point.__pool.get();
		targetPoint.setTo(x,y);
		var _this = this.__displayMatrix;
		var norm = _this.a * _this.d - _this.b * _this.c;
		if(norm == 0) {
			targetPoint.x = -_this.tx;
			targetPoint.y = -_this.ty;
		} else {
			var px = 1.0 / norm * (_this.c * (_this.ty - targetPoint.y) + _this.d * (targetPoint.x - _this.tx));
			targetPoint.y = 1.0 / norm * (_this.a * (targetPoint.y - _this.ty) + _this.b * (_this.tx - targetPoint.x));
			targetPoint.x = px;
		}
		var delta = deltaY | 0;
		this.__dispatchStack(openfl_events_MouseEvent.__create("mouseWheel",0,this.__mouseX,this.__mouseY,target.__globalToLocal(targetPoint,targetPoint),target,delta),stack);
		openfl_geom_Point.__pool.release(targetPoint);
	}
	,__onTouch: function(type,touch) {
		var targetPoint = openfl_geom_Point.__pool.get();
		targetPoint.setTo(Math.round(touch.x * this.window.__width * this.window.__scale),Math.round(touch.y * this.window.__height * this.window.__scale));
		var _this = this.__displayMatrix;
		var norm = _this.a * _this.d - _this.b * _this.c;
		if(norm == 0) {
			targetPoint.x = -_this.tx;
			targetPoint.y = -_this.ty;
		} else {
			var px = 1.0 / norm * (_this.c * (_this.ty - targetPoint.y) + _this.d * (targetPoint.x - _this.tx));
			targetPoint.y = 1.0 / norm * (_this.a * (targetPoint.y - _this.ty) + _this.b * (_this.tx - targetPoint.x));
			targetPoint.x = px;
		}
		var touchX = targetPoint.x;
		var touchY = targetPoint.y;
		var stack = [];
		var target = null;
		if(this.__hitTest(touchX,touchY,false,stack,true,this)) {
			target = stack[stack.length - 1];
		} else {
			target = this;
			stack = [this];
		}
		if(target == null) {
			target = this;
		}
		var touchId = touch.id;
		var touchData = null;
		if(this.__touchData.h.hasOwnProperty(touchId)) {
			touchData = this.__touchData.h[touchId];
		} else {
			touchData = openfl__$internal_TouchData.__pool.get();
			touchData.reset();
			touchData.touch = touch;
			this.__touchData.h[touchId] = touchData;
		}
		var touchType = null;
		var releaseTouchData = false;
		switch(type) {
		case "touchBegin":
			touchData.touchDownTarget = target;
			break;
		case "touchEnd":
			if(touchData.touchDownTarget == target) {
				touchType = "touchTap";
			}
			touchData.touchDownTarget = null;
			releaseTouchData = true;
			break;
		default:
		}
		var localPoint = openfl_geom_Point.__pool.get();
		var isPrimaryTouchPoint = this.__primaryTouch == touch;
		var touchEvent = openfl_events_TouchEvent.__create(type,null,touchX,touchY,target.__globalToLocal(targetPoint,localPoint),target);
		touchEvent.touchPointID = touchId;
		touchEvent.isPrimaryTouchPoint = isPrimaryTouchPoint;
		this.__dispatchStack(touchEvent,stack);
		if(touchType != null) {
			touchEvent = openfl_events_TouchEvent.__create(touchType,null,touchX,touchY,target.__globalToLocal(targetPoint,localPoint),target);
			touchEvent.touchPointID = touchId;
			touchEvent.isPrimaryTouchPoint = isPrimaryTouchPoint;
			this.__dispatchStack(touchEvent,stack);
		}
		var touchOverTarget = touchData.touchOverTarget;
		if(target != touchOverTarget && touchOverTarget != null) {
			touchEvent = openfl_events_TouchEvent.__create("touchOut",null,touchX,touchY,touchOverTarget.__globalToLocal(targetPoint,localPoint),touchOverTarget);
			touchEvent.touchPointID = touchId;
			touchEvent.isPrimaryTouchPoint = isPrimaryTouchPoint;
			this.__dispatchTarget(touchOverTarget,touchEvent);
		}
		var touchOutStack = touchData.rollOutStack;
		var _g = 0;
		while(_g < touchOutStack.length) {
			var target1 = touchOutStack[_g];
			++_g;
			if(stack.indexOf(target1) == -1) {
				HxOverrides.remove(touchOutStack,target1);
				touchEvent = openfl_events_TouchEvent.__create("touchRollOut",null,touchX,touchY,touchOverTarget.__globalToLocal(targetPoint,localPoint),touchOverTarget);
				touchEvent.touchPointID = touchId;
				touchEvent.isPrimaryTouchPoint = isPrimaryTouchPoint;
				touchEvent.bubbles = false;
				this.__dispatchTarget(target1,touchEvent);
			}
		}
		var _g1 = 0;
		while(_g1 < stack.length) {
			var target2 = stack[_g1];
			++_g1;
			if(touchOutStack.indexOf(target2) == -1) {
				if(target2.hasEventListener("touchRollOver")) {
					touchEvent = openfl_events_TouchEvent.__create("touchRollOver",null,touchX,touchY,touchOverTarget.__globalToLocal(targetPoint,localPoint),target2);
					touchEvent.touchPointID = touchId;
					touchEvent.isPrimaryTouchPoint = isPrimaryTouchPoint;
					touchEvent.bubbles = false;
					this.__dispatchTarget(target2,touchEvent);
				}
				if(target2.hasEventListener("touchRollOut")) {
					touchOutStack.push(target2);
				}
			}
		}
		if(target != touchOverTarget) {
			if(target != null) {
				touchEvent = openfl_events_TouchEvent.__create("touchOver",null,touchX,touchY,target.__globalToLocal(targetPoint,localPoint),target);
				touchEvent.touchPointID = touchId;
				touchEvent.isPrimaryTouchPoint = isPrimaryTouchPoint;
				touchEvent.bubbles = true;
				this.__dispatchTarget(target,touchEvent);
			}
			touchData.touchOverTarget = target;
		}
		openfl_geom_Point.__pool.release(targetPoint);
		openfl_geom_Point.__pool.release(localPoint);
		if(releaseTouchData) {
			this.__touchData.remove(touchId);
			touchData.reset();
			openfl__$internal_TouchData.__pool.release(touchData);
		}
	}
	,__resize: function() {
		var cacheWidth = this.stageWidth;
		var cacheHeight = this.stageHeight;
		var windowWidth = this.window.__width * this.window.__scale | 0;
		var windowHeight = this.window.__height * this.window.__scale | 0;
		this.__displayMatrix.identity();
		if(this.__logicalWidth == 0 && this.__logicalHeight == 0) {
			this.stageWidth = windowWidth;
			this.stageHeight = windowHeight;
		} else {
			this.stageWidth = this.__logicalWidth;
			this.stageHeight = this.__logicalHeight;
			var scaleX = windowWidth / this.stageWidth;
			var scaleY = windowHeight / this.stageHeight;
			var targetScale = Math.min(scaleX,scaleY);
			var offsetX = Math.round((windowWidth - this.stageWidth * targetScale) / 2);
			var offsetY = Math.round((windowHeight - this.stageHeight * targetScale) / 2);
			this.__displayMatrix.scale(targetScale,targetScale);
			this.__displayMatrix.translate(offsetX,offsetY);
		}
		var _g = 0;
		var _g1 = this.stage3Ds;
		while(_g < _g1.data.get_length()) {
			var stage3D = _g1.data.get(_g);
			++_g;
			stage3D.__resize(this.stageWidth,this.stageHeight);
		}
		if(this.__renderer != null) {
			this.__renderer.resize(windowWidth,windowHeight);
		}
		if(this.stageWidth != cacheWidth || this.stageHeight != cacheHeight) {
			this.__dispatchEvent(new openfl_events_Event("resize"));
		}
	}
	,__setLogicalSize: function(width,height) {
		this.__logicalWidth = width;
		this.__logicalHeight = height;
		this.__resize();
	}
	,__startDrag: function(sprite,lockCenter,bounds) {
		this.__dragBounds = bounds == null ? null : bounds.clone();
		this.__dragObject = sprite;
		if(this.__dragObject != null) {
			if(lockCenter) {
				this.__dragOffsetX = 0;
				this.__dragOffsetY = 0;
			} else {
				var mouse = openfl_geom_Point.__pool.get();
				mouse.setTo(this.get_mouseX(),this.get_mouseY());
				var parent = this.__dragObject.parent;
				if(parent != null) {
					var _this = parent.__getWorldTransform();
					var norm = _this.a * _this.d - _this.b * _this.c;
					if(norm == 0) {
						mouse.x = -_this.tx;
						mouse.y = -_this.ty;
					} else {
						var px = 1.0 / norm * (_this.c * (_this.ty - mouse.y) + _this.d * (mouse.x - _this.tx));
						mouse.y = 1.0 / norm * (_this.a * (mouse.y - _this.ty) + _this.b * (_this.tx - mouse.x));
						mouse.x = px;
					}
				}
				this.__dragOffsetX = this.__dragObject.get_x() - mouse.x;
				this.__dragOffsetY = this.__dragObject.get_y() - mouse.y;
				openfl_geom_Point.__pool.release(mouse);
			}
		}
	}
	,__stopDrag: function(sprite) {
		this.__dragBounds = null;
		this.__dragObject = null;
	}
	,__update: function(transformOnly,updateChildren,maskGraphics) {
		if(transformOnly) {
			if(this.__transformDirty) {
				openfl_display_DisplayObjectContainer.prototype.__update.call(this,true,updateChildren,maskGraphics);
				if(updateChildren) {
					this.__transformDirty = false;
				}
			}
		} else if(this.__transformDirty || this.__renderDirty) {
			openfl_display_DisplayObjectContainer.prototype.__update.call(this,false,updateChildren,maskGraphics);
			if(updateChildren) {
				if(openfl_display_DisplayObject.__supportDOM) {
					this.__wasDirty = true;
				}
			}
		} else if(this.__wasDirty) {
			openfl_display_DisplayObjectContainer.prototype.__update.call(this,false,updateChildren,maskGraphics);
			if(updateChildren) {
				this.__wasDirty = false;
			}
		}
	}
	,get_color: function() {
		return this.__color;
	}
	,set_color: function(value) {
		if(value == null) {
			this.__transparent = true;
			value = 0;
		} else {
			this.__transparent = false;
		}
		var r = (value & 16711680) >>> 16;
		var g = (value & 65280) >>> 8;
		var b = value & 255;
		this.__colorSplit = [r / 255,g / 255,b / 255];
		this.__colorString = "#" + StringTools.hex(value & 16777215,6);
		return this.__color = value;
	}
	,get_contentsScaleFactor: function() {
		return this.__contentsScaleFactor;
	}
	,get_displayState: function() {
		return this.__displayState;
	}
	,set_displayState: function(value) {
		if(this.window != null) {
			if(value == 2) {
				if(this.window.__fullscreen) {
					this.window.set_fullscreen(false);
				}
			} else if(!this.window.__fullscreen) {
				this.window.set_fullscreen(true);
			}
		}
		return this.__displayState = value;
	}
	,get_focus: function() {
		return this.__focus;
	}
	,set_focus: function(value) {
		if(value != this.__focus) {
			var oldFocus = this.__focus;
			this.__focus = value;
			this.__cacheFocus = value;
			if(oldFocus != null) {
				var event = new openfl_events_FocusEvent("focusOut",true,false,value,false,0);
				var stack = [];
				oldFocus.__getInteractive(stack);
				stack.reverse();
				this.__dispatchStack(event,stack);
			}
			if(value != null) {
				var event1 = new openfl_events_FocusEvent("focusIn",true,false,oldFocus,false,0);
				var stack1 = [];
				value.__getInteractive(stack1);
				stack1.reverse();
				this.__dispatchStack(event1,stack1);
			}
		}
		return value;
	}
	,get_frameRate: function() {
		if(this.application != null) {
			return this.application.backend.getFrameRate();
		}
		return 0;
	}
	,set_frameRate: function(value) {
		if(this.application != null) {
			return this.application.backend.setFrameRate(value);
		}
		return value;
	}
	,get_fullScreenHeight: function() {
		var tmp = this.window.__scale;
		return Math.ceil(this.window.get_display().currentMode.height * tmp);
	}
	,get_fullScreenWidth: function() {
		var tmp = this.window.__scale;
		return Math.ceil(this.window.get_display().currentMode.width * tmp);
	}
	,set_height: function(value) {
		return this.get_height();
	}
	,get_mouseX: function() {
		return this.__mouseX;
	}
	,get_mouseY: function() {
		return this.__mouseY;
	}
	,set_rotation: function(value) {
		return 0;
	}
	,set_scaleX: function(value) {
		return 0;
	}
	,set_scaleY: function(value) {
		return 0;
	}
	,set_transform: function(value) {
		return this.get_transform();
	}
	,set_width: function(value) {
		return this.get_width();
	}
	,set_x: function(value) {
		return 0;
	}
	,set_y: function(value) {
		return 0;
	}
	,__class__: openfl_display_Stage
	,__properties__: $extend(openfl_display_DisplayObjectContainer.prototype.__properties__,{get_fullScreenWidth:"get_fullScreenWidth",get_fullScreenHeight:"get_fullScreenHeight",set_frameRate:"set_frameRate",get_frameRate:"get_frameRate",set_focus:"set_focus",get_focus:"get_focus",set_displayState:"set_displayState",get_displayState:"get_displayState",get_contentsScaleFactor:"get_contentsScaleFactor",set_color:"set_color",get_color:"get_color"})
});
var openfl_display_Stage3D = function() {
	openfl_events_EventDispatcher.call(this);
	this.__x = 0;
	this.__y = 0;
	this.visible = true;
};
$hxClasses["openfl.display.Stage3D"] = openfl_display_Stage3D;
openfl_display_Stage3D.__name__ = ["openfl","display","Stage3D"];
openfl_display_Stage3D.__super__ = openfl_events_EventDispatcher;
openfl_display_Stage3D.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	context3D: null
	,visible: null
	,__contextRequested: null
	,__stage: null
	,__x: null
	,__y: null
	,requestContext3D: function(context3DRenderMode,profile) {
		if(profile == null) {
			profile = 0;
		}
		if(context3DRenderMode == null) {
			context3DRenderMode = 0;
		}
		this.__contextRequested = true;
		if(this.context3D != null) {
			haxe_Timer.delay($bind(this,this.__dispatchCreate),1);
		}
	}
	,requestContext3DMatchingProfiles: function(profiles) {
		this.requestContext3D();
	}
	,__createContext: function(stage,renderSession) {
		this.__stage = stage;
		if(renderSession.gl != null) {
			this.context3D = new openfl_display3D_Context3D(this,renderSession);
			this.__dispatchCreate();
		}
	}
	,__dispatchError: function() {
		this.__contextRequested = false;
		this.dispatchEvent(new openfl_events_ErrorEvent("error",false,false,"Context3D not available"));
	}
	,__dispatchCreate: function() {
		if(this.__contextRequested) {
			this.__contextRequested = false;
			this.dispatchEvent(new openfl_events_Event("context3DCreate"));
		}
	}
	,__renderCairo: function(stage,renderSession) {
		if(!this.visible) {
			return;
		}
		if(this.__contextRequested) {
			this.__dispatchError();
			this.__contextRequested = false;
		}
	}
	,__renderCanvas: function(stage,renderSession) {
		if(!this.visible) {
			return;
		}
		if(this.__contextRequested) {
			this.__dispatchError();
			this.__contextRequested = false;
		}
	}
	,__renderDOM: function(stage,renderSession) {
		if(!this.visible) {
			return;
		}
		if(this.__contextRequested && this.context3D == null) {
			this.__createContext(stage,renderSession);
		}
		if(this.context3D != null) {
			this.__resetContext3DStates();
		}
	}
	,__renderGL: function(stage,renderSession) {
		if(!this.visible) {
			return;
		}
		if(this.__contextRequested && this.context3D == null) {
			this.__createContext(stage,renderSession);
		}
		if(this.context3D != null) {
			this.__resetContext3DStates();
			if(this.context3D != null) {
				renderSession.blendModeManager.setBlendMode(null);
				if(renderSession.shaderManager.currentShader != null) {
					renderSession.shaderManager.setShader(null);
					if(this.context3D.__program != null) {
						this.context3D.__program.__use();
					}
				}
			}
			if(openfl__$internal_stage3D_GLUtils.debug) {
				renderSession.gl.getError();
			}
		}
	}
	,__resize: function(width,height) {
	}
	,__resetContext3DStates: function() {
		this.context3D.__updateBlendFactors();
		this.context3D.__updateBackbufferViewport();
	}
	,get_x: function() {
		return this.__x;
	}
	,set_x: function(value) {
		if(this.__x == value) {
			return value;
		}
		this.__x = value;
		if(this.context3D != null) {
			this.context3D.__updateBackbufferViewport();
		}
		return value;
	}
	,get_y: function() {
		return this.__y;
	}
	,set_y: function(value) {
		if(this.__y == value) {
			return value;
		}
		this.__y = value;
		if(this.context3D != null) {
			this.context3D.__updateBackbufferViewport();
		}
		return value;
	}
	,__class__: openfl_display_Stage3D
	,__properties__: {set_y:"set_y",get_y:"get_y",set_x:"set_x",get_x:"get_x"}
});
var openfl_display__$StageAlign_StageAlign_$Impl_$ = {};
$hxClasses["openfl.display._StageAlign.StageAlign_Impl_"] = openfl_display__$StageAlign_StageAlign_$Impl_$;
openfl_display__$StageAlign_StageAlign_$Impl_$.__name__ = ["openfl","display","_StageAlign","StageAlign_Impl_"];
openfl_display__$StageAlign_StageAlign_$Impl_$.fromString = function(value) {
	switch(value) {
	case "bottom":
		return 0;
	case "bottomLeft":
		return 1;
	case "bottomRight":
		return 2;
	case "left":
		return 3;
	case "right":
		return 4;
	case "top":
		return 5;
	case "topLeft":
		return 6;
	case "topRight":
		return 7;
	default:
		return null;
	}
};
openfl_display__$StageAlign_StageAlign_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "bottom";
	case 1:
		return "bottomLeft";
	case 2:
		return "bottomRight";
	case 3:
		return "left";
	case 4:
		return "right";
	case 5:
		return "top";
	case 6:
		return "topLeft";
	case 7:
		return "topRight";
	default:
		return null;
	}
};
var openfl_display__$StageDisplayState_StageDisplayState_$Impl_$ = {};
$hxClasses["openfl.display._StageDisplayState.StageDisplayState_Impl_"] = openfl_display__$StageDisplayState_StageDisplayState_$Impl_$;
openfl_display__$StageDisplayState_StageDisplayState_$Impl_$.__name__ = ["openfl","display","_StageDisplayState","StageDisplayState_Impl_"];
openfl_display__$StageDisplayState_StageDisplayState_$Impl_$.fromString = function(value) {
	switch(value) {
	case "fullScreen":
		return 0;
	case "fullScreenInteractive":
		return 1;
	case "normal":
		return 2;
	default:
		return null;
	}
};
openfl_display__$StageDisplayState_StageDisplayState_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "fullScreen";
	case 1:
		return "fullScreenInteractive";
	case 2:
		return "normal";
	default:
		return null;
	}
};
var openfl_display__$StageQuality_StageQuality_$Impl_$ = {};
$hxClasses["openfl.display._StageQuality.StageQuality_Impl_"] = openfl_display__$StageQuality_StageQuality_$Impl_$;
openfl_display__$StageQuality_StageQuality_$Impl_$.__name__ = ["openfl","display","_StageQuality","StageQuality_Impl_"];
openfl_display__$StageQuality_StageQuality_$Impl_$.fromString = function(value) {
	switch(value) {
	case "best":
		return 0;
	case "high":
		return 1;
	case "low":
		return 2;
	case "medium":
		return 3;
	default:
		return null;
	}
};
openfl_display__$StageQuality_StageQuality_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "best";
	case 1:
		return "high";
	case 2:
		return "low";
	case 3:
		return "medium";
	default:
		return null;
	}
};
var openfl_display__$StageScaleMode_StageScaleMode_$Impl_$ = {};
$hxClasses["openfl.display._StageScaleMode.StageScaleMode_Impl_"] = openfl_display__$StageScaleMode_StageScaleMode_$Impl_$;
openfl_display__$StageScaleMode_StageScaleMode_$Impl_$.__name__ = ["openfl","display","_StageScaleMode","StageScaleMode_Impl_"];
openfl_display__$StageScaleMode_StageScaleMode_$Impl_$.fromString = function(value) {
	switch(value) {
	case "exactFit":
		return 0;
	case "noBorder":
		return 1;
	case "noScale":
		return 2;
	case "showAll":
		return 3;
	default:
		return null;
	}
};
openfl_display__$StageScaleMode_StageScaleMode_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "exactFit";
	case 1:
		return "noBorder";
	case 2:
		return "noScale";
	case 3:
		return "showAll";
	default:
		return null;
	}
};
var openfl_display__$TriangleCulling_TriangleCulling_$Impl_$ = {};
$hxClasses["openfl.display._TriangleCulling.TriangleCulling_Impl_"] = openfl_display__$TriangleCulling_TriangleCulling_$Impl_$;
openfl_display__$TriangleCulling_TriangleCulling_$Impl_$.__name__ = ["openfl","display","_TriangleCulling","TriangleCulling_Impl_"];
openfl_display__$TriangleCulling_TriangleCulling_$Impl_$.fromString = function(value) {
	switch(value) {
	case "negative":
		return 0;
	case "none":
		return 1;
	case "positive":
		return 2;
	default:
		return null;
	}
};
openfl_display__$TriangleCulling_TriangleCulling_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "negative";
	case 1:
		return "none";
	case 2:
		return "positive";
	default:
		return null;
	}
};
var openfl_display_Window = function(config) {
	lime_ui_Window.call(this,config);
};
$hxClasses["openfl.display.Window"] = openfl_display_Window;
openfl_display_Window.__name__ = ["openfl","display","Window"];
openfl_display_Window.__super__ = lime_ui_Window;
openfl_display_Window.prototype = $extend(lime_ui_Window.prototype,{
	create: function(application) {
		lime_ui_Window.prototype.create.call(this,application);
		this.stage = new openfl_display_Stage(this,Object.prototype.hasOwnProperty.call(this.config,"background") ? this.config.background : 16777215);
		if(Object.prototype.hasOwnProperty.call(this.config,"parameters")) {
			try {
				this.stage.get_loaderInfo().parameters = this.config.parameters;
			} catch( e ) {
				haxe_CallStack.lastException = e;
			}
		}
		if(Object.prototype.hasOwnProperty.call(this.config,"resizable") && !this.config.resizable) {
			this.stage.__setLogicalSize(this.config.width,this.config.height);
		}
		application.addModule(this.stage);
	}
	,__class__: openfl_display_Window
});
var openfl_display3D_Context3D = function(stage3D,renderSession) {
	this.totalGPUMemory = 0;
	this.profile = 0;
	this.driverInfo = "OpenGL (Direct blitting)";
	this.backBufferWidth = 0;
	this.backBufferHeight = 0;
	openfl_events_EventDispatcher.call(this);
	this.__stage3D = stage3D;
	this.__renderSession = renderSession;
	openfl__$internal_stage3D_opengl_GLContext3D.create(this);
};
$hxClasses["openfl.display3D.Context3D"] = openfl_display3D_Context3D;
openfl_display3D_Context3D.__name__ = ["openfl","display3D","Context3D"];
openfl_display3D_Context3D.__super__ = openfl_events_EventDispatcher;
openfl_display3D_Context3D.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	backBufferHeight: null
	,backBufferWidth: null
	,driverInfo: null
	,maxBackBufferHeight: null
	,maxBackBufferWidth: null
	,profile: null
	,totalGPUMemory: null
	,__backBufferAntiAlias: null
	,__backBufferEnableDepthAndStencil: null
	,__backBufferWantsBestResolution: null
	,__depthRenderBuffer: null
	,__depthStencilRenderBuffer: null
	,__enableErrorChecking: null
	,__fragmentConstants: null
	,__framebuffer: null
	,__frameCount: null
	,__maxAnisotropyCubeTexture: null
	,__maxAnisotropyTexture2D: null
	,__positionScale: null
	,__program: null
	,__renderSession: null
	,__renderToTexture: null
	,__rttDepthAndStencil: null
	,__samplerDirty: null
	,__samplerTextures: null
	,__samplerStates: null
	,__scissorRectangle: null
	,__stage3D: null
	,__stats: null
	,__statsCache: null
	,__stencilCompareMode: null
	,__stencilRef: null
	,__stencilReadMask: null
	,__stencilRenderBuffer: null
	,__supportsAnisotropicFiltering: null
	,__supportsPackedDepthStencil: null
	,__vertexConstants: null
	,clear: function(red,green,blue,alpha,depth,stencil,mask) {
		if(mask == null) {
			mask = 7;
		}
		if(stencil == null) {
			stencil = 0;
		}
		if(depth == null) {
			depth = 1;
		}
		if(alpha == null) {
			alpha = 1;
		}
		if(blue == null) {
			blue = 0;
		}
		if(green == null) {
			green = 0;
		}
		if(red == null) {
			red = 0;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.clear(this,red,green,blue,alpha,depth,stencil,mask);
	}
	,configureBackBuffer: function(width,height,antiAlias,enableDepthAndStencil,wantsBestResolution,wantsBestResolutionOnBrowserZoom) {
		if(wantsBestResolutionOnBrowserZoom == null) {
			wantsBestResolutionOnBrowserZoom = false;
		}
		if(wantsBestResolution == null) {
			wantsBestResolution = false;
		}
		if(enableDepthAndStencil == null) {
			enableDepthAndStencil = true;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.configureBackBuffer(this,width,height,antiAlias,enableDepthAndStencil,wantsBestResolution,wantsBestResolutionOnBrowserZoom);
	}
	,createCubeTexture: function(size,format,optimizeForRenderToTexture,streamingLevels) {
		if(streamingLevels == null) {
			streamingLevels = 0;
		}
		return new openfl_display3D_textures_CubeTexture(this,size,format,optimizeForRenderToTexture,streamingLevels);
	}
	,createIndexBuffer: function(numIndices,bufferUsage) {
		if(bufferUsage == null) {
			bufferUsage = 1;
		}
		return new openfl_display3D_IndexBuffer3D(this,numIndices,bufferUsage);
	}
	,createProgram: function() {
		return new openfl_display3D_Program3D(this);
	}
	,createRectangleTexture: function(width,height,format,optimizeForRenderToTexture) {
		return new openfl_display3D_textures_RectangleTexture(this,width,height,openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.toString(format),optimizeForRenderToTexture);
	}
	,createTexture: function(width,height,format,optimizeForRenderToTexture,streamingLevels) {
		if(streamingLevels == null) {
			streamingLevels = 0;
		}
		return new openfl_display3D_textures_Texture(this,width,height,format,optimizeForRenderToTexture,streamingLevels);
	}
	,createVertexBuffer: function(numVertices,data32PerVertex,bufferUsage) {
		if(bufferUsage == null) {
			bufferUsage = 1;
		}
		return new openfl_display3D_VertexBuffer3D(this,numVertices,data32PerVertex,openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$.toString(bufferUsage));
	}
	,createVideoTexture: function() {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("Video textures are not supported on this platform"));
	}
	,dispose: function(recreate) {
		if(recreate == null) {
			recreate = true;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.dispose(this,recreate);
	}
	,drawToBitmapData: function(destination) {
		if(destination == null) {
			return;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.drawToBitmapData(this,destination);
	}
	,drawTriangles: function(indexBuffer,firstIndex,numTriangles) {
		if(numTriangles == null) {
			numTriangles = -1;
		}
		if(firstIndex == null) {
			firstIndex = 0;
		}
		if(this.__program == null) {
			return;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.drawTriangles(this,indexBuffer,firstIndex,numTriangles);
	}
	,present: function() {
		openfl__$internal_stage3D_opengl_GLContext3D.present(this);
	}
	,setBlendFactors: function(sourceFactor,destinationFactor) {
		openfl__$internal_stage3D_opengl_GLContext3D.setBlendFactors(this,sourceFactor,destinationFactor);
	}
	,setColorMask: function(red,green,blue,alpha) {
		openfl__$internal_stage3D_opengl_GLContext3D.setColorMask(this,red,green,blue,alpha);
	}
	,setCulling: function(triangleFaceToCull) {
		openfl__$internal_stage3D_opengl_GLContext3D.setCulling(this,triangleFaceToCull);
	}
	,setDepthTest: function(depthMask,passCompareMode) {
		openfl__$internal_stage3D_opengl_GLContext3D.setDepthTest(this,depthMask,passCompareMode);
	}
	,setProgram: function(program) {
		if(program == null) {
			throw new js__$Boot_HaxeError(new openfl_errors_IllegalOperationError());
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setProgram(this,program);
	}
	,setProgramConstantsFromByteArray: function(programType,firstRegister,numRegisters,data,byteArrayOffset) {
		if(numRegisters == 0) {
			return;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setProgramConstantsFromByteArray(this,programType,firstRegister,numRegisters,data,byteArrayOffset);
	}
	,setProgramConstantsFromMatrix: function(programType,firstRegister,matrix,transposedMatrix) {
		if(transposedMatrix == null) {
			transposedMatrix = false;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setProgramConstantsFromMatrix(this,programType,firstRegister,matrix,transposedMatrix);
	}
	,setProgramConstantsFromVector: function(programType,firstRegister,data,numRegisters) {
		if(numRegisters == null) {
			numRegisters = -1;
		}
		if(numRegisters == 0) {
			return;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setProgramConstantsFromVector(this,programType,firstRegister,data,numRegisters);
	}
	,setRenderToBackBuffer: function() {
		openfl__$internal_stage3D_opengl_GLContext3D.setRenderToBackBuffer(this);
	}
	,setRenderToTexture: function(texture,enableDepthAndStencil,antiAlias,surfaceSelector) {
		if(surfaceSelector == null) {
			surfaceSelector = 0;
		}
		if(antiAlias == null) {
			antiAlias = 0;
		}
		if(enableDepthAndStencil == null) {
			enableDepthAndStencil = false;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setRenderToTexture(this,texture,enableDepthAndStencil,antiAlias,surfaceSelector);
	}
	,setSamplerStateAt: function(sampler,wrap,filter,mipfilter) {
		openfl__$internal_stage3D_opengl_GLContext3D.setSamplerStateAt(this,sampler,wrap,filter,mipfilter);
	}
	,setScissorRectangle: function(rectangle) {
		openfl__$internal_stage3D_opengl_GLContext3D.setScissorRectangle(this,rectangle);
	}
	,setStencilActions: function(triangleFace,compareMode,actionOnBothPass,actionOnDepthFail,actionOnDepthPassStencilFail) {
		if(actionOnDepthPassStencilFail == null) {
			actionOnDepthPassStencilFail = 5;
		}
		if(actionOnDepthFail == null) {
			actionOnDepthFail = 5;
		}
		if(actionOnBothPass == null) {
			actionOnBothPass = 5;
		}
		if(compareMode == null) {
			compareMode = 0;
		}
		if(triangleFace == null) {
			triangleFace = 2;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setStencilActions(this,triangleFace,compareMode,actionOnBothPass,actionOnDepthFail,actionOnDepthPassStencilFail);
	}
	,setStencilReferenceValue: function(referenceValue,readMask,writeMask) {
		if(writeMask == null) {
			writeMask = 255;
		}
		if(readMask == null) {
			readMask = 255;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setStencilReferenceValue(this,referenceValue,readMask,writeMask);
	}
	,setTextureAt: function(sampler,texture) {
		openfl__$internal_stage3D_opengl_GLContext3D.setTextureAt(this,sampler,texture);
	}
	,setVertexBufferAt: function(index,buffer,bufferOffset,format) {
		if(format == null) {
			format = 4;
		}
		if(bufferOffset == null) {
			bufferOffset = 0;
		}
		openfl__$internal_stage3D_opengl_GLContext3D.setVertexBufferAt(this,index,buffer,bufferOffset,format);
	}
	,__updateBackbufferViewport: function() {
		openfl__$internal_stage3D_opengl_GLContext3D.__updateBackbufferViewportTEMP(this);
	}
	,__updateBlendFactors: function() {
		openfl__$internal_stage3D_opengl_GLContext3D.__updateBlendFactorsTEMP(this);
	}
	,get_enableErrorChecking: function() {
		return this.__enableErrorChecking;
	}
	,set_enableErrorChecking: function(value) {
		openfl__$internal_stage3D_opengl_GLContext3D.setEnableErrorChecking(value);
		return this.__enableErrorChecking = value;
	}
	,__class__: openfl_display3D_Context3D
	,__properties__: {set_enableErrorChecking:"set_enableErrorChecking",get_enableErrorChecking:"get_enableErrorChecking"}
});
var openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3D.Context3DTelemetry_Impl_"] = openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.__name__ = ["openfl","display3D","_Context3D","Context3DTelemetry_Impl_"];
var openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DBlendFactor.Context3DBlendFactor_Impl_"] = openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.__name__ = ["openfl","display3D","_Context3DBlendFactor","Context3DBlendFactor_Impl_"];
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.fromString = function(value) {
	switch(value) {
	case "destinationAlpha":
		return 0;
	case "destinationColor":
		return 1;
	case "one":
		return 2;
	case "oneMinusDestinationAlpha":
		return 3;
	case "oneMinusDestinationColor":
		return 4;
	case "oneMinusSourceAlpha":
		return 5;
	case "oneMinusSourceColor":
		return 6;
	case "sourceAlpha":
		return 7;
	case "sourceColor":
		return 8;
	case "zero":
		return 9;
	default:
		return null;
	}
};
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "destinationAlpha";
	case 1:
		return "destinationColor";
	case 2:
		return "one";
	case 3:
		return "oneMinusDestinationAlpha";
	case 4:
		return "oneMinusDestinationColor";
	case 5:
		return "oneMinusSourceAlpha";
	case 6:
		return "oneMinusSourceColor";
	case 7:
		return "sourceAlpha";
	case 8:
		return "sourceColor";
	case 9:
		return "zero";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DBufferUsage.Context3DBufferUsage_Impl_"] = openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$;
openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$.__name__ = ["openfl","display3D","_Context3DBufferUsage","Context3DBufferUsage_Impl_"];
openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$.fromString = function(value) {
	switch(value) {
	case "dynamicDraw":
		return 0;
	case "staticDraw":
		return 1;
	default:
		return null;
	}
};
openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "dynamicDraw";
	case 1:
		return "staticDraw";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DCompareMode.Context3DCompareMode_Impl_"] = openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.__name__ = ["openfl","display3D","_Context3DCompareMode","Context3DCompareMode_Impl_"];
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.fromString = function(value) {
	switch(value) {
	case "always":
		return 0;
	case "equal":
		return 1;
	case "greater":
		return 2;
	case "greaterEqual":
		return 3;
	case "less":
		return 4;
	case "lessEqual":
		return 5;
	case "never":
		return 6;
	case "notEqual":
		return 7;
	default:
		return null;
	}
};
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "always";
	case 1:
		return "equal";
	case 2:
		return "greater";
	case 3:
		return "greaterEqual";
	case 4:
		return "less";
	case 5:
		return "lessEqual";
	case 6:
		return "never";
	case 7:
		return "notEqual";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DMipFilter.Context3DMipFilter_Impl_"] = openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$;
openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$.__name__ = ["openfl","display3D","_Context3DMipFilter","Context3DMipFilter_Impl_"];
openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$.fromString = function(value) {
	switch(value) {
	case "miplinear":
		return 0;
	case "mipnearest":
		return 1;
	case "mipnone":
		return 2;
	default:
		return null;
	}
};
openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "miplinear";
	case 1:
		return "mipnearest";
	case 2:
		return "mipnone";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DProfile.Context3DProfile_Impl_"] = openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$;
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.__name__ = ["openfl","display3D","_Context3DProfile","Context3DProfile_Impl_"];
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.fromString = function(value) {
	switch(value) {
	case "baseline":
		return 0;
	case "baselineConstrained":
		return 1;
	case "baselineExtended":
		return 2;
	case "standard":
		return 3;
	case "standardConstrained":
		return 4;
	case "standardExtended":
		return 5;
	default:
		return null;
	}
};
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "baseline";
	case 1:
		return "baselineConstrained";
	case 2:
		return "baselineExtended";
	case 3:
		return "standard";
	case 4:
		return "standardConstrained";
	case 5:
		return "standardExtended";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DProgramType_Context3DProgramType_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DProgramType.Context3DProgramType_Impl_"] = openfl_display3D__$Context3DProgramType_Context3DProgramType_$Impl_$;
openfl_display3D__$Context3DProgramType_Context3DProgramType_$Impl_$.__name__ = ["openfl","display3D","_Context3DProgramType","Context3DProgramType_Impl_"];
openfl_display3D__$Context3DProgramType_Context3DProgramType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "fragment":
		return 0;
	case "vertex":
		return 1;
	default:
		return null;
	}
};
openfl_display3D__$Context3DProgramType_Context3DProgramType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "fragment";
	case 1:
		return "vertex";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DRenderMode_Context3DRenderMode_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DRenderMode.Context3DRenderMode_Impl_"] = openfl_display3D__$Context3DRenderMode_Context3DRenderMode_$Impl_$;
openfl_display3D__$Context3DRenderMode_Context3DRenderMode_$Impl_$.__name__ = ["openfl","display3D","_Context3DRenderMode","Context3DRenderMode_Impl_"];
openfl_display3D__$Context3DRenderMode_Context3DRenderMode_$Impl_$.fromString = function(value) {
	switch(value) {
	case "auto":
		return 0;
	case "software":
		return 1;
	default:
		return null;
	}
};
openfl_display3D__$Context3DRenderMode_Context3DRenderMode_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "auto";
	case 1:
		return "software";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DStencilAction.Context3DStencilAction_Impl_"] = openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.__name__ = ["openfl","display3D","_Context3DStencilAction","Context3DStencilAction_Impl_"];
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.fromString = function(value) {
	switch(value) {
	case "decrementSaturate":
		return 0;
	case "decrementWrap":
		return 1;
	case "incrementSaturate":
		return 2;
	case "incrementWrap":
		return 3;
	case "invert":
		return 4;
	case "keep":
		return 5;
	case "set":
		return 6;
	case "zero":
		return 7;
	default:
		return null;
	}
};
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "decrementSaturate";
	case 1:
		return "decrementWrap";
	case 2:
		return "incrementSaturate";
	case 3:
		return "incrementWrap";
	case 4:
		return "invert";
	case 5:
		return "keep";
	case 6:
		return "set";
	case 7:
		return "zero";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DTextureFilter.Context3DTextureFilter_Impl_"] = openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$;
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.__name__ = ["openfl","display3D","_Context3DTextureFilter","Context3DTextureFilter_Impl_"];
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.fromString = function(value) {
	switch(value) {
	case "anisotropic16x":
		return 0;
	case "anisotropic2x":
		return 1;
	case "anisotropic4x":
		return 2;
	case "anisotropic8x":
		return 3;
	case "linear":
		return 4;
	case "nearest":
		return 5;
	default:
		return null;
	}
};
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "anisotropic16x";
	case 1:
		return "anisotropic2x";
	case 2:
		return "anisotropic4x";
	case 3:
		return "anisotropic8x";
	case 4:
		return "linear";
	case 5:
		return "nearest";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DTextureFormat.Context3DTextureFormat_Impl_"] = openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$;
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.__name__ = ["openfl","display3D","_Context3DTextureFormat","Context3DTextureFormat_Impl_"];
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.fromString = function(value) {
	switch(value) {
	case "bgrPacked565":
		return 0;
	case "bgra":
		return 1;
	case "bgraPacked4444":
		return 2;
	case "compressed":
		return 3;
	case "compressedAlpha":
		return 4;
	case "rgbaHalfFloat":
		return 5;
	default:
		return null;
	}
};
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "bgrPacked565";
	case 1:
		return "bgra";
	case 2:
		return "bgraPacked4444";
	case 3:
		return "compressed";
	case 4:
		return "compressedAlpha";
	case 5:
		return "rgbaHalfFloat";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_"] = openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$;
openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$.__name__ = ["openfl","display3D","_Context3DTriangleFace","Context3DTriangleFace_Impl_"];
openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$.fromString = function(value) {
	switch(value) {
	case "back":
		return 0;
	case "front":
		return 1;
	case "frontAndBack":
		return 2;
	case "none":
		return 3;
	default:
		return null;
	}
};
openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "back";
	case 1:
		return "front";
	case 2:
		return "frontAndBack";
	case 3:
		return "none";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DVertexBufferFormat.Context3DVertexBufferFormat_Impl_"] = openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$;
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.__name__ = ["openfl","display3D","_Context3DVertexBufferFormat","Context3DVertexBufferFormat_Impl_"];
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.fromString = function(value) {
	switch(value) {
	case "bytes4":
		return 0;
	case "float1":
		return 1;
	case "float2":
		return 2;
	case "float3":
		return 3;
	case "float4":
		return 4;
	default:
		return null;
	}
};
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "bytes4";
	case 1:
		return "float1";
	case 2:
		return "float2";
	case 3:
		return "float3";
	case 4:
		return "float4";
	default:
		return null;
	}
};
var openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$ = {};
$hxClasses["openfl.display3D._Context3DWrapMode.Context3DWrapMode_Impl_"] = openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$;
openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$.__name__ = ["openfl","display3D","_Context3DWrapMode","Context3DWrapMode_Impl_"];
openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$.fromString = function(value) {
	switch(value) {
	case "clamp":
		return 0;
	case "clamp_u_repeat_y":
		return 1;
	case "repeat":
		return 2;
	case "repeat_u_clamp_y":
		return 3;
	default:
		return null;
	}
};
openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "clamp";
	case 1:
		return "clamp_u_repeat_y";
	case 2:
		return "repeat";
	case 3:
		return "repeat_u_clamp_y";
	default:
		return null;
	}
};
var openfl_display3D_IndexBuffer3D = function(context3D,numIndices,bufferUsage) {
	this.__context = context3D;
	this.__numIndices = numIndices;
	openfl__$internal_stage3D_opengl_GLIndexBuffer3D.create(this,this.__context.__renderSession,bufferUsage);
};
$hxClasses["openfl.display3D.IndexBuffer3D"] = openfl_display3D_IndexBuffer3D;
openfl_display3D_IndexBuffer3D.__name__ = ["openfl","display3D","IndexBuffer3D"];
openfl_display3D_IndexBuffer3D.prototype = {
	__context: null
	,__elementType: null
	,__id: null
	,__memoryUsage: null
	,__numIndices: null
	,__tempInt16Array: null
	,__usage: null
	,dispose: function() {
		openfl__$internal_stage3D_opengl_GLIndexBuffer3D.dispose(this,this.__context.__renderSession);
	}
	,uploadFromByteArray: function(data,byteArrayOffset,startOffset,count) {
		openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromByteArray(this,this.__context.__renderSession,data,byteArrayOffset,startOffset,count);
	}
	,uploadFromTypedArray: function(data,byteLength) {
		if(byteLength == null) {
			byteLength = -1;
		}
		openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromTypedArray(this,this.__context.__renderSession,data);
	}
	,uploadFromVector: function(data,startOffset,count) {
		openfl__$internal_stage3D_opengl_GLIndexBuffer3D.uploadFromVector(this,this.__context.__renderSession,data,startOffset,count);
	}
	,__class__: openfl_display3D_IndexBuffer3D
};
var openfl_display3D_Program3D = function(context3D) {
	this.__context = context3D;
	this.__memUsage = 0;
	this.__samplerUsageMask = 0;
	this.__uniforms = new List();
	this.__samplerUniforms = new List();
	this.__alphaSamplerUniforms = new List();
	this.__alphaSamplerEnabled = [];
	this.__samplerStates = openfl__$Vector_Vector_$Impl_$.toObjectVector(null,8);
};
$hxClasses["openfl.display3D.Program3D"] = openfl_display3D_Program3D;
openfl_display3D_Program3D.__name__ = ["openfl","display3D","Program3D"];
openfl_display3D_Program3D.prototype = {
	__alphaSamplerEnabled: null
	,__alphaSamplerUniforms: null
	,__context: null
	,__fragmentShaderID: null
	,__fragmentSource: null
	,__fragmentUniformMap: null
	,__memUsage: null
	,__positionScale: null
	,__programID: null
	,__samplerStates: null
	,__samplerUniforms: null
	,__samplerUsageMask: null
	,__uniforms: null
	,__vertexShaderID: null
	,__vertexSource: null
	,__vertexUniformMap: null
	,dispose: function() {
		openfl__$internal_stage3D_opengl_GLProgram3D.dispose(this,this.__context.__renderSession);
	}
	,upload: function(vertexProgram,fragmentProgram) {
		openfl__$internal_stage3D_opengl_GLProgram3D.upload(this,this.__context.__renderSession,vertexProgram,fragmentProgram);
	}
	,__flush: function() {
		this.__vertexUniformMap.flush();
		this.__fragmentUniformMap.flush();
	}
	,__getSamplerState: function(sampler) {
		return this.__samplerStates.data.get(sampler);
	}
	,__markDirty: function(isVertex,index,count) {
		if(isVertex) {
			this.__vertexUniformMap.markDirty(index,count);
		} else {
			this.__fragmentUniformMap.markDirty(index,count);
		}
	}
	,__setPositionScale: function(positionScale) {
		if(this.__positionScale != null) {
			openfl__$internal_stage3D_opengl_GLProgram3D.setPositionScale(this,this.__context.__renderSession,positionScale);
		}
	}
	,__setSamplerState: function(sampler,state) {
		this.__samplerStates.data.set(sampler,state);
	}
	,__use: function() {
		openfl__$internal_stage3D_opengl_GLProgram3D["use"](this,this.__context.__renderSession);
	}
	,__class__: openfl_display3D_Program3D
};
var openfl_display3D_Uniform = function(gl) {
	this.gl = gl;
	this.isDirty = true;
	var this1 = new lime_utils_BytePointerData(null,0);
	this.regDataPointer = this1;
};
$hxClasses["openfl.display3D.Uniform"] = openfl_display3D_Uniform;
openfl_display3D_Uniform.__name__ = ["openfl","display3D","Uniform"];
openfl_display3D_Uniform.prototype = {
	name: null
	,location: null
	,type: null
	,size: null
	,regData: null
	,regIndex: null
	,regCount: null
	,isDirty: null
	,gl: null
	,regDataPointer: null
	,flush: function() {
		openfl__$internal_stage3D_opengl_GLProgram3D.flushUniform(this,this.gl);
	}
	,__class__: openfl_display3D_Uniform
};
var openfl_display3D_UniformMap = function(list) {
	this.__uniforms = list;
	this.__uniforms.sort(function(a,b) {
		return Reflect.compare(a.regIndex,b.regIndex);
	});
	var total = 0;
	var _g = 0;
	var _g1 = this.__uniforms;
	while(_g < _g1.length) {
		var uniform = _g1[_g];
		++_g;
		if(uniform.regIndex + uniform.regCount > total) {
			total = uniform.regIndex + uniform.regCount;
		}
	}
	this.__registerLookup = openfl__$Vector_Vector_$Impl_$.toObjectVector(null,total);
	var _g2 = 0;
	var _g11 = this.__uniforms;
	while(_g2 < _g11.length) {
		var uniform1 = _g11[_g2];
		++_g2;
		var _g3 = 0;
		var _g21 = uniform1.regCount;
		while(_g3 < _g21) {
			var i = _g3++;
			this.__registerLookup.data.set(uniform1.regIndex + i,uniform1);
		}
	}
	this.__anyDirty = this.__allDirty = true;
};
$hxClasses["openfl.display3D.UniformMap"] = openfl_display3D_UniformMap;
openfl_display3D_UniformMap.__name__ = ["openfl","display3D","UniformMap"];
openfl_display3D_UniformMap.prototype = {
	__allDirty: null
	,__anyDirty: null
	,__registerLookup: null
	,__uniforms: null
	,flush: function() {
		if(this.__anyDirty) {
			var _g = 0;
			var _g1 = this.__uniforms;
			while(_g < _g1.length) {
				var uniform = _g1[_g];
				++_g;
				if(this.__allDirty || uniform.isDirty) {
					uniform.flush();
					uniform.isDirty = false;
				}
			}
			this.__anyDirty = this.__allDirty = false;
		}
	}
	,markAllDirty: function() {
		this.__allDirty = true;
		this.__anyDirty = true;
	}
	,markDirty: function(start,count) {
		if(this.__allDirty) {
			return;
		}
		var end = start + count;
		if(end > this.__registerLookup.data.get_length()) {
			end = this.__registerLookup.data.get_length();
		}
		var index = start;
		while(index < end) {
			var uniform = this.__registerLookup.data.get(index);
			if(uniform != null) {
				uniform.isDirty = true;
				this.__anyDirty = true;
				index = uniform.regIndex + uniform.regCount;
			} else {
				++index;
			}
		}
	}
	,__class__: openfl_display3D_UniformMap
};
var openfl_display3D_VertexBuffer3D = function(context3D,numVertices,dataPerVertex,bufferUsage) {
	this.__context = context3D;
	this.__numVertices = numVertices;
	this.__vertexSize = dataPerVertex;
	openfl__$internal_stage3D_opengl_GLVertexBuffer3D.create(this,this.__context.__renderSession,openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$.fromString(bufferUsage));
};
$hxClasses["openfl.display3D.VertexBuffer3D"] = openfl_display3D_VertexBuffer3D;
openfl_display3D_VertexBuffer3D.__name__ = ["openfl","display3D","VertexBuffer3D"];
openfl_display3D_VertexBuffer3D.prototype = {
	__context: null
	,__data: null
	,__id: null
	,__memoryUsage: null
	,__numVertices: null
	,__stride: null
	,__tempFloat32Array: null
	,__usage: null
	,__vertexSize: null
	,dispose: function() {
		openfl__$internal_stage3D_opengl_GLVertexBuffer3D.dispose(this,this.__context.__renderSession);
	}
	,uploadFromByteArray: function(data,byteArrayOffset,startVertex,numVertices) {
		openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromByteArray(this,this.__context.__renderSession,data,byteArrayOffset,startVertex,numVertices);
	}
	,uploadFromTypedArray: function(data,byteLength) {
		if(byteLength == null) {
			byteLength = -1;
		}
		openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromTypedArray(this,this.__context.__renderSession,data);
	}
	,uploadFromVector: function(data,startVertex,numVertices) {
		openfl__$internal_stage3D_opengl_GLVertexBuffer3D.uploadFromVector(this,this.__context.__renderSession,data,startVertex,numVertices);
	}
	,__class__: openfl_display3D_VertexBuffer3D
};
var openfl_display3D_textures_TextureBase = function(context) {
	openfl_events_EventDispatcher.call(this);
	this.__context = context;
	openfl__$internal_stage3D_opengl_GLTextureBase.create(this,this.__context.__renderSession);
};
$hxClasses["openfl.display3D.textures.TextureBase"] = openfl_display3D_textures_TextureBase;
openfl_display3D_textures_TextureBase.__name__ = ["openfl","display3D","textures","TextureBase"];
openfl_display3D_textures_TextureBase.__super__ = openfl_events_EventDispatcher;
openfl_display3D_textures_TextureBase.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	__alphaTexture: null
	,__context: null
	,__format: null
	,__height: null
	,__internalFormat: null
	,__optimizeForRenderToTexture: null
	,__samplerState: null
	,__streamingLevels: null
	,__textureContext: null
	,__textureID: null
	,__textureTarget: null
	,__width: null
	,dispose: function() {
		openfl__$internal_stage3D_opengl_GLTextureBase.dispose(this,this.__context.__renderSession);
	}
	,__getImage: function(bitmapData) {
		return openfl__$internal_stage3D_opengl_GLTextureBase.getImage(this,this.__context.__renderSession,bitmapData);
	}
	,__getTexture: function() {
		return this.__textureID;
	}
	,__setSamplerState: function(state) {
		openfl__$internal_stage3D_opengl_GLTextureBase.setSamplerState(this,this.__context.__renderSession,state);
	}
	,__class__: openfl_display3D_textures_TextureBase
});
var openfl_display3D_textures_CubeTexture = function(context,size,format,optimizeForRenderToTexture,streamingLevels) {
	openfl_display3D_textures_TextureBase.call(this,context);
	this.__size = size;
	this.__optimizeForRenderToTexture = optimizeForRenderToTexture;
	this.__streamingLevels = streamingLevels;
	openfl__$internal_stage3D_opengl_GLCubeTexture.create(this,this.__context.__renderSession);
};
$hxClasses["openfl.display3D.textures.CubeTexture"] = openfl_display3D_textures_CubeTexture;
openfl_display3D_textures_CubeTexture.__name__ = ["openfl","display3D","textures","CubeTexture"];
openfl_display3D_textures_CubeTexture.__super__ = openfl_display3D_textures_TextureBase;
openfl_display3D_textures_CubeTexture.prototype = $extend(openfl_display3D_textures_TextureBase.prototype,{
	__size: null
	,__uploadedSides: null
	,uploadCompressedTextureFromByteArray: function(data,byteArrayOffset,async) {
		if(async == null) {
			async = false;
		}
		var _gthis = this;
		if(!async) {
			openfl__$internal_stage3D_opengl_GLCubeTexture.uploadCompressedTextureFromByteArray(this,this.__context.__renderSession,data,byteArrayOffset);
		} else {
			haxe_Timer.delay(function() {
				openfl__$internal_stage3D_opengl_GLCubeTexture.uploadCompressedTextureFromByteArray(_gthis,_gthis.__context.__renderSession,data,byteArrayOffset);
				_gthis.dispatchEvent(new openfl_events_Event("textureReady"));
			},1);
		}
	}
	,uploadFromBitmapData: function(source,side,miplevel,generateMipmap) {
		if(generateMipmap == null) {
			generateMipmap = false;
		}
		if(miplevel == null) {
			miplevel = 0;
		}
		if(source == null) {
			return;
		}
		openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromBitmapData(this,this.__context.__renderSession,source,side,miplevel,generateMipmap);
	}
	,uploadFromByteArray: function(data,byteArrayOffset,side,miplevel) {
		if(miplevel == null) {
			miplevel = 0;
		}
		openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromByteArray(this,this.__context.__renderSession,data,byteArrayOffset,side,miplevel);
	}
	,uploadFromTypedArray: function(data,side,miplevel) {
		if(miplevel == null) {
			miplevel = 0;
		}
		if(data == null) {
			return;
		}
		openfl__$internal_stage3D_opengl_GLCubeTexture.uploadFromTypedArray(this,this.__context.__renderSession,data,side,miplevel);
	}
	,__setSamplerState: function(state) {
		openfl__$internal_stage3D_opengl_GLCubeTexture.setSamplerState(this,this.__context.__renderSession,state);
	}
	,__class__: openfl_display3D_textures_CubeTexture
});
var openfl_display3D_textures_RectangleTexture = function(context,width,height,format,optimizeForRenderToTexture) {
	openfl_display3D_textures_TextureBase.call(this,context);
	this.__width = width;
	this.__height = height;
	this.__optimizeForRenderToTexture = optimizeForRenderToTexture;
	openfl__$internal_stage3D_opengl_GLRectangleTexture.create(this,this.__context.__renderSession);
};
$hxClasses["openfl.display3D.textures.RectangleTexture"] = openfl_display3D_textures_RectangleTexture;
openfl_display3D_textures_RectangleTexture.__name__ = ["openfl","display3D","textures","RectangleTexture"];
openfl_display3D_textures_RectangleTexture.__super__ = openfl_display3D_textures_TextureBase;
openfl_display3D_textures_RectangleTexture.prototype = $extend(openfl_display3D_textures_TextureBase.prototype,{
	uploadFromBitmapData: function(source) {
		openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromBitmapData(this,this.__context.__renderSession,source);
	}
	,uploadFromByteArray: function(data,byteArrayOffset) {
		openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromByteArray(this,this.__context.__renderSession,data,byteArrayOffset);
	}
	,uploadFromTypedArray: function(data) {
		openfl__$internal_stage3D_opengl_GLRectangleTexture.uploadFromTypedArray(this,this.__context.__renderSession,data);
	}
	,__setSamplerState: function(state) {
		openfl__$internal_stage3D_opengl_GLRectangleTexture.setSamplerState(this,this.__context.__renderSession,state);
	}
	,__class__: openfl_display3D_textures_RectangleTexture
});
var openfl_display3D_textures_Texture = function(context,width,height,format,optimizeForRenderToTexture,streamingLevels) {
	openfl_display3D_textures_TextureBase.call(this,context);
	this.__width = width;
	this.__height = height;
	this.__optimizeForRenderToTexture = optimizeForRenderToTexture;
	this.__streamingLevels = streamingLevels;
	openfl__$internal_stage3D_opengl_GLTexture.create(this,this.__context.__renderSession);
};
$hxClasses["openfl.display3D.textures.Texture"] = openfl_display3D_textures_Texture;
openfl_display3D_textures_Texture.__name__ = ["openfl","display3D","textures","Texture"];
openfl_display3D_textures_Texture.__super__ = openfl_display3D_textures_TextureBase;
openfl_display3D_textures_Texture.prototype = $extend(openfl_display3D_textures_TextureBase.prototype,{
	uploadCompressedTextureFromByteArray: function(data,byteArrayOffset,async) {
		if(async == null) {
			async = false;
		}
		var _gthis = this;
		if(!async) {
			openfl__$internal_stage3D_opengl_GLTexture.uploadCompressedTextureFromByteArray(this,this.__context.__renderSession,data,byteArrayOffset);
		} else {
			haxe_Timer.delay(function() {
				openfl__$internal_stage3D_opengl_GLTexture.uploadCompressedTextureFromByteArray(_gthis,_gthis.__context.__renderSession,data,byteArrayOffset);
				_gthis.dispatchEvent(new openfl_events_Event("textureReady"));
			},1);
		}
	}
	,uploadFromBitmapData: function(source,miplevel,generateMipmap) {
		if(generateMipmap == null) {
			generateMipmap = false;
		}
		if(miplevel == null) {
			miplevel = 0;
		}
		openfl__$internal_stage3D_opengl_GLTexture.uploadFromBitmapData(this,this.__context.__renderSession,source,miplevel,generateMipmap);
	}
	,uploadFromByteArray: function(data,byteArrayOffset,miplevel) {
		if(miplevel == null) {
			miplevel = 0;
		}
		openfl__$internal_stage3D_opengl_GLTexture.uploadFromByteArray(this,this.__context.__renderSession,data,byteArrayOffset,miplevel);
	}
	,uploadFromTypedArray: function(data,miplevel) {
		if(miplevel == null) {
			miplevel = 0;
		}
		openfl__$internal_stage3D_opengl_GLTexture.uploadFromTypedArray(this,this.__context.__renderSession,data,miplevel);
	}
	,__setSamplerState: function(state) {
		openfl__$internal_stage3D_opengl_GLTexture.setSamplerState(this,this.__context.__renderSession,state);
	}
	,__class__: openfl_display3D_textures_Texture
});
var openfl_display3D_textures_VideoTexture = function(context) {
	openfl_display3D_textures_TextureBase.call(this,context);
	openfl__$internal_stage3D_opengl_GLVideoTexture.create(this,this.__context.__renderSession);
};
$hxClasses["openfl.display3D.textures.VideoTexture"] = openfl_display3D_textures_VideoTexture;
openfl_display3D_textures_VideoTexture.__name__ = ["openfl","display3D","textures","VideoTexture"];
openfl_display3D_textures_VideoTexture.__super__ = openfl_display3D_textures_TextureBase;
openfl_display3D_textures_VideoTexture.prototype = $extend(openfl_display3D_textures_TextureBase.prototype,{
	videoHeight: null
	,videoWidth: null
	,__netStream: null
	,attachNetStream: function(netStream) {
		this.__netStream = netStream;
	}
	,__getTexture: function() {
		return openfl__$internal_stage3D_opengl_GLVideoTexture.getTexture(this,this.__context.__renderSession);
	}
	,__textureReady: function() {
		this.dispatchEvent(new openfl_events_Event("textureReady"));
	}
	,__class__: openfl_display3D_textures_VideoTexture
});
var openfl_errors_Error = function(message,id) {
	if(id == null) {
		id = 0;
	}
	if(message == null) {
		message = "";
	}
	this.message = message;
	this.errorID = id;
	this.name = "Error";
};
$hxClasses["openfl.errors.Error"] = openfl_errors_Error;
openfl_errors_Error.__name__ = ["openfl","errors","Error"];
openfl_errors_Error.prototype = {
	errorID: null
	,message: null
	,name: null
	,getStackTrace: function() {
		return haxe_CallStack.toString(haxe_CallStack.exceptionStack());
	}
	,toString: function() {
		if(this.message != null) {
			return this.message;
		} else {
			return "Error";
		}
	}
	,__class__: openfl_errors_Error
};
var openfl_errors_ArgumentError = function(message) {
	if(message == null) {
		message = "";
	}
	openfl_errors_Error.call(this,message);
	this.name = "ArgumentError";
};
$hxClasses["openfl.errors.ArgumentError"] = openfl_errors_ArgumentError;
openfl_errors_ArgumentError.__name__ = ["openfl","errors","ArgumentError"];
openfl_errors_ArgumentError.__super__ = openfl_errors_Error;
openfl_errors_ArgumentError.prototype = $extend(openfl_errors_Error.prototype,{
	__class__: openfl_errors_ArgumentError
});
var openfl_errors_IOError = function(message) {
	if(message == null) {
		message = "";
	}
	openfl_errors_Error.call(this,message);
	this.name = "IOError";
};
$hxClasses["openfl.errors.IOError"] = openfl_errors_IOError;
openfl_errors_IOError.__name__ = ["openfl","errors","IOError"];
openfl_errors_IOError.__super__ = openfl_errors_Error;
openfl_errors_IOError.prototype = $extend(openfl_errors_Error.prototype,{
	__class__: openfl_errors_IOError
});
var openfl_errors_EOFError = function() {
	openfl_errors_IOError.call(this,"End of file was encountered");
	this.name = "EOFError";
	this.errorID = 2030;
};
$hxClasses["openfl.errors.EOFError"] = openfl_errors_EOFError;
openfl_errors_EOFError.__name__ = ["openfl","errors","EOFError"];
openfl_errors_EOFError.__super__ = openfl_errors_IOError;
openfl_errors_EOFError.prototype = $extend(openfl_errors_IOError.prototype,{
	__class__: openfl_errors_EOFError
});
var openfl_errors_IllegalOperationError = function(message) {
	if(message == null) {
		message = "";
	}
	openfl_errors_Error.call(this,message,0);
	this.name = "IllegalOperationError";
};
$hxClasses["openfl.errors.IllegalOperationError"] = openfl_errors_IllegalOperationError;
openfl_errors_IllegalOperationError.__name__ = ["openfl","errors","IllegalOperationError"];
openfl_errors_IllegalOperationError.__super__ = openfl_errors_Error;
openfl_errors_IllegalOperationError.prototype = $extend(openfl_errors_Error.prototype,{
	__class__: openfl_errors_IllegalOperationError
});
var openfl_errors_RangeError = function(message) {
	if(message == null) {
		message = "";
	}
	openfl_errors_Error.call(this,message,0);
	this.name = "RangeError";
};
$hxClasses["openfl.errors.RangeError"] = openfl_errors_RangeError;
openfl_errors_RangeError.__name__ = ["openfl","errors","RangeError"];
openfl_errors_RangeError.__super__ = openfl_errors_Error;
openfl_errors_RangeError.prototype = $extend(openfl_errors_Error.prototype,{
	__class__: openfl_errors_RangeError
});
var openfl_errors_TypeError = function(message) {
	if(message == null) {
		message = "";
	}
	openfl_errors_Error.call(this,message,0);
	this.name = "TypeError";
};
$hxClasses["openfl.errors.TypeError"] = openfl_errors_TypeError;
openfl_errors_TypeError.__name__ = ["openfl","errors","TypeError"];
openfl_errors_TypeError.__super__ = openfl_errors_Error;
openfl_errors_TypeError.prototype = $extend(openfl_errors_Error.prototype,{
	__class__: openfl_errors_TypeError
});
var openfl_events_ActivityEvent = function(type,bubbles,cancelable,activating) {
	if(activating == null) {
		activating = false;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.activating = activating;
};
$hxClasses["openfl.events.ActivityEvent"] = openfl_events_ActivityEvent;
openfl_events_ActivityEvent.__name__ = ["openfl","events","ActivityEvent"];
openfl_events_ActivityEvent.__super__ = openfl_events_Event;
openfl_events_ActivityEvent.prototype = $extend(openfl_events_Event.prototype,{
	activating: null
	,clone: function() {
		var event = new openfl_events_ActivityEvent(this.type,this.bubbles,this.cancelable,this.activating);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("ActivityEvent",["type","bubbles","cancelable","activating"]);
	}
	,__class__: openfl_events_ActivityEvent
});
var openfl_events_TextEvent = function(type,bubbles,cancelable,text) {
	if(text == null) {
		text = "";
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.text = text;
};
$hxClasses["openfl.events.TextEvent"] = openfl_events_TextEvent;
openfl_events_TextEvent.__name__ = ["openfl","events","TextEvent"];
openfl_events_TextEvent.__super__ = openfl_events_Event;
openfl_events_TextEvent.prototype = $extend(openfl_events_Event.prototype,{
	text: null
	,clone: function() {
		var event = new openfl_events_TextEvent(this.type,this.bubbles,this.cancelable,this.text);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("TextEvent",["type","bubbles","cancelable","text"]);
	}
	,__class__: openfl_events_TextEvent
});
var openfl_events_ErrorEvent = function(type,bubbles,cancelable,text,id) {
	if(id == null) {
		id = 0;
	}
	if(text == null) {
		text = "";
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_TextEvent.call(this,type,bubbles,cancelable,text);
	this.errorID = id;
};
$hxClasses["openfl.events.ErrorEvent"] = openfl_events_ErrorEvent;
openfl_events_ErrorEvent.__name__ = ["openfl","events","ErrorEvent"];
openfl_events_ErrorEvent.__super__ = openfl_events_TextEvent;
openfl_events_ErrorEvent.prototype = $extend(openfl_events_TextEvent.prototype,{
	errorID: null
	,clone: function() {
		var event = new openfl_events_ErrorEvent(this.type,this.bubbles,this.cancelable,this.text,this.errorID);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("ErrorEvent",["type","bubbles","cancelable","text","errorID"]);
	}
	,__class__: openfl_events_ErrorEvent
});
var openfl_events__$EventDispatcher_DispatchIterator = function(list) {
	this.list = list;
	this.index = list.length;
};
$hxClasses["openfl.events._EventDispatcher.DispatchIterator"] = openfl_events__$EventDispatcher_DispatchIterator;
openfl_events__$EventDispatcher_DispatchIterator.__name__ = ["openfl","events","_EventDispatcher","DispatchIterator"];
openfl_events__$EventDispatcher_DispatchIterator.prototype = {
	active: null
	,index: null
	,isCopy: null
	,list: null
	,copy: function() {
		if(!this.isCopy) {
			this.list = this.list.slice();
			this.isCopy = true;
		}
	}
	,hasNext: function() {
		if(this.index < this.list.length) {
			return true;
		} else {
			this.active = false;
			return false;
		}
	}
	,next: function() {
		return this.list[this.index++];
	}
	,remove: function(listener,listIndex) {
		if(this.active) {
			if(!this.isCopy) {
				if(listIndex < this.index) {
					this.index--;
				}
			} else {
				var _g1 = this.index;
				var _g = this.list.length;
				while(_g1 < _g) {
					var i = _g1++;
					if(this.list[i] == listener) {
						this.list.splice(i,1);
						break;
					}
				}
			}
		}
	}
	,reset: function(list) {
		this.list = list;
		this.active = true;
		this.isCopy = false;
		this.index = 0;
	}
	,__class__: openfl_events__$EventDispatcher_DispatchIterator
};
var openfl_events__$EventDispatcher_Listener = function(callback,useCapture,priority) {
	this.callback = callback;
	this.useCapture = useCapture;
	this.priority = priority;
};
$hxClasses["openfl.events._EventDispatcher.Listener"] = openfl_events__$EventDispatcher_Listener;
openfl_events__$EventDispatcher_Listener.__name__ = ["openfl","events","_EventDispatcher","Listener"];
openfl_events__$EventDispatcher_Listener.prototype = {
	callback: null
	,priority: null
	,useCapture: null
	,match: function(callback,useCapture) {
		if(Reflect.compareMethods(this.callback,callback)) {
			return this.useCapture == useCapture;
		} else {
			return false;
		}
	}
	,__class__: openfl_events__$EventDispatcher_Listener
};
var openfl_events_FocusEvent = function(type,bubbles,cancelable,relatedObject,shiftKey,keyCode) {
	if(keyCode == null) {
		keyCode = 0;
	}
	if(shiftKey == null) {
		shiftKey = false;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.keyCode = keyCode;
	this.shiftKey = shiftKey;
	this.relatedObject = relatedObject;
};
$hxClasses["openfl.events.FocusEvent"] = openfl_events_FocusEvent;
openfl_events_FocusEvent.__name__ = ["openfl","events","FocusEvent"];
openfl_events_FocusEvent.__super__ = openfl_events_Event;
openfl_events_FocusEvent.prototype = $extend(openfl_events_Event.prototype,{
	keyCode: null
	,relatedObject: null
	,shiftKey: null
	,clone: function() {
		var event = new openfl_events_FocusEvent(this.type,this.bubbles,this.cancelable,this.relatedObject,this.shiftKey,this.keyCode);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("FocusEvent",["type","bubbles","cancelable","relatedObject","shiftKey","keyCode"]);
	}
	,__class__: openfl_events_FocusEvent
});
var openfl_events_FullScreenEvent = function(type,bubbles,cancelable,fullScreen,interactive) {
	if(interactive == null) {
		interactive = false;
	}
	if(fullScreen == null) {
		fullScreen = false;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_ActivityEvent.call(this,type,bubbles,cancelable);
	this.fullScreen = fullScreen;
	this.interactive = interactive;
};
$hxClasses["openfl.events.FullScreenEvent"] = openfl_events_FullScreenEvent;
openfl_events_FullScreenEvent.__name__ = ["openfl","events","FullScreenEvent"];
openfl_events_FullScreenEvent.__super__ = openfl_events_ActivityEvent;
openfl_events_FullScreenEvent.prototype = $extend(openfl_events_ActivityEvent.prototype,{
	fullScreen: null
	,interactive: null
	,clone: function() {
		var event = new openfl_events_FullScreenEvent(this.type,this.bubbles,this.cancelable,this.fullScreen,this.interactive);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("FullscreenEvent",["type","bubbles","cancelable","fullscreen","interactive"]);
	}
	,__class__: openfl_events_FullScreenEvent
});
var openfl_events_GameInputEvent = function(type,bubbles,cancelable,device) {
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = true;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.device = device;
};
$hxClasses["openfl.events.GameInputEvent"] = openfl_events_GameInputEvent;
openfl_events_GameInputEvent.__name__ = ["openfl","events","GameInputEvent"];
openfl_events_GameInputEvent.__super__ = openfl_events_Event;
openfl_events_GameInputEvent.prototype = $extend(openfl_events_Event.prototype,{
	device: null
	,clone: function() {
		var event = new openfl_events_GameInputEvent(this.type,this.bubbles,this.cancelable,this.device);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("GameInputEvent",["type","bubbles","cancelable","device"]);
	}
	,__class__: openfl_events_GameInputEvent
});
var openfl_events_HTTPStatusEvent = function(type,bubbles,cancelable,status,redirected) {
	if(redirected == null) {
		redirected = false;
	}
	if(status == null) {
		status = 0;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	this.status = status;
	this.redirected = redirected;
	openfl_events_Event.call(this,type,bubbles,cancelable);
};
$hxClasses["openfl.events.HTTPStatusEvent"] = openfl_events_HTTPStatusEvent;
openfl_events_HTTPStatusEvent.__name__ = ["openfl","events","HTTPStatusEvent"];
openfl_events_HTTPStatusEvent.__super__ = openfl_events_Event;
openfl_events_HTTPStatusEvent.prototype = $extend(openfl_events_Event.prototype,{
	redirected: null
	,responseHeaders: null
	,responseURL: null
	,status: null
	,clone: function() {
		var event = new openfl_events_HTTPStatusEvent(this.type,this.bubbles,null,this.status,this.redirected);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("HTTPStatusEvent",["type","bubbles","cancelable","status","redirected"]);
	}
	,__class__: openfl_events_HTTPStatusEvent
});
var openfl_events_IOErrorEvent = function(type,bubbles,cancelable,text,id) {
	if(id == null) {
		id = 0;
	}
	if(text == null) {
		text = "";
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = true;
	}
	openfl_events_ErrorEvent.call(this,type,bubbles,cancelable,text,id);
};
$hxClasses["openfl.events.IOErrorEvent"] = openfl_events_IOErrorEvent;
openfl_events_IOErrorEvent.__name__ = ["openfl","events","IOErrorEvent"];
openfl_events_IOErrorEvent.__super__ = openfl_events_ErrorEvent;
openfl_events_IOErrorEvent.prototype = $extend(openfl_events_ErrorEvent.prototype,{
	clone: function() {
		var event = new openfl_events_IOErrorEvent(this.type,this.bubbles,this.cancelable,this.text,this.errorID);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("IOErrorEvent",["type","bubbles","cancelable","text","errorID"]);
	}
	,__class__: openfl_events_IOErrorEvent
});
var openfl_events_KeyboardEvent = function(type,bubbles,cancelable,charCodeValue,keyCodeValue,keyLocationValue,ctrlKeyValue,altKeyValue,shiftKeyValue,controlKeyValue,commandKeyValue) {
	if(commandKeyValue == null) {
		commandKeyValue = false;
	}
	if(controlKeyValue == null) {
		controlKeyValue = false;
	}
	if(shiftKeyValue == null) {
		shiftKeyValue = false;
	}
	if(altKeyValue == null) {
		altKeyValue = false;
	}
	if(ctrlKeyValue == null) {
		ctrlKeyValue = false;
	}
	if(keyCodeValue == null) {
		keyCodeValue = 0;
	}
	if(charCodeValue == null) {
		charCodeValue = 0;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.charCode = charCodeValue;
	this.keyCode = keyCodeValue;
	this.keyLocation = keyLocationValue != null ? keyLocationValue : 0;
	this.ctrlKey = ctrlKeyValue;
	this.altKey = altKeyValue;
	this.shiftKey = shiftKeyValue;
	this.controlKey = controlKeyValue;
	this.commandKey = commandKeyValue;
};
$hxClasses["openfl.events.KeyboardEvent"] = openfl_events_KeyboardEvent;
openfl_events_KeyboardEvent.__name__ = ["openfl","events","KeyboardEvent"];
openfl_events_KeyboardEvent.__super__ = openfl_events_Event;
openfl_events_KeyboardEvent.prototype = $extend(openfl_events_Event.prototype,{
	altKey: null
	,charCode: null
	,ctrlKey: null
	,commandKey: null
	,controlKey: null
	,keyCode: null
	,keyLocation: null
	,shiftKey: null
	,clone: function() {
		var event = new openfl_events_KeyboardEvent(this.type,this.bubbles,this.cancelable,this.charCode,this.keyCode,this.keyLocation,this.ctrlKey,this.altKey,this.shiftKey,this.controlKey,this.commandKey);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("KeyboardEvent",["type","bubbles","cancelable","charCode","keyCode","keyLocation","ctrlKey","altKey","shiftKey"]);
	}
	,__class__: openfl_events_KeyboardEvent
});
var openfl_events_MouseEvent = function(type,bubbles,cancelable,localX,localY,relatedObject,ctrlKey,altKey,shiftKey,buttonDown,delta,commandKey,clickCount) {
	if(clickCount == null) {
		clickCount = 0;
	}
	if(commandKey == null) {
		commandKey = false;
	}
	if(delta == null) {
		delta = 0;
	}
	if(buttonDown == null) {
		buttonDown = false;
	}
	if(shiftKey == null) {
		shiftKey = false;
	}
	if(altKey == null) {
		altKey = false;
	}
	if(ctrlKey == null) {
		ctrlKey = false;
	}
	if(localY == null) {
		localY = 0;
	}
	if(localX == null) {
		localX = 0;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = true;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.shiftKey = shiftKey;
	this.altKey = altKey;
	this.ctrlKey = ctrlKey;
	this.bubbles = bubbles;
	this.relatedObject = relatedObject;
	this.delta = delta;
	this.localX = localX;
	this.localY = localY;
	this.buttonDown = buttonDown;
	this.commandKey = commandKey;
	this.clickCount = clickCount;
	this.isRelatedObjectInaccessible = false;
	this.stageX = NaN;
	this.stageY = NaN;
};
$hxClasses["openfl.events.MouseEvent"] = openfl_events_MouseEvent;
openfl_events_MouseEvent.__name__ = ["openfl","events","MouseEvent"];
openfl_events_MouseEvent.__create = function(type,button,stageX,stageY,local,target,delta) {
	if(delta == null) {
		delta = 0;
	}
	var event = new openfl_events_MouseEvent(type,true,false,local.x,local.y,null,openfl_events_MouseEvent.__ctrlKey,openfl_events_MouseEvent.__altKey,openfl_events_MouseEvent.__shiftKey,openfl_events_MouseEvent.__buttonDown,delta,openfl_events_MouseEvent.__commandKey);
	event.stageX = stageX;
	event.stageY = stageY;
	event.target = target;
	return event;
};
openfl_events_MouseEvent.__super__ = openfl_events_Event;
openfl_events_MouseEvent.prototype = $extend(openfl_events_Event.prototype,{
	altKey: null
	,buttonDown: null
	,commandKey: null
	,clickCount: null
	,ctrlKey: null
	,delta: null
	,isRelatedObjectInaccessible: null
	,localX: null
	,localY: null
	,relatedObject: null
	,shiftKey: null
	,stageX: null
	,stageY: null
	,clone: function() {
		var event = new openfl_events_MouseEvent(this.type,this.bubbles,this.cancelable,this.localX,this.localY,this.relatedObject,this.ctrlKey,this.altKey,this.shiftKey,this.buttonDown,this.delta,this.commandKey,this.clickCount);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("MouseEvent",["type","bubbles","cancelable","localX","localY","relatedObject","ctrlKey","altKey","shiftKey","buttonDown","delta"]);
	}
	,updateAfterEvent: function() {
	}
	,__class__: openfl_events_MouseEvent
});
var openfl_events_NetStatusEvent = function(type,bubbles,cancelable,info) {
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	this.info = info;
	openfl_events_Event.call(this,type,bubbles,cancelable);
};
$hxClasses["openfl.events.NetStatusEvent"] = openfl_events_NetStatusEvent;
openfl_events_NetStatusEvent.__name__ = ["openfl","events","NetStatusEvent"];
openfl_events_NetStatusEvent.__super__ = openfl_events_Event;
openfl_events_NetStatusEvent.prototype = $extend(openfl_events_Event.prototype,{
	info: null
	,clone: function() {
		var event = new openfl_events_NetStatusEvent(this.type,this.bubbles,this.cancelable,this.info);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("NetStatusEvent",["type","bubbles","cancelable","info"]);
	}
	,__class__: openfl_events_NetStatusEvent
});
var openfl_events_ProgressEvent = function(type,bubbles,cancelable,bytesLoaded,bytesTotal) {
	if(bytesTotal == null) {
		bytesTotal = 0;
	}
	if(bytesLoaded == null) {
		bytesLoaded = 0;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.bytesLoaded = bytesLoaded;
	this.bytesTotal = bytesTotal;
};
$hxClasses["openfl.events.ProgressEvent"] = openfl_events_ProgressEvent;
openfl_events_ProgressEvent.__name__ = ["openfl","events","ProgressEvent"];
openfl_events_ProgressEvent.__super__ = openfl_events_Event;
openfl_events_ProgressEvent.prototype = $extend(openfl_events_Event.prototype,{
	bytesLoaded: null
	,bytesTotal: null
	,clone: function() {
		var event = new openfl_events_ProgressEvent(this.type,this.bubbles,this.cancelable,this.bytesLoaded,this.bytesTotal);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("ProgressEvent",["type","bubbles","cancelable","bytesLoaded","bytesTotal"]);
	}
	,__class__: openfl_events_ProgressEvent
});
var openfl_events_SecurityErrorEvent = function(type,bubbles,cancelable,text,id) {
	if(id == null) {
		id = 0;
	}
	if(text == null) {
		text = "";
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_ErrorEvent.call(this,type,bubbles,cancelable,text,id);
};
$hxClasses["openfl.events.SecurityErrorEvent"] = openfl_events_SecurityErrorEvent;
openfl_events_SecurityErrorEvent.__name__ = ["openfl","events","SecurityErrorEvent"];
openfl_events_SecurityErrorEvent.__super__ = openfl_events_ErrorEvent;
openfl_events_SecurityErrorEvent.prototype = $extend(openfl_events_ErrorEvent.prototype,{
	clone: function() {
		var event = new openfl_events_SecurityErrorEvent(this.type,this.bubbles,this.cancelable,this.text,this.errorID);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("SecurityErrorEvent",["type","bubbles","cancelable","text","errorID"]);
	}
	,__class__: openfl_events_SecurityErrorEvent
});
var openfl_events_TimerEvent = function(type,bubbles,cancelable) {
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = false;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
};
$hxClasses["openfl.events.TimerEvent"] = openfl_events_TimerEvent;
openfl_events_TimerEvent.__name__ = ["openfl","events","TimerEvent"];
openfl_events_TimerEvent.__super__ = openfl_events_Event;
openfl_events_TimerEvent.prototype = $extend(openfl_events_Event.prototype,{
	clone: function() {
		var event = new openfl_events_TimerEvent(this.type,this.bubbles,this.cancelable);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("TimerEvent",["type","bubbles","cancelable"]);
	}
	,updateAfterEvent: function() {
	}
	,__class__: openfl_events_TimerEvent
});
var openfl_events_TouchEvent = function(type,bubbles,cancelable,touchPointID,isPrimaryTouchPoint,localX,localY,sizeX,sizeY,pressure,relatedObject,ctrlKey,altKey,shiftKey,commandKey,controlKey,timestamp,touchIntent,samples,isTouchPointCanceled) {
	if(isTouchPointCanceled == null) {
		isTouchPointCanceled = false;
	}
	if(timestamp == null) {
		timestamp = 0;
	}
	if(controlKey == null) {
		controlKey = false;
	}
	if(commandKey == null) {
		commandKey = false;
	}
	if(shiftKey == null) {
		shiftKey = false;
	}
	if(altKey == null) {
		altKey = false;
	}
	if(ctrlKey == null) {
		ctrlKey = false;
	}
	if(pressure == null) {
		pressure = 0;
	}
	if(sizeY == null) {
		sizeY = 0;
	}
	if(sizeX == null) {
		sizeX = 0;
	}
	if(localY == null) {
		localY = 0;
	}
	if(localX == null) {
		localX = 0;
	}
	if(isPrimaryTouchPoint == null) {
		isPrimaryTouchPoint = false;
	}
	if(touchPointID == null) {
		touchPointID = 0;
	}
	if(cancelable == null) {
		cancelable = false;
	}
	if(bubbles == null) {
		bubbles = true;
	}
	openfl_events_Event.call(this,type,bubbles,cancelable);
	this.touchPointID = touchPointID;
	this.isPrimaryTouchPoint = isPrimaryTouchPoint;
	this.localX = localX;
	this.localY = localY;
	this.sizeX = sizeX;
	this.sizeY = sizeY;
	this.pressure = pressure;
	this.relatedObject = relatedObject;
	this.ctrlKey = ctrlKey;
	this.altKey = altKey;
	this.shiftKey = shiftKey;
	this.commandKey = commandKey;
	this.controlKey = controlKey;
	this.stageX = NaN;
	this.stageY = NaN;
};
$hxClasses["openfl.events.TouchEvent"] = openfl_events_TouchEvent;
openfl_events_TouchEvent.__name__ = ["openfl","events","TouchEvent"];
openfl_events_TouchEvent.__create = function(type,touch,stageX,stageY,local,target) {
	var evt = new openfl_events_TouchEvent(type,true,false,0,true,local.x,local.y,1,1,1);
	evt.stageX = stageX;
	evt.stageY = stageY;
	evt.target = target;
	return evt;
};
openfl_events_TouchEvent.__super__ = openfl_events_Event;
openfl_events_TouchEvent.prototype = $extend(openfl_events_Event.prototype,{
	altKey: null
	,commandKey: null
	,controlKey: null
	,ctrlKey: null
	,delta: null
	,isPrimaryTouchPoint: null
	,localX: null
	,localY: null
	,pressure: null
	,relatedObject: null
	,shiftKey: null
	,sizeX: null
	,sizeY: null
	,stageX: null
	,stageY: null
	,touchPointID: null
	,clone: function() {
		var event = new openfl_events_TouchEvent(this.type,this.bubbles,this.cancelable,this.touchPointID,this.isPrimaryTouchPoint,this.localX,this.localY,this.sizeX,this.sizeY,this.pressure,this.relatedObject,this.ctrlKey,this.altKey,this.shiftKey,this.commandKey,this.controlKey);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("TouchEvent",["type","bubbles","cancelable","touchPointID","isPrimaryTouchPoint","localX","localY","sizeX","sizeY","pressure","relatedObject","ctrlKey","altKey","shiftKey","commandKey","controlKey"]);
	}
	,updateAfterEvent: function() {
	}
	,__class__: openfl_events_TouchEvent
});
var openfl_events_UncaughtErrorEvent = function(type,bubbles,cancelable,error) {
	if(cancelable == null) {
		cancelable = true;
	}
	if(bubbles == null) {
		bubbles = true;
	}
	openfl_events_ErrorEvent.call(this,type,bubbles,cancelable);
	this.error = error;
};
$hxClasses["openfl.events.UncaughtErrorEvent"] = openfl_events_UncaughtErrorEvent;
openfl_events_UncaughtErrorEvent.__name__ = ["openfl","events","UncaughtErrorEvent"];
openfl_events_UncaughtErrorEvent.__super__ = openfl_events_ErrorEvent;
openfl_events_UncaughtErrorEvent.prototype = $extend(openfl_events_ErrorEvent.prototype,{
	error: null
	,clone: function() {
		var event = new openfl_events_UncaughtErrorEvent(this.type,this.bubbles,this.cancelable,this.error);
		event.target = this.target;
		event.currentTarget = this.currentTarget;
		event.eventPhase = this.eventPhase;
		return event;
	}
	,toString: function() {
		return this.__formatToString("UncaughtErrorEvent",["type","bubbles","cancelable","error"]);
	}
	,__class__: openfl_events_UncaughtErrorEvent
});
var openfl_events_UncaughtErrorEvents = function() {
	openfl_events_EventDispatcher.call(this);
};
$hxClasses["openfl.events.UncaughtErrorEvents"] = openfl_events_UncaughtErrorEvents;
openfl_events_UncaughtErrorEvents.__name__ = ["openfl","events","UncaughtErrorEvents"];
openfl_events_UncaughtErrorEvents.__super__ = openfl_events_EventDispatcher;
openfl_events_UncaughtErrorEvents.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	__class__: openfl_events_UncaughtErrorEvents
});
var openfl_filters_BitmapFilter = function() {
	this.__bottomExtension = 0;
	this.__leftExtension = 0;
	this.__needSecondBitmapData = true;
	this.__numShaderPasses = 0;
	this.__preserveObject = false;
	this.__rightExtension = 0;
	this.__topExtension = 0;
};
$hxClasses["openfl.filters.BitmapFilter"] = openfl_filters_BitmapFilter;
openfl_filters_BitmapFilter.__name__ = ["openfl","filters","BitmapFilter"];
openfl_filters_BitmapFilter.prototype = {
	__bottomExtension: null
	,__leftExtension: null
	,__needSecondBitmapData: null
	,__numShaderPasses: null
	,__preserveObject: null
	,__renderDirty: null
	,__rightExtension: null
	,__topExtension: null
	,clone: function() {
		return new openfl_filters_BitmapFilter();
	}
	,__applyFilter: function(bitmapData,sourceBitmapData,sourceRect,destPoint) {
		return sourceBitmapData;
	}
	,__initShader: function(renderSession,pass) {
		return renderSession.shaderManager.defaultShader;
	}
	,__class__: openfl_filters_BitmapFilter
};
var openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$ = {};
$hxClasses["openfl.filters._BitmapFilterType.BitmapFilterType_Impl_"] = openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$;
openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.__name__ = ["openfl","filters","_BitmapFilterType","BitmapFilterType_Impl_"];
openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "full":
		return 0;
	case "inner":
		return 1;
	case "outer":
		return 2;
	default:
		return null;
	}
};
openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "full";
	case 1:
		return "inner";
	case 2:
		return "outer";
	default:
		return null;
	}
};
var openfl_filters_BlurFilter = function(blurX,blurY,quality) {
	if(quality == null) {
		quality = 1;
	}
	if(blurY == null) {
		blurY = 4;
	}
	if(blurX == null) {
		blurX = 4;
	}
	openfl_filters_BitmapFilter.call(this);
	this.set_blurX(blurX);
	this.set_blurY(blurY);
	this.set_quality(quality);
	this.__needSecondBitmapData = true;
	this.__preserveObject = false;
	this.__renderDirty = true;
};
$hxClasses["openfl.filters.BlurFilter"] = openfl_filters_BlurFilter;
openfl_filters_BlurFilter.__name__ = ["openfl","filters","BlurFilter"];
openfl_filters_BlurFilter.__super__ = openfl_filters_BitmapFilter;
openfl_filters_BlurFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype,{
	__blurX: null
	,__blurY: null
	,__horizontalPasses: null
	,__quality: null
	,__verticalPasses: null
	,clone: function() {
		return new openfl_filters_BlurFilter(this.__blurX,this.__blurY,this.__quality);
	}
	,__applyFilter: function(bitmapData,sourceBitmapData,sourceRect,destPoint) {
		var finalImage = lime_graphics_utils_ImageDataUtil.gaussianBlur(bitmapData.image,sourceBitmapData.image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),this.__blurX,this.__blurY,this.__quality);
		if(finalImage == bitmapData.image) {
			return bitmapData;
		}
		return sourceBitmapData;
	}
	,__initShader: function(renderSession,pass) {
		return null;
	}
	,get_blurX: function() {
		return this.__blurX;
	}
	,set_blurX: function(value) {
		if(value != this.__blurX) {
			this.__blurX = value;
			this.__renderDirty = true;
			this.__leftExtension = value > 0 ? Math.ceil(value) : 0;
			this.__rightExtension = this.__leftExtension;
		}
		return value;
	}
	,get_blurY: function() {
		return this.__blurY;
	}
	,set_blurY: function(value) {
		if(value != this.__blurY) {
			this.__blurY = value;
			this.__renderDirty = true;
			this.__topExtension = value > 0 ? Math.ceil(value) : 0;
			this.__bottomExtension = this.__topExtension;
		}
		return value;
	}
	,get_quality: function() {
		return this.__quality;
	}
	,set_quality: function(value) {
		this.__horizontalPasses = this.__blurX <= 0 ? 0 : Math.round(this.__blurX * (value / 4)) + 1;
		this.__verticalPasses = this.__blurY <= 0 ? 0 : Math.round(this.__blurY * (value / 4)) + 1;
		this.__numShaderPasses = this.__horizontalPasses + this.__verticalPasses;
		if(value != this.__quality) {
			this.__renderDirty = true;
		}
		return this.__quality = value;
	}
	,__class__: openfl_filters_BlurFilter
	,__properties__: {set_quality:"set_quality",get_quality:"get_quality",set_blurY:"set_blurY",get_blurY:"get_blurY",set_blurX:"set_blurX",get_blurX:"get_blurX"}
});
var openfl_filters__$BlurFilter_BlurShader = function() {
	if(this.__glFragmentSource == null) {
		this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tvarying vec2 vBlurCoords[7];\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvec4 sum = vec4(0.0);\n\t\t\tsum += texture2D(uImage0, vBlurCoords[0]) * 0.00443;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[1]) * 0.05399;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[2]) * 0.24197;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[3]) * 0.39894;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[4]) * 0.24197;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[5]) * 0.05399;\n\t\t\tsum += texture2D(uImage0, vBlurCoords[6]) * 0.00443;\n\t\t\t\n\t\t\tgl_FragColor = sum;\n\t\t\t\n\t\t}";
	}
	if(this.__glVertexSource == null) {
		this.__glVertexSource = "attribute float aAlpha;\n\t\tattribute vec4 aPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tvarying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform mat4 uMatrix;\n\t\t\n\t\tuniform vec2 uRadius;\n\t\tvarying vec2 vBlurCoords[7];\n\t\tuniform vec2 uTextureSize;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvAlpha = aAlpha;\n\t\t\tvTexCoord = aTexCoord;\n\t\t\tgl_Position = uMatrix * aPosition;\n\t\t\t\n\t\t\tvec2 r = uRadius / uTextureSize;\n\t\t\tvBlurCoords[0] = aTexCoord - r * 1.0;\n\t\t\tvBlurCoords[1] = aTexCoord - r * 0.75;\n\t\t\tvBlurCoords[2] = aTexCoord - r * 0.5;\n\t\t\tvBlurCoords[3] = aTexCoord;\n\t\t\tvBlurCoords[4] = aTexCoord + r * 0.5;\n\t\t\tvBlurCoords[5] = aTexCoord + r * 0.75;\n\t\t\tvBlurCoords[6] = aTexCoord + r * 1.0;\n\t\t\t\n\t\t}";
	}
	openfl_display_Shader.call(this);
	this.get_data().uRadius.value = [0,0];
};
$hxClasses["openfl.filters._BlurFilter.BlurShader"] = openfl_filters__$BlurFilter_BlurShader;
openfl_filters__$BlurFilter_BlurShader.__name__ = ["openfl","filters","_BlurFilter","BlurShader"];
openfl_filters__$BlurFilter_BlurShader.__super__ = openfl_display_Shader;
openfl_filters__$BlurFilter_BlurShader.prototype = $extend(openfl_display_Shader.prototype,{
	__update: function() {
		var tmp = this.get_data().uImage0.input.width;
		this.get_data().uTextureSize.value = [tmp,this.get_data().uImage0.input.height];
		openfl_display_Shader.prototype.__update.call(this);
	}
	,__class__: openfl_filters__$BlurFilter_BlurShader
});
var openfl_filters_ColorMatrixFilter = function(matrix) {
	openfl_filters_BitmapFilter.call(this);
	this.set_matrix(matrix);
	this.__numShaderPasses = 0;
	this.__needSecondBitmapData = false;
};
$hxClasses["openfl.filters.ColorMatrixFilter"] = openfl_filters_ColorMatrixFilter;
openfl_filters_ColorMatrixFilter.__name__ = ["openfl","filters","ColorMatrixFilter"];
openfl_filters_ColorMatrixFilter.__super__ = openfl_filters_BitmapFilter;
openfl_filters_ColorMatrixFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype,{
	__matrix: null
	,clone: function() {
		return new openfl_filters_ColorMatrixFilter(this.__matrix);
	}
	,__applyFilter: function(destBitmapData,sourceBitmapData,sourceRect,destPoint) {
		var sourceImage = sourceBitmapData.image;
		var image = destBitmapData.image;
		var sourceData = sourceImage.get_data();
		var destData = image.get_data();
		var offsetX = destPoint.x - sourceRect.x | 0;
		var offsetY = destPoint.y - sourceRect.y | 0;
		var sourceStride = sourceBitmapData.width * 4;
		var destStride = destBitmapData.width * 4;
		var sourceFormat = sourceImage.buffer.format;
		var destFormat = image.buffer.format;
		var sourcePremultiplied = sourceImage.buffer.premultiplied;
		var destPremultiplied = image.buffer.premultiplied;
		var sourcePixel;
		var destPixel = 0;
		var sourceOffset;
		var destOffset;
		var _g1 = sourceRect.y | 0;
		var _g = sourceRect.height | 0;
		while(_g1 < _g) {
			var row = _g1++;
			var _g3 = sourceRect.x | 0;
			var _g2 = sourceRect.width | 0;
			while(_g3 < _g2) {
				var column = _g3++;
				sourceOffset = row * sourceStride + column * 4;
				destOffset = (row + offsetX) * destStride + (column + offsetY) * 4;
				switch(sourceFormat) {
				case 0:
					sourcePixel = (sourceData[sourceOffset] & 255) << 24 | (sourceData[sourceOffset + 1] & 255) << 16 | (sourceData[sourceOffset + 2] & 255) << 8 | sourceData[sourceOffset + 3] & 255;
					break;
				case 1:
					sourcePixel = (sourceData[sourceOffset + 1] & 255) << 24 | (sourceData[sourceOffset + 2] & 255) << 16 | (sourceData[sourceOffset + 3] & 255) << 8 | sourceData[sourceOffset] & 255;
					break;
				case 2:
					sourcePixel = (sourceData[sourceOffset + 2] & 255) << 24 | (sourceData[sourceOffset + 1] & 255) << 16 | (sourceData[sourceOffset] & 255) << 8 | sourceData[sourceOffset + 3] & 255;
					break;
				}
				if(sourcePremultiplied) {
					if((sourcePixel & 255) != 0 && (sourcePixel & 255) != 255) {
						lime_math_color__$RGBA_RGBA_$Impl_$.unmult = 255.0 / (sourcePixel & 255);
						sourcePixel = (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 24 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 16 | (lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[Math.round((sourcePixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.unmult)] & 255) << 8 | sourcePixel & 255 & 255;
					}
				}
				if((sourcePixel & 255) == 0) {
					destPixel = 0;
				} else {
					var value = Math.max(0,Math.min(this.__matrix[0] * (sourcePixel >>> 24 & 255) + this.__matrix[1] * (sourcePixel >>> 16 & 255) + this.__matrix[2] * (sourcePixel >>> 8 & 255) + this.__matrix[3] * (sourcePixel & 255) + this.__matrix[4],255)) | 0;
					destPixel = (value & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
					var value1 = Math.max(0,Math.min(this.__matrix[5] * (sourcePixel >>> 24 & 255) + this.__matrix[6] * (sourcePixel >>> 16 & 255) + this.__matrix[7] * (sourcePixel >>> 8 & 255) + this.__matrix[8] * (sourcePixel & 255) + this.__matrix[9],255)) | 0;
					destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (value1 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | destPixel & 255 & 255;
					var value2 = Math.max(0,Math.min(this.__matrix[10] * (sourcePixel >>> 24 & 255) + this.__matrix[11] * (sourcePixel >>> 16 & 255) + this.__matrix[12] * (sourcePixel >>> 8 & 255) + this.__matrix[13] * (sourcePixel & 255) + this.__matrix[14],255)) | 0;
					destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (value2 & 255) << 8 | destPixel & 255 & 255;
					var value3 = Math.max(0,Math.min(this.__matrix[15] * (sourcePixel >>> 24 & 255) + this.__matrix[16] * (sourcePixel >>> 16 & 255) + this.__matrix[17] * (sourcePixel >>> 8 & 255) + this.__matrix[18] * (sourcePixel & 255) + this.__matrix[19],255)) | 0;
					destPixel = (destPixel >>> 24 & 255 & 255) << 24 | (destPixel >>> 16 & 255 & 255) << 16 | (destPixel >>> 8 & 255 & 255) << 8 | value3 & 255;
				}
				if(destPremultiplied) {
					if((destPixel & 255) == 0) {
						if(destPixel != 0) {
							destPixel = 0;
						}
					} else if((destPixel & 255) != 255) {
						lime_math_color__$RGBA_RGBA_$Impl_$.a16 = lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[destPixel & 255];
						destPixel = ((destPixel >>> 24 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 24 | ((destPixel >>> 16 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 16 | ((destPixel >>> 8 & 255) * lime_math_color__$RGBA_RGBA_$Impl_$.a16 >> 16 & 255) << 8 | destPixel & 255 & 255;
					}
				}
				switch(destFormat) {
				case 0:
					destData[destOffset] = destPixel >>> 24 & 255;
					destData[destOffset + 1] = destPixel >>> 16 & 255;
					destData[destOffset + 2] = destPixel >>> 8 & 255;
					destData[destOffset + 3] = destPixel & 255;
					break;
				case 1:
					destData[destOffset] = destPixel & 255;
					destData[destOffset + 1] = destPixel >>> 24 & 255;
					destData[destOffset + 2] = destPixel >>> 16 & 255;
					destData[destOffset + 3] = destPixel >>> 8 & 255;
					break;
				case 2:
					destData[destOffset] = destPixel >>> 8 & 255;
					destData[destOffset + 1] = destPixel >>> 16 & 255;
					destData[destOffset + 2] = destPixel >>> 24 & 255;
					destData[destOffset + 3] = destPixel & 255;
					break;
				}
			}
		}
		destBitmapData.image.dirty = true;
		return destBitmapData;
	}
	,__initShader: function(renderSession,pass) {
		return null;
	}
	,get_matrix: function() {
		return this.__matrix;
	}
	,set_matrix: function(value) {
		if(value == null) {
			value = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0];
		}
		return this.__matrix = value;
	}
	,__class__: openfl_filters_ColorMatrixFilter
	,__properties__: {set_matrix:"set_matrix",get_matrix:"get_matrix"}
});
var openfl_filters__$ColorMatrixFilter_ColorMatrixShader = function() {
	if(this.__glFragmentSource == null) {
		this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tuniform mat4 uMultipliers;\n\t\tuniform vec4 uOffsets;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvec4 color = texture2D (uImage0, vTexCoord);\n\t\t\t\n\t\t\tif (color.a == 0.0) {\n\t\t\t\t\n\t\t\t\tgl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tcolor = vec4 (color.rgb / color.a, color.a);\n\t\t\t\tcolor = uOffsets + color * uMultipliers;\n\t\t\t\t\n\t\t\t\tgl_FragColor = vec4 (color.rgb * color.a * vAlpha, color.a * vAlpha);\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}";
	}
	openfl_display_Shader.call(this);
	this.get_data().uMultipliers.value = [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];
	this.get_data().uOffsets.value = [0,0,0,0];
};
$hxClasses["openfl.filters._ColorMatrixFilter.ColorMatrixShader"] = openfl_filters__$ColorMatrixFilter_ColorMatrixShader;
openfl_filters__$ColorMatrixFilter_ColorMatrixShader.__name__ = ["openfl","filters","_ColorMatrixFilter","ColorMatrixShader"];
openfl_filters__$ColorMatrixFilter_ColorMatrixShader.__super__ = openfl_display_Shader;
openfl_filters__$ColorMatrixFilter_ColorMatrixShader.prototype = $extend(openfl_display_Shader.prototype,{
	init: function(matrix) {
		var multipliers = this.get_data().uMultipliers.value;
		var offsets = this.get_data().uOffsets.value;
		multipliers[0] = matrix[0];
		multipliers[1] = matrix[1];
		multipliers[2] = matrix[2];
		multipliers[3] = matrix[3];
		multipliers[4] = matrix[5];
		multipliers[5] = matrix[6];
		multipliers[6] = matrix[7];
		multipliers[7] = matrix[8];
		multipliers[8] = matrix[10];
		multipliers[9] = matrix[11];
		multipliers[10] = matrix[12];
		multipliers[11] = matrix[13];
		multipliers[12] = matrix[15];
		multipliers[13] = matrix[16];
		multipliers[14] = matrix[17];
		multipliers[15] = matrix[18];
		offsets[0] = matrix[4] / 255.0;
		offsets[1] = matrix[9] / 255.0;
		offsets[2] = matrix[14] / 255.0;
		offsets[3] = matrix[19] / 255.0;
	}
	,__class__: openfl_filters__$ColorMatrixFilter_ColorMatrixShader
});
var openfl_filters_DropShadowFilter = function(distance,angle,color,alpha,blurX,blurY,strength,quality,inner,knockout,hideObject) {
	if(hideObject == null) {
		hideObject = false;
	}
	if(knockout == null) {
		knockout = false;
	}
	if(inner == null) {
		inner = false;
	}
	if(quality == null) {
		quality = 1;
	}
	if(strength == null) {
		strength = 1;
	}
	if(blurY == null) {
		blurY = 4;
	}
	if(blurX == null) {
		blurX = 4;
	}
	if(alpha == null) {
		alpha = 1;
	}
	if(color == null) {
		color = 0;
	}
	if(angle == null) {
		angle = 45;
	}
	if(distance == null) {
		distance = 4;
	}
	openfl_filters_BitmapFilter.call(this);
	this.__offsetX = 0;
	this.__offsetY = 0;
	this.__distance = distance;
	this.__angle = angle;
	this.__color = color;
	this.__alpha = alpha;
	this.__blurX = blurX;
	this.__blurY = blurY;
	this.__strength = strength;
	this.__quality = quality;
	this.__inner = inner;
	this.__knockout = knockout;
	this.__hideObject = hideObject;
	this.__updateSize();
	this.__needSecondBitmapData = true;
	this.__preserveObject = !this.__hideObject;
	this.__renderDirty = true;
};
$hxClasses["openfl.filters.DropShadowFilter"] = openfl_filters_DropShadowFilter;
openfl_filters_DropShadowFilter.__name__ = ["openfl","filters","DropShadowFilter"];
openfl_filters_DropShadowFilter.__super__ = openfl_filters_BitmapFilter;
openfl_filters_DropShadowFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype,{
	__alpha: null
	,__angle: null
	,__blurX: null
	,__blurY: null
	,__color: null
	,__distance: null
	,__hideObject: null
	,__inner: null
	,__knockout: null
	,__offsetX: null
	,__offsetY: null
	,__quality: null
	,__strength: null
	,clone: function() {
		return new openfl_filters_DropShadowFilter(this.__distance,this.__angle,this.__color,this.__alpha,this.__blurX,this.__blurY,this.__strength,this.__quality,this.__inner,this.__knockout,this.__hideObject);
	}
	,__applyFilter: function(bitmapData,sourceBitmapData,sourceRect,destPoint) {
		var a = this.__color >> 24 & 255;
		var r = this.__color >> 16 & 255;
		var g = this.__color >> 8 & 255;
		var b = this.__color & 255;
		sourceBitmapData.colorTransform(sourceBitmapData.rect,new openfl_geom_ColorTransform(0,0,0,1,r,g,b,a));
		destPoint.x += this.__offsetX;
		destPoint.y += this.__offsetY;
		var finalImage = lime_graphics_utils_ImageDataUtil.gaussianBlur(bitmapData.image,sourceBitmapData.image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),this.__blurX,this.__blurY,this.__quality,this.__strength);
		if(finalImage == bitmapData.image) {
			return bitmapData;
		}
		return sourceBitmapData;
	}
	,__updateSize: function() {
		this.__offsetX = this.__distance * Math.cos(this.__angle * Math.PI / 180) | 0;
		this.__offsetY = this.__distance * Math.sin(this.__angle * Math.PI / 180) | 0;
		this.__topExtension = Math.ceil((this.__offsetY < 0 ? -this.__offsetY : 0) + this.__blurY);
		this.__bottomExtension = Math.ceil((this.__offsetY > 0 ? this.__offsetY : 0) + this.__blurY);
		this.__leftExtension = Math.ceil((this.__offsetX < 0 ? -this.__offsetX : 0) + this.__blurX);
		this.__rightExtension = Math.ceil((this.__offsetX > 0 ? this.__offsetX : 0) + this.__blurX);
	}
	,get_alpha: function() {
		return this.__alpha;
	}
	,set_alpha: function(value) {
		if(value != this.__alpha) {
			this.__renderDirty = true;
		}
		return this.__alpha = value;
	}
	,get_angle: function() {
		return this.__angle;
	}
	,set_angle: function(value) {
		if(value != this.__angle) {
			this.__angle = value;
			this.__renderDirty = true;
			this.__updateSize();
		}
		return value;
	}
	,get_blurX: function() {
		return this.__blurX;
	}
	,set_blurX: function(value) {
		if(value != this.__blurX) {
			this.__blurX = value;
			this.__renderDirty = true;
			this.__updateSize();
		}
		return value;
	}
	,get_blurY: function() {
		return this.__blurY;
	}
	,set_blurY: function(value) {
		if(value != this.__blurY) {
			this.__blurY = value;
			this.__renderDirty = true;
			this.__updateSize();
		}
		return value;
	}
	,get_color: function() {
		return this.__color;
	}
	,set_color: function(value) {
		if(value != this.__color) {
			this.__renderDirty = true;
		}
		return this.__color = value;
	}
	,get_distance: function() {
		return this.__distance;
	}
	,set_distance: function(value) {
		if(value != this.__distance) {
			this.__distance = value;
			this.__renderDirty = true;
			this.__updateSize();
		}
		return value;
	}
	,get_hideObject: function() {
		return this.__hideObject;
	}
	,set_hideObject: function(value) {
		if(value != this.__hideObject) {
			this.__renderDirty = true;
			this.__preserveObject = !value;
		}
		return this.__hideObject = value;
	}
	,get_inner: function() {
		return this.__inner;
	}
	,set_inner: function(value) {
		if(value != this.__inner) {
			this.__renderDirty = true;
		}
		return this.__inner = value;
	}
	,get_knockout: function() {
		return this.__knockout;
	}
	,set_knockout: function(value) {
		if(value != this.__knockout) {
			this.__renderDirty = true;
		}
		return this.__knockout = value;
	}
	,get_quality: function() {
		return this.__quality;
	}
	,set_quality: function(value) {
		if(value != this.__quality) {
			this.__renderDirty = true;
		}
		return this.__quality = value;
	}
	,get_strength: function() {
		return this.__strength;
	}
	,set_strength: function(value) {
		if(value != this.__strength) {
			this.__renderDirty = true;
		}
		return this.__strength = value;
	}
	,__class__: openfl_filters_DropShadowFilter
	,__properties__: {set_strength:"set_strength",get_strength:"get_strength",set_quality:"set_quality",get_quality:"get_quality",set_knockout:"set_knockout",get_knockout:"get_knockout",set_inner:"set_inner",get_inner:"get_inner",set_hideObject:"set_hideObject",get_hideObject:"get_hideObject",set_distance:"set_distance",get_distance:"get_distance",set_color:"set_color",get_color:"get_color",set_blurY:"set_blurY",get_blurY:"get_blurY",set_blurX:"set_blurX",get_blurX:"get_blurX",set_angle:"set_angle",get_angle:"get_angle",set_alpha:"set_alpha",get_alpha:"get_alpha"}
});
var openfl_filters_GlowFilter = function(color,alpha,blurX,blurY,strength,quality,inner,knockout) {
	if(knockout == null) {
		knockout = false;
	}
	if(inner == null) {
		inner = false;
	}
	if(quality == null) {
		quality = 1;
	}
	if(strength == null) {
		strength = 2;
	}
	if(blurY == null) {
		blurY = 6;
	}
	if(blurX == null) {
		blurX = 6;
	}
	if(alpha == null) {
		alpha = 1;
	}
	if(color == null) {
		color = 16711680;
	}
	openfl_filters_BitmapFilter.call(this);
	this.__color = color;
	this.__alpha = alpha;
	this.set_blurX(blurX);
	this.set_blurY(blurY);
	this.__strength = strength;
	this.set_quality(quality);
	this.__inner = inner;
	this.__knockout = knockout;
	this.__needSecondBitmapData = true;
	this.__preserveObject = true;
	this.__renderDirty = true;
};
$hxClasses["openfl.filters.GlowFilter"] = openfl_filters_GlowFilter;
openfl_filters_GlowFilter.__name__ = ["openfl","filters","GlowFilter"];
openfl_filters_GlowFilter.__super__ = openfl_filters_BitmapFilter;
openfl_filters_GlowFilter.prototype = $extend(openfl_filters_BitmapFilter.prototype,{
	__alpha: null
	,__blurX: null
	,__blurY: null
	,__color: null
	,__horizontalPasses: null
	,__inner: null
	,__knockout: null
	,__quality: null
	,__strength: null
	,__verticalPasses: null
	,clone: function() {
		return new openfl_filters_GlowFilter(this.__color,this.__alpha,this.__blurX,this.__blurY,this.__strength,this.__quality,this.__inner,this.__knockout);
	}
	,__applyFilter: function(bitmapData,sourceBitmapData,sourceRect,destPoint) {
		var r = this.__color >> 16 & 255;
		var g = this.__color >> 8 & 255;
		var b = this.__color & 255;
		sourceBitmapData.colorTransform(sourceBitmapData.rect,new openfl_geom_ColorTransform(0,0,0,1,r,g,b,this.__alpha * 255));
		var finalImage = lime_graphics_utils_ImageDataUtil.gaussianBlur(bitmapData.image,sourceBitmapData.image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),this.__blurX,this.__blurY,this.__quality,this.__strength);
		if(finalImage == bitmapData.image) {
			return bitmapData;
		}
		return sourceBitmapData;
	}
	,__initShader: function(renderSession,pass) {
		return null;
	}
	,get_alpha: function() {
		return this.__alpha;
	}
	,set_alpha: function(value) {
		if(value != this.__alpha) {
			this.__renderDirty = true;
		}
		return this.__alpha = value;
	}
	,get_blurX: function() {
		return this.__blurX;
	}
	,set_blurX: function(value) {
		if(value != this.__blurX) {
			this.__blurX = value;
			this.__renderDirty = true;
			this.__leftExtension = value > 0 ? Math.ceil(value) : 0;
			this.__rightExtension = this.__leftExtension;
		}
		return value;
	}
	,get_blurY: function() {
		return this.__blurY;
	}
	,set_blurY: function(value) {
		if(value != this.__blurY) {
			this.__blurY = value;
			this.__renderDirty = true;
			this.__topExtension = value > 0 ? Math.ceil(value) : 0;
			this.__bottomExtension = this.__topExtension;
		}
		return value;
	}
	,get_color: function() {
		return this.__color;
	}
	,set_color: function(value) {
		if(value != this.__color) {
			this.__renderDirty = true;
		}
		return this.__color = value;
	}
	,get_inner: function() {
		return this.__inner;
	}
	,set_inner: function(value) {
		if(value != this.__inner) {
			this.__renderDirty = true;
		}
		return this.__inner = value;
	}
	,get_knockout: function() {
		return this.__knockout;
	}
	,set_knockout: function(value) {
		if(value != this.__knockout) {
			this.__renderDirty = true;
		}
		return this.__knockout = value;
	}
	,get_quality: function() {
		return this.__quality;
	}
	,set_quality: function(value) {
		this.__horizontalPasses = this.__blurX <= 0 ? 0 : Math.round(this.__blurX * (value / 4)) + 1;
		this.__verticalPasses = this.__blurY <= 0 ? 0 : Math.round(this.__blurY * (value / 4)) + 1;
		this.__numShaderPasses = this.__horizontalPasses + this.__verticalPasses;
		if(value != this.__quality) {
			this.__renderDirty = true;
		}
		return this.__quality = value;
	}
	,get_strength: function() {
		return this.__strength;
	}
	,set_strength: function(value) {
		if(value != this.__strength) {
			this.__renderDirty = true;
		}
		return this.__strength = value;
	}
	,__class__: openfl_filters_GlowFilter
	,__properties__: {set_strength:"set_strength",get_strength:"get_strength",set_quality:"set_quality",get_quality:"get_quality",set_knockout:"set_knockout",get_knockout:"get_knockout",set_inner:"set_inner",get_inner:"get_inner",set_color:"set_color",get_color:"get_color",set_blurY:"set_blurY",get_blurY:"get_blurY",set_blurX:"set_blurX",get_blurX:"get_blurX",set_alpha:"set_alpha",get_alpha:"get_alpha"}
});
var openfl_filters__$GlowFilter_GlowShader = function() {
	if(this.__glFragmentSource == null) {
		this.__glFragmentSource = "varying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\tuniform sampler2D uImage0;\n\t\t\n\t\tuniform vec4 uColor;\n\t\t\n\t\tvarying vec2 vBlurCoords[7];\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tfloat a = 0.0;\n\t\t\ta += texture2D(uImage0, vBlurCoords[0]).a * 0.00443;\n\t\t\ta += texture2D(uImage0, vBlurCoords[1]).a * 0.05399;\n\t\t\ta += texture2D(uImage0, vBlurCoords[2]).a * 0.24197;\n\t\t\ta += texture2D(uImage0, vBlurCoords[3]).a * 0.39894;\n\t\t\ta += texture2D(uImage0, vBlurCoords[4]).a * 0.24197;\n\t\t\ta += texture2D(uImage0, vBlurCoords[5]).a * 0.05399;\n\t\t\ta += texture2D(uImage0, vBlurCoords[6]).a * 0.00443;\n\t\t\ta *= uColor.a;\n\t\t\t\n\t\t\tgl_FragColor = vec4(uColor.rgb * a, a);\n\t\t\t\n\t\t}";
	}
	if(this.__glVertexSource == null) {
		this.__glVertexSource = "attribute float aAlpha;\n\t\tattribute vec4 aPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tvarying float vAlpha;\n\t\tvarying vec2 vTexCoord;\n\t\t\n\t\tuniform mat4 uMatrix;\n\t\t\n\t\tuniform vec2 uRadius;\n\t\tvarying vec2 vBlurCoords[7];\n\t\tuniform vec2 uTextureSize;\n\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\tvAlpha = aAlpha;\n\t\t\tvTexCoord = aTexCoord;\n\t\t\tgl_Position = uMatrix * aPosition;\n\t\t\t\n\t\t\tvec2 r = uRadius / uTextureSize;\n\t\t\tvBlurCoords[0] = aTexCoord - r * 1.0;\n\t\t\tvBlurCoords[1] = aTexCoord - r * 0.75;\n\t\t\tvBlurCoords[2] = aTexCoord - r * 0.5;\n\t\t\tvBlurCoords[3] = aTexCoord;\n\t\t\tvBlurCoords[4] = aTexCoord + r * 0.5;\n\t\t\tvBlurCoords[5] = aTexCoord + r * 0.75;\n\t\t\tvBlurCoords[6] = aTexCoord + r * 1.0;\n\t\t\t\n\t\t}";
	}
	openfl_display_Shader.call(this);
	this.get_data().uRadius.value = [0,0];
	this.get_data().uColor.value = [0,0,0,0];
};
$hxClasses["openfl.filters._GlowFilter.GlowShader"] = openfl_filters__$GlowFilter_GlowShader;
openfl_filters__$GlowFilter_GlowShader.__name__ = ["openfl","filters","_GlowFilter","GlowShader"];
openfl_filters__$GlowFilter_GlowShader.__super__ = openfl_display_Shader;
openfl_filters__$GlowFilter_GlowShader.prototype = $extend(openfl_display_Shader.prototype,{
	__update: function() {
		var tmp = this.get_data().uImage0.input.width;
		this.get_data().uTextureSize.value = [tmp,this.get_data().uImage0.input.height];
		openfl_display_Shader.prototype.__update.call(this);
	}
	,__class__: openfl_filters__$GlowFilter_GlowShader
});
var openfl_filters__$BlurShader_$ShaderData = function(byteArray) {
	openfl_display_ShaderData.call(this,byteArray);
};
$hxClasses["openfl.filters._BlurShader_ShaderData"] = openfl_filters__$BlurShader_$ShaderData;
openfl_filters__$BlurShader_$ShaderData.__name__ = ["openfl","filters","_BlurShader_ShaderData"];
openfl_filters__$BlurShader_$ShaderData.__super__ = openfl_display_ShaderData;
openfl_filters__$BlurShader_$ShaderData.prototype = $extend(openfl_display_ShaderData.prototype,{
	uRadius: null
	,uTextureSize: null
	,__class__: openfl_filters__$BlurShader_$ShaderData
});
var openfl_filters__$ColorMatrixShader_$ShaderData = function(byteArray) {
	openfl_display_ShaderData.call(this,byteArray);
};
$hxClasses["openfl.filters._ColorMatrixShader_ShaderData"] = openfl_filters__$ColorMatrixShader_$ShaderData;
openfl_filters__$ColorMatrixShader_$ShaderData.__name__ = ["openfl","filters","_ColorMatrixShader_ShaderData"];
openfl_filters__$ColorMatrixShader_$ShaderData.__super__ = openfl_display_ShaderData;
openfl_filters__$ColorMatrixShader_$ShaderData.prototype = $extend(openfl_display_ShaderData.prototype,{
	uMultipliers: null
	,uOffsets: null
	,__class__: openfl_filters__$ColorMatrixShader_$ShaderData
});
var openfl_filters__$GlowShader_$ShaderData = function(byteArray) {
	openfl_display_ShaderData.call(this,byteArray);
};
$hxClasses["openfl.filters._GlowShader_ShaderData"] = openfl_filters__$GlowShader_$ShaderData;
openfl_filters__$GlowShader_$ShaderData.__name__ = ["openfl","filters","_GlowShader_ShaderData"];
openfl_filters__$GlowShader_$ShaderData.__super__ = openfl_display_ShaderData;
openfl_filters__$GlowShader_$ShaderData.prototype = $extend(openfl_display_ShaderData.prototype,{
	uRadius: null
	,uTextureSize: null
	,uColor: null
	,__class__: openfl_filters__$GlowShader_$ShaderData
});
var openfl_geom_ColorTransform = function(redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier,redOffset,greenOffset,blueOffset,alphaOffset) {
	if(alphaOffset == null) {
		alphaOffset = 0;
	}
	if(blueOffset == null) {
		blueOffset = 0;
	}
	if(greenOffset == null) {
		greenOffset = 0;
	}
	if(redOffset == null) {
		redOffset = 0;
	}
	if(alphaMultiplier == null) {
		alphaMultiplier = 1;
	}
	if(blueMultiplier == null) {
		blueMultiplier = 1;
	}
	if(greenMultiplier == null) {
		greenMultiplier = 1;
	}
	if(redMultiplier == null) {
		redMultiplier = 1;
	}
	this.redMultiplier = redMultiplier;
	this.greenMultiplier = greenMultiplier;
	this.blueMultiplier = blueMultiplier;
	this.alphaMultiplier = alphaMultiplier;
	this.redOffset = redOffset;
	this.greenOffset = greenOffset;
	this.blueOffset = blueOffset;
	this.alphaOffset = alphaOffset;
};
$hxClasses["openfl.geom.ColorTransform"] = openfl_geom_ColorTransform;
openfl_geom_ColorTransform.__name__ = ["openfl","geom","ColorTransform"];
openfl_geom_ColorTransform.prototype = {
	alphaMultiplier: null
	,alphaOffset: null
	,blueMultiplier: null
	,blueOffset: null
	,greenMultiplier: null
	,greenOffset: null
	,redMultiplier: null
	,redOffset: null
	,concat: function(second) {
		this.redMultiplier *= second.redMultiplier;
		this.greenMultiplier *= second.greenMultiplier;
		this.blueMultiplier *= second.blueMultiplier;
		this.alphaMultiplier *= second.alphaMultiplier;
		this.redOffset = second.redMultiplier * this.redOffset + second.redOffset;
		this.greenOffset = second.greenMultiplier * this.greenOffset + second.greenOffset;
		this.blueOffset = second.blueMultiplier * this.blueOffset + second.blueOffset;
		this.alphaOffset = second.alphaMultiplier * this.alphaOffset + second.alphaOffset;
	}
	,toString: function() {
		return "(redMultiplier=" + this.redMultiplier + ", greenMultiplier=" + this.greenMultiplier + ", blueMultiplier=" + this.blueMultiplier + ", alphaMultiplier=" + this.alphaMultiplier + ", redOffset=" + this.redOffset + ", greenOffset=" + this.greenOffset + ", blueOffset=" + this.blueOffset + ", alphaOffset=" + this.alphaOffset + ")";
	}
	,__clone: function() {
		return new openfl_geom_ColorTransform(this.redMultiplier,this.greenMultiplier,this.blueMultiplier,this.alphaMultiplier,this.redOffset,this.greenOffset,this.blueOffset,this.alphaOffset);
	}
	,__copyFrom: function(ct) {
		this.redMultiplier = ct.redMultiplier;
		this.greenMultiplier = ct.greenMultiplier;
		this.blueMultiplier = ct.blueMultiplier;
		this.alphaMultiplier = ct.alphaMultiplier;
		this.redOffset = ct.redOffset;
		this.greenOffset = ct.greenOffset;
		this.blueOffset = ct.blueOffset;
		this.alphaOffset = ct.alphaOffset;
	}
	,__combine: function(ct) {
		this.redMultiplier *= ct.redMultiplier;
		this.greenMultiplier *= ct.greenMultiplier;
		this.blueMultiplier *= ct.blueMultiplier;
		this.alphaMultiplier *= ct.alphaMultiplier;
		this.redOffset += ct.redOffset;
		this.greenOffset += ct.greenOffset;
		this.blueOffset += ct.blueOffset;
		this.alphaOffset += ct.alphaOffset;
	}
	,__identity: function() {
		this.redMultiplier = 1;
		this.greenMultiplier = 1;
		this.blueMultiplier = 1;
		this.alphaMultiplier = 1;
		this.redOffset = 0;
		this.greenOffset = 0;
		this.blueOffset = 0;
		this.alphaOffset = 0;
	}
	,__equals: function(ct,skipAlphaMultiplier) {
		if(skipAlphaMultiplier == null) {
			skipAlphaMultiplier = false;
		}
		if(ct != null && this.redMultiplier == ct.redMultiplier && this.greenMultiplier == ct.greenMultiplier && this.blueMultiplier == ct.blueMultiplier && (skipAlphaMultiplier || this.alphaMultiplier == ct.alphaMultiplier) && this.redOffset == ct.redOffset && this.greenOffset == ct.greenOffset && this.blueOffset == ct.blueOffset) {
			return this.alphaOffset == ct.alphaOffset;
		} else {
			return false;
		}
	}
	,__isDefault: function() {
		if(this.redMultiplier == 1 && this.greenMultiplier == 1 && this.blueMultiplier == 1 && this.alphaMultiplier == 1 && this.redOffset == 0 && this.greenOffset == 0 && this.blueOffset == 0) {
			return this.alphaOffset == 0;
		} else {
			return false;
		}
	}
	,get_color: function() {
		return (this.redOffset | 0) << 16 | (this.greenOffset | 0) << 8 | (this.blueOffset | 0);
	}
	,set_color: function(value) {
		this.redOffset = value >> 16 & 255;
		this.greenOffset = value >> 8 & 255;
		this.blueOffset = value & 255;
		this.redMultiplier = 0;
		this.greenMultiplier = 0;
		this.blueMultiplier = 0;
		return this.get_color();
	}
	,__toLimeColorMatrix: function() {
		if(openfl_geom_ColorTransform.__limeColorMatrix == null) {
			var this1 = new Float32Array(20);
			openfl_geom_ColorTransform.__limeColorMatrix = this1;
		}
		openfl_geom_ColorTransform.__limeColorMatrix[0] = this.redMultiplier;
		openfl_geom_ColorTransform.__limeColorMatrix[4] = this.redOffset / 255;
		openfl_geom_ColorTransform.__limeColorMatrix[6] = this.greenMultiplier;
		openfl_geom_ColorTransform.__limeColorMatrix[9] = this.greenOffset / 255;
		openfl_geom_ColorTransform.__limeColorMatrix[12] = this.blueMultiplier;
		openfl_geom_ColorTransform.__limeColorMatrix[14] = this.blueOffset / 255;
		openfl_geom_ColorTransform.__limeColorMatrix[18] = this.alphaMultiplier;
		openfl_geom_ColorTransform.__limeColorMatrix[19] = this.alphaOffset / 255;
		return openfl_geom_ColorTransform.__limeColorMatrix;
	}
	,__class__: openfl_geom_ColorTransform
	,__properties__: {set_color:"set_color",get_color:"get_color"}
};
var openfl_geom_Matrix = function(a,b,c,d,tx,ty) {
	if(ty == null) {
		ty = 0;
	}
	if(tx == null) {
		tx = 0;
	}
	if(d == null) {
		d = 1;
	}
	if(c == null) {
		c = 0;
	}
	if(b == null) {
		b = 0;
	}
	if(a == null) {
		a = 1;
	}
	this.a = a;
	this.b = b;
	this.c = c;
	this.d = d;
	this.tx = tx;
	this.ty = ty;
};
$hxClasses["openfl.geom.Matrix"] = openfl_geom_Matrix;
openfl_geom_Matrix.__name__ = ["openfl","geom","Matrix"];
openfl_geom_Matrix.prototype = {
	a: null
	,b: null
	,c: null
	,d: null
	,tx: null
	,ty: null
	,__array: null
	,clone: function() {
		return new openfl_geom_Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty);
	}
	,concat: function(m) {
		var a1 = this.a * m.a + this.b * m.c;
		this.b = this.a * m.b + this.b * m.d;
		this.a = a1;
		var c1 = this.c * m.a + this.d * m.c;
		this.d = this.c * m.b + this.d * m.d;
		this.c = c1;
		var tx1 = this.tx * m.a + this.ty * m.c + m.tx;
		this.ty = this.tx * m.b + this.ty * m.d + m.ty;
		this.tx = tx1;
	}
	,copyColumnFrom: function(column,vector3D) {
		if(column > 2) {
			throw new js__$Boot_HaxeError("Column " + column + " out of bounds (2)");
		} else if(column == 0) {
			this.a = vector3D.x;
			this.c = vector3D.y;
		} else if(column == 1) {
			this.b = vector3D.x;
			this.d = vector3D.y;
		} else {
			this.tx = vector3D.x;
			this.ty = vector3D.y;
		}
	}
	,copyColumnTo: function(column,vector3D) {
		if(column > 2) {
			throw new js__$Boot_HaxeError("Column " + column + " out of bounds (2)");
		} else if(column == 0) {
			vector3D.x = this.a;
			vector3D.y = this.c;
			vector3D.z = 0;
		} else if(column == 1) {
			vector3D.x = this.b;
			vector3D.y = this.d;
			vector3D.z = 0;
		} else {
			vector3D.x = this.tx;
			vector3D.y = this.ty;
			vector3D.z = 1;
		}
	}
	,copyFrom: function(sourceMatrix) {
		this.a = sourceMatrix.a;
		this.b = sourceMatrix.b;
		this.c = sourceMatrix.c;
		this.d = sourceMatrix.d;
		this.tx = sourceMatrix.tx;
		this.ty = sourceMatrix.ty;
	}
	,copyRowFrom: function(row,vector3D) {
		if(row > 2) {
			throw new js__$Boot_HaxeError("Row " + row + " out of bounds (2)");
		} else if(row == 0) {
			this.a = vector3D.x;
			this.c = vector3D.y;
		} else if(row == 1) {
			this.b = vector3D.x;
			this.d = vector3D.y;
		} else {
			this.tx = vector3D.x;
			this.ty = vector3D.y;
		}
	}
	,copyRowTo: function(row,vector3D) {
		if(row > 2) {
			throw new js__$Boot_HaxeError("Row " + row + " out of bounds (2)");
		} else if(row == 0) {
			vector3D.x = this.a;
			vector3D.y = this.b;
			vector3D.z = this.tx;
		} else if(row == 1) {
			vector3D.x = this.c;
			vector3D.y = this.d;
			vector3D.z = this.ty;
		} else {
			vector3D.setTo(0,0,1);
		}
	}
	,createBox: function(scaleX,scaleY,rotation,tx,ty) {
		if(ty == null) {
			ty = 0;
		}
		if(tx == null) {
			tx = 0;
		}
		if(rotation == null) {
			rotation = 0;
		}
		if(rotation != 0) {
			var cos = Math.cos(rotation);
			var sin = Math.sin(rotation);
			this.a = cos * scaleX;
			this.b = sin * scaleY;
			this.c = -sin * scaleX;
			this.d = cos * scaleY;
		} else {
			this.a = scaleX;
			this.b = 0;
			this.c = 0;
			this.d = scaleY;
		}
		this.tx = tx;
		this.ty = ty;
	}
	,createGradientBox: function(width,height,rotation,tx,ty) {
		if(ty == null) {
			ty = 0;
		}
		if(tx == null) {
			tx = 0;
		}
		if(rotation == null) {
			rotation = 0;
		}
		this.a = width / 1638.4;
		this.d = height / 1638.4;
		if(rotation != 0) {
			var cos = Math.cos(rotation);
			var sin = Math.sin(rotation);
			this.b = sin * this.d;
			this.c = -sin * this.a;
			this.a *= cos;
			this.d *= cos;
		} else {
			this.b = 0;
			this.c = 0;
		}
		this.tx = tx + width / 2;
		this.ty = ty + height / 2;
	}
	,deltaTransformPoint: function(point) {
		return new openfl_geom_Point(point.x * this.a + point.y * this.c,point.x * this.b + point.y * this.d);
	}
	,equals: function(matrix) {
		if(matrix != null && this.tx == matrix.tx && this.ty == matrix.ty && this.a == matrix.a && this.b == matrix.b && this.c == matrix.c) {
			return this.d == matrix.d;
		} else {
			return false;
		}
	}
	,identity: function() {
		this.a = 1;
		this.b = 0;
		this.c = 0;
		this.d = 1;
		this.tx = 0;
		this.ty = 0;
	}
	,invert: function() {
		var norm = this.a * this.d - this.b * this.c;
		if(norm == 0) {
			this.a = this.b = this.c = this.d = 0;
			this.tx = -this.tx;
			this.ty = -this.ty;
		} else {
			norm = 1.0 / norm;
			var a1 = this.d * norm;
			this.d = this.a * norm;
			this.a = a1;
			this.b *= -norm;
			this.c *= -norm;
			var tx1 = -this.a * this.tx - this.c * this.ty;
			this.ty = -this.b * this.tx - this.d * this.ty;
			this.tx = tx1;
		}
		return this;
	}
	,rotate: function(theta) {
		var cos = Math.cos(theta);
		var sin = Math.sin(theta);
		var a1 = this.a * cos - this.b * sin;
		this.b = this.a * sin + this.b * cos;
		this.a = a1;
		var c1 = this.c * cos - this.d * sin;
		this.d = this.c * sin + this.d * cos;
		this.c = c1;
		var tx1 = this.tx * cos - this.ty * sin;
		this.ty = this.tx * sin + this.ty * cos;
		this.tx = tx1;
	}
	,scale: function(sx,sy) {
		this.a *= sx;
		this.b *= sy;
		this.c *= sx;
		this.d *= sy;
		this.tx *= sx;
		this.ty *= sy;
	}
	,setRotation: function(theta,scale) {
		if(scale == null) {
			scale = 1;
		}
		this.a = Math.cos(theta) * scale;
		this.c = Math.sin(theta) * scale;
		this.b = -this.c;
		this.d = this.a;
	}
	,setTo: function(a,b,c,d,tx,ty) {
		this.a = a;
		this.b = b;
		this.c = c;
		this.d = d;
		this.tx = tx;
		this.ty = ty;
	}
	,to3DString: function(roundPixels) {
		if(roundPixels == null) {
			roundPixels = false;
		}
		if(roundPixels) {
			return "matrix3d(" + this.a + ", " + this.b + ", 0, 0, " + this.c + ", " + this.d + ", 0, 0, 0, 0, 1, 0, " + (this.tx | 0) + ", " + (this.ty | 0) + ", 0, 1)";
		} else {
			return "matrix3d(" + this.a + ", " + this.b + ", 0, 0, " + this.c + ", " + this.d + ", 0, 0, 0, 0, 1, 0, " + this.tx + ", " + this.ty + ", 0, 1)";
		}
	}
	,toMozString: function() {
		return "matrix(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + "px, " + this.ty + "px)";
	}
	,toString: function() {
		return "matrix(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + ", " + this.ty + ")";
	}
	,transformPoint: function(pos) {
		return new openfl_geom_Point(pos.x * this.a + pos.y * this.c + this.tx,pos.x * this.b + pos.y * this.d + this.ty);
	}
	,translate: function(dx,dy) {
		this.tx += dx;
		this.ty += dy;
	}
	,toArray: function(transpose) {
		if(transpose == null) {
			transpose = false;
		}
		if(this.__array == null) {
			var this1 = new Float32Array(9);
			this.__array = this1;
		}
		if(transpose) {
			this.__array[0] = this.a;
			this.__array[1] = this.b;
			this.__array[2] = 0;
			this.__array[3] = this.c;
			this.__array[4] = this.d;
			this.__array[5] = 0;
			this.__array[6] = this.tx;
			this.__array[7] = this.ty;
			this.__array[8] = 1;
		} else {
			this.__array[0] = this.a;
			this.__array[1] = this.c;
			this.__array[2] = this.tx;
			this.__array[3] = this.b;
			this.__array[4] = this.d;
			this.__array[5] = this.ty;
			this.__array[6] = 0;
			this.__array[7] = 0;
			this.__array[8] = 1;
		}
		return this.__array;
	}
	,__cleanValues: function() {
		this.a = Math.round(this.a * 1000) / 1000;
		this.b = Math.round(this.b * 1000) / 1000;
		this.c = Math.round(this.c * 1000) / 1000;
		this.d = Math.round(this.d * 1000) / 1000;
		this.tx = Math.round(this.tx * 10) / 10;
		this.ty = Math.round(this.ty * 10) / 10;
	}
	,__toMatrix3: function() {
		openfl_geom_Matrix.__matrix3.setTo(this.a,this.b,this.c,this.d,this.tx,this.ty);
		return openfl_geom_Matrix.__matrix3;
	}
	,__transformInversePoint: function(point) {
		var norm = this.a * this.d - this.b * this.c;
		if(norm == 0) {
			point.x = -this.tx;
			point.y = -this.ty;
		} else {
			var px = 1.0 / norm * (this.c * (this.ty - point.y) + this.d * (point.x - this.tx));
			point.y = 1.0 / norm * (this.a * (point.y - this.ty) + this.b * (this.tx - point.x));
			point.x = px;
		}
	}
	,__transformInverseX: function(px,py) {
		var norm = this.a * this.d - this.b * this.c;
		if(norm == 0) {
			return -this.tx;
		} else {
			return 1.0 / norm * (this.c * (this.ty - py) + this.d * (px - this.tx));
		}
	}
	,__transformInverseY: function(px,py) {
		var norm = this.a * this.d - this.b * this.c;
		if(norm == 0) {
			return -this.ty;
		} else {
			return 1.0 / norm * (this.a * (py - this.ty) + this.b * (this.tx - px));
		}
	}
	,__transformPoint: function(point) {
		var px = point.x;
		var py = point.y;
		point.x = px * this.a + py * this.c + this.tx;
		point.y = px * this.b + py * this.d + this.ty;
	}
	,__transformX: function(px,py) {
		return px * this.a + py * this.c + this.tx;
	}
	,__transformY: function(px,py) {
		return px * this.b + py * this.d + this.ty;
	}
	,__translateTransformed: function(px,py) {
		this.tx = px * this.a + py * this.c + this.tx;
		this.ty = px * this.b + py * this.d + this.ty;
	}
	,__class__: openfl_geom_Matrix
};
var openfl_geom_Matrix3D = function(v) {
	if(v != null && v.data.get_length() == 16) {
		var data = null;
		this.rawData = new openfl__$Vector_AbstractVector(v.data.concat(data));
	} else {
		var a = [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0];
		var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		var _g1 = 0;
		var _g = a.length;
		while(_g1 < _g) {
			var i = _g1++;
			vector.data.set(i,a[i]);
		}
		this.rawData = vector;
	}
};
$hxClasses["openfl.geom.Matrix3D"] = openfl_geom_Matrix3D;
openfl_geom_Matrix3D.__name__ = ["openfl","geom","Matrix3D"];
openfl_geom_Matrix3D.create2D = function(x,y,scale,rotation) {
	if(rotation == null) {
		rotation = 0;
	}
	if(scale == null) {
		scale = 1;
	}
	var theta = rotation * Math.PI / 180.0;
	var c = Math.cos(theta);
	var s = Math.sin(theta);
	var a = [c * scale,-s * scale,0,0,s * scale,c * scale,0,0,0,0,1,0,x,y,0,1];
	var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	var _g1 = 0;
	var _g = a.length;
	while(_g1 < _g) {
		var i = _g1++;
		vector.data.set(i,a[i]);
	}
	return new openfl_geom_Matrix3D(vector);
};
openfl_geom_Matrix3D.createABCD = function(a,b,c,d,tx,ty) {
	var a1 = [a,b,0,0,c,d,0,0,0,0,1,0,tx,ty,0,1];
	var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	var _g1 = 0;
	var _g = a1.length;
	while(_g1 < _g) {
		var i = _g1++;
		vector.data.set(i,a1[i]);
	}
	return new openfl_geom_Matrix3D(vector);
};
openfl_geom_Matrix3D.createOrtho = function(x0,x1,y0,y1,zNear,zFar) {
	var sx = 1.0 / (x1 - x0);
	var sy = 1.0 / (y1 - y0);
	var sz = 1.0 / (zFar - zNear);
	var a = [2.0 * sx,0,0,0,0,2.0 * sy,0,0,0,0,-2.0 * sz,0,-(x0 + x1) * sx,-(y0 + y1) * sy,-(zNear + zFar) * sz,1];
	var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
	var _g1 = 0;
	var _g = a.length;
	while(_g1 < _g) {
		var i = _g1++;
		vector.data.set(i,a[i]);
	}
	return new openfl_geom_Matrix3D(vector);
};
openfl_geom_Matrix3D.interpolate = function(thisMat,toMat,percent) {
	var m = new openfl_geom_Matrix3D();
	var _g = 0;
	while(_g < 16) {
		var i = _g++;
		var this1 = m.rawData;
		var value = thisMat.rawData.data.get(i) + (toMat.rawData.data.get(i) - thisMat.rawData.data.get(i)) * percent;
		this1.data.set(i,value);
	}
	return m;
};
openfl_geom_Matrix3D.__getAxisRotation = function(x,y,z,degrees) {
	var m = new openfl_geom_Matrix3D();
	var a1 = new openfl_geom_Vector3D(x,y,z);
	var rad = -degrees * (Math.PI / 180);
	var c = Math.cos(rad);
	var s = Math.sin(rad);
	var t = 1.0 - c;
	m.rawData.data.set(0,c + a1.x * a1.x * t);
	m.rawData.data.set(5,c + a1.y * a1.y * t);
	m.rawData.data.set(10,c + a1.z * a1.z * t);
	var tmp1 = a1.x * a1.y * t;
	var tmp2 = a1.z * s;
	m.rawData.data.set(4,tmp1 + tmp2);
	m.rawData.data.set(1,tmp1 - tmp2);
	tmp1 = a1.x * a1.z * t;
	tmp2 = a1.y * s;
	m.rawData.data.set(8,tmp1 - tmp2);
	m.rawData.data.set(2,tmp1 + tmp2);
	tmp1 = a1.y * a1.z * t;
	tmp2 = a1.x * s;
	m.rawData.data.set(9,tmp1 + tmp2);
	m.rawData.data.set(6,tmp1 - tmp2);
	return m;
};
openfl_geom_Matrix3D.prototype = {
	rawData: null
	,append: function(lhs) {
		var m111 = this.rawData.data.get(0);
		var m121 = this.rawData.data.get(4);
		var m131 = this.rawData.data.get(8);
		var m141 = this.rawData.data.get(12);
		var m112 = this.rawData.data.get(1);
		var m122 = this.rawData.data.get(5);
		var m132 = this.rawData.data.get(9);
		var m142 = this.rawData.data.get(13);
		var m113 = this.rawData.data.get(2);
		var m123 = this.rawData.data.get(6);
		var m133 = this.rawData.data.get(10);
		var m143 = this.rawData.data.get(14);
		var m114 = this.rawData.data.get(3);
		var m124 = this.rawData.data.get(7);
		var m134 = this.rawData.data.get(11);
		var m144 = this.rawData.data.get(15);
		var m211 = lhs.rawData.data.get(0);
		var m221 = lhs.rawData.data.get(4);
		var m231 = lhs.rawData.data.get(8);
		var m241 = lhs.rawData.data.get(12);
		var m212 = lhs.rawData.data.get(1);
		var m222 = lhs.rawData.data.get(5);
		var m232 = lhs.rawData.data.get(9);
		var m242 = lhs.rawData.data.get(13);
		var m213 = lhs.rawData.data.get(2);
		var m223 = lhs.rawData.data.get(6);
		var m233 = lhs.rawData.data.get(10);
		var m243 = lhs.rawData.data.get(14);
		var m214 = lhs.rawData.data.get(3);
		var m224 = lhs.rawData.data.get(7);
		var m234 = lhs.rawData.data.get(11);
		var m244 = lhs.rawData.data.get(15);
		this.rawData.data.set(0,m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241);
		this.rawData.data.set(1,m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242);
		this.rawData.data.set(2,m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243);
		this.rawData.data.set(3,m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244);
		this.rawData.data.set(4,m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241);
		this.rawData.data.set(5,m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242);
		this.rawData.data.set(6,m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243);
		this.rawData.data.set(7,m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244);
		this.rawData.data.set(8,m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241);
		this.rawData.data.set(9,m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242);
		this.rawData.data.set(10,m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243);
		this.rawData.data.set(11,m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244);
		this.rawData.data.set(12,m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241);
		this.rawData.data.set(13,m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242);
		this.rawData.data.set(14,m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243);
		this.rawData.data.set(15,m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244);
	}
	,appendRotation: function(degrees,axis,pivotPoint) {
		var tx;
		var ty;
		var tz = 0;
		ty = tz;
		tx = ty;
		if(pivotPoint != null) {
			tx = pivotPoint.x;
			ty = pivotPoint.y;
			tz = pivotPoint.z;
		}
		var radian = degrees * Math.PI / 180;
		var cos = Math.cos(radian);
		var sin = Math.sin(radian);
		var x = axis.x;
		var y = axis.y;
		var z = axis.z;
		var x2 = x * x;
		var y2 = y * y;
		var z2 = z * z;
		var ls = x2 + y2 + z2;
		if(ls != 0) {
			var l = Math.sqrt(ls);
			x /= l;
			y /= l;
			z /= l;
			x2 /= ls;
			y2 /= ls;
			z2 /= ls;
		}
		var ccos = 1 - cos;
		var m = new openfl_geom_Matrix3D();
		var d = m.rawData;
		d.data.set(0,x2 + (y2 + z2) * cos);
		d.data.set(1,x * y * ccos + z * sin);
		d.data.set(2,x * z * ccos - y * sin);
		d.data.set(4,x * y * ccos - z * sin);
		d.data.set(5,y2 + (x2 + z2) * cos);
		d.data.set(6,y * z * ccos + x * sin);
		d.data.set(8,x * z * ccos + y * sin);
		d.data.set(9,y * z * ccos - x * sin);
		d.data.set(10,z2 + (x2 + y2) * cos);
		d.data.set(12,(tx * (y2 + z2) - x * (ty * y + tz * z)) * ccos + (ty * z - tz * y) * sin);
		d.data.set(13,(ty * (x2 + z2) - y * (tx * x + tz * z)) * ccos + (tz * x - tx * z) * sin);
		d.data.set(14,(tz * (x2 + y2) - z * (tx * x + ty * y)) * ccos + (tx * y - ty * x) * sin);
		this.append(m);
	}
	,appendScale: function(xScale,yScale,zScale) {
		var a = [xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0];
		var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		var _g1 = 0;
		var _g = a.length;
		while(_g1 < _g) {
			var i = _g1++;
			vector.data.set(i,a[i]);
		}
		this.append(new openfl_geom_Matrix3D(vector));
	}
	,appendTranslation: function(x,y,z) {
		var _g = this.rawData;
		var value = _g.data.get(12) + x;
		_g.data.set(12,value);
		var _g1 = this.rawData;
		var value1 = _g1.data.get(13) + y;
		_g1.data.set(13,value1);
		var _g2 = this.rawData;
		var value2 = _g2.data.get(14) + z;
		_g2.data.set(14,value2);
	}
	,clone: function() {
		return new openfl_geom_Matrix3D(new openfl__$Vector_AbstractVector(this.rawData.data.copy()));
	}
	,copyColumnFrom: function(column,vector3D) {
		switch(column) {
		case 0:
			this.rawData.data.set(0,vector3D.x);
			this.rawData.data.set(1,vector3D.y);
			this.rawData.data.set(2,vector3D.z);
			this.rawData.data.set(3,vector3D.w);
			break;
		case 1:
			this.rawData.data.set(4,vector3D.x);
			this.rawData.data.set(5,vector3D.y);
			this.rawData.data.set(6,vector3D.z);
			this.rawData.data.set(7,vector3D.w);
			break;
		case 2:
			this.rawData.data.set(8,vector3D.x);
			this.rawData.data.set(9,vector3D.y);
			this.rawData.data.set(10,vector3D.z);
			this.rawData.data.set(11,vector3D.w);
			break;
		case 3:
			this.rawData.data.set(12,vector3D.x);
			this.rawData.data.set(13,vector3D.y);
			this.rawData.data.set(14,vector3D.z);
			this.rawData.data.set(15,vector3D.w);
			break;
		default:
		}
	}
	,copyColumnTo: function(column,vector3D) {
		switch(column) {
		case 0:
			vector3D.x = this.rawData.data.get(0);
			vector3D.y = this.rawData.data.get(1);
			vector3D.z = this.rawData.data.get(2);
			vector3D.w = this.rawData.data.get(3);
			break;
		case 1:
			vector3D.x = this.rawData.data.get(4);
			vector3D.y = this.rawData.data.get(5);
			vector3D.z = this.rawData.data.get(6);
			vector3D.w = this.rawData.data.get(7);
			break;
		case 2:
			vector3D.x = this.rawData.data.get(8);
			vector3D.y = this.rawData.data.get(9);
			vector3D.z = this.rawData.data.get(10);
			vector3D.w = this.rawData.data.get(11);
			break;
		case 3:
			vector3D.x = this.rawData.data.get(12);
			vector3D.y = this.rawData.data.get(13);
			vector3D.z = this.rawData.data.get(14);
			vector3D.w = this.rawData.data.get(15);
			break;
		default:
		}
	}
	,copyFrom: function(other) {
		this.rawData = new openfl__$Vector_AbstractVector(other.rawData.data.copy());
	}
	,copyRawDataFrom: function(vector,index,transpose) {
		if(transpose == null) {
			transpose = false;
		}
		if(index == null) {
			index = 0;
		}
		if(transpose) {
			this.transpose();
		}
		var length = vector.data.get_length() - index;
		var _g1 = 0;
		var _g = length;
		while(_g1 < _g) {
			var i = _g1++;
			var this1 = this.rawData;
			var value = vector.data.get(i + index);
			this1.data.set(i,value);
		}
		if(transpose) {
			this.transpose();
		}
	}
	,copyRawDataTo: function(vector,index,transpose) {
		if(transpose == null) {
			transpose = false;
		}
		if(index == null) {
			index = 0;
		}
		if(transpose) {
			this.transpose();
		}
		var _g1 = 0;
		var _g = this.rawData.data.get_length();
		while(_g1 < _g) {
			var i = _g1++;
			var value = this.rawData.data.get(i);
			vector.data.set(i + index,value);
		}
		if(transpose) {
			this.transpose();
		}
	}
	,copyRowFrom: function(row,vector3D) {
		switch(row) {
		case 0:
			this.rawData.data.set(0,vector3D.x);
			this.rawData.data.set(4,vector3D.y);
			this.rawData.data.set(8,vector3D.z);
			this.rawData.data.set(12,vector3D.w);
			break;
		case 1:
			this.rawData.data.set(1,vector3D.x);
			this.rawData.data.set(5,vector3D.y);
			this.rawData.data.set(9,vector3D.z);
			this.rawData.data.set(13,vector3D.w);
			break;
		case 2:
			this.rawData.data.set(2,vector3D.x);
			this.rawData.data.set(6,vector3D.y);
			this.rawData.data.set(10,vector3D.z);
			this.rawData.data.set(14,vector3D.w);
			break;
		case 3:
			this.rawData.data.set(3,vector3D.x);
			this.rawData.data.set(7,vector3D.y);
			this.rawData.data.set(11,vector3D.z);
			this.rawData.data.set(15,vector3D.w);
			break;
		default:
		}
	}
	,copyRowTo: function(row,vector3D) {
		switch(row) {
		case 0:
			vector3D.x = this.rawData.data.get(0);
			vector3D.y = this.rawData.data.get(4);
			vector3D.z = this.rawData.data.get(8);
			vector3D.w = this.rawData.data.get(12);
			break;
		case 1:
			vector3D.x = this.rawData.data.get(1);
			vector3D.y = this.rawData.data.get(5);
			vector3D.z = this.rawData.data.get(9);
			vector3D.w = this.rawData.data.get(13);
			break;
		case 2:
			vector3D.x = this.rawData.data.get(2);
			vector3D.y = this.rawData.data.get(6);
			vector3D.z = this.rawData.data.get(10);
			vector3D.w = this.rawData.data.get(14);
			break;
		case 3:
			vector3D.x = this.rawData.data.get(3);
			vector3D.y = this.rawData.data.get(7);
			vector3D.z = this.rawData.data.get(11);
			vector3D.w = this.rawData.data.get(15);
			break;
		default:
		}
	}
	,copyToMatrix3D: function(other) {
		other.rawData = new openfl__$Vector_AbstractVector(this.rawData.data.copy());
	}
	,decompose: function(orientationStyle) {
		if(orientationStyle == null) {
			orientationStyle = 1;
		}
		var vec = openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
		var m = this.clone();
		var mr = new openfl__$Vector_AbstractVector(m.rawData.data.copy());
		var pos = new openfl_geom_Vector3D(mr.data.get(12),mr.data.get(13),mr.data.get(14));
		mr.data.set(12,0);
		mr.data.set(13,0);
		mr.data.set(14,0);
		var scale = new openfl_geom_Vector3D();
		scale.x = Math.sqrt(mr.data.get(0) * mr.data.get(0) + mr.data.get(1) * mr.data.get(1) + mr.data.get(2) * mr.data.get(2));
		scale.y = Math.sqrt(mr.data.get(4) * mr.data.get(4) + mr.data.get(5) * mr.data.get(5) + mr.data.get(6) * mr.data.get(6));
		scale.z = Math.sqrt(mr.data.get(8) * mr.data.get(8) + mr.data.get(9) * mr.data.get(9) + mr.data.get(10) * mr.data.get(10));
		if(mr.data.get(0) * (mr.data.get(5) * mr.data.get(10) - mr.data.get(6) * mr.data.get(9)) - mr.data.get(1) * (mr.data.get(4) * mr.data.get(10) - mr.data.get(6) * mr.data.get(8)) + mr.data.get(2) * (mr.data.get(4) * mr.data.get(9) - mr.data.get(5) * mr.data.get(8)) < 0) {
			scale.z = -scale.z;
		}
		var _g = mr;
		var value = _g.data.get(0) / scale.x;
		_g.data.set(0,value);
		var _g1 = mr;
		var value1 = _g1.data.get(1) / scale.x;
		_g1.data.set(1,value1);
		var _g2 = mr;
		var value2 = _g2.data.get(2) / scale.x;
		_g2.data.set(2,value2);
		var _g3 = mr;
		var value3 = _g3.data.get(4) / scale.y;
		_g3.data.set(4,value3);
		var _g4 = mr;
		var value4 = _g4.data.get(5) / scale.y;
		_g4.data.set(5,value4);
		var _g5 = mr;
		var value5 = _g5.data.get(6) / scale.y;
		_g5.data.set(6,value5);
		var _g6 = mr;
		var value6 = _g6.data.get(8) / scale.z;
		_g6.data.set(8,value6);
		var _g7 = mr;
		var value7 = _g7.data.get(9) / scale.z;
		_g7.data.set(9,value7);
		var _g8 = mr;
		var value8 = _g8.data.get(10) / scale.z;
		_g8.data.set(10,value8);
		var rot = new openfl_geom_Vector3D();
		switch(orientationStyle) {
		case 0:
			rot.w = Math.acos((mr.data.get(0) + mr.data.get(5) + mr.data.get(10) - 1) / 2);
			var len = Math.sqrt((mr.data.get(6) - mr.data.get(9)) * (mr.data.get(6) - mr.data.get(9)) + (mr.data.get(8) - mr.data.get(2)) * (mr.data.get(8) - mr.data.get(2)) + (mr.data.get(1) - mr.data.get(4)) * (mr.data.get(1) - mr.data.get(4)));
			if(len != 0) {
				rot.x = (mr.data.get(6) - mr.data.get(9)) / len;
				rot.y = (mr.data.get(8) - mr.data.get(2)) / len;
				rot.z = (mr.data.get(1) - mr.data.get(4)) / len;
			} else {
				rot.x = rot.y = rot.z = 0;
			}
			break;
		case 1:
			rot.y = Math.asin(-mr.data.get(2));
			if(mr.data.get(2) != 1 && mr.data.get(2) != -1) {
				rot.x = Math.atan2(mr.data.get(6),mr.data.get(10));
				rot.z = Math.atan2(mr.data.get(1),mr.data.get(0));
			} else {
				rot.z = 0;
				rot.x = Math.atan2(mr.data.get(4),mr.data.get(5));
			}
			break;
		case 2:
			var tr = mr.data.get(0) + mr.data.get(5) + mr.data.get(10);
			if(tr > 0) {
				rot.w = Math.sqrt(1 + tr) / 2;
				rot.x = (mr.data.get(6) - mr.data.get(9)) / (4 * rot.w);
				rot.y = (mr.data.get(8) - mr.data.get(2)) / (4 * rot.w);
				rot.z = (mr.data.get(1) - mr.data.get(4)) / (4 * rot.w);
			} else if(mr.data.get(0) > mr.data.get(5) && mr.data.get(0) > mr.data.get(10)) {
				rot.x = Math.sqrt(1 + mr.data.get(0) - mr.data.get(5) - mr.data.get(10)) / 2;
				rot.w = (mr.data.get(6) - mr.data.get(9)) / (4 * rot.x);
				rot.y = (mr.data.get(1) + mr.data.get(4)) / (4 * rot.x);
				rot.z = (mr.data.get(8) + mr.data.get(2)) / (4 * rot.x);
			} else if(mr.data.get(5) > mr.data.get(10)) {
				rot.y = Math.sqrt(1 + mr.data.get(5) - mr.data.get(0) - mr.data.get(10)) / 2;
				rot.x = (mr.data.get(1) + mr.data.get(4)) / (4 * rot.y);
				rot.w = (mr.data.get(8) - mr.data.get(2)) / (4 * rot.y);
				rot.z = (mr.data.get(6) + mr.data.get(9)) / (4 * rot.y);
			} else {
				rot.z = Math.sqrt(1 + mr.data.get(10) - mr.data.get(0) - mr.data.get(5)) / 2;
				rot.x = (mr.data.get(8) + mr.data.get(2)) / (4 * rot.z);
				rot.y = (mr.data.get(6) + mr.data.get(9)) / (4 * rot.z);
				rot.w = (mr.data.get(1) - mr.data.get(4)) / (4 * rot.z);
			}
			break;
		}
		vec.data.push(pos);
		vec.data.push(rot);
		vec.data.push(scale);
		return vec;
	}
	,deltaTransformVector: function(v) {
		var x = v.x;
		var y = v.y;
		var z = v.z;
		return new openfl_geom_Vector3D(x * this.rawData.data.get(0) + y * this.rawData.data.get(4) + z * this.rawData.data.get(8) + this.rawData.data.get(3),x * this.rawData.data.get(1) + y * this.rawData.data.get(5) + z * this.rawData.data.get(9) + this.rawData.data.get(7),x * this.rawData.data.get(2) + y * this.rawData.data.get(6) + z * this.rawData.data.get(10) + this.rawData.data.get(11),0);
	}
	,identity: function() {
		var a = [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0];
		var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		var _g1 = 0;
		var _g = a.length;
		while(_g1 < _g) {
			var i = _g1++;
			vector.data.set(i,a[i]);
		}
		this.rawData = vector;
	}
	,interpolateTo: function(toMat,percent) {
		var _g = 0;
		while(_g < 16) {
			var i = _g++;
			var this1 = this.rawData;
			var value = this.rawData.data.get(i) + (toMat.rawData.data.get(i) - this.rawData.data.get(i)) * percent;
			this1.data.set(i,value);
		}
	}
	,invert: function() {
		var d = this.get_determinant();
		var invertable = Math.abs(d) > 0.00000000001;
		if(invertable) {
			d = 1 / d;
			var m11 = this.rawData.data.get(0);
			var m21 = this.rawData.data.get(4);
			var m31 = this.rawData.data.get(8);
			var m41 = this.rawData.data.get(12);
			var m12 = this.rawData.data.get(1);
			var m22 = this.rawData.data.get(5);
			var m32 = this.rawData.data.get(9);
			var m42 = this.rawData.data.get(13);
			var m13 = this.rawData.data.get(2);
			var m23 = this.rawData.data.get(6);
			var m33 = this.rawData.data.get(10);
			var m43 = this.rawData.data.get(14);
			var m14 = this.rawData.data.get(3);
			var m24 = this.rawData.data.get(7);
			var m34 = this.rawData.data.get(11);
			var m44 = this.rawData.data.get(15);
			this.rawData.data.set(0,d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24)));
			this.rawData.data.set(1,-d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14)));
			this.rawData.data.set(2,d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14)));
			this.rawData.data.set(3,-d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14)));
			this.rawData.data.set(4,-d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24)));
			this.rawData.data.set(5,d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14)));
			this.rawData.data.set(6,-d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14)));
			this.rawData.data.set(7,d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14)));
			this.rawData.data.set(8,d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24)));
			this.rawData.data.set(9,-d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14)));
			this.rawData.data.set(10,d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14)));
			this.rawData.data.set(11,-d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14)));
			this.rawData.data.set(12,-d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23)));
			this.rawData.data.set(13,d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13)));
			this.rawData.data.set(14,-d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13)));
			this.rawData.data.set(15,d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13)));
		}
		return invertable;
	}
	,pointAt: function(pos,at,up) {
		if(at == null) {
			at = new openfl_geom_Vector3D(0,0,-1);
		}
		if(up == null) {
			up = new openfl_geom_Vector3D(0,-1,0);
		}
		var dir = at.subtract(pos);
		var vup = up.clone();
		var right;
		dir.normalize();
		vup.normalize();
		var dir2 = dir.clone();
		dir2.scaleBy(vup.dotProduct(dir));
		vup = vup.subtract(dir2);
		if(vup.get_length() > 0) {
			vup.normalize();
		} else if(dir.x != 0) {
			vup = new openfl_geom_Vector3D(-dir.y,dir.x,0);
		} else {
			vup = new openfl_geom_Vector3D(1,0,0);
		}
		right = vup.crossProduct(dir);
		right.normalize();
		this.rawData.data.set(0,right.x);
		this.rawData.data.set(4,right.y);
		this.rawData.data.set(8,right.z);
		this.rawData.data.set(12,0.0);
		this.rawData.data.set(1,vup.x);
		this.rawData.data.set(5,vup.y);
		this.rawData.data.set(9,vup.z);
		this.rawData.data.set(13,0.0);
		this.rawData.data.set(2,dir.x);
		this.rawData.data.set(6,dir.y);
		this.rawData.data.set(10,dir.z);
		this.rawData.data.set(14,0.0);
		this.rawData.data.set(3,pos.x);
		this.rawData.data.set(7,pos.y);
		this.rawData.data.set(11,pos.z);
		this.rawData.data.set(15,1.0);
	}
	,prepend: function(rhs) {
		var m111 = rhs.rawData.data.get(0);
		var m121 = rhs.rawData.data.get(4);
		var m131 = rhs.rawData.data.get(8);
		var m141 = rhs.rawData.data.get(12);
		var m112 = rhs.rawData.data.get(1);
		var m122 = rhs.rawData.data.get(5);
		var m132 = rhs.rawData.data.get(9);
		var m142 = rhs.rawData.data.get(13);
		var m113 = rhs.rawData.data.get(2);
		var m123 = rhs.rawData.data.get(6);
		var m133 = rhs.rawData.data.get(10);
		var m143 = rhs.rawData.data.get(14);
		var m114 = rhs.rawData.data.get(3);
		var m124 = rhs.rawData.data.get(7);
		var m134 = rhs.rawData.data.get(11);
		var m144 = rhs.rawData.data.get(15);
		var m211 = this.rawData.data.get(0);
		var m221 = this.rawData.data.get(4);
		var m231 = this.rawData.data.get(8);
		var m241 = this.rawData.data.get(12);
		var m212 = this.rawData.data.get(1);
		var m222 = this.rawData.data.get(5);
		var m232 = this.rawData.data.get(9);
		var m242 = this.rawData.data.get(13);
		var m213 = this.rawData.data.get(2);
		var m223 = this.rawData.data.get(6);
		var m233 = this.rawData.data.get(10);
		var m243 = this.rawData.data.get(14);
		var m214 = this.rawData.data.get(3);
		var m224 = this.rawData.data.get(7);
		var m234 = this.rawData.data.get(11);
		var m244 = this.rawData.data.get(15);
		this.rawData.data.set(0,m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241);
		this.rawData.data.set(1,m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242);
		this.rawData.data.set(2,m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243);
		this.rawData.data.set(3,m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244);
		this.rawData.data.set(4,m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241);
		this.rawData.data.set(5,m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242);
		this.rawData.data.set(6,m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243);
		this.rawData.data.set(7,m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244);
		this.rawData.data.set(8,m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241);
		this.rawData.data.set(9,m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242);
		this.rawData.data.set(10,m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243);
		this.rawData.data.set(11,m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244);
		this.rawData.data.set(12,m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241);
		this.rawData.data.set(13,m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242);
		this.rawData.data.set(14,m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243);
		this.rawData.data.set(15,m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244);
	}
	,prependRotation: function(degrees,axis,pivotPoint) {
		var tx;
		var ty;
		var tz = 0;
		ty = tz;
		tx = ty;
		if(pivotPoint != null) {
			tx = pivotPoint.x;
			ty = pivotPoint.y;
			tz = pivotPoint.z;
		}
		var radian = degrees * Math.PI / 180;
		var cos = Math.cos(radian);
		var sin = Math.sin(radian);
		var x = axis.x;
		var y = axis.y;
		var z = axis.z;
		var x2 = x * x;
		var y2 = y * y;
		var z2 = z * z;
		var ls = x2 + y2 + z2;
		if(ls != 0) {
			var l = Math.sqrt(ls);
			x /= l;
			y /= l;
			z /= l;
			x2 /= ls;
			y2 /= ls;
			z2 /= ls;
		}
		var ccos = 1 - cos;
		var m = new openfl_geom_Matrix3D();
		var d = m.rawData;
		d.data.set(0,x2 + (y2 + z2) * cos);
		d.data.set(1,x * y * ccos + z * sin);
		d.data.set(2,x * z * ccos - y * sin);
		d.data.set(4,x * y * ccos - z * sin);
		d.data.set(5,y2 + (x2 + z2) * cos);
		d.data.set(6,y * z * ccos + x * sin);
		d.data.set(8,x * z * ccos + y * sin);
		d.data.set(9,y * z * ccos - x * sin);
		d.data.set(10,z2 + (x2 + y2) * cos);
		d.data.set(12,(tx * (y2 + z2) - x * (ty * y + tz * z)) * ccos + (ty * z - tz * y) * sin);
		d.data.set(13,(ty * (x2 + z2) - y * (tx * x + tz * z)) * ccos + (tz * x - tx * z) * sin);
		d.data.set(14,(tz * (x2 + y2) - z * (tx * x + ty * y)) * ccos + (tx * y - ty * x) * sin);
		this.prepend(m);
	}
	,prependScale: function(xScale,yScale,zScale) {
		var a = [xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0];
		var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
		var _g1 = 0;
		var _g = a.length;
		while(_g1 < _g) {
			var i = _g1++;
			vector.data.set(i,a[i]);
		}
		this.prepend(new openfl_geom_Matrix3D(vector));
	}
	,prependTranslation: function(x,y,z) {
		var m = new openfl_geom_Matrix3D();
		m.set_position(new openfl_geom_Vector3D(x,y,z));
		this.prepend(m);
	}
	,recompose: function(components,orientationStyle) {
		if(components.data.get_length() < 3 || components.data.get(2).x == 0 || components.data.get(2).y == 0 || components.data.get(2).z == 0) {
			return false;
		}
		if(orientationStyle == null) {
			orientationStyle = 1;
		}
		this.identity();
		var scale = [];
		scale[0] = scale[1] = scale[2] = components.data.get(2).x;
		scale[4] = scale[5] = scale[6] = components.data.get(2).y;
		scale[8] = scale[9] = scale[10] = components.data.get(2).z;
		if(orientationStyle == null) {
			var x = components.data.get(1).x;
			var y = components.data.get(1).y;
			var z = components.data.get(1).z;
			var w = components.data.get(1).w;
			if(orientationStyle == 0) {
				x *= Math.sin(w / 2);
				y *= Math.sin(w / 2);
				z *= Math.sin(w / 2);
				w = Math.cos(w / 2);
			}
			this.rawData.data.set(0,(1 - 2 * y * y - 2 * z * z) * scale[0]);
			this.rawData.data.set(1,(2 * x * y + 2 * w * z) * scale[1]);
			this.rawData.data.set(2,(2 * x * z - 2 * w * y) * scale[2]);
			this.rawData.data.set(3,0);
			this.rawData.data.set(4,(2 * x * y - 2 * w * z) * scale[4]);
			this.rawData.data.set(5,(1 - 2 * x * x - 2 * z * z) * scale[5]);
			this.rawData.data.set(6,(2 * y * z + 2 * w * x) * scale[6]);
			this.rawData.data.set(7,0);
			this.rawData.data.set(8,(2 * x * z + 2 * w * y) * scale[8]);
			this.rawData.data.set(9,(2 * y * z - 2 * w * x) * scale[9]);
			this.rawData.data.set(10,(1 - 2 * x * x - 2 * y * y) * scale[10]);
			this.rawData.data.set(11,0);
			var this1 = this.rawData;
			var value = components.data.get(0).x;
			this1.data.set(12,value);
			var this2 = this.rawData;
			var value1 = components.data.get(0).y;
			this2.data.set(13,value1);
			var this3 = this.rawData;
			var value2 = components.data.get(0).z;
			this3.data.set(14,value2);
			this.rawData.data.set(15,1);
		} else if(orientationStyle == 1) {
			var cx = Math.cos(components.data.get(1).x);
			var cy = Math.cos(components.data.get(1).y);
			var cz = Math.cos(components.data.get(1).z);
			var sx = Math.sin(components.data.get(1).x);
			var sy = Math.sin(components.data.get(1).y);
			var sz = Math.sin(components.data.get(1).z);
			this.rawData.data.set(0,cy * cz * scale[0]);
			this.rawData.data.set(1,cy * sz * scale[1]);
			this.rawData.data.set(2,-sy * scale[2]);
			this.rawData.data.set(3,0);
			this.rawData.data.set(4,(sx * sy * cz - cx * sz) * scale[4]);
			this.rawData.data.set(5,(sx * sy * sz + cx * cz) * scale[5]);
			this.rawData.data.set(6,sx * cy * scale[6]);
			this.rawData.data.set(7,0);
			this.rawData.data.set(8,(cx * sy * cz + sx * sz) * scale[8]);
			this.rawData.data.set(9,(cx * sy * sz - sx * cz) * scale[9]);
			this.rawData.data.set(10,cx * cy * scale[10]);
			this.rawData.data.set(11,0);
			var this4 = this.rawData;
			var value3 = components.data.get(0).x;
			this4.data.set(12,value3);
			var this5 = this.rawData;
			var value4 = components.data.get(0).y;
			this5.data.set(13,value4);
			var this6 = this.rawData;
			var value5 = components.data.get(0).z;
			this6.data.set(14,value5);
			this.rawData.data.set(15,1);
		} else {
			var x1 = components.data.get(1).x;
			var y1 = components.data.get(1).y;
			var z1 = components.data.get(1).z;
			var w1 = components.data.get(1).w;
			if(orientationStyle == 0) {
				x1 *= Math.sin(w1 / 2);
				y1 *= Math.sin(w1 / 2);
				z1 *= Math.sin(w1 / 2);
				w1 = Math.cos(w1 / 2);
			}
			this.rawData.data.set(0,(1 - 2 * y1 * y1 - 2 * z1 * z1) * scale[0]);
			this.rawData.data.set(1,(2 * x1 * y1 + 2 * w1 * z1) * scale[1]);
			this.rawData.data.set(2,(2 * x1 * z1 - 2 * w1 * y1) * scale[2]);
			this.rawData.data.set(3,0);
			this.rawData.data.set(4,(2 * x1 * y1 - 2 * w1 * z1) * scale[4]);
			this.rawData.data.set(5,(1 - 2 * x1 * x1 - 2 * z1 * z1) * scale[5]);
			this.rawData.data.set(6,(2 * y1 * z1 + 2 * w1 * x1) * scale[6]);
			this.rawData.data.set(7,0);
			this.rawData.data.set(8,(2 * x1 * z1 + 2 * w1 * y1) * scale[8]);
			this.rawData.data.set(9,(2 * y1 * z1 - 2 * w1 * x1) * scale[9]);
			this.rawData.data.set(10,(1 - 2 * x1 * x1 - 2 * y1 * y1) * scale[10]);
			this.rawData.data.set(11,0);
			var this7 = this.rawData;
			var value6 = components.data.get(0).x;
			this7.data.set(12,value6);
			var this8 = this.rawData;
			var value7 = components.data.get(0).y;
			this8.data.set(13,value7);
			var this9 = this.rawData;
			var value8 = components.data.get(0).z;
			this9.data.set(14,value8);
			this.rawData.data.set(15,1);
		}
		if(components.data.get(2).x == 0) {
			this.rawData.data.set(0,1e-15);
		}
		if(components.data.get(2).y == 0) {
			this.rawData.data.set(5,1e-15);
		}
		if(components.data.get(2).z == 0) {
			this.rawData.data.set(10,1e-15);
		}
		return !(components.data.get(2).x == 0 || components.data.get(2).y == 0 || components.data.get(2).y == 0);
	}
	,transformVector: function(v) {
		var x = v.x;
		var y = v.y;
		var z = v.z;
		return new openfl_geom_Vector3D(x * this.rawData.data.get(0) + y * this.rawData.data.get(4) + z * this.rawData.data.get(8) + this.rawData.data.get(12),x * this.rawData.data.get(1) + y * this.rawData.data.get(5) + z * this.rawData.data.get(9) + this.rawData.data.get(13),x * this.rawData.data.get(2) + y * this.rawData.data.get(6) + z * this.rawData.data.get(10) + this.rawData.data.get(14),x * this.rawData.data.get(3) + y * this.rawData.data.get(7) + z * this.rawData.data.get(11) + this.rawData.data.get(15));
	}
	,transformVectors: function(vin,vout) {
		var i = 0;
		var x;
		var y;
		var z;
		while(i + 3 <= vin.data.get_length()) {
			x = vin.data.get(i);
			y = vin.data.get(i + 1);
			z = vin.data.get(i + 2);
			var value = x * this.rawData.data.get(0) + y * this.rawData.data.get(4) + z * this.rawData.data.get(8) + this.rawData.data.get(12);
			vout.data.set(i,value);
			var value1 = x * this.rawData.data.get(1) + y * this.rawData.data.get(5) + z * this.rawData.data.get(9) + this.rawData.data.get(13);
			vout.data.set(i + 1,value1);
			var value2 = x * this.rawData.data.get(2) + y * this.rawData.data.get(6) + z * this.rawData.data.get(10) + this.rawData.data.get(14);
			vout.data.set(i + 2,value2);
			i += 3;
		}
	}
	,transpose: function() {
		var oRawData = new openfl__$Vector_AbstractVector(this.rawData.data.copy());
		var this1 = this.rawData;
		var value = oRawData.data.get(4);
		this1.data.set(1,value);
		var this2 = this.rawData;
		var value1 = oRawData.data.get(8);
		this2.data.set(2,value1);
		var this3 = this.rawData;
		var value2 = oRawData.data.get(12);
		this3.data.set(3,value2);
		var this4 = this.rawData;
		var value3 = oRawData.data.get(1);
		this4.data.set(4,value3);
		var this5 = this.rawData;
		var value4 = oRawData.data.get(9);
		this5.data.set(6,value4);
		var this6 = this.rawData;
		var value5 = oRawData.data.get(13);
		this6.data.set(7,value5);
		var this7 = this.rawData;
		var value6 = oRawData.data.get(2);
		this7.data.set(8,value6);
		var this8 = this.rawData;
		var value7 = oRawData.data.get(6);
		this8.data.set(9,value7);
		var this9 = this.rawData;
		var value8 = oRawData.data.get(14);
		this9.data.set(11,value8);
		var this10 = this.rawData;
		var value9 = oRawData.data.get(3);
		this10.data.set(12,value9);
		var this11 = this.rawData;
		var value10 = oRawData.data.get(7);
		this11.data.set(13,value10);
		var this12 = this.rawData;
		var value11 = oRawData.data.get(11);
		this12.data.set(14,value11);
	}
	,get_determinant: function() {
		return (this.rawData.data.get(0) * this.rawData.data.get(5) - this.rawData.data.get(4) * this.rawData.data.get(1)) * (this.rawData.data.get(10) * this.rawData.data.get(15) - this.rawData.data.get(14) * this.rawData.data.get(11)) - (this.rawData.data.get(0) * this.rawData.data.get(9) - this.rawData.data.get(8) * this.rawData.data.get(1)) * (this.rawData.data.get(6) * this.rawData.data.get(15) - this.rawData.data.get(14) * this.rawData.data.get(7)) + (this.rawData.data.get(0) * this.rawData.data.get(13) - this.rawData.data.get(12) * this.rawData.data.get(1)) * (this.rawData.data.get(6) * this.rawData.data.get(11) - this.rawData.data.get(10) * this.rawData.data.get(7)) + (this.rawData.data.get(4) * this.rawData.data.get(9) - this.rawData.data.get(8) * this.rawData.data.get(5)) * (this.rawData.data.get(2) * this.rawData.data.get(15) - this.rawData.data.get(14) * this.rawData.data.get(3)) - (this.rawData.data.get(4) * this.rawData.data.get(13) - this.rawData.data.get(12) * this.rawData.data.get(5)) * (this.rawData.data.get(2) * this.rawData.data.get(11) - this.rawData.data.get(10) * this.rawData.data.get(3)) + (this.rawData.data.get(8) * this.rawData.data.get(13) - this.rawData.data.get(12) * this.rawData.data.get(9)) * (this.rawData.data.get(2) * this.rawData.data.get(7) - this.rawData.data.get(6) * this.rawData.data.get(3));
	}
	,get_position: function() {
		return new openfl_geom_Vector3D(this.rawData.data.get(12),this.rawData.data.get(13),this.rawData.data.get(14));
	}
	,set_position: function(val) {
		this.rawData.data.set(12,val.x);
		this.rawData.data.set(13,val.y);
		this.rawData.data.set(14,val.z);
		return val;
	}
	,__class__: openfl_geom_Matrix3D
	,__properties__: {set_position:"set_position",get_position:"get_position",get_determinant:"get_determinant"}
};
var openfl_geom__$Orientation3D_Orientation3D_$Impl_$ = {};
$hxClasses["openfl.geom._Orientation3D.Orientation3D_Impl_"] = openfl_geom__$Orientation3D_Orientation3D_$Impl_$;
openfl_geom__$Orientation3D_Orientation3D_$Impl_$.__name__ = ["openfl","geom","_Orientation3D","Orientation3D_Impl_"];
openfl_geom__$Orientation3D_Orientation3D_$Impl_$.fromString = function(value) {
	switch(value) {
	case "axisAngle":
		return 0;
	case "eulerAngles":
		return 1;
	case "quaternion":
		return 2;
	default:
		return null;
	}
};
openfl_geom__$Orientation3D_Orientation3D_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "axisAngle";
	case 1:
		return "eulerAngles";
	case 2:
		return "quaternion";
	default:
		return null;
	}
};
var openfl_geom_Point = function(x,y) {
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	this.x = x;
	this.y = y;
};
$hxClasses["openfl.geom.Point"] = openfl_geom_Point;
openfl_geom_Point.__name__ = ["openfl","geom","Point"];
openfl_geom_Point.distance = function(pt1,pt2) {
	var dx = pt1.x - pt2.x;
	var dy = pt1.y - pt2.y;
	return Math.sqrt(dx * dx + dy * dy);
};
openfl_geom_Point.interpolate = function(pt1,pt2,f) {
	return new openfl_geom_Point(pt2.x + f * (pt1.x - pt2.x),pt2.y + f * (pt1.y - pt2.y));
};
openfl_geom_Point.polar = function(len,angle) {
	return new openfl_geom_Point(len * Math.cos(angle),len * Math.sin(angle));
};
openfl_geom_Point.prototype = {
	x: null
	,y: null
	,add: function(v) {
		return new openfl_geom_Point(v.x + this.x,v.y + this.y);
	}
	,clone: function() {
		return new openfl_geom_Point(this.x,this.y);
	}
	,copyFrom: function(sourcePoint) {
		this.x = sourcePoint.x;
		this.y = sourcePoint.y;
	}
	,equals: function(toCompare) {
		if(toCompare != null && toCompare.x == this.x) {
			return toCompare.y == this.y;
		} else {
			return false;
		}
	}
	,normalize: function(thickness) {
		if(this.x == 0 && this.y == 0) {
			return;
		} else {
			var norm = thickness / Math.sqrt(this.x * this.x + this.y * this.y);
			this.x *= norm;
			this.y *= norm;
		}
	}
	,offset: function(dx,dy) {
		this.x += dx;
		this.y += dy;
	}
	,setTo: function(xa,ya) {
		this.x = xa;
		this.y = ya;
	}
	,subtract: function(v) {
		return new openfl_geom_Point(this.x - v.x,this.y - v.y);
	}
	,toString: function() {
		return "(x=" + this.x + ", y=" + this.y + ")";
	}
	,__toLimeVector2: function() {
		if(openfl_geom_Point.__limeVector2 == null) {
			openfl_geom_Point.__limeVector2 = new lime_math_Vector2();
		}
		var _this = openfl_geom_Point.__limeVector2;
		_this.x = this.x;
		_this.y = this.y;
		return openfl_geom_Point.__limeVector2;
	}
	,get_length: function() {
		return Math.sqrt(this.x * this.x + this.y * this.y);
	}
	,__class__: openfl_geom_Point
	,__properties__: {get_length:"get_length"}
};
var openfl_geom_Rectangle = function(x,y,width,height) {
	if(height == null) {
		height = 0;
	}
	if(width == null) {
		width = 0;
	}
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	this.x = x;
	this.y = y;
	this.width = width;
	this.height = height;
};
$hxClasses["openfl.geom.Rectangle"] = openfl_geom_Rectangle;
openfl_geom_Rectangle.__name__ = ["openfl","geom","Rectangle"];
openfl_geom_Rectangle.prototype = {
	height: null
	,width: null
	,x: null
	,y: null
	,clone: function() {
		return new openfl_geom_Rectangle(this.x,this.y,this.width,this.height);
	}
	,contains: function(x,y) {
		if(x >= this.x && y >= this.y && x < this.get_right()) {
			return y < this.get_bottom();
		} else {
			return false;
		}
	}
	,containsPoint: function(point) {
		return this.contains(point.x,point.y);
	}
	,containsRect: function(rect) {
		if(rect.width <= 0 || rect.height <= 0) {
			if(rect.x > this.x && rect.y > this.y && rect.get_right() < this.get_right()) {
				return rect.get_bottom() < this.get_bottom();
			} else {
				return false;
			}
		} else if(rect.x >= this.x && rect.y >= this.y && rect.get_right() <= this.get_right()) {
			return rect.get_bottom() <= this.get_bottom();
		} else {
			return false;
		}
	}
	,copyFrom: function(sourceRect) {
		this.x = sourceRect.x;
		this.y = sourceRect.y;
		this.width = sourceRect.width;
		this.height = sourceRect.height;
	}
	,equals: function(toCompare) {
		if(toCompare == this) {
			return true;
		} else if(toCompare != null && this.x == toCompare.x && this.y == toCompare.y && this.width == toCompare.width) {
			return this.height == toCompare.height;
		} else {
			return false;
		}
	}
	,inflate: function(dx,dy) {
		this.x -= dx;
		this.width += dx * 2;
		this.y -= dy;
		this.height += dy * 2;
	}
	,inflatePoint: function(point) {
		this.inflate(point.x,point.y);
	}
	,intersection: function(toIntersect) {
		var x0 = this.x < toIntersect.x ? toIntersect.x : this.x;
		var x1 = this.get_right() > toIntersect.get_right() ? toIntersect.get_right() : this.get_right();
		if(x1 <= x0) {
			return new openfl_geom_Rectangle();
		}
		var y0 = this.y < toIntersect.y ? toIntersect.y : this.y;
		var y1 = this.get_bottom() > toIntersect.get_bottom() ? toIntersect.get_bottom() : this.get_bottom();
		if(y1 <= y0) {
			return new openfl_geom_Rectangle();
		}
		return new openfl_geom_Rectangle(x0,y0,x1 - x0,y1 - y0);
	}
	,intersects: function(toIntersect) {
		var x0 = this.x < toIntersect.x ? toIntersect.x : this.x;
		var x1 = this.get_right() > toIntersect.get_right() ? toIntersect.get_right() : this.get_right();
		if(x1 <= x0) {
			return false;
		}
		var y0 = this.y < toIntersect.y ? toIntersect.y : this.y;
		var y1 = this.get_bottom() > toIntersect.get_bottom() ? toIntersect.get_bottom() : this.get_bottom();
		return y1 > y0;
	}
	,isEmpty: function() {
		if(!(this.width <= 0)) {
			return this.height <= 0;
		} else {
			return true;
		}
	}
	,offset: function(dx,dy) {
		this.x += dx;
		this.y += dy;
	}
	,offsetPoint: function(point) {
		this.x += point.x;
		this.y += point.y;
	}
	,setEmpty: function() {
		this.x = this.y = this.width = this.height = 0;
	}
	,setTo: function(xa,ya,widtha,heighta) {
		this.x = xa;
		this.y = ya;
		this.width = widtha;
		this.height = heighta;
	}
	,toString: function() {
		return "(x=" + this.x + ", y=" + this.y + ", width=" + this.width + ", height=" + this.height + ")";
	}
	,union: function(toUnion) {
		if(this.width == 0 || this.height == 0) {
			return toUnion.clone();
		} else if(toUnion.width == 0 || toUnion.height == 0) {
			return this.clone();
		}
		var x0 = this.x > toUnion.x ? toUnion.x : this.x;
		var x1 = this.get_right() < toUnion.get_right() ? toUnion.get_right() : this.get_right();
		var y0 = this.y > toUnion.y ? toUnion.y : this.y;
		var y1 = this.get_bottom() < toUnion.get_bottom() ? toUnion.get_bottom() : this.get_bottom();
		return new openfl_geom_Rectangle(x0,y0,x1 - x0,y1 - y0);
	}
	,__contract: function(x,y,width,height) {
		if(this.width == 0 && this.height == 0) {
			return;
		}
		var offsetX = 0.0;
		var offsetY = 0.0;
		var offsetRight = 0.0;
		var offsetBottom = 0.0;
		if(this.x < x) {
			offsetX = x - this.x;
		}
		if(this.y < y) {
			offsetY = y - this.y;
		}
		if(this.get_right() > x + width) {
			offsetRight = x + width - this.get_right();
		}
		if(this.get_bottom() > y + height) {
			offsetBottom = y + height - this.get_bottom();
		}
		this.x += offsetX;
		this.y += offsetY;
		this.width += offsetRight - offsetX;
		this.height += offsetBottom - offsetY;
	}
	,__expand: function(x,y,width,height) {
		if(this.width == 0 && this.height == 0) {
			this.x = x;
			this.y = y;
			this.width = width;
			this.height = height;
			return;
		}
		var cacheRight = this.get_right();
		var cacheBottom = this.get_bottom();
		if(this.x > x) {
			this.x = x;
			this.width = cacheRight - x;
		}
		if(this.y > y) {
			this.y = y;
			this.height = cacheBottom - y;
		}
		if(cacheRight < x + width) {
			this.width = x + width - this.x;
		}
		if(cacheBottom < y + height) {
			this.height = y + height - this.y;
		}
	}
	,__toLimeRectangle: function() {
		if(openfl_geom_Rectangle.__limeRectangle == null) {
			openfl_geom_Rectangle.__limeRectangle = new lime_math_Rectangle();
		}
		openfl_geom_Rectangle.__limeRectangle.setTo(this.x,this.y,this.width,this.height);
		return openfl_geom_Rectangle.__limeRectangle;
	}
	,__transform: function(rect,m) {
		var tx0 = m.a * this.x + m.c * this.y;
		var tx1 = tx0;
		var ty0 = m.b * this.x + m.d * this.y;
		var ty1 = ty0;
		var tx = m.a * (this.x + this.width) + m.c * this.y;
		var ty = m.b * (this.x + this.width) + m.d * this.y;
		if(tx < tx0) {
			tx0 = tx;
		}
		if(ty < ty0) {
			ty0 = ty;
		}
		if(tx > tx1) {
			tx1 = tx;
		}
		if(ty > ty1) {
			ty1 = ty;
		}
		tx = m.a * (this.x + this.width) + m.c * (this.y + this.height);
		ty = m.b * (this.x + this.width) + m.d * (this.y + this.height);
		if(tx < tx0) {
			tx0 = tx;
		}
		if(ty < ty0) {
			ty0 = ty;
		}
		if(tx > tx1) {
			tx1 = tx;
		}
		if(ty > ty1) {
			ty1 = ty;
		}
		tx = m.a * this.x + m.c * (this.y + this.height);
		ty = m.b * this.x + m.d * (this.y + this.height);
		if(tx < tx0) {
			tx0 = tx;
		}
		if(ty < ty0) {
			ty0 = ty;
		}
		if(tx > tx1) {
			tx1 = tx;
		}
		if(ty > ty1) {
			ty1 = ty;
		}
		rect.setTo(tx0 + m.tx,ty0 + m.ty,tx1 - tx0,ty1 - ty0);
	}
	,get_bottom: function() {
		return this.y + this.height;
	}
	,set_bottom: function(b) {
		this.height = b - this.y;
		return b;
	}
	,get_bottomRight: function() {
		return new openfl_geom_Point(this.x + this.width,this.y + this.height);
	}
	,set_bottomRight: function(p) {
		this.width = p.x - this.x;
		this.height = p.y - this.y;
		return p.clone();
	}
	,get_left: function() {
		return this.x;
	}
	,set_left: function(l) {
		this.width -= l - this.x;
		this.x = l;
		return l;
	}
	,get_right: function() {
		return this.x + this.width;
	}
	,set_right: function(r) {
		this.width = r - this.x;
		return r;
	}
	,get_size: function() {
		return new openfl_geom_Point(this.width,this.height);
	}
	,set_size: function(p) {
		this.width = p.x;
		this.height = p.y;
		return p.clone();
	}
	,get_top: function() {
		return this.y;
	}
	,set_top: function(t) {
		this.height -= t - this.y;
		this.y = t;
		return t;
	}
	,get_topLeft: function() {
		return new openfl_geom_Point(this.x,this.y);
	}
	,set_topLeft: function(p) {
		this.x = p.x;
		this.y = p.y;
		return p.clone();
	}
	,__class__: openfl_geom_Rectangle
	,__properties__: {set_topLeft:"set_topLeft",get_topLeft:"get_topLeft",set_top:"set_top",get_top:"get_top",set_size:"set_size",get_size:"get_size",set_right:"set_right",get_right:"get_right",set_left:"set_left",get_left:"get_left",set_bottomRight:"set_bottomRight",get_bottomRight:"get_bottomRight",set_bottom:"set_bottom",get_bottom:"get_bottom"}
};
var openfl_geom_Transform = function(displayObject) {
	this.__colorTransform = new openfl_geom_ColorTransform();
	this.concatenatedColorTransform = new openfl_geom_ColorTransform();
	this.pixelBounds = new openfl_geom_Rectangle();
	this.__displayObject = displayObject;
	this.__hasMatrix = true;
};
$hxClasses["openfl.geom.Transform"] = openfl_geom_Transform;
openfl_geom_Transform.__name__ = ["openfl","geom","Transform"];
openfl_geom_Transform.prototype = {
	concatenatedColorTransform: null
	,pixelBounds: null
	,__colorTransform: null
	,__displayObject: null
	,__hasMatrix: null
	,__hasMatrix3D: null
	,get_colorTransform: function() {
		return this.__colorTransform;
	}
	,set_colorTransform: function(value) {
		if(!this.__colorTransform.__equals(value)) {
			this.__colorTransform.__copyFrom(value);
			if(value != null) {
				this.__displayObject.set_alpha(value.alphaMultiplier);
			}
			var _this = this.__displayObject;
			if(!_this.__renderDirty) {
				_this.__renderDirty = true;
				_this.__setParentRenderDirty();
			}
		}
		return this.__colorTransform;
	}
	,get_concatenatedMatrix: function() {
		if(this.__hasMatrix) {
			return this.__displayObject.__getWorldTransform().clone();
		}
		return null;
	}
	,get_matrix: function() {
		if(this.__hasMatrix) {
			return this.__displayObject.__transform.clone();
		}
		return null;
	}
	,set_matrix: function(value) {
		if(value == null) {
			this.__hasMatrix = false;
			return null;
		}
		this.__hasMatrix = true;
		this.__hasMatrix3D = false;
		if(this.__displayObject != null) {
			this.__setTransform(value.a,value.b,value.c,value.d,value.tx,value.ty);
		}
		return value;
	}
	,get_matrix3D: function() {
		if(this.__hasMatrix3D) {
			var matrix = this.__displayObject.__transform;
			var a = [matrix.a,matrix.b,0.0,0.0,matrix.c,matrix.d,0.0,0.0,0.0,0.0,1.0,0.0,matrix.tx,matrix.ty,0.0,1.0];
			var vector = openfl__$Vector_Vector_$Impl_$.toFloatVector(null);
			var _g1 = 0;
			var _g = a.length;
			while(_g1 < _g) {
				var i = _g1++;
				vector.data.set(i,a[i]);
			}
			return new openfl_geom_Matrix3D(vector);
		}
		return null;
	}
	,set_matrix3D: function(value) {
		if(value == null) {
			this.__hasMatrix3D = false;
			return null;
		}
		this.__hasMatrix = false;
		this.__hasMatrix3D = true;
		this.__setTransform(value.rawData.data.get(0),value.rawData.data.get(1),value.rawData.data.get(5),value.rawData.data.get(6),value.rawData.data.get(12),value.rawData.data.get(13));
		return value;
	}
	,__setTransform: function(a,b,c,d,tx,ty) {
		if(this.__displayObject != null) {
			var scaleX = 0.0;
			var scaleY = 0.0;
			if(b == 0) {
				scaleX = a;
			} else {
				scaleX = Math.sqrt(a * a + b * b);
			}
			if(c == 0) {
				scaleY = a;
			} else {
				scaleY = Math.sqrt(c * c + d * d);
			}
			this.__displayObject.__scaleX = scaleX;
			this.__displayObject.__scaleY = scaleY;
			var rotation = 180 / Math.PI * Math.atan2(d,c) - 90;
			if(rotation != this.__displayObject.__rotation) {
				this.__displayObject.__rotation = rotation;
				var radians = rotation * (Math.PI / 180);
				this.__displayObject.__rotationSine = Math.sin(radians);
				this.__displayObject.__rotationCosine = Math.cos(radians);
			}
			this.__displayObject.__transform.a = a;
			this.__displayObject.__transform.b = b;
			this.__displayObject.__transform.c = c;
			this.__displayObject.__transform.d = d;
			this.__displayObject.__transform.tx = tx;
			this.__displayObject.__transform.ty = ty;
			this.__displayObject.__setTransformDirty();
		}
	}
	,__class__: openfl_geom_Transform
	,__properties__: {set_matrix3D:"set_matrix3D",get_matrix3D:"get_matrix3D",set_matrix:"set_matrix",get_matrix:"get_matrix",get_concatenatedMatrix:"get_concatenatedMatrix",set_colorTransform:"set_colorTransform",get_colorTransform:"get_colorTransform"}
};
var openfl_geom_Vector3D = function(x,y,z,w) {
	if(w == null) {
		w = 0;
	}
	if(z == null) {
		z = 0;
	}
	if(y == null) {
		y = 0;
	}
	if(x == null) {
		x = 0;
	}
	this.w = w;
	this.x = x;
	this.y = y;
	this.z = z;
};
$hxClasses["openfl.geom.Vector3D"] = openfl_geom_Vector3D;
openfl_geom_Vector3D.__name__ = ["openfl","geom","Vector3D"];
openfl_geom_Vector3D.__properties__ = {get_Z_AXIS:"get_Z_AXIS",get_Y_AXIS:"get_Y_AXIS",get_X_AXIS:"get_X_AXIS"};
openfl_geom_Vector3D.angleBetween = function(a,b) {
	var la = a.get_length();
	var lb = b.get_length();
	var dot = a.dotProduct(b);
	if(la != 0) {
		dot /= la;
	}
	if(lb != 0) {
		dot /= lb;
	}
	return Math.acos(dot);
};
openfl_geom_Vector3D.distance = function(pt1,pt2) {
	var x = pt2.x - pt1.x;
	var y = pt2.y - pt1.y;
	var z = pt2.z - pt1.z;
	return Math.sqrt(x * x + y * y + z * z);
};
openfl_geom_Vector3D.get_X_AXIS = function() {
	return new openfl_geom_Vector3D(1,0,0);
};
openfl_geom_Vector3D.get_Y_AXIS = function() {
	return new openfl_geom_Vector3D(0,1,0);
};
openfl_geom_Vector3D.get_Z_AXIS = function() {
	return new openfl_geom_Vector3D(0,0,1);
};
openfl_geom_Vector3D.prototype = {
	w: null
	,x: null
	,y: null
	,z: null
	,add: function(a) {
		return new openfl_geom_Vector3D(this.x + a.x,this.y + a.y,this.z + a.z);
	}
	,clone: function() {
		return new openfl_geom_Vector3D(this.x,this.y,this.z,this.w);
	}
	,copyFrom: function(sourceVector3D) {
		this.x = sourceVector3D.x;
		this.y = sourceVector3D.y;
		this.z = sourceVector3D.z;
	}
	,crossProduct: function(a) {
		return new openfl_geom_Vector3D(this.y * a.z - this.z * a.y,this.z * a.x - this.x * a.z,this.x * a.y - this.y * a.x,1);
	}
	,decrementBy: function(a) {
		this.x -= a.x;
		this.y -= a.y;
		this.z -= a.z;
	}
	,dotProduct: function(a) {
		return this.x * a.x + this.y * a.y + this.z * a.z;
	}
	,equals: function(toCompare,allFour) {
		if(allFour == null) {
			allFour = false;
		}
		if(this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z) {
			if(!(!allFour)) {
				return this.w == toCompare.w;
			} else {
				return true;
			}
		} else {
			return false;
		}
	}
	,incrementBy: function(a) {
		this.x += a.x;
		this.y += a.y;
		this.z += a.z;
	}
	,nearEquals: function(toCompare,tolerance,allFour) {
		if(allFour == null) {
			allFour = false;
		}
		if(Math.abs(this.x - toCompare.x) < tolerance && Math.abs(this.y - toCompare.y) < tolerance && Math.abs(this.z - toCompare.z) < tolerance) {
			if(!(!allFour)) {
				return Math.abs(this.w - toCompare.w) < tolerance;
			} else {
				return true;
			}
		} else {
			return false;
		}
	}
	,negate: function() {
		this.x *= -1;
		this.y *= -1;
		this.z *= -1;
	}
	,normalize: function() {
		var l = this.get_length();
		if(l != 0) {
			this.x /= l;
			this.y /= l;
			this.z /= l;
		}
		return l;
	}
	,project: function() {
		this.x /= this.w;
		this.y /= this.w;
		this.z /= this.w;
	}
	,scaleBy: function(s) {
		this.x *= s;
		this.y *= s;
		this.z *= s;
	}
	,setTo: function(xa,ya,za) {
		this.x = xa;
		this.y = ya;
		this.z = za;
	}
	,subtract: function(a) {
		return new openfl_geom_Vector3D(this.x - a.x,this.y - a.y,this.z - a.z);
	}
	,toString: function() {
		return "Vector3D(" + this.x + ", " + this.y + ", " + this.z + ")";
	}
	,get_length: function() {
		return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
	}
	,get_lengthSquared: function() {
		return this.x * this.x + this.y * this.y + this.z * this.z;
	}
	,__class__: openfl_geom_Vector3D
	,__properties__: {get_lengthSquared:"get_lengthSquared",get_length:"get_length"}
};
var openfl_media_ID3Info = function() {
};
$hxClasses["openfl.media.ID3Info"] = openfl_media_ID3Info;
openfl_media_ID3Info.__name__ = ["openfl","media","ID3Info"];
openfl_media_ID3Info.prototype = {
	album: null
	,artist: null
	,comment: null
	,genre: null
	,songName: null
	,track: null
	,year: null
	,__class__: openfl_media_ID3Info
};
var openfl_media_Sound = function(stream,context) {
	openfl_events_EventDispatcher.call(this,this);
	this.bytesLoaded = 0;
	this.bytesTotal = 0;
	this.isBuffering = false;
	this.url = null;
	if(stream != null) {
		this.load(stream,context);
	}
};
$hxClasses["openfl.media.Sound"] = openfl_media_Sound;
openfl_media_Sound.__name__ = ["openfl","media","Sound"];
openfl_media_Sound.fromAudioBuffer = function(buffer) {
	var sound = new openfl_media_Sound();
	sound.__buffer = buffer;
	return sound;
};
openfl_media_Sound.fromFile = function(path) {
	return openfl_media_Sound.fromAudioBuffer(lime_media_AudioBuffer.fromFile(path));
};
openfl_media_Sound.loadFromFile = function(path) {
	return lime_media_AudioBuffer.loadFromFile(path).then(function(audioBuffer) {
		return lime_app_Future.withValue(openfl_media_Sound.fromAudioBuffer(audioBuffer));
	});
};
openfl_media_Sound.loadFromFiles = function(paths) {
	return lime_media_AudioBuffer.loadFromFiles(paths).then(function(audioBuffer) {
		return lime_app_Future.withValue(openfl_media_Sound.fromAudioBuffer(audioBuffer));
	});
};
openfl_media_Sound.__super__ = openfl_events_EventDispatcher;
openfl_media_Sound.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	bytesLoaded: null
	,bytesTotal: null
	,isBuffering: null
	,url: null
	,__buffer: null
	,close: function() {
		if(this.__buffer != null) {
			this.__buffer.dispose();
		}
	}
	,load: function(stream,context) {
		var _gthis = this;
		this.url = stream.url;
		lime_media_AudioBuffer.loadFromFile(this.url).onComplete($bind(this,this.AudioBuffer_onURLLoad)).onError(function(_) {
			_gthis.AudioBuffer_onURLLoad(null);
		});
	}
	,loadCompressedDataFromByteArray: function(bytes,bytesLength) {
		if(bytes == null || bytesLength <= 0) {
			this.dispatchEvent(new openfl_events_IOErrorEvent("ioError"));
			return;
		}
		if(openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length(bytes) > bytesLength) {
			var this1 = new openfl_utils_ByteArrayData(bytesLength);
			var copy = this1;
			copy.writeBytes(bytes,0,bytesLength);
			bytes = copy;
		}
		this.__buffer = lime_media_AudioBuffer.fromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes));
		if(this.__buffer == null) {
			this.dispatchEvent(new openfl_events_IOErrorEvent("ioError"));
		} else {
			this.dispatchEvent(new openfl_events_Event("complete"));
		}
	}
	,loadPCMFromByteArray: function(bytes,samples,format,stereo,sampleRate) {
		if(sampleRate == null) {
			sampleRate = 44100;
		}
		if(stereo == null) {
			stereo = true;
		}
		if(format == null) {
			format = "float";
		}
		if(bytes == null) {
			this.dispatchEvent(new openfl_events_IOErrorEvent("ioError"));
			return;
		}
		var audioBuffer = new lime_media_AudioBuffer();
		audioBuffer.bitsPerSample = format == "float" ? 32 : 16;
		audioBuffer.channels = stereo ? 2 : 1;
		var buffer = openfl_utils__$ByteArray_ByteArray_$Impl_$.toArrayBuffer(bytes);
		var this1;
		if(buffer != null) {
			this1 = new Uint8Array(buffer,0);
		} else {
			this1 = null;
		}
		audioBuffer.data = this1;
		audioBuffer.sampleRate = sampleRate | 0;
		this.__buffer = audioBuffer;
		this.dispatchEvent(new openfl_events_Event("complete"));
	}
	,play: function(startTime,loops,sndTransform) {
		if(loops == null) {
			loops = 0;
		}
		if(startTime == null) {
			startTime = 0.0;
		}
		if(openfl_media_SoundMixer.__soundChannels.length >= 32) {
			return null;
		}
		if(sndTransform == null) {
			sndTransform = new openfl_media_SoundTransform();
		} else {
			sndTransform = sndTransform.clone();
		}
		var pan = openfl_media_SoundMixer.__soundTransform.pan + sndTransform.pan;
		if(pan > 1) {
			pan = 1;
		}
		if(pan < -1) {
			pan = -1;
		}
		var volume = openfl_media_SoundMixer.__soundTransform.volume * sndTransform.volume;
		var source = new lime_media_AudioSource(this.__buffer);
		source.offset = startTime | 0;
		if(loops > 1) {
			source.set_loops(loops - 1);
		}
		source.set_gain(volume);
		var position = source.get_position();
		position.x = pan;
		position.z = -1 * Math.sqrt(1 - Math.pow(pan,2));
		source.set_position(position);
		return new openfl_media_SoundChannel(source,sndTransform);
	}
	,get_id3: function() {
		return new openfl_media_ID3Info();
	}
	,get_length: function() {
		if(this.__buffer != null) {
			var samples = this.__buffer.data.length * 8 / (this.__buffer.channels * this.__buffer.bitsPerSample);
			return samples / this.__buffer.sampleRate * 1000 | 0;
		}
		return 0;
	}
	,AudioBuffer_onURLLoad: function(buffer) {
		if(buffer == null) {
			this.dispatchEvent(new openfl_events_IOErrorEvent("ioError"));
		} else {
			this.__buffer = buffer;
			this.dispatchEvent(new openfl_events_Event("complete"));
		}
	}
	,__class__: openfl_media_Sound
	,__properties__: {get_length:"get_length",get_id3:"get_id3"}
});
var openfl_media_SoundChannel = function(source,soundTransform) {
	openfl_events_EventDispatcher.call(this,this);
	this.leftPeak = 1;
	this.rightPeak = 1;
	if(soundTransform != null) {
		this.__soundTransform = soundTransform;
	} else {
		this.__soundTransform = new openfl_media_SoundTransform();
	}
	if(source != null) {
		this.__source = source;
		this.__source.onComplete.add($bind(this,this.source_onComplete));
		this.__isValid = true;
		this.__source.play();
	}
	openfl_media_SoundMixer.__registerSoundChannel(this);
};
$hxClasses["openfl.media.SoundChannel"] = openfl_media_SoundChannel;
openfl_media_SoundChannel.__name__ = ["openfl","media","SoundChannel"];
openfl_media_SoundChannel.__super__ = openfl_events_EventDispatcher;
openfl_media_SoundChannel.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	leftPeak: null
	,rightPeak: null
	,__isValid: null
	,__soundTransform: null
	,__source: null
	,stop: function() {
		openfl_media_SoundMixer.__unregisterSoundChannel(this);
		if(!this.__isValid) {
			return;
		}
		this.__source.stop();
		this.__dispose();
	}
	,__dispose: function() {
		if(!this.__isValid) {
			return;
		}
		this.__source.onComplete.remove($bind(this,this.source_onComplete));
		this.__source.dispose();
		this.__isValid = false;
	}
	,__updateTransform: function() {
		this.set_soundTransform(this.get_soundTransform());
	}
	,get_position: function() {
		if(!this.__isValid) {
			return 0;
		}
		return this.__source.get_currentTime() + this.__source.offset;
	}
	,set_position: function(value) {
		if(!this.__isValid) {
			return 0;
		}
		this.__source.set_currentTime((value | 0) - this.__source.offset);
		return value;
	}
	,get_soundTransform: function() {
		return this.__soundTransform.clone();
	}
	,set_soundTransform: function(value) {
		if(value != null) {
			this.__soundTransform.pan = value.pan;
			this.__soundTransform.volume = value.volume;
			var pan = openfl_media_SoundMixer.__soundTransform.pan + this.__soundTransform.pan;
			if(pan < -1) {
				pan = -1;
			}
			if(pan > 1) {
				pan = 1;
			}
			var volume = openfl_media_SoundMixer.__soundTransform.volume * this.__soundTransform.volume;
			if(this.__isValid) {
				this.__source.set_gain(volume);
				var position = this.__source.get_position();
				position.x = pan;
				position.z = -1 * Math.sqrt(1 - Math.pow(pan,2));
				this.__source.set_position(position);
				return value;
			}
		}
		return value;
	}
	,source_onComplete: function() {
		openfl_media_SoundMixer.__unregisterSoundChannel(this);
		this.__dispose();
		this.dispatchEvent(new openfl_events_Event("soundComplete"));
	}
	,__class__: openfl_media_SoundChannel
	,__properties__: {set_soundTransform:"set_soundTransform",get_soundTransform:"get_soundTransform",set_position:"set_position",get_position:"get_position"}
});
var openfl_media_SoundLoaderContext = function(bufferTime,checkPolicyFile) {
	if(checkPolicyFile == null) {
		checkPolicyFile = false;
	}
	if(bufferTime == null) {
		bufferTime = 1000;
	}
	this.bufferTime = bufferTime;
	this.checkPolicyFile = checkPolicyFile;
};
$hxClasses["openfl.media.SoundLoaderContext"] = openfl_media_SoundLoaderContext;
openfl_media_SoundLoaderContext.__name__ = ["openfl","media","SoundLoaderContext"];
openfl_media_SoundLoaderContext.prototype = {
	bufferTime: null
	,checkPolicyFile: null
	,__class__: openfl_media_SoundLoaderContext
};
var openfl_media_SoundTransform = function(vol,panning) {
	if(panning == null) {
		panning = 0;
	}
	if(vol == null) {
		vol = 1;
	}
	this.volume = vol;
	this.pan = panning;
	this.leftToLeft = 0;
	this.leftToRight = 0;
	this.rightToLeft = 0;
	this.rightToRight = 0;
};
$hxClasses["openfl.media.SoundTransform"] = openfl_media_SoundTransform;
openfl_media_SoundTransform.__name__ = ["openfl","media","SoundTransform"];
openfl_media_SoundTransform.prototype = {
	leftToLeft: null
	,leftToRight: null
	,pan: null
	,rightToLeft: null
	,rightToRight: null
	,volume: null
	,clone: function() {
		return new openfl_media_SoundTransform(this.volume,this.pan);
	}
	,__class__: openfl_media_SoundTransform
};
var openfl_media_SoundMixer = function() { };
$hxClasses["openfl.media.SoundMixer"] = openfl_media_SoundMixer;
openfl_media_SoundMixer.__name__ = ["openfl","media","SoundMixer"];
openfl_media_SoundMixer.__properties__ = {set_soundTransform:"set_soundTransform",get_soundTransform:"get_soundTransform"};
openfl_media_SoundMixer.areSoundsInaccessible = function() {
	return false;
};
openfl_media_SoundMixer.stopAll = function() {
	var _g = 0;
	var _g1 = openfl_media_SoundMixer.__soundChannels;
	while(_g < _g1.length) {
		var channel = _g1[_g];
		++_g;
		channel.stop();
	}
};
openfl_media_SoundMixer.__registerSoundChannel = function(soundChannel) {
	openfl_media_SoundMixer.__soundChannels.push(soundChannel);
};
openfl_media_SoundMixer.__unregisterSoundChannel = function(soundChannel) {
	HxOverrides.remove(openfl_media_SoundMixer.__soundChannels,soundChannel);
};
openfl_media_SoundMixer.get_soundTransform = function() {
	return openfl_media_SoundMixer.__soundTransform;
};
openfl_media_SoundMixer.set_soundTransform = function(value) {
	openfl_media_SoundMixer.__soundTransform = value.clone();
	var _g = 0;
	var _g1 = openfl_media_SoundMixer.__soundChannels;
	while(_g < _g1.length) {
		var channel = _g1[_g];
		++_g;
		channel.__updateTransform();
	}
	return value;
};
var openfl_net_NetConnection = function() {
	openfl_events_EventDispatcher.call(this);
};
$hxClasses["openfl.net.NetConnection"] = openfl_net_NetConnection;
openfl_net_NetConnection.__name__ = ["openfl","net","NetConnection"];
openfl_net_NetConnection.__super__ = openfl_events_EventDispatcher;
openfl_net_NetConnection.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	connect: function(command,_,_1,_2,_3,_4) {
		if(command != null) {
			throw new js__$Boot_HaxeError("Error: Can only connect in \"HTTP streaming\" mode");
		}
		this.dispatchEvent(new openfl_events_NetStatusEvent("netStatus",false,true,{ code : "NetConnection.Connect.Success"}));
	}
	,__class__: openfl_net_NetConnection
});
var openfl_net_NetStream = function(connection,peerID) {
	openfl_events_EventDispatcher.call(this);
	this.__connection = connection;
};
$hxClasses["openfl.net.NetStream"] = openfl_net_NetStream;
openfl_net_NetStream.__name__ = ["openfl","net","NetStream"];
openfl_net_NetStream.__super__ = openfl_events_EventDispatcher;
openfl_net_NetStream.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	audioCodec: null
	,bufferLength: null
	,bufferTime: null
	,bytesLoaded: null
	,bytesTotal: null
	,checkPolicyFile: null
	,client: null
	,currentFPS: null
	,decodedFrames: null
	,liveDelay: null
	,objectEncoding: null
	,soundTransform: null
	,time: null
	,videoCode: null
	,__connection: null
	,__timer: null
	,close: function() {
	}
	,pause: function() {
	}
	,play: function(url,_,_1,_2,_3,_4) {
	}
	,requestVideoStatus: function() {
	}
	,resume: function() {
	}
	,seek: function(time) {
	}
	,togglePause: function() {
	}
	,__playStatus: function(code) {
	}
	,video_onCanPlay: function(event) {
		this.__playStatus("NetStream.Play.canplay");
	}
	,video_onCanPlayThrough: function(event) {
		this.__playStatus("NetStream.Play.canplaythrough");
	}
	,video_onDurationChanged: function(event) {
		this.__playStatus("NetStream.Play.durationchanged");
	}
	,video_onEnd: function(event) {
		this.__connection.dispatchEvent(new openfl_events_NetStatusEvent("netStatus",false,false,{ code : "NetStream.Play.Stop"}));
		this.__playStatus("NetStream.Play.Complete");
	}
	,video_onError: function(event) {
		this.__connection.dispatchEvent(new openfl_events_NetStatusEvent("netStatus",false,false,{ code : "NetStream.Play.Stop"}));
		this.__playStatus("NetStream.Play.error");
	}
	,video_onLoadMetaData: function(event) {
	}
	,video_onLoadStart: function(event) {
		this.__playStatus("NetStream.Play.loadstart");
	}
	,video_onPause: function(event) {
		this.__playStatus("NetStream.Play.pause");
	}
	,video_onPlaying: function(event) {
		this.__connection.dispatchEvent(new openfl_events_NetStatusEvent("netStatus",false,false,{ code : "NetStream.Play.Start"}));
		this.__playStatus("NetStream.Play.playing");
	}
	,video_onSeeking: function(event) {
		this.__playStatus("NetStream.Play.seeking");
	}
	,video_onStalled: function(event) {
		this.__playStatus("NetStream.Play.stalled");
	}
	,video_onTimeUpdate: function(event) {
		this.__playStatus("NetStream.Play.timeupdate");
	}
	,video_onWaiting: function(event) {
		this.__playStatus("NetStream.Play.waiting");
	}
	,get_speed: function() {
		return 1;
	}
	,set_speed: function(value) {
		return value;
	}
	,__class__: openfl_net_NetStream
	,__properties__: {set_speed:"set_speed",get_speed:"get_speed"}
});
var openfl_net_URLLoader = function(request) {
	openfl_events_EventDispatcher.call(this);
	this.bytesLoaded = 0;
	this.bytesTotal = 0;
	this.dataFormat = 1;
	if(request != null) {
		this.load(request);
	}
};
$hxClasses["openfl.net.URLLoader"] = openfl_net_URLLoader;
openfl_net_URLLoader.__name__ = ["openfl","net","URLLoader"];
openfl_net_URLLoader.__super__ = openfl_events_EventDispatcher;
openfl_net_URLLoader.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	bytesLoaded: null
	,bytesTotal: null
	,data: null
	,dataFormat: null
	,__httpRequest: null
	,close: function() {
		if(this.__httpRequest != null) {
			this.__httpRequest.cancel();
		}
	}
	,load: function(request) {
		var _gthis = this;
		if(this.dataFormat == 0) {
			var httpRequest = new lime_net__$HTTPRequest_$openfl_$utils_$ByteArray();
			this.__prepareRequest(httpRequest,request);
			httpRequest.load().onProgress($bind(this,this.httpRequest_onProgress)).onError($bind(this,this.httpRequest_onError)).onComplete(function(data) {
				_gthis.__dispatchStatus();
				_gthis.data = data;
				var event = new openfl_events_Event("complete");
				_gthis.dispatchEvent(event);
			});
		} else {
			var httpRequest1 = new lime_net__$HTTPRequest_$String();
			this.__prepareRequest(httpRequest1,request);
			httpRequest1.load().onProgress($bind(this,this.httpRequest_onProgress)).onError($bind(this,this.httpRequest_onError)).onComplete(function(data1) {
				_gthis.__dispatchStatus();
				_gthis.data = data1;
				var event1 = new openfl_events_Event("complete");
				_gthis.dispatchEvent(event1);
			});
		}
	}
	,__dispatchStatus: function() {
		var event = new openfl_events_HTTPStatusEvent("httpStatus",false,false,this.__httpRequest.responseStatus);
		event.responseURL = this.__httpRequest.uri;
		var headers = [];
		if(this.__httpRequest.enableResponseHeaders && this.__httpRequest.responseHeaders != null) {
			var _g = 0;
			var _g1 = this.__httpRequest.responseHeaders;
			while(_g < _g1.length) {
				var header = _g1[_g];
				++_g;
				headers.push(new openfl_net_URLRequestHeader(header.name,header.value));
			}
		}
		event.responseHeaders = headers;
		this.dispatchEvent(event);
	}
	,__prepareRequest: function(httpRequest,request) {
		this.__httpRequest = httpRequest;
		this.__httpRequest.uri = request.url;
		var _g = request.method;
		var tmp;
		switch(_g) {
		case "DELETE":
			tmp = "DELETE";
			break;
		case "HEAD":
			tmp = "HEAD";
			break;
		case "OPTIONS":
			tmp = "OPTIONS";
			break;
		case "POST":
			tmp = "POST";
			break;
		case "PUT":
			tmp = "PUT";
			break;
		default:
			tmp = "GET";
		}
		this.__httpRequest.method = tmp;
		if(request.data != null) {
			if(js_Boot.__instanceof(request.data,openfl_net_URLVariables)) {
				var fields = Reflect.fields(request.data);
				var _g1 = 0;
				while(_g1 < fields.length) {
					var field = fields[_g1];
					++_g1;
					var _this = this.__httpRequest.formData;
					var value = Reflect.field(request.data,field);
					if(__map_reserved[field] != null) {
						_this.setReserved(field,value);
					} else {
						_this.h[field] = value;
					}
				}
			} else if(js_Boot.__instanceof(request.data,haxe_io_Bytes)) {
				this.__httpRequest.data = request.data;
			} else {
				this.__httpRequest.data = haxe_io_Bytes.ofString(Std.string(request.data));
			}
		}
		this.__httpRequest.contentType = request.contentType;
		if(request.requestHeaders != null) {
			var _g11 = 0;
			var _g2 = request.requestHeaders;
			while(_g11 < _g2.length) {
				var header = _g2[_g11];
				++_g11;
				this.__httpRequest.headers.push(new lime_net_HTTPRequestHeader(header.name,header.value));
			}
		}
		this.__httpRequest.followRedirects = request.followRedirects;
		this.__httpRequest.timeout = request.idleTimeout | 0;
		this.__httpRequest.withCredentials = request.manageCookies;
		var userAgent = request.userAgent;
		if(userAgent == null) {
			userAgent = "Mozilla/5.0 (Windows; U; en) AppleWebKit/420+ (KHTML, like Gecko) OpenFL/1.0";
		}
		this.__httpRequest.userAgent = request.userAgent;
		this.__httpRequest.enableResponseHeaders = true;
	}
	,httpRequest_onError: function(error) {
		this.__dispatchStatus();
		if(error == 403) {
			var event = new openfl_events_SecurityErrorEvent("securityError");
			event.text = Std.string(error);
			this.dispatchEvent(event);
		} else {
			var event1 = new openfl_events_IOErrorEvent("ioError");
			event1.text = Std.string(error);
			this.dispatchEvent(event1);
		}
	}
	,httpRequest_onProgress: function(bytesLoaded,bytesTotal) {
		var event = new openfl_events_ProgressEvent("progress");
		event.bytesLoaded = bytesLoaded;
		event.bytesTotal = bytesTotal;
		this.dispatchEvent(event);
	}
	,__class__: openfl_net_URLLoader
});
var openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$ = {};
$hxClasses["openfl.net._URLLoaderDataFormat.URLLoaderDataFormat_Impl_"] = openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$;
openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$.__name__ = ["openfl","net","_URLLoaderDataFormat","URLLoaderDataFormat_Impl_"];
openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$.fromString = function(value) {
	switch(value) {
	case "binary":
		return 0;
	case "text":
		return 1;
	case "variables":
		return 2;
	default:
		return null;
	}
};
openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "binary";
	case 1:
		return "text";
	case 2:
		return "variables";
	default:
		return null;
	}
};
var openfl_net_URLRequest = function(url) {
	if(url != null) {
		this.url = url;
	}
	this.contentType = null;
	this.followRedirects = openfl_net_URLRequestDefaults.followRedirects;
	this.idleTimeout = openfl_net_URLRequestDefaults.idleTimeout > 0 ? openfl_net_URLRequestDefaults.idleTimeout : 30000;
	this.manageCookies = openfl_net_URLRequestDefaults.manageCookies;
	this.method = "GET";
	this.requestHeaders = [];
	this.userAgent = openfl_net_URLRequestDefaults.userAgent;
};
$hxClasses["openfl.net.URLRequest"] = openfl_net_URLRequest;
openfl_net_URLRequest.__name__ = ["openfl","net","URLRequest"];
openfl_net_URLRequest.prototype = {
	contentType: null
	,data: null
	,followRedirects: null
	,idleTimeout: null
	,manageCookies: null
	,method: null
	,requestHeaders: null
	,url: null
	,userAgent: null
	,__class__: openfl_net_URLRequest
};
var openfl_net_URLRequestDefaults = function() { };
$hxClasses["openfl.net.URLRequestDefaults"] = openfl_net_URLRequestDefaults;
openfl_net_URLRequestDefaults.__name__ = ["openfl","net","URLRequestDefaults"];
var openfl_net_URLRequestHeader = function(name,value) {
	if(value == null) {
		value = "";
	}
	if(name == null) {
		name = "";
	}
	this.name = name;
	this.value = value;
};
$hxClasses["openfl.net.URLRequestHeader"] = openfl_net_URLRequestHeader;
openfl_net_URLRequestHeader.__name__ = ["openfl","net","URLRequestHeader"];
openfl_net_URLRequestHeader.prototype = {
	name: null
	,value: null
	,__class__: openfl_net_URLRequestHeader
};
var openfl_net_URLVariables = function(source) {
	if(source != null) {
		this.decode(source);
	}
};
$hxClasses["openfl.net.URLVariables"] = openfl_net_URLVariables;
openfl_net_URLVariables.__name__ = ["openfl","net","URLVariables"];
openfl_net_URLVariables.prototype = {
	decode: function(source) {
		var fields = Reflect.fields(this);
		var _g = 0;
		while(_g < fields.length) {
			var f = fields[_g];
			++_g;
			Reflect.deleteField(this,f);
		}
		var fields1 = source.split(";").join("&").split("&");
		var _g1 = 0;
		while(_g1 < fields1.length) {
			var f1 = fields1[_g1];
			++_g1;
			var eq = f1.indexOf("=");
			if(eq > 0) {
				var s = HxOverrides.substr(f1,0,eq);
				var field = decodeURIComponent(s.split("+").join(" "));
				var s1 = HxOverrides.substr(f1,eq + 1,null);
				this[field] = decodeURIComponent(s1.split("+").join(" "));
			} else if(eq != 0) {
				this[decodeURIComponent(f1.split("+").join(" "))] = "";
			}
		}
	}
	,toString: function() {
		var result = [];
		var fields = Reflect.fields(this);
		var _g = 0;
		while(_g < fields.length) {
			var f = fields[_g];
			++_g;
			var tmp = encodeURIComponent(f) + "=";
			var s = Reflect.field(this,f);
			result.push(tmp + encodeURIComponent(s));
		}
		return result.join("&");
	}
	,__class__: openfl_net_URLVariables
};
var openfl_system_ApplicationDomain = function(parentDomain) {
	if(parentDomain != null) {
		this.parentDomain = parentDomain;
	} else {
		this.parentDomain = openfl_system_ApplicationDomain.currentDomain;
	}
};
$hxClasses["openfl.system.ApplicationDomain"] = openfl_system_ApplicationDomain;
openfl_system_ApplicationDomain.__name__ = ["openfl","system","ApplicationDomain"];
openfl_system_ApplicationDomain.prototype = {
	parentDomain: null
	,getDefinition: function(name) {
		return Type.resolveClass(name);
	}
	,hasDefinition: function(name) {
		return Type.resolveClass(name) != null;
	}
	,__class__: openfl_system_ApplicationDomain
};
var openfl_system_LoaderContext = function(checkPolicyFile,applicationDomain,securityDomain) {
	if(checkPolicyFile == null) {
		checkPolicyFile = false;
	}
	this.checkPolicyFile = checkPolicyFile;
	this.securityDomain = securityDomain;
	this.applicationDomain = applicationDomain;
	this.allowCodeImport = true;
	this.allowLoadBytesCodeExecution = true;
};
$hxClasses["openfl.system.LoaderContext"] = openfl_system_LoaderContext;
openfl_system_LoaderContext.__name__ = ["openfl","system","LoaderContext"];
openfl_system_LoaderContext.prototype = {
	allowCodeImport: null
	,allowLoadBytesCodeExecution: null
	,applicationDomain: null
	,checkPolicyFile: null
	,securityDomain: null
	,__class__: openfl_system_LoaderContext
};
var openfl_system_SecurityDomain = function() {
};
$hxClasses["openfl.system.SecurityDomain"] = openfl_system_SecurityDomain;
openfl_system_SecurityDomain.__name__ = ["openfl","system","SecurityDomain"];
openfl_system_SecurityDomain.prototype = {
	__class__: openfl_system_SecurityDomain
};
var openfl_text__$AntiAliasType_AntiAliasType_$Impl_$ = {};
$hxClasses["openfl.text._AntiAliasType.AntiAliasType_Impl_"] = openfl_text__$AntiAliasType_AntiAliasType_$Impl_$;
openfl_text__$AntiAliasType_AntiAliasType_$Impl_$.__name__ = ["openfl","text","_AntiAliasType","AntiAliasType_Impl_"];
openfl_text__$AntiAliasType_AntiAliasType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "advanced":
		return 0;
	case "normal":
		return 1;
	default:
		return null;
	}
};
openfl_text__$AntiAliasType_AntiAliasType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "advanced";
	case 1:
		return "normal";
	default:
		return null;
	}
};
var openfl_text_Font = function(name) {
	lime_text_Font.call(this,name);
};
$hxClasses["openfl.text.Font"] = openfl_text_Font;
openfl_text_Font.__name__ = ["openfl","text","Font"];
openfl_text_Font.enumerateFonts = function(enumerateDeviceFonts) {
	if(enumerateDeviceFonts == null) {
		enumerateDeviceFonts = false;
	}
	return openfl_text_Font.__registeredFonts;
};
openfl_text_Font.fromBytes = function(bytes) {
	var font = new openfl_text_Font();
	font.__fromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes));
	return font;
};
openfl_text_Font.fromFile = function(path) {
	var font = new openfl_text_Font();
	font.__fromFile(path);
	return font;
};
openfl_text_Font.loadFromBytes = function(bytes) {
	return lime_text_Font.loadFromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(bytes)).then(function(limeFont) {
		var font = new openfl_text_Font();
		font.__fromLimeFont(limeFont);
		return lime_app_Future.withValue(font);
	});
};
openfl_text_Font.loadFromFile = function(path) {
	return lime_text_Font.loadFromFile(path).then(function(limeFont) {
		var font = new openfl_text_Font();
		font.__fromLimeFont(limeFont);
		return lime_app_Future.withValue(font);
	});
};
openfl_text_Font.loadFromName = function(path) {
	return lime_text_Font.loadFromName(path).then(function(limeFont) {
		var font = new openfl_text_Font();
		font.__fromLimeFont(limeFont);
		return lime_app_Future.withValue(font);
	});
};
openfl_text_Font.registerFont = function(font) {
	var instance = js_Boot.__cast(Type.createInstance(font,[]) , openfl_text_Font);
	if(instance != null) {
		openfl_text_Font.__registeredFonts.push(instance);
		var k = instance.name;
		var _this = openfl_text_Font.__fontByName;
		if(__map_reserved[k] != null) {
			_this.setReserved(k,instance);
		} else {
			_this.h[k] = instance;
		}
	}
};
openfl_text_Font.__super__ = lime_text_Font;
openfl_text_Font.prototype = $extend(lime_text_Font.prototype,{
	fontStyle: null
	,fontType: null
	,__initialized: null
	,__fromLimeFont: function(font) {
		this.__copyFrom(font);
	}
	,__initialize: function() {
		return this.__initialized;
	}
	,get_fontName: function() {
		return this.name;
	}
	,set_fontName: function(value) {
		return this.name = value;
	}
	,__class__: openfl_text_Font
	,__properties__: {set_fontName:"set_fontName",get_fontName:"get_fontName"}
});
var openfl_text__$FontStyle_FontStyle_$Impl_$ = {};
$hxClasses["openfl.text._FontStyle.FontStyle_Impl_"] = openfl_text__$FontStyle_FontStyle_$Impl_$;
openfl_text__$FontStyle_FontStyle_$Impl_$.__name__ = ["openfl","text","_FontStyle","FontStyle_Impl_"];
openfl_text__$FontStyle_FontStyle_$Impl_$.fromString = function(value) {
	switch(value) {
	case "bold":
		return 0;
	case "boldItalic":
		return 1;
	case "italic":
		return 2;
	case "regular":
		return 3;
	default:
		return null;
	}
};
openfl_text__$FontStyle_FontStyle_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "bold";
	case 1:
		return "boldItalic";
	case 2:
		return "italic";
	case 3:
		return "regular";
	default:
		return null;
	}
};
var openfl_text__$FontType_FontType_$Impl_$ = {};
$hxClasses["openfl.text._FontType.FontType_Impl_"] = openfl_text__$FontType_FontType_$Impl_$;
openfl_text__$FontType_FontType_$Impl_$.__name__ = ["openfl","text","_FontType","FontType_Impl_"];
openfl_text__$FontType_FontType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "device":
		return 0;
	case "embedded":
		return 1;
	case "embeddedCFF":
		return 2;
	default:
		return null;
	}
};
openfl_text__$FontType_FontType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "device";
	case 1:
		return "embedded";
	case 2:
		return "embeddedCFF";
	default:
		return null;
	}
};
var openfl_text__$GridFitType_GridFitType_$Impl_$ = {};
$hxClasses["openfl.text._GridFitType.GridFitType_Impl_"] = openfl_text__$GridFitType_GridFitType_$Impl_$;
openfl_text__$GridFitType_GridFitType_$Impl_$.__name__ = ["openfl","text","_GridFitType","GridFitType_Impl_"];
openfl_text__$GridFitType_GridFitType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "none":
		return 0;
	case "pixel":
		return 1;
	case "subpixel":
		return 2;
	default:
		return null;
	}
};
openfl_text__$GridFitType_GridFitType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "none";
	case 1:
		return "pixel";
	case 2:
		return "subpixel";
	default:
		return null;
	}
};
var openfl_text_StaticText = function() {
	openfl_display_DisplayObject.call(this);
	this.__graphics = new openfl_display_Graphics(this);
};
$hxClasses["openfl.text.StaticText"] = openfl_text_StaticText;
openfl_text_StaticText.__name__ = ["openfl","text","StaticText"];
openfl_text_StaticText.__super__ = openfl_display_DisplayObject;
openfl_text_StaticText.prototype = $extend(openfl_display_DisplayObject.prototype,{
	text: null
	,__class__: openfl_text_StaticText
});
var openfl_text_TextField = function() {
	openfl_display_InteractiveObject.call(this);
	this.__caretIndex = -1;
	this.__displayAsPassword = false;
	this.__graphics = new openfl_display_Graphics(this);
	this.__textEngine = new openfl__$internal_text_TextEngine(this);
	this.__layoutDirty = true;
	this.__offsetX = 0;
	this.__offsetY = 0;
	this.__mouseWheelEnabled = true;
	this.__text = "";
	if(openfl_text_TextField.__defaultTextFormat == null) {
		openfl_text_TextField.__defaultTextFormat = new openfl_text_TextFormat("Times New Roman",12,0,false,false,false,"","",3,0,0,0,0);
		openfl_text_TextField.__defaultTextFormat.blockIndent = 0;
		openfl_text_TextField.__defaultTextFormat.bullet = false;
		openfl_text_TextField.__defaultTextFormat.letterSpacing = 0;
		openfl_text_TextField.__defaultTextFormat.kerning = false;
	}
	this.__textFormat = openfl_text_TextField.__defaultTextFormat.clone();
	var this1 = this.__textEngine.textFormatRanges;
	var x = new openfl__$internal_text_TextFormatRange(this.__textFormat,0,0);
	this1.data.push(x);
	this.addEventListener("mouseDown",$bind(this,this.this_onMouseDown));
	this.addEventListener("focusIn",$bind(this,this.this_onFocusIn));
	this.addEventListener("focusOut",$bind(this,this.this_onFocusOut));
	this.addEventListener("keyDown",$bind(this,this.this_onKeyDown));
};
$hxClasses["openfl.text.TextField"] = openfl_text_TextField;
openfl_text_TextField.__name__ = ["openfl","text","TextField"];
openfl_text_TextField.__interfaces__ = [openfl_display_IShaderDrawable];
openfl_text_TextField.__super__ = openfl_display_InteractiveObject;
openfl_text_TextField.prototype = $extend(openfl_display_InteractiveObject.prototype,{
	shader: null
	,__bounds: null
	,__caretIndex: null
	,__cursorTimer: null
	,__dirty: null
	,__displayAsPassword: null
	,__inputEnabled: null
	,__isHTML: null
	,__layoutDirty: null
	,__mouseWheelEnabled: null
	,__offsetX: null
	,__offsetY: null
	,__selectionIndex: null
	,__showCursor: null
	,__symbol: null
	,__text: null
	,__htmlText: null
	,__textEngine: null
	,__textFormat: null
	,appendText: function(text) {
		if(text == null || text == "") {
			return;
		}
		this.__dirty = true;
		this.__layoutDirty = true;
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
		this.__updateText(lime_text__$UTF8String_UTF8String_$Impl_$.plus(this.__text,text));
		var this1 = this.__textEngine.textFormatRanges;
		var index = this.__textEngine.textFormatRanges.data.get_length() - 1;
		this1.data.get(index).end = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		this.__updateScrollH();
	}
	,getCharBoundaries: function(charIndex) {
		if(charIndex < 0 || charIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text) - 1) {
			return null;
		}
		var rect = new openfl_geom_Rectangle();
		if(this.__getCharBoundaries(charIndex,rect)) {
			return rect;
		} else {
			return null;
		}
	}
	,getCharIndexAtPoint: function(x,y) {
		if(x <= 2 || x > this.get_width() + 4 || y <= 0 || y > this.get_height() + 4) {
			return -1;
		}
		this.__updateLayout();
		x += this.get_scrollH();
		var _g1 = 0;
		var _g = this.get_scrollV() - 1;
		while(_g1 < _g) {
			var i = _g1++;
			y += this.__textEngine.lineHeights.data.get(i);
		}
		var _g2 = 0;
		var _g11 = this.__textEngine.layoutGroups;
		while(_g2 < _g11.data.get_length()) {
			var group = _g11.data.get(_g2);
			++_g2;
			if(y >= group.offsetY && y <= group.offsetY + group.height) {
				if(x >= group.offsetX && x <= group.offsetX + group.width) {
					var advance = 0.0;
					var _g3 = 0;
					var _g21 = group.positions.length;
					while(_g3 < _g21) {
						var i1 = _g3++;
						advance += i1 >= 0 && i1 < group.positions.length ? group.positions[i1].advance.x : 0;
						if(x <= group.offsetX + advance) {
							return group.startIndex + i1;
						}
					}
					return group.endIndex;
				}
			}
		}
		return -1;
	}
	,getFirstCharInParagraph: function(charIndex) {
		if(charIndex < 0 || charIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text) - 1) {
			return 0;
		}
		var index = this.__textEngine.getLineBreakIndex();
		var startIndex = 0;
		while(index > -1) {
			if(index <= charIndex) {
				startIndex = index + 1;
			} else if(index > charIndex) {
				break;
			}
			index = this.__textEngine.getLineBreakIndex(index + 1);
		}
		return startIndex;
	}
	,getLineIndexAtPoint: function(x,y) {
		this.__updateLayout();
		if(x <= 2 || x > this.get_width() + 4 || y <= 0 || y > this.get_height() + 4) {
			return -1;
		}
		var _g1 = 0;
		var _g = this.get_scrollV() - 1;
		while(_g1 < _g) {
			var i = _g1++;
			y += this.__textEngine.lineHeights.data.get(i);
		}
		var _g2 = 0;
		var _g11 = this.__textEngine.layoutGroups;
		while(_g2 < _g11.data.get_length()) {
			var group = _g11.data.get(_g2);
			++_g2;
			if(y >= group.offsetY && y <= group.offsetY + group.height) {
				return group.lineIndex;
			}
		}
		return -1;
	}
	,getLineIndexOfChar: function(charIndex) {
		if(charIndex < 0 || charIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
			return -1;
		}
		this.__updateLayout();
		var _g = 0;
		var _g1 = this.__textEngine.layoutGroups;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			if(group.startIndex <= charIndex && group.endIndex >= charIndex) {
				return group.lineIndex;
			}
		}
		return -1;
	}
	,getLineLength: function(lineIndex) {
		this.__updateLayout();
		if(lineIndex < 0 || lineIndex > this.__textEngine.numLines - 1) {
			return 0;
		}
		var startIndex = -1;
		var endIndex = -1;
		var _g = 0;
		var _g1 = this.__textEngine.layoutGroups;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			if(group.lineIndex == lineIndex) {
				if(startIndex == -1) {
					startIndex = group.startIndex;
				}
			} else if(group.lineIndex == lineIndex + 1) {
				endIndex = group.startIndex;
				break;
			}
		}
		if(endIndex == -1) {
			endIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		return endIndex - startIndex;
	}
	,getLineMetrics: function(lineIndex) {
		this.__updateLayout();
		var ascender = this.__textEngine.lineAscents.data.get(lineIndex);
		var descender = this.__textEngine.lineDescents.data.get(lineIndex);
		var leading = this.__textEngine.lineLeadings.data.get(lineIndex);
		var lineHeight = this.__textEngine.lineHeights.data.get(lineIndex);
		var lineWidth = this.__textEngine.lineWidths.data.get(lineIndex);
		var margin;
		var _g = this.__textFormat.align;
		switch(_g) {
		case 0:
			margin = (this.__textEngine.width - lineWidth) / 2;
			break;
		case 1:case 4:
			margin = this.__textEngine.width - lineWidth - 2;
			break;
		case 2:case 3:case 5:
			margin = 2;
			break;
		}
		return new openfl_text_TextLineMetrics(margin,lineWidth,lineHeight,ascender,descender,leading);
	}
	,getLineOffset: function(lineIndex) {
		this.__updateLayout();
		if(lineIndex < 0 || lineIndex > this.__textEngine.numLines - 1) {
			return -1;
		}
		var _g = 0;
		var _g1 = this.__textEngine.layoutGroups;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			if(group.lineIndex == lineIndex) {
				return group.startIndex;
			}
		}
		return 0;
	}
	,getLineText: function(lineIndex) {
		this.__updateLayout();
		if(lineIndex < 0 || lineIndex > this.__textEngine.numLines - 1) {
			return null;
		}
		var startIndex = -1;
		var endIndex = -1;
		var _g = 0;
		var _g1 = this.__textEngine.layoutGroups;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			if(group.lineIndex == lineIndex) {
				if(startIndex == -1) {
					startIndex = group.startIndex;
				}
			} else if(group.lineIndex == lineIndex + 1) {
				endIndex = group.startIndex;
				break;
			}
		}
		if(endIndex == -1) {
			endIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		return lime_text__$UTF8String_UTF8String_$Impl_$.substring(this.__textEngine.text,startIndex,endIndex);
	}
	,getParagraphLength: function(charIndex) {
		if(charIndex < 0 || charIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text) - 1) {
			return 0;
		}
		var startIndex = this.getFirstCharInParagraph(charIndex);
		var endIndex = this.__textEngine.getLineBreakIndex(charIndex) + 1;
		if(endIndex == 0) {
			endIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		return endIndex - startIndex;
	}
	,getTextFormat: function(beginIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 0;
		}
		if(beginIndex == null) {
			beginIndex = 0;
		}
		var format = null;
		var _g = 0;
		var _g1 = this.__textEngine.textFormatRanges;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			if(group.start <= beginIndex && group.end >= beginIndex || group.start <= endIndex && group.end >= endIndex) {
				if(format == null) {
					format = group.format.clone();
				} else {
					if(group.format.font != format.font) {
						format.font = null;
					}
					if(group.format.size != format.size) {
						format.size = null;
					}
					if(group.format.color != format.color) {
						format.color = null;
					}
					if(group.format.bold != format.bold) {
						format.bold = null;
					}
					if(group.format.italic != format.italic) {
						format.italic = null;
					}
					if(group.format.underline != format.underline) {
						format.underline = null;
					}
					if(group.format.url != format.url) {
						format.url = null;
					}
					if(group.format.target != format.target) {
						format.target = null;
					}
					if(group.format.align != format.align) {
						format.align = null;
					}
					if(group.format.leftMargin != format.leftMargin) {
						format.leftMargin = null;
					}
					if(group.format.rightMargin != format.rightMargin) {
						format.rightMargin = null;
					}
					if(group.format.indent != format.indent) {
						format.indent = null;
					}
					if(group.format.leading != format.leading) {
						format.leading = null;
					}
					if(group.format.blockIndent != format.blockIndent) {
						format.blockIndent = null;
					}
					if(group.format.bullet != format.bullet) {
						format.bullet = null;
					}
					if(group.format.kerning != format.kerning) {
						format.kerning = null;
					}
					if(group.format.letterSpacing != format.letterSpacing) {
						format.letterSpacing = null;
					}
					if(group.format.tabStops != format.tabStops) {
						format.tabStops = null;
					}
				}
			}
		}
		return format;
	}
	,replaceSelectedText: function(value) {
		if(value == "" && this.__selectionIndex == this.__caretIndex) {
			return;
		}
		var startIndex = this.__caretIndex < this.__selectionIndex ? this.__caretIndex : this.__selectionIndex;
		var endIndex = this.__caretIndex > this.__selectionIndex ? this.__caretIndex : this.__selectionIndex;
		if(startIndex == endIndex && this.__textEngine.maxChars > 0 && lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text) == this.__textEngine.maxChars) {
			return;
		}
		if(startIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
			startIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		if(endIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
			endIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		if(endIndex < startIndex) {
			var cache = endIndex;
			endIndex = startIndex;
			startIndex = cache;
		}
		if(startIndex < 0) {
			startIndex = 0;
		}
		this.replaceText(startIndex,endIndex,value);
		var i = startIndex + lime_text__$UTF8String_UTF8String_$Impl_$.get_length(js_Boot.__cast(value , String));
		if(i > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
			i = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		this.setSelection(i,i);
		this.__updateScrollH();
	}
	,replaceText: function(beginIndex,endIndex,newText) {
		if(endIndex < beginIndex || beginIndex < 0 || endIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text) || newText == null) {
			return;
		}
		this.__updateText(lime_text__$UTF8String_UTF8String_$Impl_$.substring(this.__text,0,beginIndex) + newText + lime_text__$UTF8String_UTF8String_$Impl_$.substring(this.__text,endIndex));
		if(endIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
			endIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		var offset = newText.length - (endIndex - beginIndex);
		var i = 0;
		var range;
		while(i < this.__textEngine.textFormatRanges.data.get_length()) {
			range = this.__textEngine.textFormatRanges.data.get(i);
			if(range.start <= beginIndex && range.end >= endIndex) {
				range.end += offset;
				++i;
			} else if(range.start >= beginIndex && range.end <= endIndex) {
				if(i > 0) {
					new openfl__$Vector_AbstractVector(this.__textEngine.textFormatRanges.data.splice(i,1));
				} else {
					range.start = 0;
					range.end = beginIndex + newText.length;
					++i;
				}
				offset -= range.end - range.start;
			} else if(range.start > beginIndex && range.start <= endIndex) {
				range.start += offset;
				++i;
			} else {
				++i;
			}
		}
		this.__updateScrollH();
		this.__dirty = true;
		this.__layoutDirty = true;
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
	}
	,setSelection: function(beginIndex,endIndex) {
		this.__selectionIndex = beginIndex;
		this.__caretIndex = endIndex;
		this.__stopCursorTimer();
		this.__startCursorTimer();
	}
	,setTextFormat: function(format,beginIndex,endIndex) {
		if(endIndex == null) {
			endIndex = 0;
		}
		if(beginIndex == null) {
			beginIndex = 0;
		}
		var max = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.get_text());
		var range;
		if(beginIndex < 0) {
			beginIndex = 0;
		}
		if(endIndex < 0) {
			endIndex = 0;
		}
		if(endIndex == 0) {
			if(beginIndex == 0) {
				endIndex = max;
			} else {
				endIndex = beginIndex + 1;
			}
		}
		if(endIndex < beginIndex) {
			return;
		}
		if(beginIndex == 0 && endIndex >= max) {
			this.__textFormat.__merge(format);
			var _g1 = 0;
			var _g = this.__textEngine.textFormatRanges.data.get_length();
			while(_g1 < _g) {
				var i = _g1++;
				range = this.__textEngine.textFormatRanges.data.get(i);
				range.format.__merge(this.__textFormat);
			}
		} else {
			var index = this.__textEngine.textFormatRanges.data.get_length();
			var searchIndex;
			while(index > 0) {
				--index;
				range = this.__textEngine.textFormatRanges.data.get(index);
				if(range.start == beginIndex && range.end == endIndex) {
					range.format = openfl_text_TextField.__defaultTextFormat.clone();
					range.format.__merge(format);
					return;
				}
				if(range.start >= beginIndex && range.end <= endIndex) {
					searchIndex = this.__textEngine.textFormatRanges.data.indexOf(range,0);
					if(searchIndex > -1) {
						new openfl__$Vector_AbstractVector(this.__textEngine.textFormatRanges.data.splice(searchIndex,1));
					}
				}
			}
			var prevRange = null;
			var nextRange = null;
			if(beginIndex > 0) {
				var _g11 = 0;
				var _g2 = this.__textEngine.textFormatRanges.data.get_length();
				while(_g11 < _g2) {
					var i1 = _g11++;
					range = this.__textEngine.textFormatRanges.data.get(i1);
					if(range.end >= beginIndex) {
						prevRange = range;
						break;
					}
				}
			}
			if(endIndex < max) {
				var ni = this.__textEngine.textFormatRanges.data.get_length();
				while(--ni >= 0) {
					range = this.__textEngine.textFormatRanges.data.get(ni);
					if(range.start <= endIndex) {
						nextRange = range;
						break;
					}
				}
			}
			if(nextRange == prevRange) {
				nextRange = new openfl__$internal_text_TextFormatRange(nextRange.format.clone(),nextRange.start,nextRange.end);
				this.__textEngine.textFormatRanges.data.push(nextRange);
			}
			if(prevRange != null) {
				prevRange.end = beginIndex;
			}
			if(nextRange != null) {
				nextRange.start = endIndex;
			}
			var textFormat = openfl_text_TextField.__defaultTextFormat.clone();
			textFormat.__merge(format);
			var this1 = this.__textEngine.textFormatRanges;
			var x = new openfl__$internal_text_TextFormatRange(textFormat,beginIndex,endIndex);
			this1.data.push(x);
			this.__textEngine.textFormatRanges.data.sort(function(a,b) {
				if(a.start < b.start || a.end < b.end) {
					return -1;
				} else if(a.start > b.start || a.end > b.end) {
					return 1;
				}
				return 0;
			});
		}
		this.__dirty = true;
		this.__layoutDirty = true;
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
	}
	,__allowMouseFocus: function() {
		if(!(this.__textEngine.type == 1 || this.get_tabEnabled())) {
			return this.get_selectable();
		} else {
			return true;
		}
	}
	,__caretBeginningOfLine: function() {
		if(this.__selectionIndex == this.__caretIndex || this.__caretIndex < this.__selectionIndex) {
			this.__caretIndex = this.getLineOffset(this.getLineIndexOfChar(this.__caretIndex));
		} else {
			this.__selectionIndex = this.getLineOffset(this.getLineIndexOfChar(this.__selectionIndex));
		}
	}
	,__caretEndOfLine: function() {
		var lineIndex;
		if(this.__selectionIndex == this.__caretIndex) {
			lineIndex = this.getLineIndexOfChar(this.__caretIndex);
		} else {
			lineIndex = this.getLineIndexOfChar(Math.max(this.__caretIndex,this.__selectionIndex) | 0);
		}
		if(lineIndex < this.__textEngine.numLines - 1) {
			this.__caretIndex = this.getLineOffset(lineIndex + 1) - 1;
		} else {
			this.__caretIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
	}
	,__caretNextCharacter: function() {
		if(this.__caretIndex < lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
			this.__caretIndex++;
		}
	}
	,__caretNextLine: function(lineIndex,caretIndex) {
		if(lineIndex == null) {
			lineIndex = this.getLineIndexOfChar(this.__caretIndex);
		}
		if(lineIndex < this.__textEngine.numLines - 1) {
			if(caretIndex == null) {
				caretIndex = this.__caretIndex;
			}
			this.__caretIndex = this.__getCharIndexOnDifferentLine(caretIndex,lineIndex + 1);
		} else {
			this.__caretIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
	}
	,__caretPreviousCharacter: function() {
		if(this.__caretIndex > 0) {
			this.__caretIndex--;
		}
	}
	,__caretPreviousLine: function(lineIndex,caretIndex) {
		if(lineIndex == null) {
			lineIndex = this.getLineIndexOfChar(this.__caretIndex);
		}
		if(lineIndex > 0) {
			if(caretIndex == null) {
				caretIndex = this.__caretIndex;
			}
			this.__caretIndex = this.__getCharIndexOnDifferentLine(caretIndex,lineIndex - 1);
		} else {
			this.__caretIndex = 0;
		}
	}
	,__disableInput: function() {
		if(this.__inputEnabled && this.stage != null) {
			this.stage.window.backend.setEnableTextEvents(false);
			this.stage.window.onTextInput.remove($bind(this,this.window_onTextInput));
			this.stage.window.onKeyDown.remove($bind(this,this.window_onKeyDown));
			this.__inputEnabled = false;
			this.__stopCursorTimer();
		}
	}
	,__dispatch: function(event) {
		if(event.eventPhase == 2 && event.type == "mouseUp") {
			var event1 = event;
			var group = this.__getGroup(this.get_mouseX(),this.get_mouseY(),true);
			if(group != null) {
				var url = group.format.url;
				if(url != null && url != "") {
					if(StringTools.startsWith(url,"event:")) {
						this.dispatchEvent(new openfl_events_TextEvent("link",false,false,HxOverrides.substr(url,6,null)));
					} else {
						openfl_Lib.getURL(new openfl_net_URLRequest(url));
					}
				}
			}
		}
		return openfl_display_InteractiveObject.prototype.__dispatch.call(this,event);
	}
	,__enableInput: function() {
		if(this.stage != null) {
			this.stage.window.backend.setEnableTextEvents(true);
			if(!this.__inputEnabled) {
				this.stage.window.backend.setEnableTextEvents(true);
				if(!this.stage.window.onTextInput.has($bind(this,this.window_onTextInput))) {
					this.stage.window.onTextInput.add($bind(this,this.window_onTextInput));
					this.stage.window.onKeyDown.add($bind(this,this.window_onKeyDown));
				}
				this.__inputEnabled = true;
				this.__startCursorTimer();
			}
		}
	}
	,__fromSymbol: function(swf,symbol) {
		this.__symbol = symbol;
		this.set_width(symbol.width);
		this.set_height(symbol.height);
		this.__offsetX = symbol.x;
		this.__offsetY = symbol.y;
		this.set_multiline(symbol.multiline);
		this.set_wordWrap(symbol.wordWrap);
		this.set_displayAsPassword(symbol.password);
		if(symbol.border) {
			this.set_border(true);
			this.set_background(true);
		}
		this.set_selectable(symbol.selectable);
		if(symbol.input) {
			this.set_type(1);
		}
		var format = new openfl_text_TextFormat();
		if(symbol.color != null) {
			format.color = symbol.color & 16777215;
		}
		format.size = Math.round(symbol.fontHeight / 20);
		var font = swf.symbols.h[symbol.fontID];
		if(font != null) {
			format.__ascent = font.ascent / 20 / 1024;
			format.__descent = font.descent / 20 / 1024;
		}
		format.font = symbol.fontName;
		var found = false;
		var _g = format.font;
		if(_g == null) {
			found = true;
		} else {
			switch(_g) {
			case "":case "_sans":case "_serif":case "_typewriter":
				found = true;
				break;
			default:
				var _g1 = 0;
				var _g11 = openfl_text_Font.enumerateFonts();
				while(_g1 < _g11.length) {
					var font1 = _g11[_g1];
					++_g1;
					if(font1.name == format.font) {
						found = true;
						break;
					}
				}
			}
		}
		if(!found) {
			var alpha_r = new RegExp("[^a-zA-Z]+","g".split("u").join(""));
			var _g12 = 0;
			var _g2 = openfl_text_Font.enumerateFonts();
			while(_g12 < _g2.length) {
				var font2 = _g2[_g12];
				++_g12;
				if(HxOverrides.substr(font2.name.replace(alpha_r,""),0,symbol.fontName.length) == symbol.fontName) {
					format.font = font2.name;
					found = true;
					break;
				}
			}
		}
		if(found) {
			this.set_embedFonts(true);
		} else {
			var key = format.font;
			var _this = openfl_text_TextField.__missingFontWarning;
			if(!(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key))) {
				var k = format.font;
				var _this1 = openfl_text_TextField.__missingFontWarning;
				if(__map_reserved[k] != null) {
					_this1.setReserved(k,true);
				} else {
					_this1.h[k] = true;
				}
				lime_utils_Log.warn("Could not find required font \"" + format.font + "\", it has not been embedded",{ fileName : "TextField.hx", lineNumber : 1093, className : "openfl.text.TextField", methodName : "__fromSymbol"});
			}
		}
		if(symbol.align != null) {
			if(symbol.align == "center") {
				format.align = 0;
			} else if(symbol.align == "right") {
				format.align = 4;
			} else if(symbol.align == "justify") {
				format.align = 2;
			}
			format.leftMargin = symbol.leftMargin / 20 | 0;
			format.rightMargin = symbol.rightMargin / 20 | 0;
			format.indent = symbol.indent / 20 | 0;
			format.leading = symbol.leading / 20 | 0;
		}
		this.set_defaultTextFormat(format);
		if(symbol.text != null) {
			if(symbol.html) {
				this.set_htmlText(symbol.text);
			} else {
				this.set_text(symbol.text);
			}
		}
	}
	,__getAdvance: function(position) {
		return position.advance.x;
	}
	,__getBounds: function(rect,matrix) {
		this.__updateLayout();
		var bounds = openfl_geom_Rectangle.__pool.get();
		bounds.copyFrom(this.__textEngine.bounds);
		bounds.x += this.__offsetX;
		bounds.y += this.__offsetY;
		bounds.__transform(bounds,matrix);
		rect.__expand(bounds.x,bounds.y,bounds.width,bounds.height);
		openfl_geom_Rectangle.__pool.release(bounds);
	}
	,__getCharBoundaries: function(charIndex,rect) {
		if(charIndex < 0 || charIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text) - 1) {
			return false;
		}
		this.__updateLayout();
		var _g = 0;
		var _g1 = this.__textEngine.layoutGroups;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			if(charIndex >= group.startIndex && charIndex <= group.endIndex) {
				try {
					var x = group.offsetX;
					var _g3 = 0;
					var _g2 = charIndex - group.startIndex;
					while(_g3 < _g2) {
						var i = _g3++;
						x += i >= 0 && i < group.positions.length ? group.positions[i].advance.x : 0;
					}
					var index = charIndex - group.startIndex;
					var lastPosition = index >= 0 && index < group.positions.length ? group.positions[index].advance.x : 0;
					rect.setTo(x,group.offsetY,lastPosition,group.ascent + group.descent);
					return true;
				} catch( e ) {
					haxe_CallStack.lastException = e;
				}
			}
		}
		return false;
	}
	,__getCharIndexOnDifferentLine: function(charIndex,lineIndex) {
		if(charIndex < 0 || charIndex > lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
			return -1;
		}
		if(lineIndex < 0 || lineIndex > this.__textEngine.numLines - 1) {
			return -1;
		}
		var x = null;
		var y = null;
		var _g = 0;
		var _g1 = this.__textEngine.layoutGroups;
		while(_g < _g1.data.get_length()) {
			var group = _g1.data.get(_g);
			++_g;
			if(charIndex >= group.startIndex && charIndex <= group.endIndex) {
				x = group.offsetX;
				var _g3 = 0;
				var _g2 = charIndex - group.startIndex;
				while(_g3 < _g2) {
					var i = _g3++;
					x += i >= 0 && i < group.positions.length ? group.positions[i].advance.x : 0;
				}
				if(y != null) {
					return this.__getPosition(x,y);
				}
			}
			if(group.lineIndex == lineIndex) {
				y = group.offsetY + group.height / 2;
				if(x != null) {
					return this.__getPosition(x,y);
				}
			}
		}
		return -1;
	}
	,__getCursor: function() {
		var group = this.__getGroup(this.get_mouseX(),this.get_mouseY(),true);
		if(group != null && group.format.url != "") {
			return lime_ui_MouseCursor.POINTER;
		} else if(this.__textEngine.selectable) {
			return lime_ui_MouseCursor.TEXT;
		}
		return null;
	}
	,__getGroup: function(x,y,precise) {
		if(precise == null) {
			precise = false;
		}
		this.__updateLayout();
		x += this.get_scrollH();
		var _g1 = 0;
		var _g = this.get_scrollV() - 1;
		while(_g1 < _g) {
			var i = _g1++;
			y += this.__textEngine.lineHeights.data.get(i);
		}
		if(!precise && y > this.__textEngine.textHeight) {
			y = this.__textEngine.textHeight;
		}
		var firstGroup = true;
		var group;
		var nextGroup;
		var _g11 = 0;
		var _g2 = this.__textEngine.layoutGroups.data.get_length();
		while(_g11 < _g2) {
			var i1 = _g11++;
			group = this.__textEngine.layoutGroups.data.get(i1);
			if(i1 < this.__textEngine.layoutGroups.data.get_length() - 1) {
				nextGroup = this.__textEngine.layoutGroups.data.get(i1 + 1);
			} else {
				nextGroup = null;
			}
			if(firstGroup) {
				if(y < group.offsetY) {
					y = group.offsetY;
				}
				if(x < group.offsetX) {
					x = group.offsetX;
				}
				firstGroup = false;
			}
			if(y >= group.offsetY && y <= group.offsetY + group.height || !precise && nextGroup == null) {
				if(x >= group.offsetX && x <= group.offsetX + group.width || !precise && (nextGroup == null || nextGroup.lineIndex != group.lineIndex)) {
					return group;
				}
			}
		}
		return null;
	}
	,__getPosition: function(x,y) {
		var group = this.__getGroup(x,y);
		if(group == null) {
			return lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		var advance = 0.0;
		var _g1 = 0;
		var _g = group.positions.length;
		while(_g1 < _g) {
			var i = _g1++;
			advance += i >= 0 && i < group.positions.length ? group.positions[i].advance.x : 0;
			if(x <= group.offsetX + advance) {
				if(x <= group.offsetX + (advance - (i >= 0 && i < group.positions.length ? group.positions[i].advance.x : 0)) + (i >= 0 && i < group.positions.length ? group.positions[i].advance.x : 0) / 2) {
					return group.startIndex + i;
				} else if(group.startIndex + i < group.endIndex) {
					return group.startIndex + i + 1;
				} else {
					return group.endIndex;
				}
			}
		}
		return group.endIndex;
	}
	,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly,hitObject) {
		if(!hitObject.get_visible() || this.__isMask || interactiveOnly && !this.mouseEnabled) {
			return false;
		}
		if(this.get_mask() != null && !this.get_mask().__hitTestMask(x,y)) {
			return false;
		}
		this.__getRenderTransform();
		this.__updateLayout();
		var _this = this.__renderTransform;
		var norm = _this.a * _this.d - _this.b * _this.c;
		var px = norm == 0 ? -_this.tx : 1.0 / norm * (_this.c * (_this.ty - y) + _this.d * (x - _this.tx));
		var _this1 = this.__renderTransform;
		var norm1 = _this1.a * _this1.d - _this1.b * _this1.c;
		var py = norm1 == 0 ? -_this1.ty : 1.0 / norm1 * (_this1.a * (y - _this1.ty) + _this1.b * (_this1.tx - x));
		if(this.__textEngine.bounds.contains(px,py)) {
			if(stack != null) {
				stack.push(hitObject);
			}
			return true;
		}
		return false;
	}
	,__hitTestMask: function(x,y) {
		this.__getRenderTransform();
		this.__updateLayout();
		var _this = this.__renderTransform;
		var norm = _this.a * _this.d - _this.b * _this.c;
		var px = norm == 0 ? -_this.tx : 1.0 / norm * (_this.c * (_this.ty - y) + _this.d * (x - _this.tx));
		var _this1 = this.__renderTransform;
		var norm1 = _this1.a * _this1.d - _this1.b * _this1.c;
		var py = norm1 == 0 ? -_this1.ty : 1.0 / norm1 * (_this1.a * (y - _this1.ty) + _this1.b * (_this1.tx - x));
		if(this.__textEngine.bounds.contains(px,py)) {
			return true;
		}
		return false;
	}
	,__renderCairo: function(renderSession) {
	}
	,__renderCanvas: function(renderSession) {
	}
	,__renderDOM: function(renderSession) {
	}
	,__renderDOMClear: function(renderSession) {
		openfl__$internal_renderer_dom_DOMTextField.clear(this,renderSession);
	}
	,__renderGL: function(renderSession) {
		openfl_display_InteractiveObject.prototype.__renderGL.call(this,renderSession);
	}
	,__renderGLMask: function(renderSession) {
		openfl_display_InteractiveObject.prototype.__renderGLMask.call(this,renderSession);
	}
	,__startCursorTimer: function() {
		this.__cursorTimer = haxe_Timer.delay($bind(this,this.__startCursorTimer),600);
		this.__showCursor = !this.__showCursor;
		this.__dirty = true;
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
	}
	,__startTextInput: function() {
		if(this.__caretIndex < 0) {
			this.__caretIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
			this.__selectionIndex = this.__caretIndex;
		}
		var enableInput = true;
		if(enableInput) {
			this.__enableInput();
		}
	}
	,__stopCursorTimer: function() {
		if(this.__cursorTimer != null) {
			this.__cursorTimer.stop();
			this.__cursorTimer = null;
		}
		if(this.__showCursor) {
			this.__showCursor = false;
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
	}
	,__stopTextInput: function() {
		var disableInput = true;
		if(disableInput) {
			this.__disableInput();
		}
	}
	,__updateCacheBitmap: function(renderSession,force) {
		if(openfl_display_InteractiveObject.prototype.__updateCacheBitmap.call(this,renderSession,force)) {
			if(this.__cacheBitmap != null) {
				this.__cacheBitmap.__renderTransform.tx -= this.__offsetX;
				this.__cacheBitmap.__renderTransform.ty -= this.__offsetY;
			}
			return true;
		}
		return false;
	}
	,__updateLayout: function() {
		if(this.__layoutDirty) {
			var cacheWidth = this.__textEngine.width;
			var cacheHeight = this.__textEngine.height;
			this.__textEngine.update();
			if(this.__textEngine.autoSize != 2) {
				if(this.__textEngine.width != cacheWidth) {
					var _g = this.__textEngine.autoSize;
					switch(_g) {
					case 0:
						var _g1 = this;
						_g1.set_x(_g1.get_x() + (cacheWidth - this.__textEngine.width) / 2);
						break;
					case 3:
						var _g2 = this;
						_g2.set_x(_g2.get_x() + (cacheWidth - this.__textEngine.width));
						break;
					default:
					}
				}
				this.__textEngine.getBounds();
			}
			this.__layoutDirty = false;
		}
	}
	,__updateScrollH: function() {
		if(!this.get_multiline() && this.get_type() == 1) {
			this.__layoutDirty = true;
			this.__updateLayout();
			var offsetX = this.__textEngine.textWidth - this.__textEngine.width + 4;
			if(offsetX > 0) {
				if(this.__caretIndex >= lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.get_text())) {
					this.set_scrollH(Math.ceil(offsetX));
				} else {
					var caret = openfl_geom_Rectangle.__pool.get();
					this.__getCharBoundaries(this.__caretIndex,caret);
					if(caret.x < this.get_scrollH()) {
						this.set_scrollH(Math.floor(caret.x - 2));
					} else if(caret.x > this.get_scrollH() + this.__textEngine.width) {
						this.set_scrollH(Math.ceil(caret.x - this.__textEngine.width - 2));
					}
					openfl_geom_Rectangle.__pool.release(caret);
				}
			} else {
				this.set_scrollH(0);
			}
		}
	}
	,__updateText: function(value) {
		this.__textEngine.set_text(value);
		this.__text = this.__textEngine.text;
		if(lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text) < this.__caretIndex) {
			this.__selectionIndex = this.__caretIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		if(!this.__displayAsPassword) {
			this.__textEngine.set_text(this.__text);
		} else {
			var length = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.get_text());
			var mask = "";
			var _g1 = 0;
			var _g = length;
			while(_g1 < _g) {
				var i = _g1++;
				mask += "*";
			}
			this.__textEngine.set_text(mask);
		}
	}
	,__updateTransforms: function(overrideTransform) {
		openfl_display_InteractiveObject.prototype.__updateTransforms.call(this,overrideTransform);
		var _this = this.__renderTransform;
		var px = this.__offsetX;
		var py = this.__offsetY;
		_this.tx = px * _this.a + py * _this.c + _this.tx;
		_this.ty = px * _this.b + py * _this.d + _this.ty;
	}
	,get_antiAliasType: function() {
		return this.__textEngine.antiAliasType;
	}
	,set_antiAliasType: function(value) {
		var tmp = value != this.__textEngine.antiAliasType;
		return this.__textEngine.antiAliasType = value;
	}
	,get_autoSize: function() {
		return this.__textEngine.autoSize;
	}
	,set_autoSize: function(value) {
		if(value != this.__textEngine.autoSize) {
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.autoSize = value;
	}
	,get_background: function() {
		return this.__textEngine.background;
	}
	,set_background: function(value) {
		if(value != this.__textEngine.background) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.background = value;
	}
	,get_backgroundColor: function() {
		return this.__textEngine.backgroundColor;
	}
	,set_backgroundColor: function(value) {
		if(value != this.__textEngine.backgroundColor) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.backgroundColor = value;
	}
	,get_border: function() {
		return this.__textEngine.border;
	}
	,set_border: function(value) {
		if(value != this.__textEngine.border) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.border = value;
	}
	,get_borderColor: function() {
		return this.__textEngine.borderColor;
	}
	,set_borderColor: function(value) {
		if(value != this.__textEngine.borderColor) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.borderColor = value;
	}
	,get_bottomScrollV: function() {
		this.__updateLayout();
		return this.__textEngine.bottomScrollV;
	}
	,get_cacheAsBitmap: function() {
		if(this.__filters != null && this.__filters.length == 1 && js_Boot.__instanceof(this.__filters[0],openfl_filters_GlowFilter)) {
			return false;
		}
		return openfl_display_InteractiveObject.prototype.get_cacheAsBitmap.call(this);
	}
	,get_caretIndex: function() {
		return this.__caretIndex;
	}
	,get_defaultTextFormat: function() {
		return this.__textFormat.clone();
	}
	,set_defaultTextFormat: function(value) {
		this.__textFormat.__merge(value);
		this.__layoutDirty = true;
		this.__dirty = true;
		if(!this.__renderDirty) {
			this.__renderDirty = true;
			this.__setParentRenderDirty();
		}
		return value;
	}
	,get_displayAsPassword: function() {
		return this.__displayAsPassword;
	}
	,set_displayAsPassword: function(value) {
		if(value != this.__displayAsPassword) {
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
			this.__displayAsPassword = value;
			this.__updateText(this.__text);
		}
		return value;
	}
	,get_embedFonts: function() {
		return this.__textEngine.embedFonts;
	}
	,set_embedFonts: function(value) {
		return this.__textEngine.embedFonts = value;
	}
	,get_gridFitType: function() {
		return this.__textEngine.gridFitType;
	}
	,set_gridFitType: function(value) {
		return this.__textEngine.gridFitType = value;
	}
	,get_height: function() {
		this.__updateLayout();
		return this.__textEngine.height * Math.abs(this.get_scaleY());
	}
	,set_height: function(value) {
		if(value != this.__textEngine.height) {
			this.__setTransformDirty();
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
			this.__textEngine.height = value;
		}
		return this.__textEngine.height * Math.abs(this.get_scaleY());
	}
	,get_htmlText: function() {
		return this.__text;
	}
	,set_htmlText: function(value) {
		if(!this.__isHTML || this.__text != value) {
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		this.__isHTML = true;
		value = openfl__$internal_text_HTMLParser.parse(value,this.__textFormat,this.__textEngine.textFormatRanges);
		this.__updateText(value);
		return value;
	}
	,get_length: function() {
		if(this.__text != null) {
			return lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
		}
		return 0;
	}
	,get_maxChars: function() {
		return this.__textEngine.maxChars;
	}
	,set_maxChars: function(value) {
		if(value != this.__textEngine.maxChars) {
			this.__textEngine.maxChars = value;
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return value;
	}
	,get_maxScrollH: function() {
		this.__updateLayout();
		return this.__textEngine.maxScrollH;
	}
	,get_maxScrollV: function() {
		this.__updateLayout();
		return this.__textEngine.maxScrollV;
	}
	,get_mouseWheelEnabled: function() {
		return this.__mouseWheelEnabled;
	}
	,set_mouseWheelEnabled: function(value) {
		return this.__mouseWheelEnabled = value;
	}
	,get_multiline: function() {
		return this.__textEngine.multiline;
	}
	,set_multiline: function(value) {
		if(value != this.__textEngine.multiline) {
			this.__dirty = true;
			this.__layoutDirty = true;
			this.__updateText(this.__text);
			this.__updateScrollH();
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.multiline = value;
	}
	,get_numLines: function() {
		this.__updateLayout();
		return this.__textEngine.numLines;
	}
	,get_restrict: function() {
		return this.__textEngine.restrict;
	}
	,set_restrict: function(value) {
		if(this.__textEngine.restrict != value) {
			this.__textEngine.set_restrict(value);
			this.__updateText(this.__text);
		}
		return value;
	}
	,get_scrollH: function() {
		return this.__textEngine.scrollH;
	}
	,set_scrollH: function(value) {
		this.__updateLayout();
		if(value > this.__textEngine.maxScrollH) {
			value = this.__textEngine.maxScrollH;
		}
		if(value < 0) {
			value = 0;
		}
		if(value != this.__textEngine.scrollH) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
			this.dispatchEvent(new openfl_events_Event("scroll"));
		}
		return this.__textEngine.scrollH = value;
	}
	,get_scrollV: function() {
		return this.__textEngine.scrollV;
	}
	,set_scrollV: function(value) {
		this.__updateLayout();
		if(value > this.__textEngine.maxScrollV) {
			value = this.__textEngine.maxScrollV;
		}
		if(value < 1) {
			value = 1;
		}
		if(value != this.__textEngine.scrollV) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
			this.dispatchEvent(new openfl_events_Event("scroll"));
		}
		return this.__textEngine.scrollV = value;
	}
	,get_selectable: function() {
		return this.__textEngine.selectable;
	}
	,set_selectable: function(value) {
		if(value != this.__textEngine.selectable && this.get_type() == 1) {
			if(this.stage != null && this.stage.get_focus() == this) {
				this.__startTextInput();
			} else if(!value) {
				this.__stopTextInput();
			}
		}
		return this.__textEngine.selectable = value;
	}
	,get_selectionBeginIndex: function() {
		return Math.min(this.__caretIndex,this.__selectionIndex) | 0;
	}
	,get_selectionEndIndex: function() {
		return Math.max(this.__caretIndex,this.__selectionIndex) | 0;
	}
	,get_sharpness: function() {
		return this.__textEngine.sharpness;
	}
	,set_sharpness: function(value) {
		if(value != this.__textEngine.sharpness) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.sharpness = value;
	}
	,get_tabEnabled: function() {
		if(this.__tabEnabled == null) {
			return this.__textEngine.type == 1;
		} else {
			return this.__tabEnabled;
		}
	}
	,get_text: function() {
		return this.__text;
	}
	,set_text: function(value) {
		if(this.__isHTML || this.__text != value) {
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		} else {
			return value;
		}
		if(this.__textEngine.textFormatRanges.data.get_length() > 1) {
			var this1 = this.__textEngine.textFormatRanges;
			var len = this.__textEngine.textFormatRanges.data.get_length() - 1;
			new openfl__$Vector_AbstractVector(this1.data.splice(1,len));
		}
		var utfValue = value;
		var range = this.__textEngine.textFormatRanges.data.get(0);
		range.format = this.__textFormat;
		range.start = 0;
		range.end = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(utfValue);
		this.__isHTML = false;
		this.__updateText(value);
		return value;
	}
	,get_textColor: function() {
		return this.__textFormat.color;
	}
	,set_textColor: function(value) {
		if(value != this.__textFormat.color) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		var _g = 0;
		var _g1 = this.__textEngine.textFormatRanges;
		while(_g < _g1.data.get_length()) {
			var range = _g1.data.get(_g);
			++_g;
			range.format.color = value;
		}
		return this.__textFormat.color = value;
	}
	,get_textWidth: function() {
		this.__updateLayout();
		return this.__textEngine.textWidth;
	}
	,get_textHeight: function() {
		this.__updateLayout();
		return this.__textEngine.textHeight;
	}
	,get_type: function() {
		return this.__textEngine.type;
	}
	,set_type: function(value) {
		if(value != this.__textEngine.type) {
			if(value == 1) {
				this.addEventListener("addedToStage",$bind(this,this.this_onAddedToStage));
				this.this_onFocusIn(null);
				this.__textEngine.__useIntAdvances = true;
			} else {
				this.removeEventListener("addedToStage",$bind(this,this.this_onAddedToStage));
				this.__stopTextInput();
				this.__textEngine.__useIntAdvances = null;
			}
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.type = value;
	}
	,get_width: function() {
		this.__updateLayout();
		return this.__textEngine.width * Math.abs(this.__scaleX);
	}
	,set_width: function(value) {
		if(value != this.__textEngine.width) {
			this.__setTransformDirty();
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
			this.__textEngine.width = value;
		}
		return this.__textEngine.width * Math.abs(this.__scaleX);
	}
	,get_wordWrap: function() {
		return this.__textEngine.wordWrap;
	}
	,set_wordWrap: function(value) {
		if(value != this.__textEngine.wordWrap) {
			this.__dirty = true;
			this.__layoutDirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		return this.__textEngine.wordWrap = value;
	}
	,get_x: function() {
		return this.__transform.tx + this.__offsetX;
	}
	,set_x: function(value) {
		if(value != this.__transform.tx + this.__offsetX) {
			this.__setTransformDirty();
		}
		return this.__transform.tx = value - this.__offsetX;
	}
	,get_y: function() {
		return this.__transform.ty + this.__offsetY;
	}
	,set_y: function(value) {
		if(value != this.__transform.ty + this.__offsetY) {
			this.__setTransformDirty();
		}
		return this.__transform.ty = value - this.__offsetY;
	}
	,stage_onMouseMove: function(event) {
		if(this.stage == null) {
			return;
		}
		if(this.__textEngine.selectable && this.__selectionIndex >= 0) {
			this.__updateLayout();
			var position = this.__getPosition(this.get_mouseX() + this.get_scrollH(),this.get_mouseY());
			if(position != this.__caretIndex) {
				this.__caretIndex = position;
				this.__dirty = true;
				if(!this.__renderDirty) {
					this.__renderDirty = true;
					this.__setParentRenderDirty();
				}
			}
		}
	}
	,stage_onMouseUp: function(event) {
		if(this.stage == null) {
			return;
		}
		this.stage.removeEventListener("mouseMove",$bind(this,this.stage_onMouseMove));
		this.stage.removeEventListener("mouseUp",$bind(this,this.stage_onMouseUp));
		if(this.stage.get_focus() == this) {
			this.__getWorldTransform();
			this.__updateLayout();
			var _this = this.__worldTransform;
			var px = this.get_x();
			var py = this.get_y();
			var norm = _this.a * _this.d - _this.b * _this.c;
			var px1 = norm == 0 ? -_this.tx : 1.0 / norm * (_this.c * (_this.ty - py) + _this.d * (px - _this.tx));
			var _this1 = this.__worldTransform;
			var px2 = this.get_x();
			var py1 = this.get_y();
			var norm1 = _this1.a * _this1.d - _this1.b * _this1.c;
			var py2 = norm1 == 0 ? -_this1.ty : 1.0 / norm1 * (_this1.a * (py1 - _this1.ty) + _this1.b * (_this1.tx - px2));
			var upPos = this.__getPosition(this.get_mouseX() + this.get_scrollH(),this.get_mouseY());
			var leftPos;
			var rightPos;
			leftPos = Math.min(this.__selectionIndex,upPos) | 0;
			rightPos = Math.max(this.__selectionIndex,upPos) | 0;
			this.__selectionIndex = leftPos;
			this.__caretIndex = rightPos;
			if(this.__inputEnabled) {
				this.this_onFocusIn(null);
				this.__stopCursorTimer();
				this.__startCursorTimer();
			}
		}
	}
	,this_onAddedToStage: function(event) {
		this.this_onFocusIn(null);
	}
	,this_onFocusIn: function(event) {
		if(this.get_type() == 1 && this.stage != null && this.stage.get_focus() == this) {
			this.__startTextInput();
		}
	}
	,this_onFocusOut: function(event) {
		this.__stopCursorTimer();
		if(event.relatedObject == null || !js_Boot.__instanceof(event.relatedObject,openfl_text_TextField)) {
			this.__stopTextInput();
		} else {
			this.stage.window.onTextInput.remove($bind(this,this.window_onTextInput));
			this.stage.window.onKeyDown.remove($bind(this,this.window_onKeyDown));
			this.__inputEnabled = false;
		}
		if(this.__selectionIndex != this.__caretIndex) {
			this.__selectionIndex = this.__caretIndex;
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
	}
	,this_onKeyDown: function(event) {
		if(this.get_selectable() && this.get_type() != 1 && event.keyCode == 67 && (event.commandKey || event.ctrlKey)) {
			if(this.__caretIndex != this.__selectionIndex) {
				lime_system_Clipboard.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(this.__text,this.__caretIndex,this.__selectionIndex));
			}
		}
	}
	,this_onMouseDown: function(event) {
		if(!this.get_selectable() && this.get_type() != 1) {
			return;
		}
		this.__updateLayout();
		this.__caretIndex = this.__getPosition(this.get_mouseX() + this.get_scrollH(),this.get_mouseY());
		this.__selectionIndex = this.__caretIndex;
		if(!openfl_display_DisplayObject.__supportDOM) {
			this.__dirty = true;
			if(!this.__renderDirty) {
				this.__renderDirty = true;
				this.__setParentRenderDirty();
			}
		}
		this.stage.addEventListener("mouseMove",$bind(this,this.stage_onMouseMove));
		this.stage.addEventListener("mouseUp",$bind(this,this.stage_onMouseUp));
	}
	,window_onKeyDown: function(key,modifier) {
		switch(key) {
		case 8:
			if(this.__selectionIndex == this.__caretIndex && this.__caretIndex > 0) {
				this.__selectionIndex = this.__caretIndex - 1;
			}
			if(this.__selectionIndex != this.__caretIndex) {
				this.replaceSelectedText("");
				this.__selectionIndex = this.__caretIndex;
				this.dispatchEvent(new openfl_events_Event("change",true));
			}
			break;
		case 97:
			if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(modifier)) {
				this.__caretIndex = lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text);
				this.__selectionIndex = 0;
			}
			break;
		case 99:
			if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(modifier)) {
				if(this.__caretIndex != this.__selectionIndex) {
					lime_system_Clipboard.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(this.__text,this.__caretIndex,this.__selectionIndex));
				}
			}
			break;
		case 120:
			if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier) || lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_ctrlKey(modifier)) {
				if(this.__caretIndex != this.__selectionIndex) {
					lime_system_Clipboard.set_text(lime_text__$UTF8String_UTF8String_$Impl_$.substring(this.__text,this.__caretIndex,this.__selectionIndex));
					this.replaceSelectedText("");
					this.dispatchEvent(new openfl_events_Event("change",true));
				}
			}
			break;
		case 127:
			if(this.__selectionIndex == this.__caretIndex && this.__caretIndex < lime_text__$UTF8String_UTF8String_$Impl_$.get_length(this.__text)) {
				this.__selectionIndex = this.__caretIndex + 1;
			}
			if(this.__selectionIndex != this.__caretIndex) {
				this.replaceSelectedText("");
				this.__selectionIndex = this.__caretIndex;
				this.dispatchEvent(new openfl_events_Event("change",true));
			}
			break;
		case 1073741898:
			this.__caretBeginningOfLine();
			this.__stopCursorTimer();
			this.__startCursorTimer();
			break;
		case 1073741901:
			this.__caretEndOfLine();
			this.__stopCursorTimer();
			this.__startCursorTimer();
			break;
		case 1073741903:
			if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier)) {
				this.__caretEndOfLine();
				if(!lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier)) {
					this.__selectionIndex = this.__caretIndex;
				}
			} else if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier)) {
				this.__caretNextCharacter();
			} else {
				if(this.__selectionIndex == this.__caretIndex) {
					this.__caretNextCharacter();
				} else {
					this.__caretIndex = Math.max(this.__caretIndex,this.__selectionIndex) | 0;
				}
				this.__selectionIndex = this.__caretIndex;
			}
			this.__updateScrollH();
			this.__stopCursorTimer();
			this.__startCursorTimer();
			break;
		case 1073741904:
			if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_metaKey(modifier)) {
				this.__caretBeginningOfLine();
				if(!lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier)) {
					this.__selectionIndex = this.__caretIndex;
				}
			} else if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier)) {
				this.__caretPreviousCharacter();
			} else {
				if(this.__selectionIndex == this.__caretIndex) {
					this.__caretPreviousCharacter();
				} else {
					this.__caretIndex = Math.min(this.__caretIndex,this.__selectionIndex) | 0;
				}
				this.__selectionIndex = this.__caretIndex;
			}
			this.__updateScrollH();
			this.__stopCursorTimer();
			this.__startCursorTimer();
			break;
		case 1073741905:
			if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier)) {
				this.__caretNextLine();
			} else {
				if(this.__selectionIndex == this.__caretIndex) {
					this.__caretNextLine();
				} else {
					var lineIndex = this.getLineIndexOfChar(Math.max(this.__caretIndex,this.__selectionIndex) | 0);
					this.__caretNextLine(lineIndex,Math.min(this.__caretIndex,this.__selectionIndex) | 0);
				}
				this.__selectionIndex = this.__caretIndex;
			}
			this.__stopCursorTimer();
			this.__startCursorTimer();
			break;
		case 1073741906:
			if(lime_ui__$KeyModifier_KeyModifier_$Impl_$.get_shiftKey(modifier)) {
				this.__caretPreviousLine();
			} else {
				if(this.__selectionIndex == this.__caretIndex) {
					this.__caretPreviousLine();
				} else {
					var lineIndex1 = this.getLineIndexOfChar(Math.min(this.__caretIndex,this.__selectionIndex) | 0);
					this.__caretPreviousLine(lineIndex1,Math.min(this.__caretIndex,this.__selectionIndex) | 0);
				}
				this.__selectionIndex = this.__caretIndex;
			}
			this.__stopCursorTimer();
			this.__startCursorTimer();
			break;
		case 13:case 1073741912:
			if(this.__textEngine.multiline) {
				this.replaceSelectedText("\n");
				this.dispatchEvent(new openfl_events_Event("change",true));
			}
			break;
		default:
		}
	}
	,window_onTextInput: function(value) {
		this.replaceSelectedText(value);
		this.dispatchEvent(new openfl_events_Event("change",true));
	}
	,__class__: openfl_text_TextField
	,__properties__: $extend(openfl_display_InteractiveObject.prototype.__properties__,{set_wordWrap:"set_wordWrap",get_wordWrap:"get_wordWrap",set_type:"set_type",get_type:"get_type",get_textWidth:"get_textWidth",get_textHeight:"get_textHeight",set_textColor:"set_textColor",get_textColor:"get_textColor",set_text:"set_text",get_text:"get_text",set_sharpness:"set_sharpness",get_sharpness:"get_sharpness",get_selectionEndIndex:"get_selectionEndIndex",get_selectionBeginIndex:"get_selectionBeginIndex",set_selectable:"set_selectable",get_selectable:"get_selectable",set_scrollV:"set_scrollV",get_scrollV:"get_scrollV",set_scrollH:"set_scrollH",get_scrollH:"get_scrollH",set_restrict:"set_restrict",get_restrict:"get_restrict",get_numLines:"get_numLines",set_multiline:"set_multiline",get_multiline:"get_multiline",set_mouseWheelEnabled:"set_mouseWheelEnabled",get_mouseWheelEnabled:"get_mouseWheelEnabled",get_maxScrollV:"get_maxScrollV",get_maxScrollH:"get_maxScrollH",set_maxChars:"set_maxChars",get_maxChars:"get_maxChars",get_length:"get_length",set_htmlText:"set_htmlText",get_htmlText:"get_htmlText",set_gridFitType:"set_gridFitType",get_gridFitType:"get_gridFitType",set_embedFonts:"set_embedFonts",get_embedFonts:"get_embedFonts",set_displayAsPassword:"set_displayAsPassword",get_displayAsPassword:"get_displayAsPassword",set_defaultTextFormat:"set_defaultTextFormat",get_defaultTextFormat:"get_defaultTextFormat",get_caretIndex:"get_caretIndex",get_bottomScrollV:"get_bottomScrollV",set_borderColor:"set_borderColor",get_borderColor:"get_borderColor",set_border:"set_border",get_border:"get_border",set_backgroundColor:"set_backgroundColor",get_backgroundColor:"get_backgroundColor",set_background:"set_background",get_background:"get_background",set_autoSize:"set_autoSize",get_autoSize:"get_autoSize",set_antiAliasType:"set_antiAliasType",get_antiAliasType:"get_antiAliasType"})
});
var openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$ = {};
$hxClasses["openfl.text._TextFieldAutoSize.TextFieldAutoSize_Impl_"] = openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$;
openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$.__name__ = ["openfl","text","_TextFieldAutoSize","TextFieldAutoSize_Impl_"];
openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$.fromString = function(value) {
	switch(value) {
	case "center":
		return 0;
	case "left":
		return 1;
	case "none":
		return 2;
	case "right":
		return 3;
	default:
		return null;
	}
};
openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "center";
	case 1:
		return "left";
	case 2:
		return "none";
	case 3:
		return "right";
	default:
		return null;
	}
};
var openfl_text__$TextFieldType_TextFieldType_$Impl_$ = {};
$hxClasses["openfl.text._TextFieldType.TextFieldType_Impl_"] = openfl_text__$TextFieldType_TextFieldType_$Impl_$;
openfl_text__$TextFieldType_TextFieldType_$Impl_$.__name__ = ["openfl","text","_TextFieldType","TextFieldType_Impl_"];
openfl_text__$TextFieldType_TextFieldType_$Impl_$.fromString = function(value) {
	switch(value) {
	case "dynamic":
		return 0;
	case "input":
		return 1;
	default:
		return null;
	}
};
openfl_text__$TextFieldType_TextFieldType_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "dynamic";
	case 1:
		return "input";
	default:
		return null;
	}
};
var openfl_text_TextFormat = function(font,size,color,bold,italic,underline,url,target,align,leftMargin,rightMargin,indent,leading) {
	this.font = font;
	this.size = size;
	this.color = color;
	this.bold = bold;
	this.italic = italic;
	this.underline = underline;
	this.url = url;
	this.target = target;
	this.align = align;
	this.leftMargin = leftMargin;
	this.rightMargin = rightMargin;
	this.indent = indent;
	this.leading = leading;
};
$hxClasses["openfl.text.TextFormat"] = openfl_text_TextFormat;
openfl_text_TextFormat.__name__ = ["openfl","text","TextFormat"];
openfl_text_TextFormat.prototype = {
	align: null
	,blockIndent: null
	,bold: null
	,bullet: null
	,color: null
	,font: null
	,indent: null
	,italic: null
	,kerning: null
	,leading: null
	,leftMargin: null
	,letterSpacing: null
	,rightMargin: null
	,size: null
	,tabStops: null
	,target: null
	,underline: null
	,url: null
	,__ascent: null
	,__descent: null
	,clone: function() {
		var newFormat = new openfl_text_TextFormat(this.font,this.size,this.color,this.bold,this.italic,this.underline,this.url,this.target);
		newFormat.align = this.align;
		newFormat.leftMargin = this.leftMargin;
		newFormat.rightMargin = this.rightMargin;
		newFormat.indent = this.indent;
		newFormat.leading = this.leading;
		newFormat.blockIndent = this.blockIndent;
		newFormat.bullet = this.bullet;
		newFormat.kerning = this.kerning;
		newFormat.letterSpacing = this.letterSpacing;
		newFormat.tabStops = this.tabStops;
		newFormat.__ascent = this.__ascent;
		newFormat.__descent = this.__descent;
		return newFormat;
	}
	,__merge: function(format) {
		if(format.font != null) {
			this.font = format.font;
		}
		if(format.size != null) {
			this.size = format.size;
		}
		if(format.color != null) {
			this.color = format.color;
		}
		if(format.bold != null) {
			this.bold = format.bold;
		}
		if(format.italic != null) {
			this.italic = format.italic;
		}
		if(format.underline != null) {
			this.underline = format.underline;
		}
		if(format.url != null && format.url != "") {
			this.url = format.url;
		}
		if(format.url == "" && this.url == null) {
			this.url = "";
		}
		if(format.target != null) {
			this.target = format.target;
		}
		if(format.align != null) {
			this.align = format.align;
		}
		if(format.leftMargin != null) {
			this.leftMargin = format.leftMargin;
		}
		if(format.rightMargin != null) {
			this.rightMargin = format.rightMargin;
		}
		if(format.indent != null) {
			this.indent = format.indent;
		}
		if(format.leading != null) {
			this.leading = format.leading;
		}
		if(format.blockIndent != null) {
			this.blockIndent = format.blockIndent;
		}
		if(format.bullet != null) {
			this.bullet = format.bullet;
		}
		if(format.kerning != null) {
			this.kerning = format.kerning;
		}
		if(format.letterSpacing != null) {
			this.letterSpacing = format.letterSpacing;
		}
		if(format.tabStops != null) {
			this.tabStops = format.tabStops;
		}
		if(format.__ascent != null) {
			this.__ascent = format.__ascent;
		}
		if(format.__descent != null) {
			this.__descent = format.__descent;
		}
	}
	,__class__: openfl_text_TextFormat
};
var openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$ = {};
$hxClasses["openfl.text._TextFormatAlign.TextFormatAlign_Impl_"] = openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$;
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.__name__ = ["openfl","text","_TextFormatAlign","TextFormatAlign_Impl_"];
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.fromString = function(value) {
	switch(value) {
	case "center":
		return 0;
	case "end":
		return 1;
	case "justify":
		return 2;
	case "left":
		return 3;
	case "right":
		return 4;
	case "start":
		return 5;
	default:
		return null;
	}
};
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "center";
	case 1:
		return "end";
	case 2:
		return "justify";
	case 3:
		return "left";
	case 4:
		return "right";
	case 5:
		return "start";
	default:
		return null;
	}
};
var openfl_text_TextLineMetrics = function(x,width,height,ascent,descent,leading) {
	this.x = x;
	this.width = width;
	this.height = height;
	this.ascent = ascent;
	this.descent = descent;
	this.leading = leading;
};
$hxClasses["openfl.text.TextLineMetrics"] = openfl_text_TextLineMetrics;
openfl_text_TextLineMetrics.__name__ = ["openfl","text","TextLineMetrics"];
openfl_text_TextLineMetrics.prototype = {
	ascent: null
	,descent: null
	,height: null
	,leading: null
	,width: null
	,x: null
	,__class__: openfl_text_TextLineMetrics
};
var openfl_ui_GameInput = function() {
	openfl_events_EventDispatcher.call(this);
	openfl_ui_GameInput.__instances.push(this);
};
$hxClasses["openfl.ui.GameInput"] = openfl_ui_GameInput;
openfl_ui_GameInput.__name__ = ["openfl","ui","GameInput"];
openfl_ui_GameInput.getDeviceAt = function(index) {
	if(index >= 0 && index < openfl_ui_GameInput.__deviceList.length) {
		return openfl_ui_GameInput.__deviceList[index];
	}
	return null;
};
openfl_ui_GameInput.__getDevice = function(gamepad) {
	if(gamepad == null) {
		return null;
	}
	if(openfl_ui_GameInput.__devices.h.__keys__[gamepad.__id__] == null) {
		var device = new openfl_ui_GameInputDevice(null,null);
		openfl_ui_GameInput.__deviceList.push(device);
		openfl_ui_GameInput.__devices.set(gamepad,device);
		openfl_ui_GameInput.numDevices = openfl_ui_GameInput.__deviceList.length;
	}
	return openfl_ui_GameInput.__devices.h[gamepad.__id__];
};
openfl_ui_GameInput.__onGamepadAxisMove = function(gamepad,axis,value) {
	var device = openfl_ui_GameInput.__getDevice(gamepad);
	if(device == null) {
		return;
	}
	if(device.enabled) {
		if(!device.__axis.h.hasOwnProperty(axis)) {
			var control;
			switch(axis) {
			case 0:
				control = "LEFT_X";
				break;
			case 1:
				control = "LEFT_Y";
				break;
			case 2:
				control = "RIGHT_X";
				break;
			case 3:
				control = "RIGHT_Y";
				break;
			case 4:
				control = "TRIGGER_LEFT";
				break;
			case 5:
				control = "TRIGGER_RIGHT";
				break;
			default:
				control = "UNKNOWN (" + axis + ")";
			}
			var control1 = new openfl_ui_GameInputControl(device,"AXIS_" + control,-1,1);
			device.__axis.h[axis] = control1;
			device.__controls.push(control1);
		}
		var control2 = device.__axis.h[axis];
		control2.value = value;
		control2.dispatchEvent(new openfl_events_Event("change"));
	}
};
openfl_ui_GameInput.__onGamepadButtonDown = function(gamepad,button) {
	var device = openfl_ui_GameInput.__getDevice(gamepad);
	if(device == null) {
		return;
	}
	if(device.enabled) {
		if(!device.__button.h.hasOwnProperty(button)) {
			var control;
			switch(button) {
			case 0:
				control = "A";
				break;
			case 1:
				control = "B";
				break;
			case 2:
				control = "X";
				break;
			case 3:
				control = "Y";
				break;
			case 4:
				control = "BACK";
				break;
			case 5:
				control = "GUIDE";
				break;
			case 6:
				control = "START";
				break;
			case 7:
				control = "LEFT_STICK";
				break;
			case 8:
				control = "RIGHT_STICK";
				break;
			case 9:
				control = "LEFT_SHOULDER";
				break;
			case 10:
				control = "RIGHT_SHOULDER";
				break;
			case 11:
				control = "DPAD_UP";
				break;
			case 12:
				control = "DPAD_DOWN";
				break;
			case 13:
				control = "DPAD_LEFT";
				break;
			case 14:
				control = "DPAD_RIGHT";
				break;
			default:
				control = "UNKNOWN (" + button + ")";
			}
			var control1 = new openfl_ui_GameInputControl(device,"BUTTON_" + control,0,1);
			device.__button.h[button] = control1;
			device.__controls.push(control1);
		}
		var control2 = device.__button.h[button];
		control2.value = 1;
		control2.dispatchEvent(new openfl_events_Event("change"));
	}
};
openfl_ui_GameInput.__onGamepadButtonUp = function(gamepad,button) {
	var device = openfl_ui_GameInput.__getDevice(gamepad);
	if(device == null) {
		return;
	}
	if(device.enabled) {
		if(!device.__button.h.hasOwnProperty(button)) {
			var control;
			switch(button) {
			case 0:
				control = "A";
				break;
			case 1:
				control = "B";
				break;
			case 2:
				control = "X";
				break;
			case 3:
				control = "Y";
				break;
			case 4:
				control = "BACK";
				break;
			case 5:
				control = "GUIDE";
				break;
			case 6:
				control = "START";
				break;
			case 7:
				control = "LEFT_STICK";
				break;
			case 8:
				control = "RIGHT_STICK";
				break;
			case 9:
				control = "LEFT_SHOULDER";
				break;
			case 10:
				control = "RIGHT_SHOULDER";
				break;
			case 11:
				control = "DPAD_UP";
				break;
			case 12:
				control = "DPAD_DOWN";
				break;
			case 13:
				control = "DPAD_LEFT";
				break;
			case 14:
				control = "DPAD_RIGHT";
				break;
			default:
				control = "UNKNOWN (" + button + ")";
			}
			var control1 = new openfl_ui_GameInputControl(device,"BUTTON_" + control,0,1);
			device.__button.h[button] = control1;
			device.__controls.push(control1);
		}
		var control2 = device.__button.h[button];
		control2.value = 0;
		control2.dispatchEvent(new openfl_events_Event("change"));
	}
};
openfl_ui_GameInput.__onGamepadConnect = function(gamepad) {
	var device = openfl_ui_GameInput.__getDevice(gamepad);
	if(device == null) {
		return;
	}
	var _g = 0;
	var _g1 = openfl_ui_GameInput.__instances;
	while(_g < _g1.length) {
		var instance = _g1[_g];
		++_g;
		instance.dispatchEvent(new openfl_events_GameInputEvent("deviceAdded",null,null,device));
	}
};
openfl_ui_GameInput.__onGamepadDisconnect = function(gamepad) {
	var device = openfl_ui_GameInput.__devices.h[gamepad.__id__];
	if(device != null) {
		if(openfl_ui_GameInput.__devices.h.__keys__[gamepad.__id__] != null) {
			HxOverrides.remove(openfl_ui_GameInput.__deviceList,openfl_ui_GameInput.__devices.h[gamepad.__id__]);
			openfl_ui_GameInput.__devices.remove(gamepad);
		}
		openfl_ui_GameInput.numDevices = openfl_ui_GameInput.__deviceList.length;
		var _g = 0;
		var _g1 = openfl_ui_GameInput.__instances;
		while(_g < _g1.length) {
			var instance = _g1[_g];
			++_g;
			instance.dispatchEvent(new openfl_events_GameInputEvent("deviceRemoved",null,null,device));
		}
	}
};
openfl_ui_GameInput.__super__ = openfl_events_EventDispatcher;
openfl_ui_GameInput.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
		if(useWeakReference == null) {
			useWeakReference = false;
		}
		if(priority == null) {
			priority = 0;
		}
		if(useCapture == null) {
			useCapture = false;
		}
		openfl_events_EventDispatcher.prototype.addEventListener.call(this,type,listener,useCapture,priority,useWeakReference);
		if(type == "deviceAdded") {
			var _g = 0;
			var _g1 = openfl_ui_GameInput.__deviceList;
			while(_g < _g1.length) {
				var device = _g1[_g];
				++_g;
				this.dispatchEvent(new openfl_events_GameInputEvent("deviceAdded",null,null,device));
			}
		}
	}
	,__class__: openfl_ui_GameInput
});
var openfl_ui_GameInputControl = function(device,id,minValue,maxValue,value) {
	if(value == null) {
		value = 0;
	}
	openfl_events_EventDispatcher.call(this);
	this.device = device;
	this.id = id;
	this.minValue = minValue;
	this.maxValue = maxValue;
	this.value = value;
};
$hxClasses["openfl.ui.GameInputControl"] = openfl_ui_GameInputControl;
openfl_ui_GameInputControl.__name__ = ["openfl","ui","GameInputControl"];
openfl_ui_GameInputControl.__super__ = openfl_events_EventDispatcher;
openfl_ui_GameInputControl.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	device: null
	,id: null
	,maxValue: null
	,minValue: null
	,value: null
	,__class__: openfl_ui_GameInputControl
});
var openfl_ui_GameInputDevice = function(id,name) {
	this.__controls = [];
	this.__button = new haxe_ds_IntMap();
	this.__axis = new haxe_ds_IntMap();
	this.id = id;
	this.name = name;
	var control;
	var _g = 0;
	while(_g < 6) {
		var i = _g++;
		control = new openfl_ui_GameInputControl(this,"AXIS_" + i,-1,1);
		this.__axis.h[i] = control;
		this.__controls.push(control);
	}
	var _g1 = 0;
	while(_g1 < 15) {
		var i1 = _g1++;
		control = new openfl_ui_GameInputControl(this,"BUTTON_" + i1,0,1);
		this.__button.h[i1] = control;
		this.__controls.push(control);
	}
};
$hxClasses["openfl.ui.GameInputDevice"] = openfl_ui_GameInputDevice;
openfl_ui_GameInputDevice.__name__ = ["openfl","ui","GameInputDevice"];
openfl_ui_GameInputDevice.prototype = {
	enabled: null
	,id: null
	,name: null
	,sampleInterval: null
	,__axis: null
	,__button: null
	,__controls: null
	,__gamepad: null
	,getCachedSamples: function(data,append) {
		if(append == null) {
			append = false;
		}
		return 0;
	}
	,getControlAt: function(i) {
		if(i >= 0 && i < this.__controls.length) {
			return this.__controls[i];
		}
		return null;
	}
	,startCachingSamples: function(numSamples,controls) {
	}
	,stopCachingSamples: function() {
	}
	,get_numControls: function() {
		return this.__controls.length;
	}
	,__class__: openfl_ui_GameInputDevice
	,__properties__: {get_numControls:"get_numControls"}
};
var openfl_ui_Keyboard = function() { };
$hxClasses["openfl.ui.Keyboard"] = openfl_ui_Keyboard;
openfl_ui_Keyboard.__name__ = ["openfl","ui","Keyboard"];
openfl_ui_Keyboard.isAccessible = function() {
	return false;
};
openfl_ui_Keyboard.__convertKeyCode = function(key) {
	switch(key) {
	case 8:
		return 8;
	case 9:
		return 9;
	case 13:
		return 13;
	case 27:
		return 27;
	case 32:
		return 32;
	case 33:
		return 49;
	case 34:
		return 222;
	case 35:
		return 51;
	case 36:
		return 52;
	case 37:
		return 53;
	case 38:
		return 55;
	case 39:
		return 222;
	case 40:
		return 57;
	case 41:
		return 48;
	case 42:
		return 56;
	case 44:
		return 188;
	case 45:
		return 189;
	case 46:
		return 190;
	case 47:
		return 191;
	case 48:
		return 48;
	case 49:
		return 49;
	case 50:
		return 50;
	case 51:
		return 51;
	case 52:
		return 52;
	case 53:
		return 53;
	case 54:
		return 54;
	case 55:
		return 55;
	case 56:
		return 56;
	case 57:
		return 57;
	case 58:
		return 186;
	case 59:
		return 186;
	case 60:
		return 60;
	case 61:
		return 187;
	case 62:
		return 190;
	case 63:
		return 191;
	case 64:
		return 50;
	case 91:
		return 219;
	case 92:
		return 220;
	case 93:
		return 221;
	case 94:
		return 54;
	case 95:
		return 189;
	case 96:
		return 192;
	case 97:
		return 65;
	case 98:
		return 66;
	case 99:
		return 67;
	case 100:
		return 68;
	case 101:
		return 69;
	case 102:
		return 70;
	case 103:
		return 71;
	case 104:
		return 72;
	case 105:
		return 73;
	case 106:
		return 74;
	case 107:
		return 75;
	case 108:
		return 76;
	case 109:
		return 77;
	case 110:
		return 78;
	case 111:
		return 79;
	case 112:
		return 80;
	case 113:
		return 81;
	case 114:
		return 82;
	case 115:
		return 83;
	case 116:
		return 84;
	case 117:
		return 85;
	case 118:
		return 86;
	case 119:
		return 87;
	case 120:
		return 88;
	case 121:
		return 89;
	case 122:
		return 90;
	case 127:
		return 46;
	case 1073741881:
		return 20;
	case 1073741882:
		return 112;
	case 1073741883:
		return 113;
	case 1073741884:
		return 114;
	case 1073741885:
		return 115;
	case 1073741886:
		return 116;
	case 1073741887:
		return 117;
	case 1073741888:
		return 118;
	case 1073741889:
		return 119;
	case 1073741890:
		return 120;
	case 1073741891:
		return 121;
	case 1073741892:
		return 122;
	case 1073741893:
		return 123;
	case 1073741894:
		return 301;
	case 1073741895:
		return 145;
	case 1073741896:
		return 19;
	case 1073741897:
		return 45;
	case 1073741898:
		return 36;
	case 1073741899:
		return 33;
	case 1073741901:
		return 35;
	case 1073741902:
		return 34;
	case 1073741903:
		return 39;
	case 1073741904:
		return 37;
	case 1073741905:
		return 40;
	case 1073741906:
		return 38;
	case 1073741907:
		return 144;
	case 1073741908:
		return 111;
	case 1073741909:
		return 106;
	case 1073741910:
		return 109;
	case 1073741911:
		return 107;
	case 1073741912:
		return 108;
	case 1073741913:
		return 97;
	case 1073741914:
		return 98;
	case 1073741915:
		return 99;
	case 1073741916:
		return 100;
	case 1073741917:
		return 101;
	case 1073741918:
		return 102;
	case 1073741919:
		return 103;
	case 1073741920:
		return 104;
	case 1073741921:
		return 105;
	case 1073741922:
		return 96;
	case 1073741923:
		return 110;
	case 1073741925:
		return 302;
	case 1073741928:
		return 124;
	case 1073741929:
		return 125;
	case 1073741930:
		return 126;
	case 1073741982:
		return 13;
	case 1073742044:
		return 110;
	case 1073742048:
		return 17;
	case 1073742049:
		return 16;
	case 1073742050:
		return 18;
	case 1073742051:
		return 15;
	case 1073742052:
		return 17;
	case 1073742053:
		return 16;
	case 1073742054:
		return 18;
	case 1073742055:
		return 15;
	default:
		return key;
	}
};
openfl_ui_Keyboard.__getCharCode = function(key,shift) {
	if(shift == null) {
		shift = false;
	}
	if(!shift) {
		switch(key) {
		case 8:
			return 8;
		case 9:
			return 9;
		case 13:
			return 13;
		case 27:
			return 27;
		case 32:
			return 32;
		case 186:
			return 59;
		case 187:
			return 61;
		case 188:
			return 44;
		case 189:
			return 45;
		case 190:
			return 46;
		case 191:
			return 47;
		case 192:
			return 96;
		case 219:
			return 91;
		case 220:
			return 92;
		case 221:
			return 93;
		case 222:
			return 39;
		}
		if(key >= 48 && key <= 57) {
			return key - 48 + 48;
		}
		if(key >= 65 && key <= 90) {
			return key - 65 + 97;
		}
	} else {
		switch(key) {
		case 48:
			return 41;
		case 49:
			return 33;
		case 50:
			return 64;
		case 51:
			return 35;
		case 52:
			return 36;
		case 53:
			return 37;
		case 54:
			return 94;
		case 55:
			return 38;
		case 56:
			return 42;
		case 57:
			return 40;
		case 186:
			return 58;
		case 187:
			return 43;
		case 188:
			return 60;
		case 189:
			return 95;
		case 190:
			return 62;
		case 191:
			return 63;
		case 192:
			return 126;
		case 219:
			return 123;
		case 220:
			return 124;
		case 221:
			return 125;
		case 222:
			return 34;
		}
		if(key >= 65 && key <= 90) {
			return key - 65 + 65;
		}
	}
	if(key >= 96 && key <= 105) {
		return key - 96 + 48;
	}
	switch(key) {
	case 8:
		return 8;
	case 13:
		return 13;
	case 46:
		return 127;
	case 106:
		return 42;
	case 107:
		return 43;
	case 108:
		return 44;
	case 110:
		return 45;
	case 111:
		return 46;
	}
	return 0;
};
openfl_ui_Keyboard.__getKeyLocation = function(key) {
	switch(key) {
	case 1073741908:case 1073741909:case 1073741910:case 1073741911:case 1073741912:case 1073741913:case 1073741914:case 1073741915:case 1073741916:case 1073741917:case 1073741918:case 1073741919:case 1073741920:case 1073741921:case 1073741922:case 1073741923:case 1073742044:
		return 3;
	case 1073742048:case 1073742049:case 1073742050:case 1073742051:
		return 1;
	case 1073742052:case 1073742053:case 1073742054:case 1073742055:
		return 2;
	default:
		return 0;
	}
};
var openfl_ui_Mouse = function() { };
$hxClasses["openfl.ui.Mouse"] = openfl_ui_Mouse;
openfl_ui_Mouse.__name__ = ["openfl","ui","Mouse"];
openfl_ui_Mouse.__properties__ = {set_cursor:"set_cursor",get_cursor:"get_cursor"};
openfl_ui_Mouse.hide = function() {
	lime_ui_Mouse.hide();
};
openfl_ui_Mouse.show = function() {
	lime_ui_Mouse.show();
};
openfl_ui_Mouse.get_cursor = function() {
	return openfl_ui_Mouse.__cursor;
};
openfl_ui_Mouse.set_cursor = function(value) {
	switch(value) {
	case "arrow":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.ARROW);
		break;
	case "button":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.POINTER);
		break;
	case "crosshair":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.CROSSHAIR);
		break;
	case "custom":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.CUSTOM);
		break;
	case "hand":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.MOVE);
		break;
	case "ibeam":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.TEXT);
		break;
	case "resize_nesw":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.RESIZE_NESW);
		break;
	case "resize_ns":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.RESIZE_NS);
		break;
	case "resize_nwse":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.RESIZE_NWSE);
		break;
	case "resize_we":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.RESIZE_WE);
		break;
	case "wait":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.WAIT);
		break;
	case "waitarrow":
		lime_ui_Mouse.set_cursor(lime_ui_MouseCursor.WAIT_ARROW);
		break;
	default:
	}
	return openfl_ui_Mouse.__cursor = value;
};
var openfl_ui__$MouseCursor_MouseCursor_$Impl_$ = {};
$hxClasses["openfl.ui._MouseCursor.MouseCursor_Impl_"] = openfl_ui__$MouseCursor_MouseCursor_$Impl_$;
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__name__ = ["openfl","ui","_MouseCursor","MouseCursor_Impl_"];
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.fromLimeCursor = function(cursor) {
	switch(cursor[1]) {
	case 0:
		return "arrow";
	case 1:
		return "crosshair";
	case 2:
		return "auto";
	case 3:
		return "hand";
	case 4:
		return "button";
	case 5:
		return "resize_nesw";
	case 6:
		return "resize_ns";
	case 7:
		return "resize_nwse";
	case 8:
		return "resize_we";
	case 9:
		return "ibeam";
	case 10:
		return "wait";
	case 11:
		return "waitarrow";
	case 12:
		return "custom";
	}
};
var openfl_utils_IAssetCache = function() { };
$hxClasses["openfl.utils.IAssetCache"] = openfl_utils_IAssetCache;
openfl_utils_IAssetCache.__name__ = ["openfl","utils","IAssetCache"];
openfl_utils_IAssetCache.prototype = {
	get_enabled: null
	,set_enabled: null
	,clear: null
	,getBitmapData: null
	,getFont: null
	,getSound: null
	,hasBitmapData: null
	,hasFont: null
	,hasSound: null
	,removeBitmapData: null
	,removeFont: null
	,removeSound: null
	,setBitmapData: null
	,setFont: null
	,setSound: null
	,__class__: openfl_utils_IAssetCache
	,__properties__: {set_enabled:"set_enabled",get_enabled:"get_enabled"}
};
var openfl_utils_AssetCache = function() {
	this.__enabled = true;
	this.bitmapData = new haxe_ds_StringMap();
	this.font = new haxe_ds_StringMap();
	this.sound = new haxe_ds_StringMap();
};
$hxClasses["openfl.utils.AssetCache"] = openfl_utils_AssetCache;
openfl_utils_AssetCache.__name__ = ["openfl","utils","AssetCache"];
openfl_utils_AssetCache.__interfaces__ = [openfl_utils_IAssetCache];
openfl_utils_AssetCache.prototype = {
	bitmapData: null
	,font: null
	,sound: null
	,__enabled: null
	,clear: function(prefix) {
		if(prefix == null) {
			this.bitmapData = new haxe_ds_StringMap();
			this.font = new haxe_ds_StringMap();
			this.sound = new haxe_ds_StringMap();
		} else {
			var keys = this.bitmapData.keys();
			var key = keys;
			while(key.hasNext()) {
				var key1 = key.next();
				if(StringTools.startsWith(key1,prefix)) {
					this.removeBitmapData(key1);
				}
			}
			var keys1 = this.font.keys();
			var key2 = keys1;
			while(key2.hasNext()) {
				var key3 = key2.next();
				if(StringTools.startsWith(key3,prefix)) {
					this.removeFont(key3);
				}
			}
			var keys2 = this.sound.keys();
			var key4 = keys2;
			while(key4.hasNext()) {
				var key5 = key4.next();
				if(StringTools.startsWith(key5,prefix)) {
					this.removeSound(key5);
				}
			}
		}
	}
	,getBitmapData: function(id) {
		var _this = this.bitmapData;
		if(__map_reserved[id] != null) {
			return _this.getReserved(id);
		} else {
			return _this.h[id];
		}
	}
	,getFont: function(id) {
		var _this = this.font;
		if(__map_reserved[id] != null) {
			return _this.getReserved(id);
		} else {
			return _this.h[id];
		}
	}
	,getSound: function(id) {
		var _this = this.sound;
		if(__map_reserved[id] != null) {
			return _this.getReserved(id);
		} else {
			return _this.h[id];
		}
	}
	,hasBitmapData: function(id) {
		var _this = this.bitmapData;
		if(__map_reserved[id] != null) {
			return _this.existsReserved(id);
		} else {
			return _this.h.hasOwnProperty(id);
		}
	}
	,hasFont: function(id) {
		var _this = this.font;
		if(__map_reserved[id] != null) {
			return _this.existsReserved(id);
		} else {
			return _this.h.hasOwnProperty(id);
		}
	}
	,hasSound: function(id) {
		var _this = this.sound;
		if(__map_reserved[id] != null) {
			return _this.existsReserved(id);
		} else {
			return _this.h.hasOwnProperty(id);
		}
	}
	,removeBitmapData: function(id) {
		lime_utils_Assets.cache.image.remove(id);
		return this.bitmapData.remove(id);
	}
	,removeFont: function(id) {
		lime_utils_Assets.cache.font.remove(id);
		return this.font.remove(id);
	}
	,removeSound: function(id) {
		lime_utils_Assets.cache.audio.remove(id);
		return this.sound.remove(id);
	}
	,setBitmapData: function(id,bitmapData) {
		var _this = this.bitmapData;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,bitmapData);
		} else {
			_this.h[id] = bitmapData;
		}
	}
	,setFont: function(id,font) {
		var _this = this.font;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,font);
		} else {
			_this.h[id] = font;
		}
	}
	,setSound: function(id,sound) {
		var _this = this.sound;
		if(__map_reserved[id] != null) {
			_this.setReserved(id,sound);
		} else {
			_this.h[id] = sound;
		}
	}
	,get_enabled: function() {
		return this.__enabled;
	}
	,set_enabled: function(value) {
		return this.__enabled = value;
	}
	,__class__: openfl_utils_AssetCache
	,__properties__: {set_enabled:"set_enabled",get_enabled:"get_enabled"}
};
var openfl_utils_Assets = function() { };
$hxClasses["openfl.utils.Assets"] = openfl_utils_Assets;
openfl_utils_Assets.__name__ = ["openfl","utils","Assets"];
openfl_utils_Assets.addEventListener = function(type,listener,useCapture,priority,useWeakReference) {
	if(useWeakReference == null) {
		useWeakReference = false;
	}
	if(priority == null) {
		priority = 0;
	}
	if(useCapture == null) {
		useCapture = false;
	}
	if(!lime_utils_Assets.onChange.has(openfl_utils_Assets.LimeAssets_onChange)) {
		lime_utils_Assets.onChange.add(openfl_utils_Assets.LimeAssets_onChange);
	}
	openfl_utils_Assets.dispatcher.addEventListener(type,listener,useCapture,priority,useWeakReference);
};
openfl_utils_Assets.dispatchEvent = function(event) {
	return openfl_utils_Assets.dispatcher.dispatchEvent(event);
};
openfl_utils_Assets.exists = function(id,type) {
	return lime_utils_Assets.exists(id,type);
};
openfl_utils_Assets.getBitmapData = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return null;
};
openfl_utils_Assets.getBytes = function(id) {
	return openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(lime_utils_Assets.getBytes(id));
};
openfl_utils_Assets.getFont = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return new openfl_text_Font();
};
openfl_utils_Assets.getLibrary = function(name) {
	return lime_utils_Assets.getLibrary(name);
};
openfl_utils_Assets.getMovieClip = function(id) {
	return null;
};
openfl_utils_Assets.getMusic = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return openfl_utils_Assets.getSound(id,useCache);
};
openfl_utils_Assets.getPath = function(id) {
	return lime_utils_Assets.getPath(id);
};
openfl_utils_Assets.getSound = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return null;
};
openfl_utils_Assets.getText = function(id) {
	return lime_utils_Assets.getText(id);
};
openfl_utils_Assets.hasEventListener = function(type) {
	return openfl_utils_Assets.dispatcher.hasEventListener(type);
};
openfl_utils_Assets.hasLibrary = function(name) {
	return lime_utils_Assets.hasLibrary(name);
};
openfl_utils_Assets.isLocal = function(id,type,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	return false;
};
openfl_utils_Assets.isValidBitmapData = function(bitmapData) {
	return true;
};
openfl_utils_Assets.isValidSound = function(sound) {
	return true;
};
openfl_utils_Assets.list = function(type) {
	return lime_utils_Assets.list(type);
};
openfl_utils_Assets.loadBitmapData = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	if(useCache == null) {
		useCache = true;
	}
	var promise = new lime_app_Promise();
	return promise.future;
};
openfl_utils_Assets.loadBytes = function(id) {
	var promise = new lime_app_Promise();
	var future = lime_utils_Assets.loadBytes(id);
	future.onComplete(function(bytes) {
		promise.complete(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(bytes));
	});
	future.onProgress(function(progress,total) {
		promise.progress(progress,total);
	});
	future.onError(function(msg) {
		promise.error(msg);
	});
	return promise.future;
};
openfl_utils_Assets.loadFont = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	if(useCache == null) {
		useCache = true;
	}
	var promise = new lime_app_Promise();
	return promise.future;
};
openfl_utils_Assets.loadLibrary = function(name) {
	var future = lime_utils_Assets.loadLibrary(name);
	return future;
};
openfl_utils_Assets.loadMusic = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	if(useCache == null) {
		useCache = true;
	}
	var promise = new lime_app_Promise();
	lime_utils_Assets.loadAudioBuffer(id,useCache).onComplete(function(buffer) {
		if(buffer != null) {
			var sound = openfl_media_Sound.fromAudioBuffer(buffer);
			if(useCache && openfl_utils_Assets.cache.get_enabled()) {
				openfl_utils_Assets.cache.setSound(id,sound);
			}
			promise.complete(sound);
		} else {
			promise.error("[Assets] Could not load Sound \"" + id + "\"");
		}
	}).onError($bind(promise,promise.error)).onProgress($bind(promise,promise.progress));
	return promise.future;
};
openfl_utils_Assets.loadMovieClip = function(id) {
	var promise = new lime_app_Promise();
	return promise.future;
};
openfl_utils_Assets.loadSound = function(id,useCache) {
	if(useCache == null) {
		useCache = true;
	}
	if(useCache == null) {
		useCache = true;
	}
	var promise = new lime_app_Promise();
	lime_utils_Assets.loadAudioBuffer(id,useCache).onComplete(function(buffer) {
		if(buffer != null) {
			var sound = openfl_media_Sound.fromAudioBuffer(buffer);
			if(useCache && openfl_utils_Assets.cache.get_enabled()) {
				openfl_utils_Assets.cache.setSound(id,sound);
			}
			promise.complete(sound);
		} else {
			promise.error("[Assets] Could not load Sound \"" + id + "\"");
		}
	}).onError($bind(promise,promise.error)).onProgress($bind(promise,promise.progress));
	return promise.future;
};
openfl_utils_Assets.loadText = function(id) {
	var future = lime_utils_Assets.loadText(id);
	return future;
};
openfl_utils_Assets.registerLibrary = function(name,library) {
	lime_utils_Assets.registerLibrary(name,library);
};
openfl_utils_Assets.removeEventListener = function(type,listener,capture) {
	if(capture == null) {
		capture = false;
	}
	openfl_utils_Assets.dispatcher.removeEventListener(type,listener,capture);
};
openfl_utils_Assets.resolveClass = function(name) {
	return Type.resolveClass(name);
};
openfl_utils_Assets.resolveEnum = function(name) {
	var value = Type.resolveEnum(name);
	return value;
};
openfl_utils_Assets.unloadLibrary = function(name) {
	lime_utils_Assets.unloadLibrary(name);
};
openfl_utils_Assets.LimeAssets_onChange = function() {
	openfl_utils_Assets.dispatchEvent(new openfl_events_Event("change"));
};
var openfl_utils__$ByteArray_ByteArray_$Impl_$ = {};
$hxClasses["openfl.utils._ByteArray.ByteArray_Impl_"] = openfl_utils__$ByteArray_ByteArray_$Impl_$;
openfl_utils__$ByteArray_ByteArray_$Impl_$.__name__ = ["openfl","utils","_ByteArray","ByteArray_Impl_"];
openfl_utils__$ByteArray_ByteArray_$Impl_$.__properties__ = {set_length:"set_length",get_length:"get_length"};
openfl_utils__$ByteArray_ByteArray_$Impl_$._new = function(length) {
	if(length == null) {
		length = 0;
	}
	var this1 = new openfl_utils_ByteArrayData(length);
	return this1;
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.get = function(this1,index) {
	return this1.b[index];
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.set = function(this1,index,value) {
	this1.__resize(index + 1);
	this1.b[index] = value & 255;
	return value;
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.fromArrayBuffer = function(buffer) {
	if(buffer == null) {
		return null;
	}
	return openfl_utils_ByteArrayData.fromBytes(haxe_io_Bytes.ofData(buffer));
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes = function(bytes) {
	if(bytes == null) {
		return null;
	}
	if(js_Boot.__instanceof(bytes,openfl_utils_ByteArrayData)) {
		return bytes;
	} else {
		return openfl_utils_ByteArrayData.fromBytes(bytes);
	}
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytesData = function(bytesData) {
	if(bytesData == null) {
		return null;
	}
	return openfl_utils_ByteArrayData.fromBytes(haxe_io_Bytes.ofData(bytesData));
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.fromFile = function(path) {
	return openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(lime_utils__$Bytes_Bytes_$Impl_$.fromFile(path));
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.loadFromBytes = function(bytes) {
	return lime_utils__$Bytes_Bytes_$Impl_$.loadFromBytes(bytes).then(function(limeBytes) {
		var byteArray = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(limeBytes);
		return lime_app_Future.withValue(byteArray);
	});
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.loadFromFile = function(path) {
	return lime_utils__$Bytes_Bytes_$Impl_$.loadFromFile(path).then(function(limeBytes) {
		var byteArray = openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(limeBytes);
		return lime_app_Future.withValue(byteArray);
	});
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.fromLimeBytes = function(bytes) {
	return openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(bytes);
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.toArrayBuffer = function(byteArray) {
	return byteArray.b.bufferValue;
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytePointer = function(byteArray) {
	lime_utils__$BytePointer_BytePointer_$Impl_$.set(openfl_utils__$ByteArray_ByteArray_$Impl_$.__bytePointer,byteArray,null,null,byteArray.position);
	return openfl_utils__$ByteArray_ByteArray_$Impl_$.__bytePointer;
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes = function(byteArray) {
	return byteArray;
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytesData = function(byteArray) {
	return byteArray.b.bufferValue;
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.toLimeBytes = function(byteArray) {
	return openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.fromBytes(openfl_utils__$ByteArray_ByteArray_$Impl_$.toBytes(byteArray)));
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.get_length = function(this1) {
	if(this1 == null) {
		return 0;
	} else {
		return this1.length;
	}
};
openfl_utils__$ByteArray_ByteArray_$Impl_$.set_length = function(this1,value) {
	if(value > 0) {
		this1.__resize(value);
		if(value < this1.position) {
			this1.position = value;
		}
	}
	this1.length = value;
	return value;
};
var openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$ = {};
$hxClasses["openfl.utils._CompressionAlgorithm.CompressionAlgorithm_Impl_"] = openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$;
openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.__name__ = ["openfl","utils","_CompressionAlgorithm","CompressionAlgorithm_Impl_"];
openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.fromString = function(value) {
	switch(value) {
	case "deflate":
		return 0;
	case "lzma":
		return 1;
	case "zlib":
		return 2;
	default:
		return null;
	}
};
openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "deflate";
	case 1:
		return "lzma";
	case 2:
		return "zlib";
	default:
		return null;
	}
};
var openfl_utils__$Endian_Endian_$Impl_$ = {};
$hxClasses["openfl.utils._Endian.Endian_Impl_"] = openfl_utils__$Endian_Endian_$Impl_$;
openfl_utils__$Endian_Endian_$Impl_$.__name__ = ["openfl","utils","_Endian","Endian_Impl_"];
openfl_utils__$Endian_Endian_$Impl_$.fromLimeEndian = function(value) {
	switch(value[1]) {
	case 0:
		return 1;
	case 1:
		return 0;
	}
};
openfl_utils__$Endian_Endian_$Impl_$.fromString = function(value) {
	switch(value) {
	case "bigEndian":
		return 0;
	case "littleEndian":
		return 1;
	default:
		return null;
	}
};
openfl_utils__$Endian_Endian_$Impl_$.toLimeEndian = function(value) {
	switch(value) {
	case 0:
		return lime_system_Endian.BIG_ENDIAN;
	case 1:
		return lime_system_Endian.LITTLE_ENDIAN;
	default:
		return null;
	}
};
openfl_utils__$Endian_Endian_$Impl_$.toString = function(value) {
	switch(value) {
	case 0:
		return "bigEndian";
	case 1:
		return "littleEndian";
	default:
		return null;
	}
};
var openfl_utils__$Object_Object_$Impl_$ = {};
$hxClasses["openfl.utils._Object.Object_Impl_"] = openfl_utils__$Object_Object_$Impl_$;
openfl_utils__$Object_Object_$Impl_$.__name__ = ["openfl","utils","_Object","Object_Impl_"];
openfl_utils__$Object_Object_$Impl_$._new = function() {
	var this1 = { };
	return this1;
};
openfl_utils__$Object_Object_$Impl_$.hasOwnProperty = function(this1,name) {
	if(this1 != null) {
		return Object.prototype.hasOwnProperty.call(this1,name);
	} else {
		return false;
	}
};
openfl_utils__$Object_Object_$Impl_$.isPrototypeOf = function(this1,theClass) {
	var o = this1;
	var c = o == null ? null : js_Boot.getClass(o);
	while(c != null) {
		if(c == theClass) {
			return true;
		}
		c = Type.getSuperClass(c);
	}
	return false;
};
openfl_utils__$Object_Object_$Impl_$.iterator = function(this1) {
	var fields = Reflect.fields(this1);
	if(fields == null) {
		fields = [];
	}
	return HxOverrides.iter(fields);
};
openfl_utils__$Object_Object_$Impl_$.propertyIsEnumerable = function(this1,name) {
	if(this1 != null && Object.prototype.hasOwnProperty.call(this1,name)) {
		return js_Boot.__instanceof(Reflect.field(this1,name),haxe_lang_Iterable);
	} else {
		return false;
	}
};
openfl_utils__$Object_Object_$Impl_$.toLocaleString = function(this1) {
	return Std.string(this1);
};
openfl_utils__$Object_Object_$Impl_$.toString = function(this1) {
	return Std.string(this1);
};
openfl_utils__$Object_Object_$Impl_$.valueOf = function(this1) {
	return this1;
};
openfl_utils__$Object_Object_$Impl_$.__get = function(this1,key) {
	return Reflect.field(this1,key);
};
openfl_utils__$Object_Object_$Impl_$.__set = function(this1,key,value) {
	this1[key] = value;
	return value;
};
var haxe_lang_Iterator = function() { };
$hxClasses["haxe.lang.Iterator"] = haxe_lang_Iterator;
haxe_lang_Iterator.__name__ = ["haxe","lang","Iterator"];
haxe_lang_Iterator.prototype = {
	hasNext: null
	,next: null
	,__class__: haxe_lang_Iterator
};
var haxe_lang_Iterable = function() { };
$hxClasses["haxe.lang.Iterable"] = haxe_lang_Iterable;
haxe_lang_Iterable.__name__ = ["haxe","lang","Iterable"];
haxe_lang_Iterable.prototype = {
	iterator: null
	,__class__: haxe_lang_Iterable
};
var openfl_utils_Timer = function(delay,repeatCount) {
	if(repeatCount == null) {
		repeatCount = 0;
	}
	if(isNaN(delay) || delay < 0) {
		throw new js__$Boot_HaxeError(new openfl_errors_Error("The delay specified is negative or not a finite number"));
	}
	openfl_events_EventDispatcher.call(this);
	this.__delay = delay;
	this.__repeatCount = repeatCount;
	this.running = false;
	this.currentCount = 0;
};
$hxClasses["openfl.utils.Timer"] = openfl_utils_Timer;
openfl_utils_Timer.__name__ = ["openfl","utils","Timer"];
openfl_utils_Timer.__super__ = openfl_events_EventDispatcher;
openfl_utils_Timer.prototype = $extend(openfl_events_EventDispatcher.prototype,{
	currentCount: null
	,running: null
	,__delay: null
	,__repeatCount: null
	,__timer: null
	,__timerID: null
	,reset: function() {
		if(this.running) {
			this.stop();
		}
		this.currentCount = 0;
	}
	,start: function() {
		if(!this.running) {
			this.running = true;
			this.__timer = new haxe_Timer(this.__delay | 0);
			this.__timer.run = $bind(this,this.timer_onTimer);
		}
	}
	,stop: function() {
		this.running = false;
		if(this.__timer != null) {
			this.__timer.stop();
			this.__timer = null;
		}
	}
	,get_delay: function() {
		return this.__delay;
	}
	,set_delay: function(value) {
		this.__delay = value;
		if(this.running) {
			this.stop();
			this.start();
		}
		return this.__delay;
	}
	,get_repeatCount: function() {
		return this.__repeatCount;
	}
	,set_repeatCount: function(v) {
		if(this.running && v != 0 && v <= this.currentCount) {
			this.stop();
		}
		return this.__repeatCount = v;
	}
	,timer_onTimer: function() {
		this.currentCount++;
		if(this.__repeatCount > 0 && this.currentCount >= this.__repeatCount) {
			this.stop();
			this.dispatchEvent(new openfl_events_TimerEvent("timer"));
			this.dispatchEvent(new openfl_events_TimerEvent("timerComplete"));
		} else {
			this.dispatchEvent(new openfl_events_TimerEvent("timer"));
		}
	}
	,__class__: openfl_utils_Timer
	,__properties__: {set_repeatCount:"set_repeatCount",get_repeatCount:"get_repeatCount",set_delay:"set_delay",get_delay:"get_delay"}
});
var sys_FileSystem = function() { };
$hxClasses["sys.FileSystem"] = sys_FileSystem;
sys_FileSystem.__name__ = ["sys","FileSystem"];
sys_FileSystem.exists = function(path) {
	try {
		js_node_Fs.accessSync(path);
		return true;
	} catch( _ ) {
		haxe_CallStack.lastException = _;
		return false;
	}
};
sys_FileSystem.isDirectory = function(path) {
	try {
		return js_node_Fs.statSync(path).isDirectory();
	} catch( e ) {
		haxe_CallStack.lastException = e;
		return false;
	}
};
sys_FileSystem.createDirectory = function(path) {
	try {
		js_node_Fs.mkdirSync(path);
	} catch( e ) {
		haxe_CallStack.lastException = e;
		if (e instanceof js__$Boot_HaxeError) e = e.val;
		if(e.code == "ENOENT") {
			sys_FileSystem.createDirectory(js_node_Path.dirname(path));
			js_node_Fs.mkdirSync(path);
		} else {
			var stat;
			try {
				stat = js_node_Fs.statSync(path);
			} catch( _ ) {
				haxe_CallStack.lastException = _;
				throw e;
			}
			if(!stat.isDirectory()) {
				throw e;
			}
		}
	}
};
var sys_io_File = function() { };
$hxClasses["sys.io.File"] = sys_io_File;
sys_io_File.__name__ = ["sys","io","File"];
sys_io_File.copy = function(srcPath,dstPath) {
	var src = js_node_Fs.openSync(srcPath,"r");
	var stat = js_node_Fs.fstatSync(src);
	var dst = js_node_Fs.openSync(dstPath,"w",stat.mode);
	var bytesRead;
	var pos = 0;
	while(true) {
		bytesRead = js_node_Fs.readSync(src,sys_io_File.copyBuf,0,65536,pos);
		if(!(bytesRead > 0)) {
			break;
		}
		js_node_Fs.writeSync(dst,sys_io_File.copyBuf,0,bytesRead);
		pos += bytesRead;
	}
	js_node_Fs.closeSync(src);
	js_node_Fs.closeSync(dst);
};
var sys_io_FileInput = function(fd) {
	this.fd = fd;
	this.pos = 0;
};
$hxClasses["sys.io.FileInput"] = sys_io_FileInput;
sys_io_FileInput.__name__ = ["sys","io","FileInput"];
sys_io_FileInput.__super__ = haxe_io_Input;
sys_io_FileInput.prototype = $extend(haxe_io_Input.prototype,{
	fd: null
	,pos: null
	,readByte: function() {
		var buf = new js_node_buffer_Buffer(1);
		var bytesRead;
		try {
			bytesRead = js_node_Fs.readSync(this.fd,buf,0,1,this.pos);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if(e.code == "EOF") {
				throw new js__$Boot_HaxeError(new haxe_io_Eof());
			} else {
				throw new js__$Boot_HaxeError(haxe_io_Error.Custom(e));
			}
		}
		if(bytesRead == 0) {
			throw new js__$Boot_HaxeError(new haxe_io_Eof());
		}
		this.pos++;
		return buf[0];
	}
	,readBytes: function(s,pos,len) {
		var data = s.b;
		var buf = new js_node_buffer_Buffer(data.buffer,data.byteOffset,s.length);
		var bytesRead;
		try {
			bytesRead = js_node_Fs.readSync(this.fd,buf,pos,len,this.pos);
		} catch( e ) {
			haxe_CallStack.lastException = e;
			if (e instanceof js__$Boot_HaxeError) e = e.val;
			if(e.code == "EOF") {
				throw new js__$Boot_HaxeError(new haxe_io_Eof());
			} else {
				throw new js__$Boot_HaxeError(haxe_io_Error.Custom(e));
			}
		}
		if(bytesRead == 0) {
			throw new js__$Boot_HaxeError(new haxe_io_Eof());
		}
		this.pos += bytesRead;
		return bytesRead;
	}
	,close: function() {
		js_node_Fs.closeSync(this.fd);
	}
	,seek: function(p,pos) {
		switch(pos[1]) {
		case 0:
			this.pos = p;
			break;
		case 1:
			this.pos += p;
			break;
		case 2:
			this.pos = js_node_Fs.fstatSync(this.fd).size + p;
			break;
		}
	}
	,tell: function() {
		return this.pos;
	}
	,eof: function() {
		return this.pos >= js_node_Fs.fstatSync(this.fd).size;
	}
	,__class__: sys_io_FileInput
});
var sys_io_FileSeek = $hxClasses["sys.io.FileSeek"] = { __ename__ : ["sys","io","FileSeek"], __constructs__ : ["SeekBegin","SeekCur","SeekEnd"] };
sys_io_FileSeek.SeekBegin = ["SeekBegin",0];
sys_io_FileSeek.SeekBegin.toString = $estr;
sys_io_FileSeek.SeekBegin.__enum__ = sys_io_FileSeek;
sys_io_FileSeek.SeekCur = ["SeekCur",1];
sys_io_FileSeek.SeekCur.toString = $estr;
sys_io_FileSeek.SeekCur.__enum__ = sys_io_FileSeek;
sys_io_FileSeek.SeekEnd = ["SeekEnd",2];
sys_io_FileSeek.SeekEnd.toString = $estr;
sys_io_FileSeek.SeekEnd.__enum__ = sys_io_FileSeek;
function $iterator(o) { if( o instanceof Array ) return function() { return HxOverrides.iter(o); }; return typeof(o.iterator) == 'function' ? $bind(o,o.iterator) : o.iterator; }
var $_, $fid = 0;
function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $fid++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = function(){ return f.method.apply(f.scope, arguments); }; f.scope = o; f.method = m; o.hx__closures__[m.__id__] = f; } return f; }
$hxClasses["Math"] = Math;
String.prototype.__class__ = $hxClasses["String"] = String;
String.__name__ = ["String"];
$hxClasses["Array"] = Array;
Array.__name__ = ["Array"];
Date.prototype.__class__ = $hxClasses["Date"] = Date;
Date.__name__ = ["Date"];
var Int = $hxClasses["Int"] = { __name__ : ["Int"]};
var Dynamic = $hxClasses["Dynamic"] = { __name__ : ["Dynamic"]};
var Float = $hxClasses["Float"] = Number;
Float.__name__ = ["Float"];
var Bool = $hxClasses["Bool"] = Boolean;
Bool.__ename__ = ["Bool"];
var Class = $hxClasses["Class"] = { __name__ : ["Class"]};
var Enum = { };
haxe_Resource.content = [];
var __map_reserved = {};
var init = lime__$backend_native_NativeApplication;
var p = lime_app_Application.prototype;
Object.defineProperties(p,{ "frameRate" : { get : p.get_frameRate, set : p.set_frameRate}, "preloader" : { get : p.get_preloader}, "renderer" : { get : p.get_renderer}, "renderers" : { get : p.get_renderers}, "window" : { get : p.get_window}, "windows" : { get : p.get_windows}});
var p = lime_app_Promise.prototype;
Object.defineProperties(p,{ "isComplete" : { get : p.get_isComplete}, "isError" : { get : p.get_isError}});
var p = lime_graphics_Image.prototype;
Object.defineProperties(p,{ "data" : { get : p.get_data, set : p.set_data}, "format" : { get : p.get_format, set : p.set_format}, "powerOfTwo" : { get : p.get_powerOfTwo, set : p.set_powerOfTwo}, "premultiplied" : { get : p.get_premultiplied, set : p.set_premultiplied}, "rect" : { get : p.get_rect}, "src" : { get : p.get_src, set : p.set_src}, "transparent" : { get : p.get_transparent, set : p.set_transparent}});
var p = lime_graphics_ImageBuffer.prototype;
Object.defineProperties(p,{ "src" : { get : p.get_src, set : p.set_src}, "stride" : { get : p.get_stride}});
Object.defineProperties(lime_graphics_opengl_GL,{ "type" : { get : function() {
	return lime_graphics_opengl_GL.get_type();
}}, "version" : { get : function() {
	return lime_graphics_opengl_GL.get_version();
}}});
var this1 = new Uint32Array(256);
lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16 = this1;
var _g = 0;
while(_g < 256) {
	var i = _g++;
	lime_math_color__$RGBA_RGBA_$Impl_$.__alpha16[i] = Math.ceil(i * 257.003921568627447);
}
var this2 = new Uint8Array(510);
lime_math_color__$RGBA_RGBA_$Impl_$.__clamp = this2;
var _g1 = 0;
while(_g1 < 255) {
	var i1 = _g1++;
	lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[i1] = i1;
}
var _g11 = 255;
var _g2 = 511;
while(_g11 < _g2) {
	var i2 = _g11++;
	lime_math_color__$RGBA_RGBA_$Impl_$.__clamp[i2] = 255;
}
var p = lime_media_AudioBuffer.prototype;
Object.defineProperties(p,{ "src" : { get : p.get_src, set : p.set_src}});
lime_system_CFFI.available = false;
lime_system_CFFI.enabled = false;
var _g = new haxe_ds_StringMap();
var value = lime_project_AssetType.IMAGE;
if(__map_reserved["jpg"] != null) {
	_g.setReserved("jpg",value);
} else {
	_g.h["jpg"] = value;
}
var value1 = lime_project_AssetType.IMAGE;
if(__map_reserved["jpeg"] != null) {
	_g.setReserved("jpeg",value1);
} else {
	_g.h["jpeg"] = value1;
}
var value2 = lime_project_AssetType.IMAGE;
if(__map_reserved["png"] != null) {
	_g.setReserved("png",value2);
} else {
	_g.h["png"] = value2;
}
var value3 = lime_project_AssetType.IMAGE;
if(__map_reserved["gif"] != null) {
	_g.setReserved("gif",value3);
} else {
	_g.h["gif"] = value3;
}
var value4 = lime_project_AssetType.IMAGE;
if(__map_reserved["webp"] != null) {
	_g.setReserved("webp",value4);
} else {
	_g.h["webp"] = value4;
}
var value5 = lime_project_AssetType.IMAGE;
if(__map_reserved["bmp"] != null) {
	_g.setReserved("bmp",value5);
} else {
	_g.h["bmp"] = value5;
}
var value6 = lime_project_AssetType.IMAGE;
if(__map_reserved["tiff"] != null) {
	_g.setReserved("tiff",value6);
} else {
	_g.h["tiff"] = value6;
}
var value7 = lime_project_AssetType.IMAGE;
if(__map_reserved["jfif"] != null) {
	_g.setReserved("jfif",value7);
} else {
	_g.h["jfif"] = value7;
}
var value8 = lime_project_AssetType.FONT;
if(__map_reserved["otf"] != null) {
	_g.setReserved("otf",value8);
} else {
	_g.h["otf"] = value8;
}
var value9 = lime_project_AssetType.FONT;
if(__map_reserved["ttf"] != null) {
	_g.setReserved("ttf",value9);
} else {
	_g.h["ttf"] = value9;
}
var value10 = lime_project_AssetType.SOUND;
if(__map_reserved["wav"] != null) {
	_g.setReserved("wav",value10);
} else {
	_g.h["wav"] = value10;
}
var value11 = lime_project_AssetType.SOUND;
if(__map_reserved["wave"] != null) {
	_g.setReserved("wave",value11);
} else {
	_g.h["wave"] = value11;
}
var value12 = lime_project_AssetType.MUSIC;
if(__map_reserved["mp3"] != null) {
	_g.setReserved("mp3",value12);
} else {
	_g.h["mp3"] = value12;
}
var value13 = lime_project_AssetType.MUSIC;
if(__map_reserved["mp2"] != null) {
	_g.setReserved("mp2",value13);
} else {
	_g.h["mp2"] = value13;
}
var value14 = lime_project_AssetType.BINARY;
if(__map_reserved["exe"] != null) {
	_g.setReserved("exe",value14);
} else {
	_g.h["exe"] = value14;
}
var value15 = lime_project_AssetType.BINARY;
if(__map_reserved["bin"] != null) {
	_g.setReserved("bin",value15);
} else {
	_g.h["bin"] = value15;
}
var value16 = lime_project_AssetType.BINARY;
if(__map_reserved["so"] != null) {
	_g.setReserved("so",value16);
} else {
	_g.h["so"] = value16;
}
var value17 = lime_project_AssetType.BINARY;
if(__map_reserved["pch"] != null) {
	_g.setReserved("pch",value17);
} else {
	_g.h["pch"] = value17;
}
var value18 = lime_project_AssetType.BINARY;
if(__map_reserved["dll"] != null) {
	_g.setReserved("dll",value18);
} else {
	_g.h["dll"] = value18;
}
var value19 = lime_project_AssetType.BINARY;
if(__map_reserved["zip"] != null) {
	_g.setReserved("zip",value19);
} else {
	_g.h["zip"] = value19;
}
var value20 = lime_project_AssetType.BINARY;
if(__map_reserved["tar"] != null) {
	_g.setReserved("tar",value20);
} else {
	_g.h["tar"] = value20;
}
var value21 = lime_project_AssetType.BINARY;
if(__map_reserved["gz"] != null) {
	_g.setReserved("gz",value21);
} else {
	_g.h["gz"] = value21;
}
var value22 = lime_project_AssetType.BINARY;
if(__map_reserved["fla"] != null) {
	_g.setReserved("fla",value22);
} else {
	_g.h["fla"] = value22;
}
var value23 = lime_project_AssetType.BINARY;
if(__map_reserved["swf"] != null) {
	_g.setReserved("swf",value23);
} else {
	_g.h["swf"] = value23;
}
var value24 = lime_project_AssetType.BINARY;
if(__map_reserved["atf"] != null) {
	_g.setReserved("atf",value24);
} else {
	_g.h["atf"] = value24;
}
var value25 = lime_project_AssetType.BINARY;
if(__map_reserved["psd"] != null) {
	_g.setReserved("psd",value25);
} else {
	_g.h["psd"] = value25;
}
var value26 = lime_project_AssetType.BINARY;
if(__map_reserved["awd"] != null) {
	_g.setReserved("awd",value26);
} else {
	_g.h["awd"] = value26;
}
var value27 = lime_project_AssetType.TEXT;
if(__map_reserved["txt"] != null) {
	_g.setReserved("txt",value27);
} else {
	_g.h["txt"] = value27;
}
var value28 = lime_project_AssetType.TEXT;
if(__map_reserved["text"] != null) {
	_g.setReserved("text",value28);
} else {
	_g.h["text"] = value28;
}
var value29 = lime_project_AssetType.TEXT;
if(__map_reserved["xml"] != null) {
	_g.setReserved("xml",value29);
} else {
	_g.h["xml"] = value29;
}
var value30 = lime_project_AssetType.TEXT;
if(__map_reserved["java"] != null) {
	_g.setReserved("java",value30);
} else {
	_g.h["java"] = value30;
}
var value31 = lime_project_AssetType.TEXT;
if(__map_reserved["hx"] != null) {
	_g.setReserved("hx",value31);
} else {
	_g.h["hx"] = value31;
}
var value32 = lime_project_AssetType.TEXT;
if(__map_reserved["cpp"] != null) {
	_g.setReserved("cpp",value32);
} else {
	_g.h["cpp"] = value32;
}
var value33 = lime_project_AssetType.TEXT;
if(__map_reserved["c"] != null) {
	_g.setReserved("c",value33);
} else {
	_g.h["c"] = value33;
}
var value34 = lime_project_AssetType.TEXT;
if(__map_reserved["h"] != null) {
	_g.setReserved("h",value34);
} else {
	_g.h["h"] = value34;
}
var value35 = lime_project_AssetType.TEXT;
if(__map_reserved["cs"] != null) {
	_g.setReserved("cs",value35);
} else {
	_g.h["cs"] = value35;
}
var value36 = lime_project_AssetType.TEXT;
if(__map_reserved["js"] != null) {
	_g.setReserved("js",value36);
} else {
	_g.h["js"] = value36;
}
var value37 = lime_project_AssetType.TEXT;
if(__map_reserved["mm"] != null) {
	_g.setReserved("mm",value37);
} else {
	_g.h["mm"] = value37;
}
var value38 = lime_project_AssetType.TEXT;
if(__map_reserved["hxml"] != null) {
	_g.setReserved("hxml",value38);
} else {
	_g.h["hxml"] = value38;
}
var value39 = lime_project_AssetType.TEXT;
if(__map_reserved["html"] != null) {
	_g.setReserved("html",value39);
} else {
	_g.h["html"] = value39;
}
var value40 = lime_project_AssetType.TEXT;
if(__map_reserved["json"] != null) {
	_g.setReserved("json",value40);
} else {
	_g.h["json"] = value40;
}
var value41 = lime_project_AssetType.TEXT;
if(__map_reserved["css"] != null) {
	_g.setReserved("css",value41);
} else {
	_g.h["css"] = value41;
}
var value42 = lime_project_AssetType.TEXT;
if(__map_reserved["gpe"] != null) {
	_g.setReserved("gpe",value42);
} else {
	_g.h["gpe"] = value42;
}
var value43 = lime_project_AssetType.TEXT;
if(__map_reserved["pbxproj"] != null) {
	_g.setReserved("pbxproj",value43);
} else {
	_g.h["pbxproj"] = value43;
}
var value44 = lime_project_AssetType.TEXT;
if(__map_reserved["plist"] != null) {
	_g.setReserved("plist",value44);
} else {
	_g.h["plist"] = value44;
}
var value45 = lime_project_AssetType.TEXT;
if(__map_reserved["properties"] != null) {
	_g.setReserved("properties",value45);
} else {
	_g.h["properties"] = value45;
}
var value46 = lime_project_AssetType.TEXT;
if(__map_reserved["ini"] != null) {
	_g.setReserved("ini",value46);
} else {
	_g.h["ini"] = value46;
}
var value47 = lime_project_AssetType.TEXT;
if(__map_reserved["hxproj"] != null) {
	_g.setReserved("hxproj",value47);
} else {
	_g.h["hxproj"] = value47;
}
var value48 = lime_project_AssetType.TEXT;
if(__map_reserved["nmml"] != null) {
	_g.setReserved("nmml",value48);
} else {
	_g.h["nmml"] = value48;
}
var value49 = lime_project_AssetType.TEXT;
if(__map_reserved["lime"] != null) {
	_g.setReserved("lime",value49);
} else {
	_g.h["lime"] = value49;
}
var value50 = lime_project_AssetType.TEXT;
if(__map_reserved["svg"] != null) {
	_g.setReserved("svg",value50);
} else {
	_g.h["svg"] = value50;
}
lime_tools_helpers_FileHelper.knownExtensions = _g;
var p = lime_ui_Window.prototype;
Object.defineProperties(p,{ "borderless" : { get : p.get_borderless, set : p.set_borderless}, "display" : { get : p.get_display}, "displayMode" : { get : p.get_displayMode, set : p.set_displayMode}, "enableTextEvents" : { get : p.get_enableTextEvents, set : p.set_enableTextEvents}, "fullscreen" : { get : p.get_fullscreen, set : p.set_fullscreen}, "height" : { get : p.get_height, set : p.set_height}, "maximized" : { get : p.get_maximized, set : p.set_maximized}, "resizable" : { get : p.get_resizable, set : p.set_resizable}, "scale" : { get : p.get_scale}, "title" : { get : p.get_title, set : p.set_title}, "width" : { get : p.get_width, set : p.set_width}, "x" : { get : p.get_x, set : p.set_y}, "y" : { get : p.get_x, set : p.set_y}});
lime_utils_Log.level = 3;
if(typeof console == "undefined") {
	console = {}
}
if(console.log == null) {
	console.log = function() {
	};
}
Tools.SWFLITE_DATA_SUFFIX = ".bin";
Xml.Element = 0;
Xml.PCData = 1;
Xml.CData = 2;
Xml.Comment = 3;
Xml.DocType = 4;
Xml.ProcessingInstruction = 5;
Xml.Document = 6;
format_SWF.instances = new haxe_ds_StringMap();
format_swf__$SWFData_SWFData_$Impl_$.FLOAT16_EXPONENT_BASE = 15;
format_swf__$SWFData_SWFData_$Impl_$.MIN_FLOAT_VALUE = Number.MIN_VALUE;
format_swf__$SWFData_SWFData_$Impl_$.MAX_FLOAT_VALUE = Number.MAX_VALUE;
format_swf_SWFTimelineContainer.TIMEOUT = 50;
format_swf_SWFTimelineContainer.AUTOBUILD_LAYERS = false;
format_swf_SWFTimelineContainer.EXTRACT_SOUND_STREAM = true;
format_swf_SWFRoot.FILE_LENGTH_POS = 4;
format_swf_SWFRoot.COMPRESSION_START_POS = 8;
format_swf_data_SWFShapeRecord.TYPE_UNKNOWN = 0;
format_swf_data_SWFShapeRecord.TYPE_END = 1;
format_swf_data_SWFShapeRecord.TYPE_STYLECHANGE = 2;
format_swf_data_SWFShapeRecord.TYPE_STRAIGHTEDGE = 3;
format_swf_data_SWFShapeRecord.TYPE_CURVEDEDGE = 4;
format_swf_data_actions_swf3_ActionStop.CODE = 7;
format_swf_data_consts_BitmapFormat.BIT_8 = 3;
format_swf_data_consts_BitmapFormat.BIT_15 = 4;
format_swf_data_consts_BitmapFormat.BIT_24 = 5;
format_swf_data_consts_BitmapType.JPEG = 1;
format_swf_data_consts_BitmapType.GIF89A = 2;
format_swf_data_consts_BitmapType.PNG = 3;
format_swf_data_consts_BlendMode.NORMAL_0 = 0;
format_swf_data_consts_BlendMode.NORMAL_1 = 1;
format_swf_data_consts_BlendMode.LAYER = 2;
format_swf_data_consts_BlendMode.MULTIPLY = 3;
format_swf_data_consts_BlendMode.SCREEN = 4;
format_swf_data_consts_BlendMode.LIGHTEN = 5;
format_swf_data_consts_BlendMode.DARKEN = 6;
format_swf_data_consts_BlendMode.DIFFERENCE = 7;
format_swf_data_consts_BlendMode.ADD = 8;
format_swf_data_consts_BlendMode.SUBTRACT = 9;
format_swf_data_consts_BlendMode.INVERT = 10;
format_swf_data_consts_BlendMode.ALPHA = 11;
format_swf_data_consts_BlendMode.ERASE = 12;
format_swf_data_consts_BlendMode.OVERLAY = 13;
format_swf_data_consts_BlendMode.HARDLIGHT = 14;
format_swf_data_consts_CSMTableHint.THIN = 0;
format_swf_data_consts_CSMTableHint.MEDIUM = 1;
format_swf_data_consts_CSMTableHint.THICK = 2;
format_swf_data_consts_GradientInterpolationMode.NORMAL = 0;
format_swf_data_consts_GradientInterpolationMode.LINEAR = 1;
format_swf_data_consts_GradientSpreadMode.PAD = 0;
format_swf_data_consts_GradientSpreadMode.REFLECT = 1;
format_swf_data_consts_GradientSpreadMode.REPEAT = 2;
format_swf_data_consts_LineCapsStyle.ROUND = 0;
format_swf_data_consts_LineCapsStyle.NO = 1;
format_swf_data_consts_LineCapsStyle.SQUARE = 2;
format_swf_data_consts_LineJointStyle.ROUND = 0;
format_swf_data_consts_LineJointStyle.BEVEL = 1;
format_swf_data_consts_LineJointStyle.MITER = 2;
format_swf_data_consts_SoundCompression.UNCOMPRESSED_NATIVE_ENDIAN = 0;
format_swf_data_consts_SoundCompression.ADPCM = 1;
format_swf_data_consts_SoundCompression.MP3 = 2;
format_swf_data_consts_SoundCompression.UNCOMPRESSED_LITTLE_ENDIAN = 3;
format_swf_data_consts_SoundCompression.NELLYMOSER_16_KHZ = 4;
format_swf_data_consts_SoundCompression.NELLYMOSER_8_KHZ = 5;
format_swf_data_consts_SoundCompression.NELLYMOSER = 6;
format_swf_data_consts_SoundCompression.SPEEX = 11;
format_swf_data_consts_SoundRate.KHZ_5 = 0;
format_swf_data_consts_SoundRate.KHZ_11 = 1;
format_swf_data_consts_SoundRate.KHZ_22 = 2;
format_swf_data_consts_SoundRate.KHZ_44 = 3;
format_swf_data_consts_SoundSize.BIT_8 = 0;
format_swf_data_consts_SoundSize.BIT_16 = 1;
format_swf_data_consts_SoundType.MONO = 0;
format_swf_data_consts_SoundType.STEREO = 1;
format_swf_data_consts_VideoCodecID.H263 = 2;
format_swf_data_consts_VideoCodecID.SCREEN = 3;
format_swf_data_consts_VideoCodecID.VP6 = 4;
format_swf_data_consts_VideoCodecID.VP6ALPHA = 5;
format_swf_data_consts_VideoCodecID.SCREENV2 = 6;
format_swf_data_consts_VideoDeblockingType.VIDEOPACKET = 0;
format_swf_data_consts_VideoDeblockingType.OFF = 1;
format_swf_data_consts_VideoDeblockingType.LEVEL1 = 2;
format_swf_data_consts_VideoDeblockingType.LEVEL2 = 3;
format_swf_data_consts_VideoDeblockingType.LEVEL3 = 4;
format_swf_data_consts_VideoDeblockingType.LEVEL4 = 5;
format_swf_data_etc_MPEGFrame.MPEGversion_1_0 = 0;
format_swf_data_etc_MPEGFrame.MPEGversion_2_0 = 1;
format_swf_data_etc_MPEGFrame.MPEGversion_2_5 = 2;
format_swf_data_etc_MPEGFrame.MPEG_LAYER_I = 0;
format_swf_data_etc_MPEGFrame.MPEG_LAYER_II = 1;
format_swf_data_etc_MPEGFrame.MPEG_LAYER_III = 2;
format_swf_data_etc_MPEGFrame.CHANNEL_MODE_STEREO = 0;
format_swf_data_etc_MPEGFrame.CHANNEL_MODE_JOINT_STEREO = 1;
format_swf_data_etc_MPEGFrame.CHANNEL_MODE_DUAL = 2;
format_swf_data_etc_MPEGFrame.CHANNEL_MODE_MONO = 3;
format_swf_data_etc_MPEGFrame.mpegBitrates = [[[0,32,96,128,160,192,224,256,288,320,352,384,416,448,-1],[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1]],[[0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,-1],[0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1],[0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1]]];
format_swf_data_etc_MPEGFrame.mpegsamplingrates = [[44100,48000,32000],[22050,24000,16000],[11025,12000,8000]];
openfl_events_Event.ACTIVATE = "activate";
openfl_events_Event.ADDED = "added";
openfl_events_Event.ADDED_TO_STAGE = "addedToStage";
openfl_events_Event.CANCEL = "cancel";
openfl_events_Event.CHANGE = "change";
openfl_events_Event.CLEAR = "clear";
openfl_events_Event.CLOSE = "close";
openfl_events_Event.COMPLETE = "complete";
openfl_events_Event.CONNECT = "connect";
openfl_events_Event.CONTEXT3D_CREATE = "context3DCreate";
openfl_events_Event.COPY = "copy";
openfl_events_Event.CUT = "cut";
openfl_events_Event.DEACTIVATE = "deactivate";
openfl_events_Event.ENTER_FRAME = "enterFrame";
openfl_events_Event.EXIT_FRAME = "exitFrame";
openfl_events_Event.FRAME_CONSTRUCTED = "frameConstructed";
openfl_events_Event.FRAME_LABEL = "frameLabel";
openfl_events_Event.FULLSCREEN = "fullScreen";
openfl_events_Event.ID3 = "id3";
openfl_events_Event.INIT = "init";
openfl_events_Event.MOUSE_LEAVE = "mouseLeave";
openfl_events_Event.OPEN = "open";
openfl_events_Event.PASTE = "paste";
openfl_events_Event.REMOVED = "removed";
openfl_events_Event.REMOVED_FROM_STAGE = "removedFromStage";
openfl_events_Event.RENDER = "render";
openfl_events_Event.RESIZE = "resize";
openfl_events_Event.SCROLL = "scroll";
openfl_events_Event.SELECT = "select";
openfl_events_Event.SELECT_ALL = "selectAll";
openfl_events_Event.SOUND_COMPLETE = "soundComplete";
openfl_events_Event.TAB_CHILDREN_CHANGE = "tabChildrenChange";
openfl_events_Event.TAB_ENABLED_CHANGE = "tabEnabledChange";
openfl_events_Event.TAB_INDEX_CHANGE = "tabIndexChange";
openfl_events_Event.TEXTURE_READY = "textureReady";
openfl_events_Event.UNLOAD = "unload";
format_swf_events_SWFErrorEvent.ERROR = "error";
format_swf_events_SWFErrorEvent.REASON_EOF = "eof";
format_swf_events_SWFProgressEvent.PROGRESS = "progress";
format_swf_events_SWFProgressEvent.COMPLETE = "complete";
format_swf_events_SWFWarningEvent.WARN_OVERFLOW = "overflow";
format_swf_events_SWFWarningEvent.WARN_UNDERFLOW = "underflow";
format_swf_exporters_AVM2.FRAME_SCRIPT_METHOD_NAME = new EReg("frame(\\d+)","");
haxe_ds_ObjectMap.count = 0;
openfl_display_DisplayObject.__broadcastEvents = new haxe_ds_StringMap();
openfl_display_DisplayObject.__instanceCount = 0;
openfl_display_DisplayObject.__tempStack = new lime_utils_ObjectPool(function() {
	return openfl__$Vector_Vector_$Impl_$.toObjectVector(null);
},function(stack) {
	stack.data.set_length(0);
});
format_swf_tags_TagCSMTextSettings.TYPE = 74;
format_swf_tags_TagDebugID.TYPE = 63;
format_swf_tags_TagDefineBinaryData.TYPE = 87;
format_swf_tags_TagDefineBits.TYPE = 6;
format_swf_tags_TagDefineBitsJPEG2.TYPE = 21;
format_swf_tags_TagDefineBitsJPEG3.TYPE = 35;
format_swf_tags_TagDefineBitsJPEG4.TYPE = 90;
format_swf_tags_TagDefineBitsLossless.TYPE = 20;
format_swf_tags_TagDefineBitsLossless2.TYPE = 36;
format_swf_tags_TagDefineButton.TYPE = 7;
format_swf_tags_TagDefineButton.STATE_UP = "up";
format_swf_tags_TagDefineButton.STATE_OVER = "over";
format_swf_tags_TagDefineButton.STATE_DOWN = "down";
format_swf_tags_TagDefineButton.STATE_HIT = "hit";
format_swf_tags_TagDefineButton2.TYPE = 34;
format_swf_tags_TagDefineButtonCxform.TYPE = 23;
format_swf_tags_TagDefineButtonSound.TYPE = 17;
format_swf_tags_TagDefineEditText.TYPE = 37;
format_swf_tags_TagDefineFont.TYPE = 10;
format_swf_tags_TagDefineFont.unitDivisor = 1;
format_swf_tags_TagDefineFont2.TYPE = 48;
format_swf_tags_TagDefineFont3.TYPE = 75;
format_swf_tags_TagDefineFont3.unitDivisor = 20;
format_swf_tags_TagDefineFont4.TYPE = 91;
format_swf_tags_TagDefineFontAlignZones.TYPE = 73;
format_swf_tags_TagDefineFontInfo.TYPE = 13;
format_swf_tags_TagDefineFontInfo2.TYPE = 62;
format_swf_tags_TagDefineFontName.TYPE = 88;
format_swf_tags_TagDefineMorphShape.TYPE = 46;
format_swf_tags_TagDefineMorphShape2.TYPE = 84;
format_swf_tags_TagDefineScalingGrid.TYPE = 78;
format_swf_tags_TagDefineSceneAndFrameLabelData.TYPE = 86;
format_swf_tags_TagDefineShape.TYPE = 2;
format_swf_tags_TagDefineShape2.TYPE = 22;
format_swf_tags_TagDefineShape3.TYPE = 32;
format_swf_tags_TagDefineShape4.TYPE = 83;
format_swf_tags_TagDefineSound.TYPE = 14;
format_swf_tags_TagDefineSprite.TYPE = 39;
format_swf_tags_TagDefineText.TYPE = 11;
format_swf_tags_TagDefineText2.TYPE = 33;
format_swf_tags_TagDefineVideoStream.TYPE = 60;
format_swf_tags_TagDoABC.TYPE = 82;
format_swf_tags_TagDoABCDeprecated.TYPE = 72;
format_swf_tags_TagDoAction.TYPE = 12;
format_swf_tags_TagDoInitAction.TYPE = 59;
format_swf_tags_TagEnableDebugger.TYPE = 58;
format_swf_tags_TagEnableDebugger2.TYPE = 64;
format_swf_tags_TagEnableTelemetry.TYPE = 93;
format_swf_tags_TagEnd.TYPE = 0;
format_swf_tags_TagExportAssets.TYPE = 56;
format_swf_tags_TagFileAttributes.TYPE = 69;
format_swf_tags_TagFrameLabel.TYPE = 43;
format_swf_tags_TagImportAssets.TYPE = 57;
format_swf_tags_TagImportAssets2.TYPE = 71;
format_swf_tags_TagJPEGTables.TYPE = 8;
format_swf_tags_TagMetadata.TYPE = 77;
format_swf_tags_TagNameCharacter.TYPE = 40;
format_swf_tags_TagPlaceObject.TYPE = 4;
format_swf_tags_TagPlaceObject2.TYPE = 26;
format_swf_tags_TagPlaceObject3.TYPE = 70;
format_swf_tags_TagPlaceObject4.TYPE = 94;
format_swf_tags_TagProductInfo.TYPE = 41;
format_swf_tags_TagProtect.TYPE = 24;
format_swf_tags_TagRemoveObject.TYPE = 5;
format_swf_tags_TagRemoveObject2.TYPE = 28;
format_swf_tags_TagScriptLimits.TYPE = 65;
format_swf_tags_TagSetBackgroundColor.TYPE = 9;
format_swf_tags_TagSetTabIndex.TYPE = 66;
format_swf_tags_TagShowFrame.TYPE = 1;
format_swf_tags_TagSoundStreamBlock.TYPE = 19;
format_swf_tags_TagSoundStreamHead.TYPE = 18;
format_swf_tags_TagSoundStreamHead2.TYPE = 45;
format_swf_tags_TagStartSound.TYPE = 15;
format_swf_tags_TagStartSound2.TYPE = 89;
format_swf_tags_TagSymbolClass.TYPE = 76;
format_swf_tags_TagVideoFrame.TYPE = 61;
format_swf_tags_etc_TagSWFEncryptActions.TYPE = 253;
format_swf_tags_etc_TagSWFEncryptSignature.TYPE = 255;
format_swf_timeline_LayerStrip.TYPE_EMPTY = 0;
format_swf_timeline_LayerStrip.TYPE_SPACER = 1;
format_swf_timeline_LayerStrip.TYPE_STATIC = 2;
format_swf_timeline_LayerStrip.TYPE_MOTIONTWEEN = 3;
format_swf_timeline_LayerStrip.TYPE_SHAPETWEEN = 4;
format_swf_utils_StringUtils.i = 0;
format_swf_utils_StringUtils.SIGN_UNDEF = 0;
format_swf_utils_StringUtils.SIGN_POS = -1;
format_swf_utils_StringUtils.SIGN_NEG = 1;
haxe_Serializer.USE_CACHE = false;
haxe_Serializer.USE_ENUM_INDEX = false;
haxe_Serializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:";
haxe_Template.splitter = new EReg("(::[A-Za-z0-9_ ()&|!+=/><*.\"-]+::|\\$\\$([A-Za-z0-9_-]+)\\()","");
haxe_Template.expr_splitter = new EReg("(\\(|\\)|[ \r\n\t]*\"[^\"]*\"[ \r\n\t]*|[!+=/><*.&|-]+)","");
haxe_Template.expr_trim = new EReg("^[ ]*([^ ]+)[ ]*$","");
haxe_Template.expr_int = new EReg("^[0-9]+$","");
haxe_Template.expr_float = new EReg("^([+-]?)(?=\\d|,\\d)\\d*(,\\d*)?([Ee]([+-]?\\d+))?$","");
haxe_Template.globals = { };
haxe_Unserializer.DEFAULT_RESOLVER = new haxe__$Unserializer_DefaultResolver();
haxe_Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:";
haxe_crypto_Base64.CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
haxe_crypto_Base64.BYTES = haxe_io_Bytes.ofString(haxe_crypto_Base64.CHARS);
haxe_io_FPHelper.i64tmp = (function($this) {
	var $r;
	var this1 = new haxe__$Int64__$_$_$Int64(0,0);
	$r = this1;
	return $r;
}(this));
haxe_io_FPHelper.LN2 = 0.6931471805599453;
haxe_xml_Parser.escapes = (function($this) {
	var $r;
	var h = new haxe_ds_StringMap();
	if(__map_reserved["lt"] != null) {
		h.setReserved("lt","<");
	} else {
		h.h["lt"] = "<";
	}
	if(__map_reserved["gt"] != null) {
		h.setReserved("gt",">");
	} else {
		h.h["gt"] = ">";
	}
	if(__map_reserved["amp"] != null) {
		h.setReserved("amp","&");
	} else {
		h.h["amp"] = "&";
	}
	if(__map_reserved["quot"] != null) {
		h.setReserved("quot","\"");
	} else {
		h.h["quot"] = "\"";
	}
	if(__map_reserved["apos"] != null) {
		h.setReserved("apos","'");
	} else {
		h.h["apos"] = "'";
	}
	$r = h;
	return $r;
}(this));
haxe_zip_InflateImpl.LEN_EXTRA_BITS_TBL = [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,-1,-1];
haxe_zip_InflateImpl.LEN_BASE_VAL_TBL = [3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258];
haxe_zip_InflateImpl.DIST_EXTRA_BITS_TBL = [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,-1,-1];
haxe_zip_InflateImpl.DIST_BASE_VAL_TBL = [1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];
haxe_zip_InflateImpl.CODE_LENGTHS_POS = [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
js_Boot.__toStr = ({ }).toString;
lime__$backend_native_NativeAudioSource.STREAM_BUFFER_SIZE = 48000;
lime__$backend_native_NativeAudioSource.STREAM_NUM_BUFFERS = 3;
lime__$backend_native_NativeAudioSource.STREAM_TIMER_FREQUENCY = 100;
lime_graphics_Image.__base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
lime_graphics_cairo__$CairoFTFontFace_CairoFTFontFace_$Impl_$.FT_LOAD_FORCE_AUTOHINT = 32;
lime_graphics_opengl_GL.DEPTH_BUFFER_BIT = 256;
lime_graphics_opengl_GL.STENCIL_BUFFER_BIT = 1024;
lime_graphics_opengl_GL.COLOR_BUFFER_BIT = 16384;
lime_graphics_opengl_GL.POINTS = 0;
lime_graphics_opengl_GL.LINES = 1;
lime_graphics_opengl_GL.LINE_LOOP = 2;
lime_graphics_opengl_GL.LINE_STRIP = 3;
lime_graphics_opengl_GL.TRIANGLES = 4;
lime_graphics_opengl_GL.TRIANGLE_STRIP = 5;
lime_graphics_opengl_GL.TRIANGLE_FAN = 6;
lime_graphics_opengl_GL.ZERO = 0;
lime_graphics_opengl_GL.ONE = 1;
lime_graphics_opengl_GL.SRC_COLOR = 768;
lime_graphics_opengl_GL.ONE_MINUS_SRC_COLOR = 769;
lime_graphics_opengl_GL.SRC_ALPHA = 770;
lime_graphics_opengl_GL.ONE_MINUS_SRC_ALPHA = 771;
lime_graphics_opengl_GL.DST_ALPHA = 772;
lime_graphics_opengl_GL.ONE_MINUS_DST_ALPHA = 773;
lime_graphics_opengl_GL.DST_COLOR = 774;
lime_graphics_opengl_GL.ONE_MINUS_DST_COLOR = 775;
lime_graphics_opengl_GL.SRC_ALPHA_SATURATE = 776;
lime_graphics_opengl_GL.FUNC_ADD = 32774;
lime_graphics_opengl_GL.BLEND_EQUATION = 32777;
lime_graphics_opengl_GL.BLEND_EQUATION_RGB = 32777;
lime_graphics_opengl_GL.BLEND_EQUATION_ALPHA = 34877;
lime_graphics_opengl_GL.FUNC_SUBTRACT = 32778;
lime_graphics_opengl_GL.FUNC_REVERSE_SUBTRACT = 32779;
lime_graphics_opengl_GL.BLEND_DST_RGB = 32968;
lime_graphics_opengl_GL.BLEND_SRC_RGB = 32969;
lime_graphics_opengl_GL.BLEND_DST_ALPHA = 32970;
lime_graphics_opengl_GL.BLEND_SRC_ALPHA = 32971;
lime_graphics_opengl_GL.CONSTANT_COLOR = 32769;
lime_graphics_opengl_GL.ONE_MINUS_CONSTANT_COLOR = 32770;
lime_graphics_opengl_GL.CONSTANT_ALPHA = 32771;
lime_graphics_opengl_GL.ONE_MINUS_CONSTANT_ALPHA = 32772;
lime_graphics_opengl_GL.BLEND_COLOR = 32773;
lime_graphics_opengl_GL.ARRAY_BUFFER = 34962;
lime_graphics_opengl_GL.ELEMENT_ARRAY_BUFFER = 34963;
lime_graphics_opengl_GL.ARRAY_BUFFER_BINDING = 34964;
lime_graphics_opengl_GL.ELEMENT_ARRAY_BUFFER_BINDING = 34965;
lime_graphics_opengl_GL.STREAM_DRAW = 35040;
lime_graphics_opengl_GL.STATIC_DRAW = 35044;
lime_graphics_opengl_GL.DYNAMIC_DRAW = 35048;
lime_graphics_opengl_GL.BUFFER_SIZE = 34660;
lime_graphics_opengl_GL.BUFFER_USAGE = 34661;
lime_graphics_opengl_GL.CURRENT_VERTEX_ATTRIB = 34342;
lime_graphics_opengl_GL.FRONT = 1028;
lime_graphics_opengl_GL.BACK = 1029;
lime_graphics_opengl_GL.FRONT_AND_BACK = 1032;
lime_graphics_opengl_GL.CULL_FACE = 2884;
lime_graphics_opengl_GL.BLEND = 3042;
lime_graphics_opengl_GL.DITHER = 3024;
lime_graphics_opengl_GL.STENCIL_TEST = 2960;
lime_graphics_opengl_GL.DEPTH_TEST = 2929;
lime_graphics_opengl_GL.SCISSOR_TEST = 3089;
lime_graphics_opengl_GL.POLYGON_OFFSET_FILL = 32823;
lime_graphics_opengl_GL.SAMPLE_ALPHA_TO_COVERAGE = 32926;
lime_graphics_opengl_GL.SAMPLE_COVERAGE = 32928;
lime_graphics_opengl_GL.NO_ERROR = 0;
lime_graphics_opengl_GL.INVALID_ENUM = 1280;
lime_graphics_opengl_GL.INVALID_VALUE = 1281;
lime_graphics_opengl_GL.INVALID_OPERATION = 1282;
lime_graphics_opengl_GL.OUT_OF_MEMORY = 1285;
lime_graphics_opengl_GL.CW = 2304;
lime_graphics_opengl_GL.CCW = 2305;
lime_graphics_opengl_GL.LINE_WIDTH = 2849;
lime_graphics_opengl_GL.ALIASED_POINT_SIZE_RANGE = 33901;
lime_graphics_opengl_GL.ALIASED_LINE_WIDTH_RANGE = 33902;
lime_graphics_opengl_GL.CULL_FACE_MODE = 2885;
lime_graphics_opengl_GL.FRONT_FACE = 2886;
lime_graphics_opengl_GL.DEPTH_RANGE = 2928;
lime_graphics_opengl_GL.DEPTH_WRITEMASK = 2930;
lime_graphics_opengl_GL.DEPTH_CLEAR_VALUE = 2931;
lime_graphics_opengl_GL.DEPTH_FUNC = 2932;
lime_graphics_opengl_GL.STENCIL_CLEAR_VALUE = 2961;
lime_graphics_opengl_GL.STENCIL_FUNC = 2962;
lime_graphics_opengl_GL.STENCIL_FAIL = 2964;
lime_graphics_opengl_GL.STENCIL_PASS_DEPTH_FAIL = 2965;
lime_graphics_opengl_GL.STENCIL_PASS_DEPTH_PASS = 2966;
lime_graphics_opengl_GL.STENCIL_REF = 2967;
lime_graphics_opengl_GL.STENCIL_VALUE_MASK = 2963;
lime_graphics_opengl_GL.STENCIL_WRITEMASK = 2968;
lime_graphics_opengl_GL.STENCIL_BACK_FUNC = 34816;
lime_graphics_opengl_GL.STENCIL_BACK_FAIL = 34817;
lime_graphics_opengl_GL.STENCIL_BACK_PASS_DEPTH_FAIL = 34818;
lime_graphics_opengl_GL.STENCIL_BACK_PASS_DEPTH_PASS = 34819;
lime_graphics_opengl_GL.STENCIL_BACK_REF = 36003;
lime_graphics_opengl_GL.STENCIL_BACK_VALUE_MASK = 36004;
lime_graphics_opengl_GL.STENCIL_BACK_WRITEMASK = 36005;
lime_graphics_opengl_GL.VIEWPORT = 2978;
lime_graphics_opengl_GL.SCISSOR_BOX = 3088;
lime_graphics_opengl_GL.COLOR_CLEAR_VALUE = 3106;
lime_graphics_opengl_GL.COLOR_WRITEMASK = 3107;
lime_graphics_opengl_GL.UNPACK_ALIGNMENT = 3317;
lime_graphics_opengl_GL.PACK_ALIGNMENT = 3333;
lime_graphics_opengl_GL.MAX_TEXTURE_SIZE = 3379;
lime_graphics_opengl_GL.MAX_VIEWPORT_DIMS = 3386;
lime_graphics_opengl_GL.SUBPIXEL_BITS = 3408;
lime_graphics_opengl_GL.RED_BITS = 3410;
lime_graphics_opengl_GL.GREEN_BITS = 3411;
lime_graphics_opengl_GL.BLUE_BITS = 3412;
lime_graphics_opengl_GL.ALPHA_BITS = 3413;
lime_graphics_opengl_GL.DEPTH_BITS = 3414;
lime_graphics_opengl_GL.STENCIL_BITS = 3415;
lime_graphics_opengl_GL.POLYGON_OFFSET_UNITS = 10752;
lime_graphics_opengl_GL.POLYGON_OFFSET_FACTOR = 32824;
lime_graphics_opengl_GL.TEXTURE_BINDING_2D = 32873;
lime_graphics_opengl_GL.SAMPLE_BUFFERS = 32936;
lime_graphics_opengl_GL.SAMPLES = 32937;
lime_graphics_opengl_GL.SAMPLE_COVERAGE_VALUE = 32938;
lime_graphics_opengl_GL.SAMPLE_COVERAGE_INVERT = 32939;
lime_graphics_opengl_GL.NUM_COMPRESSED_TEXTURE_FORMATS = 34466;
lime_graphics_opengl_GL.COMPRESSED_TEXTURE_FORMATS = 34467;
lime_graphics_opengl_GL.DONT_CARE = 4352;
lime_graphics_opengl_GL.FASTEST = 4353;
lime_graphics_opengl_GL.NICEST = 4354;
lime_graphics_opengl_GL.GENERATE_MIPMAP_HINT = 33170;
lime_graphics_opengl_GL.BYTE = 5120;
lime_graphics_opengl_GL.UNSIGNED_BYTE = 5121;
lime_graphics_opengl_GL.SHORT = 5122;
lime_graphics_opengl_GL.UNSIGNED_SHORT = 5123;
lime_graphics_opengl_GL.INT = 5124;
lime_graphics_opengl_GL.UNSIGNED_INT = 5125;
lime_graphics_opengl_GL.FLOAT = 5126;
lime_graphics_opengl_GL.DEPTH_COMPONENT = 6402;
lime_graphics_opengl_GL.ALPHA = 6406;
lime_graphics_opengl_GL.RGB = 6407;
lime_graphics_opengl_GL.RGBA = 6408;
lime_graphics_opengl_GL.LUMINANCE = 6409;
lime_graphics_opengl_GL.LUMINANCE_ALPHA = 6410;
lime_graphics_opengl_GL.UNSIGNED_SHORT_4_4_4_4 = 32819;
lime_graphics_opengl_GL.UNSIGNED_SHORT_5_5_5_1 = 32820;
lime_graphics_opengl_GL.UNSIGNED_SHORT_5_6_5 = 33635;
lime_graphics_opengl_GL.FRAGMENT_SHADER = 35632;
lime_graphics_opengl_GL.VERTEX_SHADER = 35633;
lime_graphics_opengl_GL.MAX_VERTEX_ATTRIBS = 34921;
lime_graphics_opengl_GL.MAX_VERTEX_UNIFORM_VECTORS = 36347;
lime_graphics_opengl_GL.MAX_VARYING_VECTORS = 36348;
lime_graphics_opengl_GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661;
lime_graphics_opengl_GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660;
lime_graphics_opengl_GL.MAX_TEXTURE_IMAGE_UNITS = 34930;
lime_graphics_opengl_GL.MAX_FRAGMENT_UNIFORM_VECTORS = 36349;
lime_graphics_opengl_GL.SHADER_TYPE = 35663;
lime_graphics_opengl_GL.DELETE_STATUS = 35712;
lime_graphics_opengl_GL.LINK_STATUS = 35714;
lime_graphics_opengl_GL.VALIDATE_STATUS = 35715;
lime_graphics_opengl_GL.ATTACHED_SHADERS = 35717;
lime_graphics_opengl_GL.ACTIVE_UNIFORMS = 35718;
lime_graphics_opengl_GL.ACTIVE_ATTRIBUTES = 35721;
lime_graphics_opengl_GL.SHADING_LANGUAGE_VERSION = 35724;
lime_graphics_opengl_GL.CURRENT_PROGRAM = 35725;
lime_graphics_opengl_GL.NEVER = 512;
lime_graphics_opengl_GL.LESS = 513;
lime_graphics_opengl_GL.EQUAL = 514;
lime_graphics_opengl_GL.LEQUAL = 515;
lime_graphics_opengl_GL.GREATER = 516;
lime_graphics_opengl_GL.NOTEQUAL = 517;
lime_graphics_opengl_GL.GEQUAL = 518;
lime_graphics_opengl_GL.ALWAYS = 519;
lime_graphics_opengl_GL.KEEP = 7680;
lime_graphics_opengl_GL.REPLACE = 7681;
lime_graphics_opengl_GL.INCR = 7682;
lime_graphics_opengl_GL.DECR = 7683;
lime_graphics_opengl_GL.INVERT = 5386;
lime_graphics_opengl_GL.INCR_WRAP = 34055;
lime_graphics_opengl_GL.DECR_WRAP = 34056;
lime_graphics_opengl_GL.VENDOR = 7936;
lime_graphics_opengl_GL.RENDERER = 7937;
lime_graphics_opengl_GL.VERSION = 7938;
lime_graphics_opengl_GL.EXTENSIONS = 7939;
lime_graphics_opengl_GL.NEAREST = 9728;
lime_graphics_opengl_GL.LINEAR = 9729;
lime_graphics_opengl_GL.NEAREST_MIPMAP_NEAREST = 9984;
lime_graphics_opengl_GL.LINEAR_MIPMAP_NEAREST = 9985;
lime_graphics_opengl_GL.NEAREST_MIPMAP_LINEAR = 9986;
lime_graphics_opengl_GL.LINEAR_MIPMAP_LINEAR = 9987;
lime_graphics_opengl_GL.TEXTURE_MAG_FILTER = 10240;
lime_graphics_opengl_GL.TEXTURE_MIN_FILTER = 10241;
lime_graphics_opengl_GL.TEXTURE_WRAP_S = 10242;
lime_graphics_opengl_GL.TEXTURE_WRAP_T = 10243;
lime_graphics_opengl_GL.TEXTURE_2D = 3553;
lime_graphics_opengl_GL.TEXTURE = 5890;
lime_graphics_opengl_GL.TEXTURE_CUBE_MAP = 34067;
lime_graphics_opengl_GL.TEXTURE_BINDING_CUBE_MAP = 34068;
lime_graphics_opengl_GL.TEXTURE_CUBE_MAP_POSITIVE_X = 34069;
lime_graphics_opengl_GL.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070;
lime_graphics_opengl_GL.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071;
lime_graphics_opengl_GL.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072;
lime_graphics_opengl_GL.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073;
lime_graphics_opengl_GL.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074;
lime_graphics_opengl_GL.MAX_CUBE_MAP_TEXTURE_SIZE = 34076;
lime_graphics_opengl_GL.TEXTURE0 = 33984;
lime_graphics_opengl_GL.TEXTURE1 = 33985;
lime_graphics_opengl_GL.TEXTURE2 = 33986;
lime_graphics_opengl_GL.TEXTURE3 = 33987;
lime_graphics_opengl_GL.TEXTURE4 = 33988;
lime_graphics_opengl_GL.TEXTURE5 = 33989;
lime_graphics_opengl_GL.TEXTURE6 = 33990;
lime_graphics_opengl_GL.TEXTURE7 = 33991;
lime_graphics_opengl_GL.TEXTURE8 = 33992;
lime_graphics_opengl_GL.TEXTURE9 = 33993;
lime_graphics_opengl_GL.TEXTURE10 = 33994;
lime_graphics_opengl_GL.TEXTURE11 = 33995;
lime_graphics_opengl_GL.TEXTURE12 = 33996;
lime_graphics_opengl_GL.TEXTURE13 = 33997;
lime_graphics_opengl_GL.TEXTURE14 = 33998;
lime_graphics_opengl_GL.TEXTURE15 = 33999;
lime_graphics_opengl_GL.TEXTURE16 = 34000;
lime_graphics_opengl_GL.TEXTURE17 = 34001;
lime_graphics_opengl_GL.TEXTURE18 = 34002;
lime_graphics_opengl_GL.TEXTURE19 = 34003;
lime_graphics_opengl_GL.TEXTURE20 = 34004;
lime_graphics_opengl_GL.TEXTURE21 = 34005;
lime_graphics_opengl_GL.TEXTURE22 = 34006;
lime_graphics_opengl_GL.TEXTURE23 = 34007;
lime_graphics_opengl_GL.TEXTURE24 = 34008;
lime_graphics_opengl_GL.TEXTURE25 = 34009;
lime_graphics_opengl_GL.TEXTURE26 = 34010;
lime_graphics_opengl_GL.TEXTURE27 = 34011;
lime_graphics_opengl_GL.TEXTURE28 = 34012;
lime_graphics_opengl_GL.TEXTURE29 = 34013;
lime_graphics_opengl_GL.TEXTURE30 = 34014;
lime_graphics_opengl_GL.TEXTURE31 = 34015;
lime_graphics_opengl_GL.ACTIVE_TEXTURE = 34016;
lime_graphics_opengl_GL.REPEAT = 10497;
lime_graphics_opengl_GL.CLAMP_TO_EDGE = 33071;
lime_graphics_opengl_GL.MIRRORED_REPEAT = 33648;
lime_graphics_opengl_GL.FLOAT_VEC2 = 35664;
lime_graphics_opengl_GL.FLOAT_VEC3 = 35665;
lime_graphics_opengl_GL.FLOAT_VEC4 = 35666;
lime_graphics_opengl_GL.INT_VEC2 = 35667;
lime_graphics_opengl_GL.INT_VEC3 = 35668;
lime_graphics_opengl_GL.INT_VEC4 = 35669;
lime_graphics_opengl_GL.BOOL = 35670;
lime_graphics_opengl_GL.BOOL_VEC2 = 35671;
lime_graphics_opengl_GL.BOOL_VEC3 = 35672;
lime_graphics_opengl_GL.BOOL_VEC4 = 35673;
lime_graphics_opengl_GL.FLOAT_MAT2 = 35674;
lime_graphics_opengl_GL.FLOAT_MAT3 = 35675;
lime_graphics_opengl_GL.FLOAT_MAT4 = 35676;
lime_graphics_opengl_GL.SAMPLER_2D = 35678;
lime_graphics_opengl_GL.SAMPLER_CUBE = 35680;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_ENABLED = 34338;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_SIZE = 34339;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_STRIDE = 34340;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_TYPE = 34341;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_POINTER = 34373;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975;
lime_graphics_opengl_GL.IMPLEMENTATION_COLOR_READ_TYPE = 35738;
lime_graphics_opengl_GL.IMPLEMENTATION_COLOR_READ_FORMAT = 35739;
lime_graphics_opengl_GL.VERTEX_PROGRAM_POINT_SIZE = 34370;
lime_graphics_opengl_GL.POINT_SPRITE = 34913;
lime_graphics_opengl_GL.COMPILE_STATUS = 35713;
lime_graphics_opengl_GL.LOW_FLOAT = 36336;
lime_graphics_opengl_GL.MEDIUM_FLOAT = 36337;
lime_graphics_opengl_GL.HIGH_FLOAT = 36338;
lime_graphics_opengl_GL.LOW_INT = 36339;
lime_graphics_opengl_GL.MEDIUM_INT = 36340;
lime_graphics_opengl_GL.HIGH_INT = 36341;
lime_graphics_opengl_GL.FRAMEBUFFER = 36160;
lime_graphics_opengl_GL.RENDERBUFFER = 36161;
lime_graphics_opengl_GL.RGBA4 = 32854;
lime_graphics_opengl_GL.RGB5_A1 = 32855;
lime_graphics_opengl_GL.RGB565 = 36194;
lime_graphics_opengl_GL.DEPTH_COMPONENT16 = 33189;
lime_graphics_opengl_GL.STENCIL_INDEX = 6401;
lime_graphics_opengl_GL.STENCIL_INDEX8 = 36168;
lime_graphics_opengl_GL.DEPTH_STENCIL = 34041;
lime_graphics_opengl_GL.RENDERBUFFER_WIDTH = 36162;
lime_graphics_opengl_GL.RENDERBUFFER_HEIGHT = 36163;
lime_graphics_opengl_GL.RENDERBUFFER_INTERNAL_FORMAT = 36164;
lime_graphics_opengl_GL.RENDERBUFFER_RED_SIZE = 36176;
lime_graphics_opengl_GL.RENDERBUFFER_GREEN_SIZE = 36177;
lime_graphics_opengl_GL.RENDERBUFFER_BLUE_SIZE = 36178;
lime_graphics_opengl_GL.RENDERBUFFER_ALPHA_SIZE = 36179;
lime_graphics_opengl_GL.RENDERBUFFER_DEPTH_SIZE = 36180;
lime_graphics_opengl_GL.RENDERBUFFER_STENCIL_SIZE = 36181;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051;
lime_graphics_opengl_GL.COLOR_ATTACHMENT0 = 36064;
lime_graphics_opengl_GL.DEPTH_ATTACHMENT = 36096;
lime_graphics_opengl_GL.STENCIL_ATTACHMENT = 36128;
lime_graphics_opengl_GL.DEPTH_STENCIL_ATTACHMENT = 33306;
lime_graphics_opengl_GL.NONE = 0;
lime_graphics_opengl_GL.FRAMEBUFFER_COMPLETE = 36053;
lime_graphics_opengl_GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054;
lime_graphics_opengl_GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055;
lime_graphics_opengl_GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057;
lime_graphics_opengl_GL.FRAMEBUFFER_UNSUPPORTED = 36061;
lime_graphics_opengl_GL.FRAMEBUFFER_BINDING = 36006;
lime_graphics_opengl_GL.RENDERBUFFER_BINDING = 36007;
lime_graphics_opengl_GL.MAX_RENDERBUFFER_SIZE = 34024;
lime_graphics_opengl_GL.INVALID_FRAMEBUFFER_OPERATION = 1286;
lime_graphics_opengl_GL.UNPACK_FLIP_Y_WEBGL = 37440;
lime_graphics_opengl_GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441;
lime_graphics_opengl_GL.CONTEXT_LOST_WEBGL = 37442;
lime_graphics_opengl_GL.UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443;
lime_graphics_opengl_GL.BROWSER_DEFAULT_WEBGL = 37444;
lime_graphics_opengl_GL.READ_BUFFER = 3074;
lime_graphics_opengl_GL.UNPACK_ROW_LENGTH = 3314;
lime_graphics_opengl_GL.UNPACK_SKIP_ROWS = 3315;
lime_graphics_opengl_GL.UNPACK_SKIP_PIXELS = 3316;
lime_graphics_opengl_GL.PACK_ROW_LENGTH = 3330;
lime_graphics_opengl_GL.PACK_SKIP_ROWS = 3331;
lime_graphics_opengl_GL.PACK_SKIP_PIXELS = 3332;
lime_graphics_opengl_GL.TEXTURE_BINDING_3D = 32874;
lime_graphics_opengl_GL.UNPACK_SKIP_IMAGES = 32877;
lime_graphics_opengl_GL.UNPACK_IMAGE_HEIGHT = 32878;
lime_graphics_opengl_GL.MAX_3D_TEXTURE_SIZE = 32883;
lime_graphics_opengl_GL.MAX_ELEMENTS_VERTICES = 33000;
lime_graphics_opengl_GL.MAX_ELEMENTS_INDICES = 33001;
lime_graphics_opengl_GL.MAX_TEXTURE_LOD_BIAS = 34045;
lime_graphics_opengl_GL.MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657;
lime_graphics_opengl_GL.MAX_VERTEX_UNIFORM_COMPONENTS = 35658;
lime_graphics_opengl_GL.MAX_ARRAY_TEXTURE_LAYERS = 35071;
lime_graphics_opengl_GL.MIN_PROGRAM_TEXEL_OFFSET = 35076;
lime_graphics_opengl_GL.MAX_PROGRAM_TEXEL_OFFSET = 35077;
lime_graphics_opengl_GL.MAX_VARYING_COMPONENTS = 35659;
lime_graphics_opengl_GL.FRAGMENT_SHADER_DERIVATIVE_HINT = 35723;
lime_graphics_opengl_GL.RASTERIZER_DISCARD = 35977;
lime_graphics_opengl_GL.VERTEX_ARRAY_BINDING = 34229;
lime_graphics_opengl_GL.MAX_VERTEX_OUTPUT_COMPONENTS = 37154;
lime_graphics_opengl_GL.MAX_FRAGMENT_INPUT_COMPONENTS = 37157;
lime_graphics_opengl_GL.MAX_SERVER_WAIT_TIMEOUT = 37137;
lime_graphics_opengl_GL.MAX_ELEMENT_INDEX = 36203;
lime_graphics_opengl_GL.RED = 6403;
lime_graphics_opengl_GL.RGB8 = 32849;
lime_graphics_opengl_GL.RGBA8 = 32856;
lime_graphics_opengl_GL.RGB10_A2 = 32857;
lime_graphics_opengl_GL.TEXTURE_3D = 32879;
lime_graphics_opengl_GL.TEXTURE_WRAP_R = 32882;
lime_graphics_opengl_GL.TEXTURE_MIN_LOD = 33082;
lime_graphics_opengl_GL.TEXTURE_MAX_LOD = 33083;
lime_graphics_opengl_GL.TEXTURE_BASE_LEVEL = 33084;
lime_graphics_opengl_GL.TEXTURE_MAX_LEVEL = 33085;
lime_graphics_opengl_GL.TEXTURE_COMPARE_MODE = 34892;
lime_graphics_opengl_GL.TEXTURE_COMPARE_FUNC = 34893;
lime_graphics_opengl_GL.SRGB = 35904;
lime_graphics_opengl_GL.SRGB8 = 35905;
lime_graphics_opengl_GL.SRGB8_ALPHA8 = 35907;
lime_graphics_opengl_GL.COMPARE_REF_TO_TEXTURE = 34894;
lime_graphics_opengl_GL.RGBA32F = 34836;
lime_graphics_opengl_GL.RGB32F = 34837;
lime_graphics_opengl_GL.RGBA16F = 34842;
lime_graphics_opengl_GL.RGB16F = 34843;
lime_graphics_opengl_GL.TEXTURE_2D_ARRAY = 35866;
lime_graphics_opengl_GL.TEXTURE_BINDING_2D_ARRAY = 35869;
lime_graphics_opengl_GL.R11F_G11F_B10F = 35898;
lime_graphics_opengl_GL.RGB9_E5 = 35901;
lime_graphics_opengl_GL.RGBA32UI = 36208;
lime_graphics_opengl_GL.RGB32UI = 36209;
lime_graphics_opengl_GL.RGBA16UI = 36214;
lime_graphics_opengl_GL.RGB16UI = 36215;
lime_graphics_opengl_GL.RGBA8UI = 36220;
lime_graphics_opengl_GL.RGB8UI = 36221;
lime_graphics_opengl_GL.RGBA32I = 36226;
lime_graphics_opengl_GL.RGB32I = 36227;
lime_graphics_opengl_GL.RGBA16I = 36232;
lime_graphics_opengl_GL.RGB16I = 36233;
lime_graphics_opengl_GL.RGBA8I = 36238;
lime_graphics_opengl_GL.RGB8I = 36239;
lime_graphics_opengl_GL.RED_INTEGER = 36244;
lime_graphics_opengl_GL.RGB_INTEGER = 36248;
lime_graphics_opengl_GL.RGBA_INTEGER = 36249;
lime_graphics_opengl_GL.R8 = 33321;
lime_graphics_opengl_GL.RG8 = 33323;
lime_graphics_opengl_GL.R16F = 33325;
lime_graphics_opengl_GL.R32F = 33326;
lime_graphics_opengl_GL.RG16F = 33327;
lime_graphics_opengl_GL.RG32F = 33328;
lime_graphics_opengl_GL.R8I = 33329;
lime_graphics_opengl_GL.R8UI = 33330;
lime_graphics_opengl_GL.R16I = 33331;
lime_graphics_opengl_GL.R16UI = 33332;
lime_graphics_opengl_GL.R32I = 33333;
lime_graphics_opengl_GL.R32UI = 33334;
lime_graphics_opengl_GL.RG8I = 33335;
lime_graphics_opengl_GL.RG8UI = 33336;
lime_graphics_opengl_GL.RG16I = 33337;
lime_graphics_opengl_GL.RG16UI = 33338;
lime_graphics_opengl_GL.RG32I = 33339;
lime_graphics_opengl_GL.RG32UI = 33340;
lime_graphics_opengl_GL.R8_SNORM = 36756;
lime_graphics_opengl_GL.RG8_SNORM = 36757;
lime_graphics_opengl_GL.RGB8_SNORM = 36758;
lime_graphics_opengl_GL.RGBA8_SNORM = 36759;
lime_graphics_opengl_GL.RGB10_A2UI = 36975;
lime_graphics_opengl_GL.TEXTURE_IMMUTABLE_FORMAT = 37167;
lime_graphics_opengl_GL.TEXTURE_IMMUTABLE_LEVELS = 33503;
lime_graphics_opengl_GL.UNSIGNED_INT_2_10_10_10_REV = 33640;
lime_graphics_opengl_GL.UNSIGNED_INT_10F_11F_11F_REV = 35899;
lime_graphics_opengl_GL.UNSIGNED_INT_5_9_9_9_REV = 35902;
lime_graphics_opengl_GL.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269;
lime_graphics_opengl_GL.UNSIGNED_INT_24_8 = 34042;
lime_graphics_opengl_GL.HALF_FLOAT = 5131;
lime_graphics_opengl_GL.RG = 33319;
lime_graphics_opengl_GL.RG_INTEGER = 33320;
lime_graphics_opengl_GL.INT_2_10_10_10_REV = 36255;
lime_graphics_opengl_GL.CURRENT_QUERY = 34917;
lime_graphics_opengl_GL.QUERY_RESULT = 34918;
lime_graphics_opengl_GL.QUERY_RESULT_AVAILABLE = 34919;
lime_graphics_opengl_GL.ANY_SAMPLES_PASSED = 35887;
lime_graphics_opengl_GL.ANY_SAMPLES_PASSED_CONSERVATIVE = 36202;
lime_graphics_opengl_GL.MAX_DRAW_BUFFERS = 34852;
lime_graphics_opengl_GL.DRAW_BUFFER0 = 34853;
lime_graphics_opengl_GL.DRAW_BUFFER1 = 34854;
lime_graphics_opengl_GL.DRAW_BUFFER2 = 34855;
lime_graphics_opengl_GL.DRAW_BUFFER3 = 34856;
lime_graphics_opengl_GL.DRAW_BUFFER4 = 34857;
lime_graphics_opengl_GL.DRAW_BUFFER5 = 34858;
lime_graphics_opengl_GL.DRAW_BUFFER6 = 34859;
lime_graphics_opengl_GL.DRAW_BUFFER7 = 34860;
lime_graphics_opengl_GL.DRAW_BUFFER8 = 34861;
lime_graphics_opengl_GL.DRAW_BUFFER9 = 34862;
lime_graphics_opengl_GL.DRAW_BUFFER10 = 34863;
lime_graphics_opengl_GL.DRAW_BUFFER11 = 34864;
lime_graphics_opengl_GL.DRAW_BUFFER12 = 34865;
lime_graphics_opengl_GL.DRAW_BUFFER13 = 34866;
lime_graphics_opengl_GL.DRAW_BUFFER14 = 34867;
lime_graphics_opengl_GL.DRAW_BUFFER15 = 34868;
lime_graphics_opengl_GL.MAX_COLOR_ATTACHMENTS = 36063;
lime_graphics_opengl_GL.COLOR_ATTACHMENT1 = 36065;
lime_graphics_opengl_GL.COLOR_ATTACHMENT2 = 36066;
lime_graphics_opengl_GL.COLOR_ATTACHMENT3 = 36067;
lime_graphics_opengl_GL.COLOR_ATTACHMENT4 = 36068;
lime_graphics_opengl_GL.COLOR_ATTACHMENT5 = 36069;
lime_graphics_opengl_GL.COLOR_ATTACHMENT6 = 36070;
lime_graphics_opengl_GL.COLOR_ATTACHMENT7 = 36071;
lime_graphics_opengl_GL.COLOR_ATTACHMENT8 = 36072;
lime_graphics_opengl_GL.COLOR_ATTACHMENT9 = 36073;
lime_graphics_opengl_GL.COLOR_ATTACHMENT10 = 36074;
lime_graphics_opengl_GL.COLOR_ATTACHMENT11 = 36075;
lime_graphics_opengl_GL.COLOR_ATTACHMENT12 = 36076;
lime_graphics_opengl_GL.COLOR_ATTACHMENT13 = 36077;
lime_graphics_opengl_GL.COLOR_ATTACHMENT14 = 36078;
lime_graphics_opengl_GL.COLOR_ATTACHMENT15 = 36079;
lime_graphics_opengl_GL.SAMPLER_3D = 35679;
lime_graphics_opengl_GL.SAMPLER_2D_SHADOW = 35682;
lime_graphics_opengl_GL.SAMPLER_2D_ARRAY = 36289;
lime_graphics_opengl_GL.SAMPLER_2D_ARRAY_SHADOW = 36292;
lime_graphics_opengl_GL.SAMPLER_CUBE_SHADOW = 36293;
lime_graphics_opengl_GL.INT_SAMPLER_2D = 36298;
lime_graphics_opengl_GL.INT_SAMPLER_3D = 36299;
lime_graphics_opengl_GL.INT_SAMPLER_CUBE = 36300;
lime_graphics_opengl_GL.INT_SAMPLER_2D_ARRAY = 36303;
lime_graphics_opengl_GL.UNSIGNED_INT_SAMPLER_2D = 36306;
lime_graphics_opengl_GL.UNSIGNED_INT_SAMPLER_3D = 36307;
lime_graphics_opengl_GL.UNSIGNED_INT_SAMPLER_CUBE = 36308;
lime_graphics_opengl_GL.UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311;
lime_graphics_opengl_GL.MAX_SAMPLES = 36183;
lime_graphics_opengl_GL.SAMPLER_BINDING = 35097;
lime_graphics_opengl_GL.PIXEL_PACK_BUFFER = 35051;
lime_graphics_opengl_GL.PIXEL_UNPACK_BUFFER = 35052;
lime_graphics_opengl_GL.PIXEL_PACK_BUFFER_BINDING = 35053;
lime_graphics_opengl_GL.PIXEL_UNPACK_BUFFER_BINDING = 35055;
lime_graphics_opengl_GL.COPY_READ_BUFFER = 36662;
lime_graphics_opengl_GL.COPY_WRITE_BUFFER = 36663;
lime_graphics_opengl_GL.COPY_READ_BUFFER_BINDING = 36662;
lime_graphics_opengl_GL.COPY_WRITE_BUFFER_BINDING = 36663;
lime_graphics_opengl_GL.FLOAT_MAT2x3 = 35685;
lime_graphics_opengl_GL.FLOAT_MAT2x4 = 35686;
lime_graphics_opengl_GL.FLOAT_MAT3x2 = 35687;
lime_graphics_opengl_GL.FLOAT_MAT3x4 = 35688;
lime_graphics_opengl_GL.FLOAT_MAT4x2 = 35689;
lime_graphics_opengl_GL.FLOAT_MAT4x3 = 35690;
lime_graphics_opengl_GL.UNSIGNED_INT_VEC2 = 36294;
lime_graphics_opengl_GL.UNSIGNED_INT_VEC3 = 36295;
lime_graphics_opengl_GL.UNSIGNED_INT_VEC4 = 36296;
lime_graphics_opengl_GL.UNSIGNED_NORMALIZED = 35863;
lime_graphics_opengl_GL.SIGNED_NORMALIZED = 36764;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_INTEGER = 35069;
lime_graphics_opengl_GL.VERTEX_ATTRIB_ARRAY_DIVISOR = 35070;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_BUFFER_MODE = 35967;
lime_graphics_opengl_GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_VARYINGS = 35971;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_BUFFER_START = 35972;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976;
lime_graphics_opengl_GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978;
lime_graphics_opengl_GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979;
lime_graphics_opengl_GL.INTERLEAVED_ATTRIBS = 35980;
lime_graphics_opengl_GL.SEPARATE_ATTRIBS = 35981;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_BUFFER = 35982;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK = 36386;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_PAUSED = 36387;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_ACTIVE = 36388;
lime_graphics_opengl_GL.TRANSFORM_FEEDBACK_BINDING = 36389;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303;
lime_graphics_opengl_GL.FRAMEBUFFER_DEFAULT = 33304;
lime_graphics_opengl_GL.DEPTH24_STENCIL8 = 35056;
lime_graphics_opengl_GL.DRAW_FRAMEBUFFER_BINDING = 36006;
lime_graphics_opengl_GL.READ_FRAMEBUFFER = 36008;
lime_graphics_opengl_GL.DRAW_FRAMEBUFFER = 36009;
lime_graphics_opengl_GL.READ_FRAMEBUFFER_BINDING = 36010;
lime_graphics_opengl_GL.RENDERBUFFER_SAMPLES = 36011;
lime_graphics_opengl_GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052;
lime_graphics_opengl_GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182;
lime_graphics_opengl_GL.UNIFORM_BUFFER = 35345;
lime_graphics_opengl_GL.UNIFORM_BUFFER_BINDING = 35368;
lime_graphics_opengl_GL.UNIFORM_BUFFER_START = 35369;
lime_graphics_opengl_GL.UNIFORM_BUFFER_SIZE = 35370;
lime_graphics_opengl_GL.MAX_VERTEX_UNIFORM_BLOCKS = 35371;
lime_graphics_opengl_GL.MAX_FRAGMENT_UNIFORM_BLOCKS = 35373;
lime_graphics_opengl_GL.MAX_COMBINED_UNIFORM_BLOCKS = 35374;
lime_graphics_opengl_GL.MAX_UNIFORM_BUFFER_BINDINGS = 35375;
lime_graphics_opengl_GL.MAX_UNIFORM_BLOCK_SIZE = 35376;
lime_graphics_opengl_GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377;
lime_graphics_opengl_GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379;
lime_graphics_opengl_GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380;
lime_graphics_opengl_GL.ACTIVE_UNIFORM_BLOCKS = 35382;
lime_graphics_opengl_GL.UNIFORM_TYPE = 35383;
lime_graphics_opengl_GL.UNIFORM_SIZE = 35384;
lime_graphics_opengl_GL.UNIFORM_BLOCK_INDEX = 35386;
lime_graphics_opengl_GL.UNIFORM_OFFSET = 35387;
lime_graphics_opengl_GL.UNIFORM_ARRAY_STRIDE = 35388;
lime_graphics_opengl_GL.UNIFORM_MATRIX_STRIDE = 35389;
lime_graphics_opengl_GL.UNIFORM_IS_ROW_MAJOR = 35390;
lime_graphics_opengl_GL.UNIFORM_BLOCK_BINDING = 35391;
lime_graphics_opengl_GL.UNIFORM_BLOCK_DATA_SIZE = 35392;
lime_graphics_opengl_GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394;
lime_graphics_opengl_GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395;
lime_graphics_opengl_GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396;
lime_graphics_opengl_GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398;
lime_graphics_opengl_GL.OBJECT_TYPE = 37138;
lime_graphics_opengl_GL.SYNC_CONDITION = 37139;
lime_graphics_opengl_GL.SYNC_STATUS = 37140;
lime_graphics_opengl_GL.SYNC_FLAGS = 37141;
lime_graphics_opengl_GL.SYNC_FENCE = 37142;
lime_graphics_opengl_GL.SYNC_GPU_COMMANDS_COMPLETE = 37143;
lime_graphics_opengl_GL.UNSIGNALED = 37144;
lime_graphics_opengl_GL.SIGNALED = 37145;
lime_graphics_opengl_GL.ALREADY_SIGNALED = 37146;
lime_graphics_opengl_GL.TIMEOUT_EXPIRED = 37147;
lime_graphics_opengl_GL.CONDITION_SATISFIED = 37148;
lime_graphics_opengl_GL.WAIT_FAILED = 37149;
lime_graphics_opengl_GL.SYNC_FLUSH_COMMANDS_BIT = 1;
lime_graphics_opengl_GL.COLOR = 6144;
lime_graphics_opengl_GL.DEPTH = 6145;
lime_graphics_opengl_GL.STENCIL = 6146;
lime_graphics_opengl_GL.MIN = 32775;
lime_graphics_opengl_GL.MAX = 32776;
lime_graphics_opengl_GL.DEPTH_COMPONENT24 = 33190;
lime_graphics_opengl_GL.STREAM_READ = 35041;
lime_graphics_opengl_GL.STREAM_COPY = 35042;
lime_graphics_opengl_GL.STATIC_READ = 35045;
lime_graphics_opengl_GL.STATIC_COPY = 35046;
lime_graphics_opengl_GL.DYNAMIC_READ = 35049;
lime_graphics_opengl_GL.DYNAMIC_COPY = 35050;
lime_graphics_opengl_GL.DEPTH_COMPONENT32F = 36012;
lime_graphics_opengl_GL.DEPTH32F_STENCIL8 = 36013;
lime_graphics_opengl_GL.INVALID_INDEX = -1;
lime_graphics_opengl_GL.TIMEOUT_IGNORED = -1;
lime_graphics_opengl_GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 37447;
lime_graphics_opengl__$WebGL2Context_WebGL2Context_$Impl_$.__tempPointer = (function($this) {
	var $r;
	var this1 = new lime_utils_BytePointerData(null,0);
	$r = this1;
	return $r;
}(this));
lime_math__$ColorMatrix_ColorMatrix_$Impl_$.__identity = [1.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0];
lime_math_Matrix3.__identity = new lime_math_Matrix3();
lime_math__$Matrix4_Matrix4_$Impl_$.__identity = [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0];
lime_media_openal_AL.NONE = 0;
lime_media_openal_AL.FALSE = 0;
lime_media_openal_AL.TRUE = 1;
lime_media_openal_AL.SOURCE_RELATIVE = 514;
lime_media_openal_AL.CONE_INNER_ANGLE = 4097;
lime_media_openal_AL.CONE_OUTER_ANGLE = 4098;
lime_media_openal_AL.PITCH = 4099;
lime_media_openal_AL.POSITION = 4100;
lime_media_openal_AL.DIRECTION = 4101;
lime_media_openal_AL.VELOCITY = 4102;
lime_media_openal_AL.LOOPING = 4103;
lime_media_openal_AL.BUFFER = 4105;
lime_media_openal_AL.GAIN = 4106;
lime_media_openal_AL.MIN_GAIN = 4109;
lime_media_openal_AL.MAX_GAIN = 4110;
lime_media_openal_AL.ORIENTATION = 4111;
lime_media_openal_AL.SOURCE_STATE = 4112;
lime_media_openal_AL.INITIAL = 4113;
lime_media_openal_AL.PLAYING = 4114;
lime_media_openal_AL.PAUSED = 4115;
lime_media_openal_AL.STOPPED = 4116;
lime_media_openal_AL.BUFFERS_QUEUED = 4117;
lime_media_openal_AL.BUFFERS_PROCESSED = 4118;
lime_media_openal_AL.REFERENCE_DISTANCE = 4128;
lime_media_openal_AL.ROLLOFF_FACTOR = 4129;
lime_media_openal_AL.CONE_OUTER_GAIN = 4130;
lime_media_openal_AL.MAX_DISTANCE = 4131;
lime_media_openal_AL.SEC_OFFSET = 4132;
lime_media_openal_AL.SAMPLE_OFFSET = 4133;
lime_media_openal_AL.BYTE_OFFSET = 4134;
lime_media_openal_AL.SOURCE_TYPE = 4135;
lime_media_openal_AL.STATIC = 4136;
lime_media_openal_AL.STREAMING = 4137;
lime_media_openal_AL.UNDETERMINED = 4144;
lime_media_openal_AL.FORMAT_MONO8 = 4352;
lime_media_openal_AL.FORMAT_MONO16 = 4353;
lime_media_openal_AL.FORMAT_STEREO8 = 4354;
lime_media_openal_AL.FORMAT_STEREO16 = 4355;
lime_media_openal_AL.FREQUENCY = 8193;
lime_media_openal_AL.BITS = 8194;
lime_media_openal_AL.CHANNELS = 8195;
lime_media_openal_AL.SIZE = 8196;
lime_media_openal_AL.NO_ERROR = 0;
lime_media_openal_AL.INVALID_NAME = 40961;
lime_media_openal_AL.INVALID_ENUM = 40962;
lime_media_openal_AL.INVALID_VALUE = 40963;
lime_media_openal_AL.INVALID_OPERATION = 40964;
lime_media_openal_AL.OUT_OF_MEMORY = 40965;
lime_media_openal_AL.VENDOR = 45057;
lime_media_openal_AL.VERSION = 45058;
lime_media_openal_AL.RENDERER = 45059;
lime_media_openal_AL.EXTENSIONS = 45060;
lime_media_openal_AL.DOPPLER_FACTOR = 49152;
lime_media_openal_AL.SPEED_OF_SOUND = 49155;
lime_media_openal_AL.DOPPLER_VELOCITY = 49153;
lime_media_openal_AL.DISTANCE_MODEL = 53248;
lime_media_openal_AL.INVERSE_DISTANCE = 53249;
lime_media_openal_AL.INVERSE_DISTANCE_CLAMPED = 53250;
lime_media_openal_AL.LINEAR_DISTANCE = 53251;
lime_media_openal_AL.LINEAR_DISTANCE_CLAMPED = 53252;
lime_media_openal_AL.EXPONENT_DISTANCE = 53253;
lime_media_openal_AL.EXPONENT_DISTANCE_CLAMPED = 53254;
lime_media_openal_AL.METERS_PER_UNIT = 131076;
lime_media_openal_AL.DIRECT_FILTER = 131077;
lime_media_openal_AL.AUXILIARY_SEND_FILTER = 131078;
lime_media_openal_AL.AIR_ABSORPTION_FACTOR = 131079;
lime_media_openal_AL.ROOM_ROLLOFF_FACTOR = 131080;
lime_media_openal_AL.CONE_OUTER_GAINHF = 131081;
lime_media_openal_AL.DIRECT_FILTER_GAINHF_AUTO = 131082;
lime_media_openal_AL.AUXILIARY_SEND_FILTER_GAIN_AUTO = 131083;
lime_media_openal_AL.AUXILIARY_SEND_FILTER_GAINHF_AUTO = 131084;
lime_media_openal_AL.REVERB_DENSITY = 1;
lime_media_openal_AL.REVERB_DIFFUSION = 2;
lime_media_openal_AL.REVERB_GAIN = 3;
lime_media_openal_AL.REVERB_GAINHF = 4;
lime_media_openal_AL.REVERB_DECAY_TIME = 5;
lime_media_openal_AL.REVERB_DECAY_HFRATIO = 6;
lime_media_openal_AL.REVERB_REFLECTIONS_GAIN = 7;
lime_media_openal_AL.REVERB_REFLECTIONS_DELAY = 8;
lime_media_openal_AL.REVERB_LATE_REVERB_GAIN = 9;
lime_media_openal_AL.REVERB_LATE_REVERB_DELAY = 10;
lime_media_openal_AL.REVERB_AIR_ABSORPTION_GAINHF = 11;
lime_media_openal_AL.REVERB_ROOM_ROLLOFF_FACTOR = 12;
lime_media_openal_AL.REVERB_DECAY_HFLIMIT = 13;
lime_media_openal_AL.EAXREVERB_DENSITY = 1;
lime_media_openal_AL.EAXREVERB_DIFFUSION = 2;
lime_media_openal_AL.EAXREVERB_GAIN = 3;
lime_media_openal_AL.EAXREVERB_GAINHF = 4;
lime_media_openal_AL.EAXREVERB_GAINLF = 5;
lime_media_openal_AL.EAXREVERB_DECAY_TIME = 6;
lime_media_openal_AL.EAXREVERB_DECAY_HFRATIO = 7;
lime_media_openal_AL.EAXREVERB_DECAY_LFRATIO = 8;
lime_media_openal_AL.EAXREVERB_REFLECTIONS_GAIN = 9;
lime_media_openal_AL.EAXREVERB_REFLECTIONS_DELAY = 10;
lime_media_openal_AL.EAXREVERB_REFLECTIONS_PAN = 11;
lime_media_openal_AL.EAXREVERB_LATE_REVERB_GAIN = 12;
lime_media_openal_AL.EAXREVERB_LATE_REVERB_DELAY = 13;
lime_media_openal_AL.EAXREVERB_LATE_REVERB_PAN = 14;
lime_media_openal_AL.EAXREVERB_ECHO_TIME = 15;
lime_media_openal_AL.EAXREVERB_ECHO_DEPTH = 16;
lime_media_openal_AL.EAXREVERB_MODULATION_TIME = 17;
lime_media_openal_AL.EAXREVERB_MODULATION_DEPTH = 18;
lime_media_openal_AL.EAXREVERB_AIR_ABSORPTION_GAINHF = 19;
lime_media_openal_AL.EAXREVERB_HFREFERENCE = 20;
lime_media_openal_AL.EAXREVERB_LFREFERENCE = 21;
lime_media_openal_AL.EAXREVERB_ROOM_ROLLOFF_FACTOR = 22;
lime_media_openal_AL.EAXREVERB_DECAY_HFLIMIT = 23;
lime_media_openal_AL.CHORUS_WAVEFORM = 1;
lime_media_openal_AL.CHORUS_PHASE = 2;
lime_media_openal_AL.CHORUS_RATE = 3;
lime_media_openal_AL.CHORUS_DEPTH = 4;
lime_media_openal_AL.CHORUS_FEEDBACK = 5;
lime_media_openal_AL.CHORUS_DELAY = 6;
lime_media_openal_AL.DISTORTION_EDGE = 1;
lime_media_openal_AL.DISTORTION_GAIN = 2;
lime_media_openal_AL.DISTORTION_LOWPASS_CUTOFF = 3;
lime_media_openal_AL.DISTORTION_EQCENTER = 4;
lime_media_openal_AL.DISTORTION_EQBANDWIDTH = 5;
lime_media_openal_AL.ECHO_DELAY = 1;
lime_media_openal_AL.ECHO_LRDELAY = 2;
lime_media_openal_AL.ECHO_DAMPING = 3;
lime_media_openal_AL.ECHO_FEEDBACK = 4;
lime_media_openal_AL.ECHO_SPREAD = 5;
lime_media_openal_AL.FLANGER_WAVEFORM = 1;
lime_media_openal_AL.FLANGER_PHASE = 2;
lime_media_openal_AL.FLANGER_RATE = 3;
lime_media_openal_AL.FLANGER_DEPTH = 4;
lime_media_openal_AL.FLANGER_FEEDBACK = 5;
lime_media_openal_AL.FLANGER_DELAY = 6;
lime_media_openal_AL.FREQUENCY_SHIFTER_FREQUENCY = 1;
lime_media_openal_AL.FREQUENCY_SHIFTER_LEFT_DIRECTION = 2;
lime_media_openal_AL.FREQUENCY_SHIFTER_RIGHT_DIRECTION = 3;
lime_media_openal_AL.VOCAL_MORPHER_PHONEMEA = 1;
lime_media_openal_AL.VOCAL_MORPHER_PHONEMEA_COARSE_TUNING = 2;
lime_media_openal_AL.VOCAL_MORPHER_PHONEMEB = 3;
lime_media_openal_AL.VOCAL_MORPHER_PHONEMEB_COARSE_TUNING = 4;
lime_media_openal_AL.VOCAL_MORPHER_WAVEFORM = 5;
lime_media_openal_AL.VOCAL_MORPHER_RATE = 6;
lime_media_openal_AL.PITCH_SHIFTER_COARSE_TUNE = 1;
lime_media_openal_AL.PITCH_SHIFTER_FINE_TUNE = 2;
lime_media_openal_AL.RING_MODULATOR_FREQUENCY = 1;
lime_media_openal_AL.RING_MODULATOR_HIGHPASS_CUTOFF = 2;
lime_media_openal_AL.RING_MODULATOR_WAVEFORM = 3;
lime_media_openal_AL.AUTOWAH_ATTACK_TIME = 1;
lime_media_openal_AL.AUTOWAH_RELEASE_TIME = 2;
lime_media_openal_AL.AUTOWAH_RESONANCE = 3;
lime_media_openal_AL.AUTOWAH_PEAK_GAIN = 4;
lime_media_openal_AL.COMPRESSOR_ONOFF = 1;
lime_media_openal_AL.EQUALIZER_LOW_GAIN = 1;
lime_media_openal_AL.EQUALIZER_LOW_CUTOFF = 2;
lime_media_openal_AL.EQUALIZER_MID1_GAIN = 3;
lime_media_openal_AL.EQUALIZER_MID1_CENTER = 4;
lime_media_openal_AL.EQUALIZER_MID1_WIDTH = 5;
lime_media_openal_AL.EQUALIZER_MID2_GAIN = 6;
lime_media_openal_AL.EQUALIZER_MID2_CENTER = 7;
lime_media_openal_AL.EQUALIZER_MID2_WIDTH = 8;
lime_media_openal_AL.EQUALIZER_HIGH_GAIN = 9;
lime_media_openal_AL.EQUALIZER_HIGH_CUTOFF = 10;
lime_media_openal_AL.EFFECT_FIRST_PARAMETER = 0;
lime_media_openal_AL.EFFECT_LAST_PARAMETER = 32768;
lime_media_openal_AL.EFFECT_TYPE = 32769;
lime_media_openal_AL.EFFECT_NULL = 0;
lime_media_openal_AL.EFFECT_EAXREVERB = 32768;
lime_media_openal_AL.EFFECT_REVERB = 1;
lime_media_openal_AL.EFFECT_CHORUS = 2;
lime_media_openal_AL.EFFECT_DISTORTION = 3;
lime_media_openal_AL.EFFECT_ECHO = 4;
lime_media_openal_AL.EFFECT_FLANGER = 5;
lime_media_openal_AL.EFFECT_FREQUENCY_SHIFTER = 6;
lime_media_openal_AL.EFFECT_VOCAL_MORPHER = 7;
lime_media_openal_AL.EFFECT_PITCH_SHIFTER = 8;
lime_media_openal_AL.EFFECT_RING_MODULATOR = 9;
lime_media_openal_AL.FFECT_AUTOWAH = 10;
lime_media_openal_AL.EFFECT_COMPRESSOR = 11;
lime_media_openal_AL.EFFECT_EQUALIZER = 12;
lime_media_openal_AL.EFFECTSLOT_EFFECT = 1;
lime_media_openal_AL.EFFECTSLOT_GAIN = 2;
lime_media_openal_AL.EFFECTSLOT_AUXILIARY_SEND_AUTO = 3;
lime_media_openal_AL.LOWPASS_GAIN = 1;
lime_media_openal_AL.LOWPASS_GAINHF = 2;
lime_media_openal_AL.HIGHPASS_GAIN = 1;
lime_media_openal_AL.HIGHPASS_GAINLF = 2;
lime_media_openal_AL.BANDPASS_GAIN = 1;
lime_media_openal_AL.BANDPASS_GAINLF = 2;
lime_media_openal_AL.BANDPASS_GAINHF = 3;
lime_media_openal_AL.FILTER_FIRST_PARAMETER = 0;
lime_media_openal_AL.FILTER_LAST_PARAMETER = 32768;
lime_media_openal_AL.FILTER_TYPE = 32769;
lime_media_openal_AL.FILTER_NULL = 0;
lime_media_openal_AL.FILTER_LOWPASS = 1;
lime_media_openal_AL.FILTER_HIGHPASS = 2;
lime_media_openal_AL.FILTER_BANDPASS = 3;
lime_media_openal_ALC.FALSE = 0;
lime_media_openal_ALC.TRUE = 1;
lime_media_openal_ALC.FREQUENCY = 4103;
lime_media_openal_ALC.REFRESH = 4104;
lime_media_openal_ALC.SYNC = 4105;
lime_media_openal_ALC.MONO_SOURCES = 4112;
lime_media_openal_ALC.STEREO_SOURCES = 4113;
lime_media_openal_ALC.NO_ERROR = 0;
lime_media_openal_ALC.INVALID_DEVICE = 40961;
lime_media_openal_ALC.INVALID_CONTEXT = 40962;
lime_media_openal_ALC.INVALID_ENUM = 40963;
lime_media_openal_ALC.INVALID_VALUE = 40964;
lime_media_openal_ALC.OUT_OF_MEMORY = 40965;
lime_media_openal_ALC.ATTRIBUTES_SIZE = 4098;
lime_media_openal_ALC.ALL_ATTRIBUTES = 4099;
lime_media_openal_ALC.DEFAULT_DEVICE_SPECIFIER = 4100;
lime_media_openal_ALC.DEVICE_SPECIFIER = 4101;
lime_media_openal_ALC.EXTENSIONS = 4102;
lime_media_openal_ALC.ENUMERATE_ALL_EXT = 1;
lime_media_openal_ALC.DEFAULT_ALL_DEVICES_SPECIFIER = 4114;
lime_media_openal_ALC.ALL_DEVICES_SPECIFIER = 4115;
lime_net_curl_CURL.GLOBAL_SSL = 1;
lime_net_curl_CURL.GLOBAL_WIN32 = 2;
lime_net_curl_CURL.GLOBAL_ALL = 3;
lime_net_curl_CURL.GLOBAL_NOTHING = 0;
lime_net_curl_CURL.GLOBAL_DEFAULT = 3;
lime_net_curl_CURL.GLOBAL_ACK_EINTR = 4;
lime_project_ProjectXMLParser.doubleVarMatch = new EReg("\\$\\${(.*?)}","");
lime_project_ProjectXMLParser.varMatch = new EReg("\\${(.*?)}","");
lime_project__$Version_Version_$Impl_$.VERSION = new EReg("^(\\d+)\\.(\\d+)\\.(\\d+)(?:[-]([a-z0-9.-]+))?(?:[+]([a-z0-9.-]+))?$","i");
lime_project__$Version_Version_$Impl_$.SANITIZER = new EReg("[^0-9A-Za-z-]","g");
lime_project__$Version_VersionRule_$Impl_$.VERSION = new EReg("^(>=|<=|[v=><~^])?(\\d+|[x*])(?:\\.(\\d+|[x*]))?(?:\\.(\\d+|[x*]))?(?:[-]([a-z0-9.-]+))?(?:[+]([a-z0-9.-]+))?$","i");
lime_project__$Version_VersionRule_$Impl_$.IS_DIGITS = new EReg("^\\d+$","");
lime_system_Clipboard.onUpdate = new lime_app__$Event_$Void_$Void();
lime_system_JNI.alreadyCreated = new haxe_ds_StringMap();
lime_system_JNI.initialized = false;
lime_system_Sensor.sensorByID = new haxe_ds_IntMap();
lime_system_Sensor.sensors = [];
lime_system_System.__directories = new haxe_ds_IntMap();
lime_text__$TextDirection_TextDirection_$Impl_$.INVALID = 0;
lime_text__$TextDirection_TextDirection_$Impl_$.LEFT_TO_RIGHT = 4;
lime_text__$TextDirection_TextDirection_$Impl_$.RIGHT_TO_LEFT = 5;
lime_text__$TextDirection_TextDirection_$Impl_$.TOP_TO_BOTTOM = 6;
lime_text__$TextDirection_TextDirection_$Impl_$.BOTTOM_TO_TOP = 7;
lime_text__$TextScript_TextScript_$Impl_$.COMMON = "Zyyy";
lime_text__$TextScript_TextScript_$Impl_$.INHERITED = "Zinh";
lime_text__$TextScript_TextScript_$Impl_$.UNKNOWN = "Zzzz";
lime_text__$TextScript_TextScript_$Impl_$.ARABIC = "Arab";
lime_text__$TextScript_TextScript_$Impl_$.ARMENIAN = "Armn";
lime_text__$TextScript_TextScript_$Impl_$.BENGALI = "Beng";
lime_text__$TextScript_TextScript_$Impl_$.CYRILLIC = "Cyrl";
lime_text__$TextScript_TextScript_$Impl_$.DEVANAGARI = "Deva";
lime_text__$TextScript_TextScript_$Impl_$.GEORGIAN = "Geor";
lime_text__$TextScript_TextScript_$Impl_$.GREEK = "Grek";
lime_text__$TextScript_TextScript_$Impl_$.GUJARATI = "Gujr";
lime_text__$TextScript_TextScript_$Impl_$.GURMUKHI = "Guru";
lime_text__$TextScript_TextScript_$Impl_$.HANGUL = "Hang";
lime_text__$TextScript_TextScript_$Impl_$.HAN = "Hani";
lime_text__$TextScript_TextScript_$Impl_$.HEBREW = "Hebr";
lime_text__$TextScript_TextScript_$Impl_$.HIRAGANA = "Hira";
lime_text__$TextScript_TextScript_$Impl_$.KANNADA = "Knda";
lime_text__$TextScript_TextScript_$Impl_$.KATAKANA = "Kana";
lime_text__$TextScript_TextScript_$Impl_$.LAO = "Laoo";
lime_text__$TextScript_TextScript_$Impl_$.LATIN = "Latn";
lime_text__$TextScript_TextScript_$Impl_$.MALAYALAM = "Mlym";
lime_text__$TextScript_TextScript_$Impl_$.ORIYA = "Orya";
lime_text__$TextScript_TextScript_$Impl_$.TAMIL = "Taml";
lime_text__$TextScript_TextScript_$Impl_$.TELUGA = "Telu";
lime_text__$TextScript_TextScript_$Impl_$.THAI = "Thai";
lime_text__$TextScript_TextScript_$Impl_$.TIBETAN = "Tibt";
lime_text__$TextScript_TextScript_$Impl_$.BOPOMOFO = "Bopo";
lime_text__$TextScript_TextScript_$Impl_$.BRAILLE = "Brai";
lime_text__$TextScript_TextScript_$Impl_$.CANADIAN_SYLLABICS = "Cans";
lime_text__$TextScript_TextScript_$Impl_$.CHEROKEE = "Cher";
lime_text__$TextScript_TextScript_$Impl_$.ETHIOPIC = "Ethi";
lime_text__$TextScript_TextScript_$Impl_$.KHMER = "Khmr";
lime_text__$TextScript_TextScript_$Impl_$.MONGOLIAN = "Mong";
lime_text__$TextScript_TextScript_$Impl_$.MYANMAR = "Mymr";
lime_text__$TextScript_TextScript_$Impl_$.OGHAM = "Ogam";
lime_text__$TextScript_TextScript_$Impl_$.RUNIC = "Runr";
lime_text__$TextScript_TextScript_$Impl_$.SINHALA = "Sinh";
lime_text__$TextScript_TextScript_$Impl_$.SYRIAC = "Syrc";
lime_text__$TextScript_TextScript_$Impl_$.THAANA = "Thaa";
lime_text__$TextScript_TextScript_$Impl_$.YI = "Yiii";
lime_text__$TextScript_TextScript_$Impl_$.DESERET = "Dsrt";
lime_text__$TextScript_TextScript_$Impl_$.GOTHIC = "Goth";
lime_text__$TextScript_TextScript_$Impl_$.OLD_ITALIC = "Ital";
lime_text__$TextScript_TextScript_$Impl_$.BUHID = "Buhd";
lime_text__$TextScript_TextScript_$Impl_$.HANUNOO = "Hano";
lime_text__$TextScript_TextScript_$Impl_$.TAGALOG = "Tglg";
lime_text__$TextScript_TextScript_$Impl_$.TAGBANWA = "Tagb";
lime_text__$TextScript_TextScript_$Impl_$.CYPRIOT = "Cprt";
lime_text__$TextScript_TextScript_$Impl_$.LIMBU = "Limb";
lime_text__$TextScript_TextScript_$Impl_$.LINEAR_B = "Linb";
lime_text__$TextScript_TextScript_$Impl_$.OSMANYA = "Osma";
lime_text__$TextScript_TextScript_$Impl_$.SHAVIAN = "Shaw";
lime_text__$TextScript_TextScript_$Impl_$.TAI_LE = "Tale";
lime_text__$TextScript_TextScript_$Impl_$.UGARITIC = "Ugar";
lime_text__$TextScript_TextScript_$Impl_$.BUGINESE = "Bugi";
lime_text__$TextScript_TextScript_$Impl_$.COPTIC = "Copt";
lime_text__$TextScript_TextScript_$Impl_$.GLAGOLITIC = "Glag";
lime_text__$TextScript_TextScript_$Impl_$.KHAROSHTHI = "Khar";
lime_text__$TextScript_TextScript_$Impl_$.NEW_TAI_LUE = "Talu";
lime_text__$TextScript_TextScript_$Impl_$.OLD_PERSIAN = "Xpeo";
lime_text__$TextScript_TextScript_$Impl_$.SYLOTI_NAGRI = "Sylo";
lime_text__$TextScript_TextScript_$Impl_$.TIFINAGH = "Tfng";
lime_text__$TextScript_TextScript_$Impl_$.BALINESE = "Bali";
lime_text__$TextScript_TextScript_$Impl_$.CUNEIFORM = "Xsux";
lime_text__$TextScript_TextScript_$Impl_$.NKO = "Nkoo";
lime_text__$TextScript_TextScript_$Impl_$.PHAGS_PA = "Phag";
lime_text__$TextScript_TextScript_$Impl_$.PHOENICIAN = "Phnx";
lime_text__$TextScript_TextScript_$Impl_$.CARIAN = "Cari";
lime_text__$TextScript_TextScript_$Impl_$.CHAM = "Cham";
lime_text__$TextScript_TextScript_$Impl_$.KAYAH_LI = "Kali";
lime_text__$TextScript_TextScript_$Impl_$.LEPCHA = "Lepc";
lime_text__$TextScript_TextScript_$Impl_$.LYCIAN = "Lyci";
lime_text__$TextScript_TextScript_$Impl_$.LYDIAN = "Lydi";
lime_text__$TextScript_TextScript_$Impl_$.OL_CHIKI = "Olck";
lime_text__$TextScript_TextScript_$Impl_$.REJANG = "Rjng";
lime_text__$TextScript_TextScript_$Impl_$.SAURASHTRA = "Saur";
lime_text__$TextScript_TextScript_$Impl_$.SUNDANESE = "Sund";
lime_text__$TextScript_TextScript_$Impl_$.VAI = "Vaii";
lime_text__$TextScript_TextScript_$Impl_$.AVESTAN = "Avst";
lime_text__$TextScript_TextScript_$Impl_$.BAMUM = "Bamu";
lime_text__$TextScript_TextScript_$Impl_$.EGYPTIAN_HIEROGLYPHS = "Egyp";
lime_text__$TextScript_TextScript_$Impl_$.IMPERIAL_ARAMAIC = "Armi";
lime_text__$TextScript_TextScript_$Impl_$.INSCRIPTIONAL_PAHLAVI = "Phli";
lime_text__$TextScript_TextScript_$Impl_$.INSCRIPTIONAL_PARTHIAN = "Prti";
lime_text__$TextScript_TextScript_$Impl_$.JAVANESE = "Java";
lime_text__$TextScript_TextScript_$Impl_$.KAITHI = "Kthi";
lime_text__$TextScript_TextScript_$Impl_$.LISU = "Lisu";
lime_text__$TextScript_TextScript_$Impl_$.MEETEI_MAYEK = "Mtei";
lime_text__$TextScript_TextScript_$Impl_$.OLD_SOUTH_ARABIAN = "Sarb";
lime_text__$TextScript_TextScript_$Impl_$.OLD_TURKIC = "Orkh";
lime_text__$TextScript_TextScript_$Impl_$.SAMARITAN = "Samr";
lime_text__$TextScript_TextScript_$Impl_$.TAI_THAM = "Lana";
lime_text__$TextScript_TextScript_$Impl_$.TAI_VIET = "Tavt";
lime_text__$TextScript_TextScript_$Impl_$.BATAK = "Batk";
lime_text__$TextScript_TextScript_$Impl_$.BRAHMI = "Brah";
lime_text__$TextScript_TextScript_$Impl_$.MANDAIC = "Mand";
lime_text__$TextScript_TextScript_$Impl_$.CHAKMA = "Cakm";
lime_text__$TextScript_TextScript_$Impl_$.MEROITIC_CURSIVE = "Merc";
lime_text__$TextScript_TextScript_$Impl_$.MEROITIC_HIEROGLYPHS = "Mero";
lime_text__$TextScript_TextScript_$Impl_$.MIAO = "Plrd";
lime_text__$TextScript_TextScript_$Impl_$.SHARADA = "Shrd";
lime_text__$TextScript_TextScript_$Impl_$.SORA_SOMPENG = "Sora";
lime_text__$TextScript_TextScript_$Impl_$.TAKRI = "Takr";
lime_text__$TextScript_TextScript_$Impl_$.BASSA_VAH = "Bass";
lime_text__$TextScript_TextScript_$Impl_$.CAUCASIAN_ALBANIAN = "Aghb";
lime_text__$TextScript_TextScript_$Impl_$.DUPLOYAN = "Dupl";
lime_text__$TextScript_TextScript_$Impl_$.ELBASAN = "Elba";
lime_text__$TextScript_TextScript_$Impl_$.GRANTHA = "Gran";
lime_text__$TextScript_TextScript_$Impl_$.KHOJKI = "Khoj";
lime_text__$TextScript_TextScript_$Impl_$.KHUDAWADI = "Sind";
lime_text__$TextScript_TextScript_$Impl_$.LINEAR_A = "Lina";
lime_text__$TextScript_TextScript_$Impl_$.MAHAJANI = "Mahj";
lime_text__$TextScript_TextScript_$Impl_$.MANICHAEAN = "Mani";
lime_text__$TextScript_TextScript_$Impl_$.MENDE_KIKAKUI = "Mend";
lime_text__$TextScript_TextScript_$Impl_$.MODI = "Modi";
lime_text__$TextScript_TextScript_$Impl_$.MRO = "Mroo";
lime_text__$TextScript_TextScript_$Impl_$.NABATAEAN = "Nbat";
lime_text__$TextScript_TextScript_$Impl_$.OLD_NORTH_ARABIAN = "Narb";
lime_text__$TextScript_TextScript_$Impl_$.OLD_PERMIC = "Perm";
lime_text__$TextScript_TextScript_$Impl_$.PAHAWH_HMONG = "Hmng";
lime_text__$TextScript_TextScript_$Impl_$.PALMYRENE = "Palm";
lime_text__$TextScript_TextScript_$Impl_$.PAU_CIN_HAU = "Pauc";
lime_text__$TextScript_TextScript_$Impl_$.PSALTER_PAHLAVI = "Phlp";
lime_text__$TextScript_TextScript_$Impl_$.SIDDHAM = "Sidd";
lime_text__$TextScript_TextScript_$Impl_$.TIRHUTA = "Tirh";
lime_text__$TextScript_TextScript_$Impl_$.WARANG_CITI = "Wara";
lime_text_unifill_Unicode.minCodePoint = 0;
lime_text_unifill_Unicode.maxCodePoint = 1114111;
lime_text_unifill_Unicode.minHighSurrogate = 55296;
lime_text_unifill_Unicode.maxHighSurrogate = 56319;
lime_text_unifill_Unicode.minLowSurrogate = 56320;
lime_text_unifill_Unicode.maxLowSurrogate = 57343;
lime_tools_helpers_AssetHelper.DEFAULT_LIBRARY_NAME = "default";
lime_tools_helpers_HaxelibHelper.debug = false;
lime_tools_helpers_HaxelibHelper.pathOverrides = new haxe_ds_StringMap();
lime_tools_helpers_HaxelibHelper.workingDirectory = "";
lime_tools_helpers_HaxelibHelper.paths = new haxe_ds_StringMap();
lime_tools_helpers_HaxelibHelper.versions = new haxe_ds_StringMap();
lime_tools_helpers_LogHelper.accentColor = "\x1B[32;1m";
lime_tools_helpers_LogHelper.enableColor = true;
lime_tools_helpers_LogHelper.mute = false;
lime_tools_helpers_LogHelper.resetColor = "\x1B[0m";
lime_tools_helpers_LogHelper.verbose = false;
lime_tools_helpers_LogHelper.colorCodes = new EReg("\\x1b\\[[^m]+m","g");
lime_tools_helpers_LogHelper.sentWarnings = new haxe_ds_StringMap();
lime_tools_helpers_PathHelper.varMatch = new EReg("{{(.*?)}}","");
lime_tools_helpers_ProcessHelper.dryRun = false;
lime_tools_helpers_ProcessHelper._processorCores = 0;
lime_tools_helpers_StringHelper.seedNumber = 0;
lime_tools_helpers_StringHelper.base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
lime_tools_helpers_StringHelper.usedFlatNames = new haxe_ds_StringMap();
lime_tools_helpers_StringHelper.uuidChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
lime_ui_Gamepad.devices = new haxe_ds_IntMap();
lime_ui_Gamepad.onConnect = new lime_app__$Event_$lime_$ui_$Gamepad_$Void();
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.LEFT_X = 0;
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.LEFT_Y = 1;
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.RIGHT_X = 2;
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.RIGHT_Y = 3;
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.TRIGGER_LEFT = 4;
lime_ui__$GamepadAxis_GamepadAxis_$Impl_$.TRIGGER_RIGHT = 5;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.A = 0;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.B = 1;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.X = 2;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.Y = 3;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.BACK = 4;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.GUIDE = 5;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.START = 6;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.LEFT_STICK = 7;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.RIGHT_STICK = 8;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.LEFT_SHOULDER = 9;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.RIGHT_SHOULDER = 10;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.DPAD_UP = 11;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.DPAD_DOWN = 12;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.DPAD_LEFT = 13;
lime_ui__$GamepadButton_GamepadButton_$Impl_$.DPAD_RIGHT = 14;
lime_ui_Joystick.devices = new haxe_ds_IntMap();
lime_ui_Joystick.onConnect = new lime_app__$Event_$lime_$ui_$Joystick_$Void();
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.CENTER = 0;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.DOWN = 4;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.LEFT = 8;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.RIGHT = 2;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.UP = 1;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.DOWN_LEFT = 12;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.DOWN_RIGHT = 6;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.UP_LEFT = 9;
lime_ui__$JoystickHatPosition_JoystickHatPosition_$Impl_$.UP_RIGHT = 3;
lime_ui__$KeyCode_KeyCode_$Impl_$.UNKNOWN = 0;
lime_ui__$KeyCode_KeyCode_$Impl_$.BACKSPACE = 8;
lime_ui__$KeyCode_KeyCode_$Impl_$.TAB = 9;
lime_ui__$KeyCode_KeyCode_$Impl_$.RETURN = 13;
lime_ui__$KeyCode_KeyCode_$Impl_$.ESCAPE = 27;
lime_ui__$KeyCode_KeyCode_$Impl_$.SPACE = 32;
lime_ui__$KeyCode_KeyCode_$Impl_$.EXCLAMATION = 33;
lime_ui__$KeyCode_KeyCode_$Impl_$.QUOTE = 34;
lime_ui__$KeyCode_KeyCode_$Impl_$.HASH = 35;
lime_ui__$KeyCode_KeyCode_$Impl_$.DOLLAR = 36;
lime_ui__$KeyCode_KeyCode_$Impl_$.PERCENT = 37;
lime_ui__$KeyCode_KeyCode_$Impl_$.AMPERSAND = 38;
lime_ui__$KeyCode_KeyCode_$Impl_$.SINGLE_QUOTE = 39;
lime_ui__$KeyCode_KeyCode_$Impl_$.LEFT_PARENTHESIS = 40;
lime_ui__$KeyCode_KeyCode_$Impl_$.RIGHT_PARENTHESIS = 41;
lime_ui__$KeyCode_KeyCode_$Impl_$.ASTERISK = 42;
lime_ui__$KeyCode_KeyCode_$Impl_$.PLUS = 43;
lime_ui__$KeyCode_KeyCode_$Impl_$.COMMA = 44;
lime_ui__$KeyCode_KeyCode_$Impl_$.MINUS = 45;
lime_ui__$KeyCode_KeyCode_$Impl_$.PERIOD = 46;
lime_ui__$KeyCode_KeyCode_$Impl_$.SLASH = 47;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_0 = 48;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_1 = 49;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_2 = 50;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_3 = 51;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_4 = 52;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_5 = 53;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_6 = 54;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_7 = 55;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_8 = 56;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMBER_9 = 57;
lime_ui__$KeyCode_KeyCode_$Impl_$.COLON = 58;
lime_ui__$KeyCode_KeyCode_$Impl_$.SEMICOLON = 59;
lime_ui__$KeyCode_KeyCode_$Impl_$.LESS_THAN = 60;
lime_ui__$KeyCode_KeyCode_$Impl_$.EQUALS = 61;
lime_ui__$KeyCode_KeyCode_$Impl_$.GREATER_THAN = 62;
lime_ui__$KeyCode_KeyCode_$Impl_$.QUESTION = 63;
lime_ui__$KeyCode_KeyCode_$Impl_$.AT = 64;
lime_ui__$KeyCode_KeyCode_$Impl_$.LEFT_BRACKET = 91;
lime_ui__$KeyCode_KeyCode_$Impl_$.BACKSLASH = 92;
lime_ui__$KeyCode_KeyCode_$Impl_$.RIGHT_BRACKET = 93;
lime_ui__$KeyCode_KeyCode_$Impl_$.CARET = 94;
lime_ui__$KeyCode_KeyCode_$Impl_$.UNDERSCORE = 95;
lime_ui__$KeyCode_KeyCode_$Impl_$.GRAVE = 96;
lime_ui__$KeyCode_KeyCode_$Impl_$.A = 97;
lime_ui__$KeyCode_KeyCode_$Impl_$.B = 98;
lime_ui__$KeyCode_KeyCode_$Impl_$.C = 99;
lime_ui__$KeyCode_KeyCode_$Impl_$.D = 100;
lime_ui__$KeyCode_KeyCode_$Impl_$.E = 101;
lime_ui__$KeyCode_KeyCode_$Impl_$.F = 102;
lime_ui__$KeyCode_KeyCode_$Impl_$.G = 103;
lime_ui__$KeyCode_KeyCode_$Impl_$.H = 104;
lime_ui__$KeyCode_KeyCode_$Impl_$.I = 105;
lime_ui__$KeyCode_KeyCode_$Impl_$.J = 106;
lime_ui__$KeyCode_KeyCode_$Impl_$.K = 107;
lime_ui__$KeyCode_KeyCode_$Impl_$.L = 108;
lime_ui__$KeyCode_KeyCode_$Impl_$.M = 109;
lime_ui__$KeyCode_KeyCode_$Impl_$.N = 110;
lime_ui__$KeyCode_KeyCode_$Impl_$.O = 111;
lime_ui__$KeyCode_KeyCode_$Impl_$.P = 112;
lime_ui__$KeyCode_KeyCode_$Impl_$.Q = 113;
lime_ui__$KeyCode_KeyCode_$Impl_$.R = 114;
lime_ui__$KeyCode_KeyCode_$Impl_$.S = 115;
lime_ui__$KeyCode_KeyCode_$Impl_$.T = 116;
lime_ui__$KeyCode_KeyCode_$Impl_$.U = 117;
lime_ui__$KeyCode_KeyCode_$Impl_$.V = 118;
lime_ui__$KeyCode_KeyCode_$Impl_$.W = 119;
lime_ui__$KeyCode_KeyCode_$Impl_$.X = 120;
lime_ui__$KeyCode_KeyCode_$Impl_$.Y = 121;
lime_ui__$KeyCode_KeyCode_$Impl_$.Z = 122;
lime_ui__$KeyCode_KeyCode_$Impl_$.DELETE = 127;
lime_ui__$KeyCode_KeyCode_$Impl_$.CAPS_LOCK = 1073741881;
lime_ui__$KeyCode_KeyCode_$Impl_$.F1 = 1073741882;
lime_ui__$KeyCode_KeyCode_$Impl_$.F2 = 1073741883;
lime_ui__$KeyCode_KeyCode_$Impl_$.F3 = 1073741884;
lime_ui__$KeyCode_KeyCode_$Impl_$.F4 = 1073741885;
lime_ui__$KeyCode_KeyCode_$Impl_$.F5 = 1073741886;
lime_ui__$KeyCode_KeyCode_$Impl_$.F6 = 1073741887;
lime_ui__$KeyCode_KeyCode_$Impl_$.F7 = 1073741888;
lime_ui__$KeyCode_KeyCode_$Impl_$.F8 = 1073741889;
lime_ui__$KeyCode_KeyCode_$Impl_$.F9 = 1073741890;
lime_ui__$KeyCode_KeyCode_$Impl_$.F10 = 1073741891;
lime_ui__$KeyCode_KeyCode_$Impl_$.F11 = 1073741892;
lime_ui__$KeyCode_KeyCode_$Impl_$.F12 = 1073741893;
lime_ui__$KeyCode_KeyCode_$Impl_$.PRINT_SCREEN = 1073741894;
lime_ui__$KeyCode_KeyCode_$Impl_$.SCROLL_LOCK = 1073741895;
lime_ui__$KeyCode_KeyCode_$Impl_$.PAUSE = 1073741896;
lime_ui__$KeyCode_KeyCode_$Impl_$.INSERT = 1073741897;
lime_ui__$KeyCode_KeyCode_$Impl_$.HOME = 1073741898;
lime_ui__$KeyCode_KeyCode_$Impl_$.PAGE_UP = 1073741899;
lime_ui__$KeyCode_KeyCode_$Impl_$.END = 1073741901;
lime_ui__$KeyCode_KeyCode_$Impl_$.PAGE_DOWN = 1073741902;
lime_ui__$KeyCode_KeyCode_$Impl_$.RIGHT = 1073741903;
lime_ui__$KeyCode_KeyCode_$Impl_$.LEFT = 1073741904;
lime_ui__$KeyCode_KeyCode_$Impl_$.DOWN = 1073741905;
lime_ui__$KeyCode_KeyCode_$Impl_$.UP = 1073741906;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUM_LOCK = 1073741907;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_DIVIDE = 1073741908;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MULTIPLY = 1073741909;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MINUS = 1073741910;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_PLUS = 1073741911;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_ENTER = 1073741912;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_1 = 1073741913;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_2 = 1073741914;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_3 = 1073741915;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_4 = 1073741916;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_5 = 1073741917;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_6 = 1073741918;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_7 = 1073741919;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_8 = 1073741920;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_9 = 1073741921;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_0 = 1073741922;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_PERIOD = 1073741923;
lime_ui__$KeyCode_KeyCode_$Impl_$.APPLICATION = 1073741925;
lime_ui__$KeyCode_KeyCode_$Impl_$.POWER = 1073741926;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_EQUALS = 1073741927;
lime_ui__$KeyCode_KeyCode_$Impl_$.F13 = 1073741928;
lime_ui__$KeyCode_KeyCode_$Impl_$.F14 = 1073741929;
lime_ui__$KeyCode_KeyCode_$Impl_$.F15 = 1073741930;
lime_ui__$KeyCode_KeyCode_$Impl_$.F16 = 1073741931;
lime_ui__$KeyCode_KeyCode_$Impl_$.F17 = 1073741932;
lime_ui__$KeyCode_KeyCode_$Impl_$.F18 = 1073741933;
lime_ui__$KeyCode_KeyCode_$Impl_$.F19 = 1073741934;
lime_ui__$KeyCode_KeyCode_$Impl_$.F20 = 1073741935;
lime_ui__$KeyCode_KeyCode_$Impl_$.F21 = 1073741936;
lime_ui__$KeyCode_KeyCode_$Impl_$.F22 = 1073741937;
lime_ui__$KeyCode_KeyCode_$Impl_$.F23 = 1073741938;
lime_ui__$KeyCode_KeyCode_$Impl_$.F24 = 1073741939;
lime_ui__$KeyCode_KeyCode_$Impl_$.EXECUTE = 1073741940;
lime_ui__$KeyCode_KeyCode_$Impl_$.HELP = 1073741941;
lime_ui__$KeyCode_KeyCode_$Impl_$.MENU = 1073741942;
lime_ui__$KeyCode_KeyCode_$Impl_$.SELECT = 1073741943;
lime_ui__$KeyCode_KeyCode_$Impl_$.STOP = 1073741944;
lime_ui__$KeyCode_KeyCode_$Impl_$.AGAIN = 1073741945;
lime_ui__$KeyCode_KeyCode_$Impl_$.UNDO = 1073741946;
lime_ui__$KeyCode_KeyCode_$Impl_$.CUT = 1073741947;
lime_ui__$KeyCode_KeyCode_$Impl_$.COPY = 1073741948;
lime_ui__$KeyCode_KeyCode_$Impl_$.PASTE = 1073741949;
lime_ui__$KeyCode_KeyCode_$Impl_$.FIND = 1073741950;
lime_ui__$KeyCode_KeyCode_$Impl_$.MUTE = 1073741951;
lime_ui__$KeyCode_KeyCode_$Impl_$.VOLUME_UP = 1073741952;
lime_ui__$KeyCode_KeyCode_$Impl_$.VOLUME_DOWN = 1073741953;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_COMMA = 1073741957;
lime_ui__$KeyCode_KeyCode_$Impl_$.ALT_ERASE = 1073741977;
lime_ui__$KeyCode_KeyCode_$Impl_$.SYSTEM_REQUEST = 1073741978;
lime_ui__$KeyCode_KeyCode_$Impl_$.CANCEL = 1073741979;
lime_ui__$KeyCode_KeyCode_$Impl_$.CLEAR = 1073741980;
lime_ui__$KeyCode_KeyCode_$Impl_$.PRIOR = 1073741981;
lime_ui__$KeyCode_KeyCode_$Impl_$.RETURN2 = 1073741982;
lime_ui__$KeyCode_KeyCode_$Impl_$.SEPARATOR = 1073741983;
lime_ui__$KeyCode_KeyCode_$Impl_$.OUT = 1073741984;
lime_ui__$KeyCode_KeyCode_$Impl_$.OPER = 1073741985;
lime_ui__$KeyCode_KeyCode_$Impl_$.CLEAR_AGAIN = 1073741986;
lime_ui__$KeyCode_KeyCode_$Impl_$.CRSEL = 1073741987;
lime_ui__$KeyCode_KeyCode_$Impl_$.EXSEL = 1073741988;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_00 = 1073742000;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_000 = 1073742001;
lime_ui__$KeyCode_KeyCode_$Impl_$.THOUSAND_SEPARATOR = 1073742002;
lime_ui__$KeyCode_KeyCode_$Impl_$.DECIMAL_SEPARATOR = 1073742003;
lime_ui__$KeyCode_KeyCode_$Impl_$.CURRENCY_UNIT = 1073742004;
lime_ui__$KeyCode_KeyCode_$Impl_$.CURRENCY_SUBUNIT = 1073742005;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_LEFT_PARENTHESIS = 1073742006;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_RIGHT_PARENTHESIS = 1073742007;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_LEFT_BRACE = 1073742008;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_RIGHT_BRACE = 1073742009;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_TAB = 1073742010;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_BACKSPACE = 1073742011;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_A = 1073742012;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_B = 1073742013;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_C = 1073742014;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_D = 1073742015;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_E = 1073742016;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_F = 1073742017;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_XOR = 1073742018;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_POWER = 1073742019;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_PERCENT = 1073742020;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_LESS_THAN = 1073742021;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_GREATER_THAN = 1073742022;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_AMPERSAND = 1073742023;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_DOUBLE_AMPERSAND = 1073742024;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_VERTICAL_BAR = 1073742025;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_DOUBLE_VERTICAL_BAR = 1073742026;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_COLON = 1073742027;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_HASH = 1073742028;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_SPACE = 1073742029;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_AT = 1073742030;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_EXCLAMATION = 1073742031;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MEM_STORE = 1073742032;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MEM_RECALL = 1073742033;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MEM_CLEAR = 1073742034;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MEM_ADD = 1073742035;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MEM_SUBTRACT = 1073742036;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MEM_MULTIPLY = 1073742037;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_MEM_DIVIDE = 1073742038;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_PLUS_MINUS = 1073742039;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_CLEAR = 1073742040;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_CLEAR_ENTRY = 1073742041;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_BINARY = 1073742042;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_OCTAL = 1073742043;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_DECIMAL = 1073742044;
lime_ui__$KeyCode_KeyCode_$Impl_$.NUMPAD_HEXADECIMAL = 1073742045;
lime_ui__$KeyCode_KeyCode_$Impl_$.LEFT_CTRL = 1073742048;
lime_ui__$KeyCode_KeyCode_$Impl_$.LEFT_SHIFT = 1073742049;
lime_ui__$KeyCode_KeyCode_$Impl_$.LEFT_ALT = 1073742050;
lime_ui__$KeyCode_KeyCode_$Impl_$.LEFT_META = 1073742051;
lime_ui__$KeyCode_KeyCode_$Impl_$.RIGHT_CTRL = 1073742052;
lime_ui__$KeyCode_KeyCode_$Impl_$.RIGHT_SHIFT = 1073742053;
lime_ui__$KeyCode_KeyCode_$Impl_$.RIGHT_ALT = 1073742054;
lime_ui__$KeyCode_KeyCode_$Impl_$.RIGHT_META = 1073742055;
lime_ui__$KeyCode_KeyCode_$Impl_$.MODE = 1073742081;
lime_ui__$KeyCode_KeyCode_$Impl_$.AUDIO_NEXT = 1073742082;
lime_ui__$KeyCode_KeyCode_$Impl_$.AUDIO_PREVIOUS = 1073742083;
lime_ui__$KeyCode_KeyCode_$Impl_$.AUDIO_STOP = 1073742084;
lime_ui__$KeyCode_KeyCode_$Impl_$.AUDIO_PLAY = 1073742085;
lime_ui__$KeyCode_KeyCode_$Impl_$.AUDIO_MUTE = 1073742086;
lime_ui__$KeyCode_KeyCode_$Impl_$.MEDIA_SELECT = 1073742087;
lime_ui__$KeyCode_KeyCode_$Impl_$.WWW = 1073742088;
lime_ui__$KeyCode_KeyCode_$Impl_$.MAIL = 1073742089;
lime_ui__$KeyCode_KeyCode_$Impl_$.CALCULATOR = 1073742090;
lime_ui__$KeyCode_KeyCode_$Impl_$.COMPUTER = 1073742091;
lime_ui__$KeyCode_KeyCode_$Impl_$.APP_CONTROL_SEARCH = 1073742092;
lime_ui__$KeyCode_KeyCode_$Impl_$.APP_CONTROL_HOME = 1073742093;
lime_ui__$KeyCode_KeyCode_$Impl_$.APP_CONTROL_BACK = 1073742094;
lime_ui__$KeyCode_KeyCode_$Impl_$.APP_CONTROL_FORWARD = 1073742095;
lime_ui__$KeyCode_KeyCode_$Impl_$.APP_CONTROL_STOP = 1073742096;
lime_ui__$KeyCode_KeyCode_$Impl_$.APP_CONTROL_REFRESH = 1073742097;
lime_ui__$KeyCode_KeyCode_$Impl_$.APP_CONTROL_BOOKMARKS = 1073742098;
lime_ui__$KeyCode_KeyCode_$Impl_$.BRIGHTNESS_DOWN = 1073742099;
lime_ui__$KeyCode_KeyCode_$Impl_$.BRIGHTNESS_UP = 1073742100;
lime_ui__$KeyCode_KeyCode_$Impl_$.DISPLAY_SWITCH = 1073742101;
lime_ui__$KeyCode_KeyCode_$Impl_$.BACKLIGHT_TOGGLE = 1073742102;
lime_ui__$KeyCode_KeyCode_$Impl_$.BACKLIGHT_DOWN = 1073742103;
lime_ui__$KeyCode_KeyCode_$Impl_$.BACKLIGHT_UP = 1073742104;
lime_ui__$KeyCode_KeyCode_$Impl_$.EJECT = 1073742105;
lime_ui__$KeyCode_KeyCode_$Impl_$.SLEEP = 1073742106;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.NONE = 0;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.LEFT_SHIFT = 1;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.RIGHT_SHIFT = 2;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.LEFT_CTRL = 64;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.RIGHT_CTRL = 128;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.LEFT_ALT = 256;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.RIGHT_ALT = 512;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.LEFT_META = 1024;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.RIGHT_META = 2048;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.NUM_LOCK = 4096;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.CAPS_LOCK = 8192;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.MODE = 16384;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.CTRL = 192;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.SHIFT = 3;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.ALT = 768;
lime_ui__$KeyModifier_KeyModifier_$Impl_$.META = 3072;
lime_ui__$ScanCode_ScanCode_$Impl_$.UNKNOWN = 0;
lime_ui__$ScanCode_ScanCode_$Impl_$.BACKSPACE = 42;
lime_ui__$ScanCode_ScanCode_$Impl_$.TAB = 43;
lime_ui__$ScanCode_ScanCode_$Impl_$.RETURN = 40;
lime_ui__$ScanCode_ScanCode_$Impl_$.ESCAPE = 41;
lime_ui__$ScanCode_ScanCode_$Impl_$.SPACE = 44;
lime_ui__$ScanCode_ScanCode_$Impl_$.SINGLE_QUOTE = 52;
lime_ui__$ScanCode_ScanCode_$Impl_$.COMMA = 54;
lime_ui__$ScanCode_ScanCode_$Impl_$.MINUS = 45;
lime_ui__$ScanCode_ScanCode_$Impl_$.PERIOD = 55;
lime_ui__$ScanCode_ScanCode_$Impl_$.SLASH = 56;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_0 = 39;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_1 = 30;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_2 = 31;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_3 = 32;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_4 = 33;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_5 = 34;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_6 = 35;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_7 = 36;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_8 = 37;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMBER_9 = 38;
lime_ui__$ScanCode_ScanCode_$Impl_$.SEMICOLON = 51;
lime_ui__$ScanCode_ScanCode_$Impl_$.EQUALS = 46;
lime_ui__$ScanCode_ScanCode_$Impl_$.LEFT_BRACKET = 47;
lime_ui__$ScanCode_ScanCode_$Impl_$.BACKSLASH = 49;
lime_ui__$ScanCode_ScanCode_$Impl_$.RIGHT_BRACKET = 48;
lime_ui__$ScanCode_ScanCode_$Impl_$.GRAVE = 53;
lime_ui__$ScanCode_ScanCode_$Impl_$.A = 4;
lime_ui__$ScanCode_ScanCode_$Impl_$.B = 5;
lime_ui__$ScanCode_ScanCode_$Impl_$.C = 6;
lime_ui__$ScanCode_ScanCode_$Impl_$.D = 7;
lime_ui__$ScanCode_ScanCode_$Impl_$.E = 8;
lime_ui__$ScanCode_ScanCode_$Impl_$.F = 9;
lime_ui__$ScanCode_ScanCode_$Impl_$.G = 10;
lime_ui__$ScanCode_ScanCode_$Impl_$.H = 11;
lime_ui__$ScanCode_ScanCode_$Impl_$.I = 12;
lime_ui__$ScanCode_ScanCode_$Impl_$.J = 13;
lime_ui__$ScanCode_ScanCode_$Impl_$.K = 14;
lime_ui__$ScanCode_ScanCode_$Impl_$.L = 15;
lime_ui__$ScanCode_ScanCode_$Impl_$.M = 16;
lime_ui__$ScanCode_ScanCode_$Impl_$.N = 17;
lime_ui__$ScanCode_ScanCode_$Impl_$.O = 18;
lime_ui__$ScanCode_ScanCode_$Impl_$.P = 19;
lime_ui__$ScanCode_ScanCode_$Impl_$.Q = 20;
lime_ui__$ScanCode_ScanCode_$Impl_$.R = 21;
lime_ui__$ScanCode_ScanCode_$Impl_$.S = 22;
lime_ui__$ScanCode_ScanCode_$Impl_$.T = 23;
lime_ui__$ScanCode_ScanCode_$Impl_$.U = 24;
lime_ui__$ScanCode_ScanCode_$Impl_$.V = 25;
lime_ui__$ScanCode_ScanCode_$Impl_$.W = 26;
lime_ui__$ScanCode_ScanCode_$Impl_$.X = 27;
lime_ui__$ScanCode_ScanCode_$Impl_$.Y = 28;
lime_ui__$ScanCode_ScanCode_$Impl_$.Z = 29;
lime_ui__$ScanCode_ScanCode_$Impl_$.DELETE = 76;
lime_ui__$ScanCode_ScanCode_$Impl_$.CAPS_LOCK = 57;
lime_ui__$ScanCode_ScanCode_$Impl_$.F1 = 58;
lime_ui__$ScanCode_ScanCode_$Impl_$.F2 = 59;
lime_ui__$ScanCode_ScanCode_$Impl_$.F3 = 60;
lime_ui__$ScanCode_ScanCode_$Impl_$.F4 = 61;
lime_ui__$ScanCode_ScanCode_$Impl_$.F5 = 62;
lime_ui__$ScanCode_ScanCode_$Impl_$.F6 = 63;
lime_ui__$ScanCode_ScanCode_$Impl_$.F7 = 64;
lime_ui__$ScanCode_ScanCode_$Impl_$.F8 = 65;
lime_ui__$ScanCode_ScanCode_$Impl_$.F9 = 66;
lime_ui__$ScanCode_ScanCode_$Impl_$.F10 = 67;
lime_ui__$ScanCode_ScanCode_$Impl_$.F11 = 68;
lime_ui__$ScanCode_ScanCode_$Impl_$.F12 = 69;
lime_ui__$ScanCode_ScanCode_$Impl_$.PRINT_SCREEN = 70;
lime_ui__$ScanCode_ScanCode_$Impl_$.SCROLL_LOCK = 71;
lime_ui__$ScanCode_ScanCode_$Impl_$.PAUSE = 72;
lime_ui__$ScanCode_ScanCode_$Impl_$.INSERT = 73;
lime_ui__$ScanCode_ScanCode_$Impl_$.HOME = 74;
lime_ui__$ScanCode_ScanCode_$Impl_$.PAGE_UP = 75;
lime_ui__$ScanCode_ScanCode_$Impl_$.END = 77;
lime_ui__$ScanCode_ScanCode_$Impl_$.PAGE_DOWN = 78;
lime_ui__$ScanCode_ScanCode_$Impl_$.RIGHT = 79;
lime_ui__$ScanCode_ScanCode_$Impl_$.LEFT = 80;
lime_ui__$ScanCode_ScanCode_$Impl_$.DOWN = 81;
lime_ui__$ScanCode_ScanCode_$Impl_$.UP = 82;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUM_LOCK = 83;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_DIVIDE = 84;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MULTIPLY = 85;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MINUS = 86;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_PLUS = 87;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_ENTER = 88;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_1 = 89;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_2 = 90;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_3 = 91;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_4 = 92;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_5 = 93;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_6 = 94;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_7 = 95;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_8 = 96;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_9 = 97;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_0 = 98;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_PERIOD = 99;
lime_ui__$ScanCode_ScanCode_$Impl_$.APPLICATION = 101;
lime_ui__$ScanCode_ScanCode_$Impl_$.POWER = 102;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_EQUALS = 103;
lime_ui__$ScanCode_ScanCode_$Impl_$.F13 = 104;
lime_ui__$ScanCode_ScanCode_$Impl_$.F14 = 105;
lime_ui__$ScanCode_ScanCode_$Impl_$.F15 = 106;
lime_ui__$ScanCode_ScanCode_$Impl_$.F16 = 107;
lime_ui__$ScanCode_ScanCode_$Impl_$.F17 = 108;
lime_ui__$ScanCode_ScanCode_$Impl_$.F18 = 109;
lime_ui__$ScanCode_ScanCode_$Impl_$.F19 = 110;
lime_ui__$ScanCode_ScanCode_$Impl_$.F20 = 111;
lime_ui__$ScanCode_ScanCode_$Impl_$.F21 = 112;
lime_ui__$ScanCode_ScanCode_$Impl_$.F22 = 113;
lime_ui__$ScanCode_ScanCode_$Impl_$.F23 = 114;
lime_ui__$ScanCode_ScanCode_$Impl_$.F24 = 115;
lime_ui__$ScanCode_ScanCode_$Impl_$.EXECUTE = 116;
lime_ui__$ScanCode_ScanCode_$Impl_$.HELP = 117;
lime_ui__$ScanCode_ScanCode_$Impl_$.MENU = 118;
lime_ui__$ScanCode_ScanCode_$Impl_$.SELECT = 119;
lime_ui__$ScanCode_ScanCode_$Impl_$.STOP = 120;
lime_ui__$ScanCode_ScanCode_$Impl_$.AGAIN = 121;
lime_ui__$ScanCode_ScanCode_$Impl_$.UNDO = 122;
lime_ui__$ScanCode_ScanCode_$Impl_$.CUT = 123;
lime_ui__$ScanCode_ScanCode_$Impl_$.COPY = 124;
lime_ui__$ScanCode_ScanCode_$Impl_$.PASTE = 125;
lime_ui__$ScanCode_ScanCode_$Impl_$.FIND = 126;
lime_ui__$ScanCode_ScanCode_$Impl_$.MUTE = 127;
lime_ui__$ScanCode_ScanCode_$Impl_$.VOLUME_UP = 128;
lime_ui__$ScanCode_ScanCode_$Impl_$.VOLUME_DOWN = 129;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_COMMA = 133;
lime_ui__$ScanCode_ScanCode_$Impl_$.ALT_ERASE = 153;
lime_ui__$ScanCode_ScanCode_$Impl_$.SYSTEM_REQUEST = 154;
lime_ui__$ScanCode_ScanCode_$Impl_$.CANCEL = 155;
lime_ui__$ScanCode_ScanCode_$Impl_$.CLEAR = 156;
lime_ui__$ScanCode_ScanCode_$Impl_$.PRIOR = 157;
lime_ui__$ScanCode_ScanCode_$Impl_$.RETURN2 = 158;
lime_ui__$ScanCode_ScanCode_$Impl_$.SEPARATOR = 159;
lime_ui__$ScanCode_ScanCode_$Impl_$.OUT = 160;
lime_ui__$ScanCode_ScanCode_$Impl_$.OPER = 161;
lime_ui__$ScanCode_ScanCode_$Impl_$.CLEAR_AGAIN = 162;
lime_ui__$ScanCode_ScanCode_$Impl_$.CRSEL = 163;
lime_ui__$ScanCode_ScanCode_$Impl_$.EXSEL = 164;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_00 = 176;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_000 = 177;
lime_ui__$ScanCode_ScanCode_$Impl_$.THOUSAND_SEPARATOR = 178;
lime_ui__$ScanCode_ScanCode_$Impl_$.DECIMAL_SEPARATOR = 179;
lime_ui__$ScanCode_ScanCode_$Impl_$.CURRENCY_UNIT = 180;
lime_ui__$ScanCode_ScanCode_$Impl_$.CURRENCY_SUBUNIT = 181;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_LEFT_PARENTHESIS = 182;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_RIGHT_PARENTHESIS = 183;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_LEFT_BRACE = 184;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_RIGHT_BRACE = 185;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_TAB = 186;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_BACKSPACE = 187;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_A = 188;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_B = 189;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_C = 190;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_D = 191;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_E = 192;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_F = 193;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_XOR = 194;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_POWER = 195;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_PERCENT = 196;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_LESS_THAN = 197;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_GREATER_THAN = 198;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_AMPERSAND = 199;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_DOUBLE_AMPERSAND = 200;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_VERTICAL_BAR = 201;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_DOUBLE_VERTICAL_BAR = 202;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_COLON = 203;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_HASH = 204;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_SPACE = 205;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_AT = 206;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_EXCLAMATION = 207;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MEM_STORE = 208;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MEM_RECALL = 209;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MEM_CLEAR = 210;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MEM_ADD = 211;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MEM_SUBTRACT = 212;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MEM_MULTIPLY = 213;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_MEM_DIVIDE = 214;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_PLUS_MINUS = 215;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_CLEAR = 216;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_CLEAR_ENTRY = 217;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_BINARY = 218;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_OCTAL = 219;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_DECIMAL = 220;
lime_ui__$ScanCode_ScanCode_$Impl_$.NUMPAD_HEXADECIMAL = 221;
lime_ui__$ScanCode_ScanCode_$Impl_$.LEFT_CTRL = 224;
lime_ui__$ScanCode_ScanCode_$Impl_$.LEFT_SHIFT = 225;
lime_ui__$ScanCode_ScanCode_$Impl_$.LEFT_ALT = 226;
lime_ui__$ScanCode_ScanCode_$Impl_$.LEFT_META = 227;
lime_ui__$ScanCode_ScanCode_$Impl_$.RIGHT_CTRL = 228;
lime_ui__$ScanCode_ScanCode_$Impl_$.RIGHT_SHIFT = 229;
lime_ui__$ScanCode_ScanCode_$Impl_$.RIGHT_ALT = 230;
lime_ui__$ScanCode_ScanCode_$Impl_$.RIGHT_META = 231;
lime_ui__$ScanCode_ScanCode_$Impl_$.MODE = 257;
lime_ui__$ScanCode_ScanCode_$Impl_$.AUDIO_NEXT = 258;
lime_ui__$ScanCode_ScanCode_$Impl_$.AUDIO_PREVIOUS = 259;
lime_ui__$ScanCode_ScanCode_$Impl_$.AUDIO_STOP = 260;
lime_ui__$ScanCode_ScanCode_$Impl_$.AUDIO_PLAY = 261;
lime_ui__$ScanCode_ScanCode_$Impl_$.AUDIO_MUTE = 262;
lime_ui__$ScanCode_ScanCode_$Impl_$.MEDIA_SELECT = 263;
lime_ui__$ScanCode_ScanCode_$Impl_$.WWW = 264;
lime_ui__$ScanCode_ScanCode_$Impl_$.MAIL = 265;
lime_ui__$ScanCode_ScanCode_$Impl_$.CALCULATOR = 266;
lime_ui__$ScanCode_ScanCode_$Impl_$.COMPUTER = 267;
lime_ui__$ScanCode_ScanCode_$Impl_$.APP_CONTROL_SEARCH = 268;
lime_ui__$ScanCode_ScanCode_$Impl_$.APP_CONTROL_HOME = 269;
lime_ui__$ScanCode_ScanCode_$Impl_$.APP_CONTROL_BACK = 270;
lime_ui__$ScanCode_ScanCode_$Impl_$.APP_CONTROL_FORWARD = 271;
lime_ui__$ScanCode_ScanCode_$Impl_$.APP_CONTROL_STOP = 272;
lime_ui__$ScanCode_ScanCode_$Impl_$.APP_CONTROL_REFRESH = 273;
lime_ui__$ScanCode_ScanCode_$Impl_$.APP_CONTROL_BOOKMARKS = 274;
lime_ui__$ScanCode_ScanCode_$Impl_$.BRIGHTNESS_DOWN = 275;
lime_ui__$ScanCode_ScanCode_$Impl_$.BRIGHTNESS_UP = 276;
lime_ui__$ScanCode_ScanCode_$Impl_$.DISPLAY_SWITCH = 277;
lime_ui__$ScanCode_ScanCode_$Impl_$.BACKLIGHT_TOGGLE = 278;
lime_ui__$ScanCode_ScanCode_$Impl_$.BACKLIGHT_DOWN = 279;
lime_ui__$ScanCode_ScanCode_$Impl_$.BACKLIGHT_UP = 280;
lime_ui__$ScanCode_ScanCode_$Impl_$.EJECT = 281;
lime_ui__$ScanCode_ScanCode_$Impl_$.SLEEP = 282;
lime_ui_Touch.onCancel = new lime_app__$Event_$lime_$ui_$Touch_$Void();
lime_ui_Touch.onEnd = new lime_app__$Event_$lime_$ui_$Touch_$Void();
lime_ui_Touch.onMove = new lime_app__$Event_$lime_$ui_$Touch_$Void();
lime_ui_Touch.onStart = new lime_app__$Event_$lime_$ui_$Touch_$Void();
lime_utils_Assets.cache = new lime_utils_AssetCache();
lime_utils_Assets.onChange = new lime_app__$Event_$Void_$Void();
lime_utils_Assets.libraries = new haxe_ds_StringMap();
lime_utils_Assets.libraryPaths = new haxe_ds_StringMap();
lime_utils__$Float32Array_Float32Array_$Impl_$.BYTES_PER_ELEMENT = 4;
lime_utils__$Float64Array_Float64Array_$Impl_$.BYTES_PER_ELEMENT = 8;
lime_utils__$Int16Array_Int16Array_$Impl_$.BYTES_PER_ELEMENT = 2;
lime_utils__$Int32Array_Int32Array_$Impl_$.BYTES_PER_ELEMENT = 4;
lime_utils__$Int8Array_Int8Array_$Impl_$.BYTES_PER_ELEMENT = 1;
lime_utils_Log.throwErrors = true;
lime_utils__$Log_LogLevel_$Impl_$.NONE = 0;
lime_utils__$Log_LogLevel_$Impl_$.ERROR = 1;
lime_utils__$Log_LogLevel_$Impl_$.WARN = 2;
lime_utils__$Log_LogLevel_$Impl_$.INFO = 3;
lime_utils__$Log_LogLevel_$Impl_$.DEBUG = 4;
lime_utils__$Log_LogLevel_$Impl_$.VERBOSE = 5;
lime_utils__$UInt16Array_UInt16Array_$Impl_$.BYTES_PER_ELEMENT = 2;
lime_utils__$UInt32Array_UInt32Array_$Impl_$.BYTES_PER_ELEMENT = 4;
lime_utils__$UInt8Array_UInt8Array_$Impl_$.BYTES_PER_ELEMENT = 1;
lime_utils__$UInt8ClampedArray_UInt8ClampedArray_$Impl_$.BYTES_PER_ELEMENT = 1;
openfl_Lib.__lastTimerID = 0;
openfl_Lib.__sentWarnings = new haxe_ds_StringMap();
openfl_Lib.__timers = new haxe_ds_IntMap();
openfl__$internal_Lib.__sentWarnings = new haxe_ds_StringMap();
openfl__$internal_TouchData.__pool = new lime_utils_ObjectPool(function() {
	return new openfl__$internal_TouchData();
},function(data) {
	data.reset();
});
openfl__$internal_renderer_DrawCommandBuffer.empty = new openfl__$internal_renderer_DrawCommandBuffer();
openfl__$internal_renderer_canvas_CanvasGraphics.SIN45 = 0.70710678118654752440084436210485;
openfl__$internal_renderer_canvas_CanvasGraphics.TAN22 = 0.4142135623730950488016887242097;
openfl__$internal_renderer_canvas_CanvasGraphics.fillCommands = new openfl__$internal_renderer_DrawCommandBuffer();
openfl__$internal_renderer_canvas_CanvasGraphics.strokeCommands = new openfl__$internal_renderer_DrawCommandBuffer();
openfl__$internal_renderer_canvas_CanvasRenderer.scale = 1;
openfl__$internal_renderer_dom_DOMTextField.__regexColor = new EReg("color=(\"#([^\"]+)\"|'#([^']+)')","i");
openfl__$internal_renderer_dom_DOMTextField.__regexFace = new EReg("face=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_renderer_dom_DOMTextField.__regexFont = new EReg("<font ([^>]+)>","gi");
openfl__$internal_renderer_dom_DOMTextField.__regexCloseFont = new EReg("</font>","gi");
openfl__$internal_renderer_dom_DOMTextField.__regexSize = new EReg("size=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_renderer_opengl_GLMaskManager.maskShader = new openfl__$internal_renderer_opengl_GLMaskShader();
openfl__$internal_stage3D_AGALConverter.limitedProfile = true;
openfl__$internal_stage3D_Context3DStateCache.FLOATS_PER_REGISTER = 4;
openfl__$internal_stage3D_Context3DStateCache.MAX_NUM_REGISTERS = 1024;
openfl__$internal_stage3D_Context3DStateCache.disableCache = true;
openfl__$internal_stage3D_GLUtils.debug = false;
openfl__$internal_swf_SWFLite.instances = new haxe_ds_StringMap();
openfl__$internal_text_HTMLParser.__regexAlign = new EReg("align=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexBreakTag = new EReg("<br\\s*/?>","gi");
openfl__$internal_text_HTMLParser.__regexBlockIndent = new EReg("blockindent=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexColor = new EReg("color=(\"#([^\"]+)\"|'#([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexEntities = [new EReg("&quot;","g"),new EReg("&apos;","g"),new EReg("&amp;","g"),new EReg("&lt;","g"),new EReg("&gt;","g"),new EReg("&nbsp;","g")];
openfl__$internal_text_HTMLParser.__regexFace = new EReg("face=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexHTMLTag = new EReg("<.*?>","g");
openfl__$internal_text_HTMLParser.__regexHref = new EReg("href=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexIndent = new EReg(" indent=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexLeading = new EReg("leading=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexLeftMargin = new EReg("leftmargin=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexRightMargin = new EReg("rightmargin=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexSize = new EReg("size=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_HTMLParser.__regexTabStops = new EReg("tabstops=(\"([^\"]+)\"|'([^']+)')","i");
openfl__$internal_text_TextEngine.UTF8_TAB = 9;
openfl__$internal_text_TextEngine.UTF8_ENDLINE = 10;
openfl__$internal_text_TextEngine.UTF8_SPACE = 32;
openfl__$internal_text_TextEngine.UTF8_HYPHEN = 45;
openfl__$internal_text_TextEngine.__defaultFonts = new haxe_ds_StringMap();
openfl__$internal_utils_PerlinNoise.P = [151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180];
openfl_display_BitmapData.__bufferStride = 26;
openfl_display_BitmapData.__tempVector = new lime_math_Vector2();
openfl_display__$BlendMode_BlendMode_$Impl_$.ADD = 0;
openfl_display__$BlendMode_BlendMode_$Impl_$.ALPHA = 1;
openfl_display__$BlendMode_BlendMode_$Impl_$.DARKEN = 2;
openfl_display__$BlendMode_BlendMode_$Impl_$.DIFFERENCE = 3;
openfl_display__$BlendMode_BlendMode_$Impl_$.ERASE = 4;
openfl_display__$BlendMode_BlendMode_$Impl_$.HARDLIGHT = 5;
openfl_display__$BlendMode_BlendMode_$Impl_$.INVERT = 6;
openfl_display__$BlendMode_BlendMode_$Impl_$.LAYER = 7;
openfl_display__$BlendMode_BlendMode_$Impl_$.LIGHTEN = 8;
openfl_display__$BlendMode_BlendMode_$Impl_$.MULTIPLY = 9;
openfl_display__$BlendMode_BlendMode_$Impl_$.NORMAL = 10;
openfl_display__$BlendMode_BlendMode_$Impl_$.OVERLAY = 11;
openfl_display__$BlendMode_BlendMode_$Impl_$.SCREEN = 12;
openfl_display__$BlendMode_BlendMode_$Impl_$.SHADER = 13;
openfl_display__$BlendMode_BlendMode_$Impl_$.SUBTRACT = 14;
openfl_display__$CapsStyle_CapsStyle_$Impl_$.NONE = 0;
openfl_display__$CapsStyle_CapsStyle_$Impl_$.ROUND = 1;
openfl_display__$CapsStyle_CapsStyle_$Impl_$.SQUARE = 2;
openfl_display__$GradientType_GradientType_$Impl_$.LINEAR = 0;
openfl_display__$GradientType_GradientType_$Impl_$.RADIAL = 1;
openfl_display_GraphicsPath.SIN45 = 0.70710678118654752440084436210485;
openfl_display_GraphicsPath.TAN22 = 0.4142135623730950488016887242097;
openfl_display__$GraphicsPathWinding_GraphicsPathWinding_$Impl_$.EVEN_ODD = 0;
openfl_display__$GraphicsPathWinding_GraphicsPathWinding_$Impl_$.NON_ZERO = 1;
openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.LINEAR_RGB = 0;
openfl_display__$InterpolationMethod_InterpolationMethod_$Impl_$.RGB = 1;
openfl_display__$JointStyle_JointStyle_$Impl_$.BEVEL = 0;
openfl_display__$JointStyle_JointStyle_$Impl_$.MITER = 1;
openfl_display__$JointStyle_JointStyle_$Impl_$.ROUND = 2;
openfl_display__$LineScaleMode_LineScaleMode_$Impl_$.HORIZONTAL = 0;
openfl_display__$LineScaleMode_LineScaleMode_$Impl_$.NONE = 1;
openfl_display__$LineScaleMode_LineScaleMode_$Impl_$.NORMAL = 2;
openfl_display__$LineScaleMode_LineScaleMode_$Impl_$.VERTICAL = 3;
openfl_display_LoaderInfo.__rootURL = "";
openfl_display__$PixelSnapping_PixelSnapping_$Impl_$.ALWAYS = 0;
openfl_display__$PixelSnapping_PixelSnapping_$Impl_$.AUTO = 1;
openfl_display__$PixelSnapping_PixelSnapping_$Impl_$.NEVER = 2;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.BOOL = 0;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.BOOL2 = 1;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.BOOL3 = 2;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.BOOL4 = 3;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.FLOAT = 4;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.FLOAT2 = 5;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.FLOAT3 = 6;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.FLOAT4 = 7;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.INT = 8;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.INT2 = 9;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.INT3 = 10;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.INT4 = 11;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX2X2 = 12;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX2X3 = 13;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX2X4 = 14;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX3X2 = 15;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX3X3 = 16;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX3X4 = 17;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX4X2 = 18;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX4X3 = 19;
openfl_display__$ShaderParameterType_ShaderParameterType_$Impl_$.MATRIX4X4 = 20;
openfl_display__$ShaderPrecision_ShaderPrecision_$Impl_$.FAST = 0;
openfl_display__$ShaderPrecision_ShaderPrecision_$Impl_$.FULL = 1;
openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.PAD = 0;
openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.REFLECT = 1;
openfl_display__$SpreadMethod_SpreadMethod_$Impl_$.REPEAT = 2;
openfl_display__$StageAlign_StageAlign_$Impl_$.BOTTOM = 0;
openfl_display__$StageAlign_StageAlign_$Impl_$.BOTTOM_LEFT = 1;
openfl_display__$StageAlign_StageAlign_$Impl_$.BOTTOM_RIGHT = 2;
openfl_display__$StageAlign_StageAlign_$Impl_$.LEFT = 3;
openfl_display__$StageAlign_StageAlign_$Impl_$.RIGHT = 4;
openfl_display__$StageAlign_StageAlign_$Impl_$.TOP = 5;
openfl_display__$StageAlign_StageAlign_$Impl_$.TOP_LEFT = 6;
openfl_display__$StageAlign_StageAlign_$Impl_$.TOP_RIGHT = 7;
openfl_display__$StageDisplayState_StageDisplayState_$Impl_$.FULL_SCREEN = 0;
openfl_display__$StageDisplayState_StageDisplayState_$Impl_$.FULL_SCREEN_INTERACTIVE = 1;
openfl_display__$StageDisplayState_StageDisplayState_$Impl_$.NORMAL = 2;
openfl_display__$StageQuality_StageQuality_$Impl_$.BEST = 0;
openfl_display__$StageQuality_StageQuality_$Impl_$.HIGH = 1;
openfl_display__$StageQuality_StageQuality_$Impl_$.LOW = 2;
openfl_display__$StageQuality_StageQuality_$Impl_$.MEDIUM = 3;
openfl_display__$StageScaleMode_StageScaleMode_$Impl_$.EXACT_FIT = 0;
openfl_display__$StageScaleMode_StageScaleMode_$Impl_$.NO_BORDER = 1;
openfl_display__$StageScaleMode_StageScaleMode_$Impl_$.NO_SCALE = 2;
openfl_display__$StageScaleMode_StageScaleMode_$Impl_$.SHOW_ALL = 3;
openfl_display__$TriangleCulling_TriangleCulling_$Impl_$.NEGATIVE = 0;
openfl_display__$TriangleCulling_TriangleCulling_$Impl_$.NONE = 1;
openfl_display__$TriangleCulling_TriangleCulling_$Impl_$.POSITIVE = 2;
openfl_display3D_Context3D.supportsVideoTexture = false;
openfl_display3D_Context3D.MAX_SAMPLERS = 8;
openfl_display3D_Context3D.MAX_ATTRIBUTES = 16;
openfl_display3D_Context3D.MAX_PROGRAM_REGISTERS = 128;
openfl_display3D_Context3D.TEXTURE_MAX_ANISOTROPY_EXT = 0;
openfl_display3D_Context3D.DEPTH_STENCIL = 0;
openfl_display3D_Context3D.__stateCache = new openfl__$internal_stage3D_Context3DStateCache();
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.DRAW_CALLS = 0;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.COUNT_INDEX_BUFFER = 1;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.COUNT_VERTEX_BUFFER = 2;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.COUNT_TEXTURE = 3;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.COUNT_TEXTURE_COMPRESSED = 4;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.COUNT_PROGRAM = 5;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.MEM_INDEX_BUFFER = 6;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.MEM_VERTEX_BUFFER = 7;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.MEM_TEXTURE = 8;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.MEM_TEXTURE_COMPRESSED = 9;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.MEM_PROGRAM = 10;
openfl_display3D__$Context3D_Context3DTelemetry_$Impl_$.$length = 11;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.DESTINATION_ALPHA = 0;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.DESTINATION_COLOR = 1;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.ONE = 2;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.ONE_MINUS_DESTINATION_ALPHA = 3;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.ONE_MINUS_DESTINATION_COLOR = 4;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.ONE_MINUS_SOURCE_ALPHA = 5;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.ONE_MINUS_SOURCE_COLOR = 6;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.SOURCE_ALPHA = 7;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.SOURCE_COLOR = 8;
openfl_display3D__$Context3DBlendFactor_Context3DBlendFactor_$Impl_$.ZERO = 9;
openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$.DYNAMIC_DRAW = 0;
openfl_display3D__$Context3DBufferUsage_Context3DBufferUsage_$Impl_$.STATIC_DRAW = 1;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.ALWAYS = 0;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.EQUAL = 1;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.GREATER = 2;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.GREATER_EQUAL = 3;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.LESS = 4;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.LESS_EQUAL = 5;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.NEVER = 6;
openfl_display3D__$Context3DCompareMode_Context3DCompareMode_$Impl_$.NOT_EQUAL = 7;
openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$.MIPLINEAR = 0;
openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$.MIPNEAREST = 1;
openfl_display3D__$Context3DMipFilter_Context3DMipFilter_$Impl_$.MIPNONE = 2;
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.BASELINE = 0;
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.BASELINE_CONSTRAINED = 1;
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.BASELINE_EXTENDED = 2;
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.STANDARD = 3;
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.STANDARD_CONSTRAINED = 4;
openfl_display3D__$Context3DProfile_Context3DProfile_$Impl_$.STANDARD_EXTENDED = 5;
openfl_display3D__$Context3DProgramType_Context3DProgramType_$Impl_$.FRAGMENT = 0;
openfl_display3D__$Context3DProgramType_Context3DProgramType_$Impl_$.VERTEX = 1;
openfl_display3D__$Context3DRenderMode_Context3DRenderMode_$Impl_$.AUTO = 0;
openfl_display3D__$Context3DRenderMode_Context3DRenderMode_$Impl_$.SOFTWARE = 1;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.DECREMENT_SATURATE = 0;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.DECREMENT_WRAP = 1;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.INCREMENT_SATURATE = 2;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.INCREMENT_WRAP = 3;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.INVERT = 4;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.KEEP = 5;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.SET = 6;
openfl_display3D__$Context3DStencilAction_Context3DStencilAction_$Impl_$.ZERO = 7;
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.ANISOTROPIC16X = 0;
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.ANISOTROPIC2X = 1;
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.ANISOTROPIC4X = 2;
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.ANISOTROPIC8X = 3;
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.LINEAR = 4;
openfl_display3D__$Context3DTextureFilter_Context3DTextureFilter_$Impl_$.NEAREST = 5;
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.BGR_PACKED = 0;
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.BGRA = 1;
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.BGRA_PACKED = 2;
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.COMPRESSED = 3;
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.COMPRESSED_ALPHA = 4;
openfl_display3D__$Context3DTextureFormat_Context3DTextureFormat_$Impl_$.RGBA_HALF_FLOAT = 5;
openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$.BACK = 0;
openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$.FRONT = 1;
openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$.FRONT_AND_BACK = 2;
openfl_display3D__$Context3DTriangleFace_Context3DTriangleFace_$Impl_$.NONE = 3;
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.BYTES_4 = 0;
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.FLOAT_1 = 1;
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.FLOAT_2 = 2;
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.FLOAT_3 = 3;
openfl_display3D__$Context3DVertexBufferFormat_Context3DVertexBufferFormat_$Impl_$.FLOAT_4 = 4;
openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$.CLAMP = 0;
openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$.CLAMP_U_REPEAT_V = 1;
openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$.REPEAT = 2;
openfl_display3D__$Context3DWrapMode_Context3DWrapMode_$Impl_$.REPEAT_U_CLAMP_V = 3;
openfl_display3D_textures_Texture.__lowMemoryMode = false;
openfl_errors_Error.DEFAULT_TO_STRING = "Error";
openfl_events_ActivityEvent.ACTIVITY = "activity";
openfl_events_TextEvent.LINK = "link";
openfl_events_TextEvent.TEXT_INPUT = "textInput";
openfl_events_ErrorEvent.ERROR = "error";
openfl_events_FocusEvent.FOCUS_IN = "focusIn";
openfl_events_FocusEvent.FOCUS_OUT = "focusOut";
openfl_events_FocusEvent.KEY_FOCUS_CHANGE = "keyFocusChange";
openfl_events_FocusEvent.MOUSE_FOCUS_CHANGE = "mouseFocusChange";
openfl_events_FullScreenEvent.FULL_SCREEN = "fullScreen";
openfl_events_FullScreenEvent.FULL_SCREEN_INTERACTIVE_ACCEPTED = "fullScreenInteractiveAccepted";
openfl_events_GameInputEvent.DEVICE_ADDED = "deviceAdded";
openfl_events_GameInputEvent.DEVICE_REMOVED = "deviceRemoved";
openfl_events_GameInputEvent.DEVICE_UNUSABLE = "deviceUnusable";
openfl_events_HTTPStatusEvent.HTTP_RESPONSE_STATUS = "httpResponseStatus";
openfl_events_HTTPStatusEvent.HTTP_STATUS = "httpStatus";
openfl_events_IOErrorEvent.IO_ERROR = "ioError";
openfl_events_KeyboardEvent.KEY_DOWN = "keyDown";
openfl_events_KeyboardEvent.KEY_UP = "keyUp";
openfl_events_MouseEvent.CLICK = "click";
openfl_events_MouseEvent.DOUBLE_CLICK = "doubleClick";
openfl_events_MouseEvent.MIDDLE_CLICK = "middleClick";
openfl_events_MouseEvent.MIDDLE_MOUSE_DOWN = "middleMouseDown";
openfl_events_MouseEvent.MIDDLE_MOUSE_UP = "middleMouseUp";
openfl_events_MouseEvent.MOUSE_DOWN = "mouseDown";
openfl_events_MouseEvent.MOUSE_MOVE = "mouseMove";
openfl_events_MouseEvent.MOUSE_OUT = "mouseOut";
openfl_events_MouseEvent.MOUSE_OVER = "mouseOver";
openfl_events_MouseEvent.MOUSE_UP = "mouseUp";
openfl_events_MouseEvent.MOUSE_WHEEL = "mouseWheel";
openfl_events_MouseEvent.RELEASE_OUTSIDE = "releaseOutside";
openfl_events_MouseEvent.RIGHT_CLICK = "rightClick";
openfl_events_MouseEvent.RIGHT_MOUSE_DOWN = "rightMouseDown";
openfl_events_MouseEvent.RIGHT_MOUSE_UP = "rightMouseUp";
openfl_events_MouseEvent.ROLL_OUT = "rollOut";
openfl_events_MouseEvent.ROLL_OVER = "rollOver";
openfl_events_NetStatusEvent.NET_STATUS = "netStatus";
openfl_events_ProgressEvent.PROGRESS = "progress";
openfl_events_ProgressEvent.SOCKET_DATA = "socketData";
openfl_events_SecurityErrorEvent.SECURITY_ERROR = "securityError";
openfl_events_TimerEvent.TIMER = "timer";
openfl_events_TimerEvent.TIMER_COMPLETE = "timerComplete";
openfl_events_TouchEvent.TOUCH_BEGIN = "touchBegin";
openfl_events_TouchEvent.TOUCH_END = "touchEnd";
openfl_events_TouchEvent.TOUCH_MOVE = "touchMove";
openfl_events_TouchEvent.TOUCH_OUT = "touchOut";
openfl_events_TouchEvent.TOUCH_OVER = "touchOver";
openfl_events_TouchEvent.TOUCH_ROLL_OUT = "touchRollOut";
openfl_events_TouchEvent.TOUCH_ROLL_OVER = "touchRollOver";
openfl_events_TouchEvent.TOUCH_TAP = "touchTap";
openfl_events_UncaughtErrorEvent.UNCAUGHT_ERROR = "uncaughtError";
openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.FULL = 0;
openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.INNER = 1;
openfl_filters__$BitmapFilterType_BitmapFilterType_$Impl_$.OUTER = 2;
openfl_geom_Matrix.__identity = new openfl_geom_Matrix();
openfl_geom_Matrix.__matrix3 = new lime_math_Matrix3();
openfl_geom_Matrix.__pool = new lime_utils_ObjectPool(function() {
	return new openfl_geom_Matrix();
},function(m) {
	m.identity();
});
openfl_geom__$Orientation3D_Orientation3D_$Impl_$.AXIS_ANGLE = 0;
openfl_geom__$Orientation3D_Orientation3D_$Impl_$.EULER_ANGLES = 1;
openfl_geom__$Orientation3D_Orientation3D_$Impl_$.QUATERNION = 2;
openfl_geom_Point.__pool = new lime_utils_ObjectPool(function() {
	return new openfl_geom_Point();
},function(p) {
	p.setTo(0,0);
});
openfl_geom_Rectangle.__pool = new lime_utils_ObjectPool(function() {
	return new openfl_geom_Rectangle();
},function(r) {
	r.setTo(0,0,0,0);
});
openfl_media_SoundMixer.MAX_ACTIVE_CHANNELS = 32;
openfl_media_SoundMixer.__soundChannels = [];
openfl_media_SoundMixer.__soundTransform = new openfl_media_SoundTransform();
openfl_net_NetConnection.CONNECT_SUCCESS = "NetConnection.Connect.Success";
openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$.BINARY = 0;
openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$.TEXT = 1;
openfl_net__$URLLoaderDataFormat_URLLoaderDataFormat_$Impl_$.VARIABLES = 2;
openfl_net_URLRequestDefaults.followRedirects = true;
openfl_net_URLRequestDefaults.idleTimeout = 0;
openfl_net_URLRequestDefaults.manageCookies = false;
openfl_system_ApplicationDomain.currentDomain = new openfl_system_ApplicationDomain(null);
openfl_system_SecurityDomain.currentDomain = new openfl_system_SecurityDomain();
openfl_text__$AntiAliasType_AntiAliasType_$Impl_$.ADVANCED = 0;
openfl_text__$AntiAliasType_AntiAliasType_$Impl_$.NORMAL = 1;
openfl_text_Font.__fontByName = new haxe_ds_StringMap();
openfl_text_Font.__registeredFonts = [];
openfl_text__$FontStyle_FontStyle_$Impl_$.BOLD = 0;
openfl_text__$FontStyle_FontStyle_$Impl_$.BOLD_ITALIC = 1;
openfl_text__$FontStyle_FontStyle_$Impl_$.ITALIC = 2;
openfl_text__$FontStyle_FontStyle_$Impl_$.REGULAR = 3;
openfl_text__$FontType_FontType_$Impl_$.DEVICE = 0;
openfl_text__$FontType_FontType_$Impl_$.EMBEDDED = 1;
openfl_text__$FontType_FontType_$Impl_$.EMBEDDED_CFF = 2;
openfl_text__$GridFitType_GridFitType_$Impl_$.NONE = 0;
openfl_text__$GridFitType_GridFitType_$Impl_$.PIXEL = 1;
openfl_text__$GridFitType_GridFitType_$Impl_$.SUBPIXEL = 2;
openfl_text_TextField.__missingFontWarning = new haxe_ds_StringMap();
openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$.CENTER = 0;
openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$.LEFT = 1;
openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$.NONE = 2;
openfl_text__$TextFieldAutoSize_TextFieldAutoSize_$Impl_$.RIGHT = 3;
openfl_text__$TextFieldType_TextFieldType_$Impl_$.DYNAMIC = 0;
openfl_text__$TextFieldType_TextFieldType_$Impl_$.INPUT = 1;
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.CENTER = 0;
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.END = 1;
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.JUSTIFY = 2;
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.LEFT = 3;
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.RIGHT = 4;
openfl_text__$TextFormatAlign_TextFormatAlign_$Impl_$.START = 5;
openfl_ui_GameInput.isSupported = true;
openfl_ui_GameInput.numDevices = 0;
openfl_ui_GameInput.__deviceList = [];
openfl_ui_GameInput.__devices = new haxe_ds_ObjectMap();
openfl_ui_GameInput.__instances = [];
openfl_ui_GameInputDevice.MAX_BUFFER_SIZE = 32000;
openfl_ui_Keyboard.NUMBER_0 = 48;
openfl_ui_Keyboard.NUMBER_1 = 49;
openfl_ui_Keyboard.NUMBER_2 = 50;
openfl_ui_Keyboard.NUMBER_3 = 51;
openfl_ui_Keyboard.NUMBER_4 = 52;
openfl_ui_Keyboard.NUMBER_5 = 53;
openfl_ui_Keyboard.NUMBER_6 = 54;
openfl_ui_Keyboard.NUMBER_7 = 55;
openfl_ui_Keyboard.NUMBER_8 = 56;
openfl_ui_Keyboard.NUMBER_9 = 57;
openfl_ui_Keyboard.A = 65;
openfl_ui_Keyboard.B = 66;
openfl_ui_Keyboard.C = 67;
openfl_ui_Keyboard.D = 68;
openfl_ui_Keyboard.E = 69;
openfl_ui_Keyboard.F = 70;
openfl_ui_Keyboard.G = 71;
openfl_ui_Keyboard.H = 72;
openfl_ui_Keyboard.I = 73;
openfl_ui_Keyboard.J = 74;
openfl_ui_Keyboard.K = 75;
openfl_ui_Keyboard.L = 76;
openfl_ui_Keyboard.M = 77;
openfl_ui_Keyboard.N = 78;
openfl_ui_Keyboard.O = 79;
openfl_ui_Keyboard.P = 80;
openfl_ui_Keyboard.Q = 81;
openfl_ui_Keyboard.R = 82;
openfl_ui_Keyboard.S = 83;
openfl_ui_Keyboard.T = 84;
openfl_ui_Keyboard.U = 85;
openfl_ui_Keyboard.V = 86;
openfl_ui_Keyboard.W = 87;
openfl_ui_Keyboard.X = 88;
openfl_ui_Keyboard.Y = 89;
openfl_ui_Keyboard.Z = 90;
openfl_ui_Keyboard.NUMPAD_0 = 96;
openfl_ui_Keyboard.NUMPAD_1 = 97;
openfl_ui_Keyboard.NUMPAD_2 = 98;
openfl_ui_Keyboard.NUMPAD_3 = 99;
openfl_ui_Keyboard.NUMPAD_4 = 100;
openfl_ui_Keyboard.NUMPAD_5 = 101;
openfl_ui_Keyboard.NUMPAD_6 = 102;
openfl_ui_Keyboard.NUMPAD_7 = 103;
openfl_ui_Keyboard.NUMPAD_8 = 104;
openfl_ui_Keyboard.NUMPAD_9 = 105;
openfl_ui_Keyboard.NUMPAD_MULTIPLY = 106;
openfl_ui_Keyboard.NUMPAD_ADD = 107;
openfl_ui_Keyboard.NUMPAD_ENTER = 108;
openfl_ui_Keyboard.NUMPAD_SUBTRACT = 109;
openfl_ui_Keyboard.NUMPAD_DECIMAL = 110;
openfl_ui_Keyboard.NUMPAD_DIVIDE = 111;
openfl_ui_Keyboard.F1 = 112;
openfl_ui_Keyboard.F2 = 113;
openfl_ui_Keyboard.F3 = 114;
openfl_ui_Keyboard.F4 = 115;
openfl_ui_Keyboard.F5 = 116;
openfl_ui_Keyboard.F6 = 117;
openfl_ui_Keyboard.F7 = 118;
openfl_ui_Keyboard.F8 = 119;
openfl_ui_Keyboard.F9 = 120;
openfl_ui_Keyboard.F10 = 121;
openfl_ui_Keyboard.F11 = 122;
openfl_ui_Keyboard.F12 = 123;
openfl_ui_Keyboard.F13 = 124;
openfl_ui_Keyboard.F14 = 125;
openfl_ui_Keyboard.F15 = 126;
openfl_ui_Keyboard.BACKSPACE = 8;
openfl_ui_Keyboard.TAB = 9;
openfl_ui_Keyboard.ALTERNATE = 18;
openfl_ui_Keyboard.ENTER = 13;
openfl_ui_Keyboard.COMMAND = 15;
openfl_ui_Keyboard.SHIFT = 16;
openfl_ui_Keyboard.CONTROL = 17;
openfl_ui_Keyboard.BREAK = 19;
openfl_ui_Keyboard.CAPS_LOCK = 20;
openfl_ui_Keyboard.NUMPAD = 21;
openfl_ui_Keyboard.ESCAPE = 27;
openfl_ui_Keyboard.SPACE = 32;
openfl_ui_Keyboard.PAGE_UP = 33;
openfl_ui_Keyboard.PAGE_DOWN = 34;
openfl_ui_Keyboard.END = 35;
openfl_ui_Keyboard.HOME = 36;
openfl_ui_Keyboard.LEFT = 37;
openfl_ui_Keyboard.RIGHT = 39;
openfl_ui_Keyboard.UP = 38;
openfl_ui_Keyboard.DOWN = 40;
openfl_ui_Keyboard.INSERT = 45;
openfl_ui_Keyboard.DELETE = 46;
openfl_ui_Keyboard.NUMLOCK = 144;
openfl_ui_Keyboard.SEMICOLON = 186;
openfl_ui_Keyboard.EQUAL = 187;
openfl_ui_Keyboard.COMMA = 188;
openfl_ui_Keyboard.MINUS = 189;
openfl_ui_Keyboard.PERIOD = 190;
openfl_ui_Keyboard.SLASH = 191;
openfl_ui_Keyboard.BACKQUOTE = 192;
openfl_ui_Keyboard.LEFTBRACKET = 219;
openfl_ui_Keyboard.BACKSLASH = 220;
openfl_ui_Keyboard.RIGHTBRACKET = 221;
openfl_ui_Keyboard.QUOTE = 222;
openfl_ui_Mouse.supportsCursor = true;
openfl_ui_Mouse.supportsNativeCursor = true;
openfl_ui_Mouse.__cursor = "auto";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.ARROW = "arrow";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.AUTO = "auto";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.BUTTON = "button";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.HAND = "hand";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.IBEAM = "ibeam";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__CROSSHAIR = "crosshair";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__CUSTOM = "custom";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__MOVE = "move";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__RESIZE_NESW = "resize_nesw";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__RESIZE_NS = "resize_ns";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__RESIZE_NWSE = "resize_nwse";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__RESIZE_WE = "resize_we";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__WAIT = "wait";
openfl_ui__$MouseCursor_MouseCursor_$Impl_$.__WAIT_ARROW = "waitarrow";
openfl_utils_Assets.cache = new openfl_utils_AssetCache();
openfl_utils_Assets.dispatcher = new openfl_events_EventDispatcher();
openfl_utils__$ByteArray_ByteArray_$Impl_$.__bytePointer = (function($this) {
	var $r;
	var this1 = new lime_utils_BytePointerData(null,0);
	$r = this1;
	return $r;
}(this));
openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.DEFLATE = 0;
openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.LZMA = 1;
openfl_utils__$CompressionAlgorithm_CompressionAlgorithm_$Impl_$.ZLIB = 2;
openfl_utils__$Endian_Endian_$Impl_$.BIG_ENDIAN = 0;
openfl_utils__$Endian_Endian_$Impl_$.LITTLE_ENDIAN = 1;
sys_io_File.copyBuf = new js_node_buffer_Buffer(65536);
Tools.main();
})(typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this);
