$estr = function() { return js.Boot.__string_rec(this,''); }
xpath = {}
xpath.tokenizer = {}
xpath.tokenizer.Tokenizer = function() { }
xpath.tokenizer.Tokenizer.__name__ = ["xpath","tokenizer","Tokenizer"];
xpath.tokenizer.Tokenizer.prototype.tokenize = null;
xpath.tokenizer.Tokenizer.prototype.__class__ = xpath.tokenizer.Tokenizer;
xpath.tokenizer.token = {}
xpath.tokenizer.token.TokenTokenizer = function() { }
xpath.tokenizer.token.TokenTokenizer.__name__ = ["xpath","tokenizer","token","TokenTokenizer"];
xpath.tokenizer.token.TokenTokenizer.prototype.countWhitespace = function(query,start) {
	$s.push("xpath.tokenizer.token.TokenTokenizer::countWhitespace");
	var $spos = $s.length;
	var i = -1;
	var $char;
	do {
		$char = query.charAt(start + ++i);
	} while($char == " " || $char == "\t" || $char == "\r" || $char == "\n");
	{
		$s.pop();
		return i;
	}
	$s.pop();
}
xpath.tokenizer.token.TokenTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.TokenTokenizer::tokenize");
	var $spos = $s.length;
	throw new xpath.tokenizer.TokenizerError("xpath.tokenizer.token.TokenTokenizer.tokenize() must " + "be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.tokenizer.token.TokenTokenizer.prototype.__class__ = xpath.tokenizer.token.TokenTokenizer;
xpath.tokenizer.token.TokenTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.tokenizer.token.EndXPathTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.EndXPathTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.EndXPathTokenizer.__name__ = ["xpath","tokenizer","token","EndXPathTokenizer"];
xpath.tokenizer.token.EndXPathTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.EndXPathTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.EndXPathTokenizer.instance = null;
xpath.tokenizer.token.EndXPathTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.EndXPathTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.EndXPathTokenizer.instance == null) xpath.tokenizer.token.EndXPathTokenizer.instance = new xpath.tokenizer.token.EndXPathTokenizer();
	{
		var $tmp = xpath.tokenizer.token.EndXPathTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.EndXPathTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.EndXPathTokenizer::tokenize");
	var $spos = $s.length;
	if(input.query.length == input.position) {
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.EndXPathToken();
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		{
			var $tmp = input.getOutput(result);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "EndXPath", position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.EndXPathTokenizer.prototype.__class__ = xpath.tokenizer.token.EndXPathTokenizer;
sandy = {}
sandy.materials = {}
sandy.materials.attributes = {}
sandy.materials.attributes.IAttributes = function() { }
sandy.materials.attributes.IAttributes.__name__ = ["sandy","materials","attributes","IAttributes"];
sandy.materials.attributes.IAttributes.prototype.__getFlags = null;
sandy.materials.attributes.IAttributes.prototype.begin = null;
sandy.materials.attributes.IAttributes.prototype.draw = null;
sandy.materials.attributes.IAttributes.prototype.drawOnSprite = null;
sandy.materials.attributes.IAttributes.prototype.finish = null;
sandy.materials.attributes.IAttributes.prototype.flags = null;
sandy.materials.attributes.IAttributes.prototype.init = null;
sandy.materials.attributes.IAttributes.prototype.unlink = null;
sandy.materials.attributes.IAttributes.prototype.__class__ = sandy.materials.attributes.IAttributes;
sandy.materials.attributes.AAttributes = function(p) { if( p === $_ ) return; {
	$s.push("sandy.materials.attributes.AAttributes::new");
	var $spos = $s.length;
	this.m_nFlags = 0;
	$s.pop();
}}
sandy.materials.attributes.AAttributes.__name__ = ["sandy","materials","attributes","AAttributes"];
sandy.materials.attributes.AAttributes.prototype.__getFlags = function() {
	$s.push("sandy.materials.attributes.AAttributes::__getFlags");
	var $spos = $s.length;
	{
		var $tmp = this.m_nFlags;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.AAttributes.prototype.begin = function(p_oScene) {
	$s.push("sandy.materials.attributes.AAttributes::begin");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.AAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.AAttributes::draw");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.AAttributes.prototype.drawOnSprite = function(p_oSprite,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.AAttributes::drawOnSprite");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.AAttributes.prototype.finish = function(p_oScene) {
	$s.push("sandy.materials.attributes.AAttributes::finish");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.AAttributes.prototype.flags = null;
sandy.materials.attributes.AAttributes.prototype.init = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.AAttributes::init");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.AAttributes.prototype.m_nFlags = null;
sandy.materials.attributes.AAttributes.prototype.unlink = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.AAttributes::unlink");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.AAttributes.prototype.__class__ = sandy.materials.attributes.AAttributes;
sandy.materials.attributes.AAttributes.__interfaces__ = [sandy.materials.attributes.IAttributes];
sandy.core = {}
sandy.core.data = {}
sandy.core.data.Quaternion = function() { }
sandy.core.data.Quaternion.__name__ = ["sandy","core","data","Quaternion"];
sandy.core.data.Quaternion.prototype.Quaternion = function(px,py,pz,pw) {
	$s.push("sandy.core.data.Quaternion::Quaternion");
	var $spos = $s.length;
	if(px == null) px = 0;
	if(py == null) px = 0;
	if(pz == null) px = 0;
	if(pw == null) pw = 0;
	this.x = px;
	this.y = py;
	this.z = pz;
	this.w = pw;
	$s.pop();
}
sandy.core.data.Quaternion.prototype.toString = function() {
	$s.push("sandy.core.data.Quaternion::toString");
	var $spos = $s.length;
	var s = "sandy.core.data.Quaternion";
	s += "(x:" + this.x + " , y:" + this.y + ", z:" + this.z + " w:" + this.w + ")";
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
sandy.core.data.Quaternion.prototype.w = null;
sandy.core.data.Quaternion.prototype.x = null;
sandy.core.data.Quaternion.prototype.y = null;
sandy.core.data.Quaternion.prototype.z = null;
sandy.core.data.Quaternion.prototype.__class__ = sandy.core.data.Quaternion;
canvas = {}
canvas.display = {}
canvas.display.InterpolationMethod = { __ename__ : ["canvas","display","InterpolationMethod"], __constructs__ : ["RGB","LINEAR_RGB"] }
canvas.display.InterpolationMethod.LINEAR_RGB = ["LINEAR_RGB",1];
canvas.display.InterpolationMethod.LINEAR_RGB.toString = $estr;
canvas.display.InterpolationMethod.LINEAR_RGB.__enum__ = canvas.display.InterpolationMethod;
canvas.display.InterpolationMethod.RGB = ["RGB",0];
canvas.display.InterpolationMethod.RGB.toString = $estr;
canvas.display.InterpolationMethod.RGB.__enum__ = canvas.display.InterpolationMethod;
sandy.commands = {}
sandy.commands.Command = function() { }
sandy.commands.Command.__name__ = ["sandy","commands","Command"];
sandy.commands.Command.prototype.execute = null;
sandy.commands.Command.prototype.__class__ = sandy.commands.Command;
sandy.core.interaction = {}
sandy.core.interaction.TextLink = function(p) { if( p === $_ ) return; {
	$s.push("sandy.core.interaction.TextLink::new");
	var $spos = $s.length;
	this.x = 0;
	this.y = 0;
	this.height = 0;
	this.width = 0;
	$s.pop();
}}
sandy.core.interaction.TextLink.__name__ = ["sandy","core","interaction","TextLink"];
sandy.core.interaction.TextLink.getTextLinks = function(t,force) {
	$s.push("sandy.core.interaction.TextLink::getTextLinks");
	var $spos = $s.length;
	{
		var $tmp = [];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__getCloseIndex = function() {
	$s.push("sandy.core.interaction.TextLink::__getCloseIndex");
	var $spos = $s.length;
	{
		var $tmp = this.__iCloseIndex;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__getHref = function() {
	$s.push("sandy.core.interaction.TextLink::__getHref");
	var $spos = $s.length;
	{
		var $tmp = this.__sHRef;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__getOpenIndex = function() {
	$s.push("sandy.core.interaction.TextLink::__getOpenIndex");
	var $spos = $s.length;
	{
		var $tmp = this.__iOpenIndex;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__getOwner = function() {
	$s.push("sandy.core.interaction.TextLink::__getOwner");
	var $spos = $s.length;
	{
		var $tmp = this.__tfOwner;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__getTarget = function() {
	$s.push("sandy.core.interaction.TextLink::__getTarget");
	var $spos = $s.length;
	{
		var $tmp = this.__sTarget;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__iCloseIndex = null;
sandy.core.interaction.TextLink.prototype.__iOpenIndex = null;
sandy.core.interaction.TextLink.prototype.__rBounds = null;
sandy.core.interaction.TextLink.prototype.__sHRef = null;
sandy.core.interaction.TextLink.prototype.__sTarget = null;
sandy.core.interaction.TextLink.prototype.__setCloseIndex = function(i) {
	$s.push("sandy.core.interaction.TextLink::__setCloseIndex");
	var $spos = $s.length;
	this.__iCloseIndex = i;
	{
		$s.pop();
		return i;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__setHref = function(s) {
	$s.push("sandy.core.interaction.TextLink::__setHref");
	var $spos = $s.length;
	this.__sHRef = s;
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__setOpenIndex = function(i) {
	$s.push("sandy.core.interaction.TextLink::__setOpenIndex");
	var $spos = $s.length;
	this.__iOpenIndex = i;
	{
		$s.pop();
		return i;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__setOwner = function(tf) {
	$s.push("sandy.core.interaction.TextLink::__setOwner");
	var $spos = $s.length;
	this.__tfOwner = tf;
	{
		$s.pop();
		return tf;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__setTarget = function(s) {
	$s.push("sandy.core.interaction.TextLink::__setTarget");
	var $spos = $s.length;
	this.__sTarget = s;
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.__tfOwner = null;
sandy.core.interaction.TextLink.prototype._init = function() {
	$s.push("sandy.core.interaction.TextLink::_init");
	var $spos = $s.length;
	{
		var _g1 = 0, _g = (this.__iCloseIndex - this.__iOpenIndex);
		while(_g1 < _g) {
			var j = _g1++;
			var rectB = this.__tfOwner.getCharBoundaries(this.__getOpenIndex() + j);
			if(j == 0) {
				this.x = rectB.x;
				this.y = rectB.y;
			}
			this.width += rectB.width;
			this.height = (this.height < rectB.height?rectB.height:this.height);
		}
	}
	this.__rBounds = new canvas.geom.Rectangle();
	this.__rBounds.x = this.x;
	this.__rBounds.y = this.y;
	this.__rBounds.height = this.height;
	this.__rBounds.width = this.width;
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.closeIndex = null;
sandy.core.interaction.TextLink.prototype.getBounds = function() {
	$s.push("sandy.core.interaction.TextLink::getBounds");
	var $spos = $s.length;
	{
		var $tmp = this.__rBounds;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.TextLink.prototype.height = null;
sandy.core.interaction.TextLink.prototype.href = null;
sandy.core.interaction.TextLink.prototype.openIndex = null;
sandy.core.interaction.TextLink.prototype.owner = null;
sandy.core.interaction.TextLink.prototype.target = null;
sandy.core.interaction.TextLink.prototype.width = null;
sandy.core.interaction.TextLink.prototype.x = null;
sandy.core.interaction.TextLink.prototype.y = null;
sandy.core.interaction.TextLink.prototype.__class__ = sandy.core.interaction.TextLink;
IntHash = function(p) { if( p === $_ ) return; {
	$s.push("IntHash::new");
	var $spos = $s.length;
	this.h = {}
	if(this.h.__proto__ != null) {
		this.h.__proto__ = null;
		delete(this.h.__proto__);
	}
	else null;
	$s.pop();
}}
IntHash.__name__ = ["IntHash"];
IntHash.prototype.exists = function(key) {
	$s.push("IntHash::exists");
	var $spos = $s.length;
	{
		var $tmp = this.h[key] != null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
IntHash.prototype.get = function(key) {
	$s.push("IntHash::get");
	var $spos = $s.length;
	{
		var $tmp = this.h[key];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
IntHash.prototype.h = null;
IntHash.prototype.iterator = function() {
	$s.push("IntHash::iterator");
	var $spos = $s.length;
	{
		var $tmp = { ref : this.h, it : this.keys(), hasNext : function() {
			$s.push("IntHash::iterator@186");
			var $spos = $s.length;
			{
				var $tmp = this.it.hasNext();
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("IntHash::iterator@187");
			var $spos = $s.length;
			var i = this.it.next();
			{
				var $tmp = this.ref[i];
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
IntHash.prototype.keys = function() {
	$s.push("IntHash::keys");
	var $spos = $s.length;
	var a = new Array();
	
			for( x in this.h )
				a.push(x);
		;
	{
		var $tmp = a.iterator();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
IntHash.prototype.remove = function(key) {
	$s.push("IntHash::remove");
	var $spos = $s.length;
	if(this.h[key] == null) {
		$s.pop();
		return false;
	}
	delete(this.h[key]);
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
IntHash.prototype.set = function(key,value) {
	$s.push("IntHash::set");
	var $spos = $s.length;
	this.h[key] = value;
	$s.pop();
}
IntHash.prototype.toString = function() {
	$s.push("IntHash::toString");
	var $spos = $s.length;
	var s = new StringBuf();
	s.b += "{";
	var it = this.keys();
	{ var $it0 = it;
	while( $it0.hasNext() ) { var i = $it0.next();
	{
		s.b += i;
		s.b += " => ";
		s.b += Std.string(this.get(i));
		if(it.hasNext()) s.b += ", ";
	}
	}}
	s.b += "}";
	{
		var $tmp = s.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
IntHash.prototype.__class__ = IntHash;
sandy.core.data.BezierPath = function() { }
sandy.core.data.BezierPath.__name__ = ["sandy","core","data","BezierPath"];
sandy.core.data.BezierPath.prototype.BezierPath = function() {
	$s.push("sandy.core.data.BezierPath::BezierPath");
	var $spos = $s.length;
	this._aContainer = new Array();
	this._aSegments = new Array();
	this._nCrtSegment = 0;
	this._bBoucle = false;
	this._bCompiled = false;
	$s.pop();
}
sandy.core.data.BezierPath.prototype._aContainer = null;
sandy.core.data.BezierPath.prototype._aSegments = null;
sandy.core.data.BezierPath.prototype._bBoucle = null;
sandy.core.data.BezierPath.prototype._bCompiled = null;
sandy.core.data.BezierPath.prototype._nCrtSegment = null;
sandy.core.data.BezierPath.prototype._nNbPoints = null;
sandy.core.data.BezierPath.prototype._nNbSegments = null;
sandy.core.data.BezierPath.prototype._nRatio = null;
sandy.core.data.BezierPath.prototype.addPoint = function(p_nX,p_nY,p_nZ) {
	$s.push("sandy.core.data.BezierPath::addPoint");
	var $spos = $s.length;
	if(this._bCompiled) {
		{
			$s.pop();
			return false;
		}
	}
	else {
		this._aContainer.push(new sandy.core.data.Vector(p_nX,p_nY,p_nZ));
		{
			$s.pop();
			return true;
		}
	}
	$s.pop();
}
sandy.core.data.BezierPath.prototype.compile = function() {
	$s.push("sandy.core.data.BezierPath::compile");
	var $spos = $s.length;
	this._nNbPoints = this._aContainer.length;
	if(this._nNbPoints >= 3 && this._nNbPoints % 2 == 1) {
		haxe.Log.trace("sandy.core.data.BezierPath ERROR: Number of points incompatible",{ fileName : "BezierPath.hx", lineNumber : 129, className : "sandy.core.data.BezierPath", methodName : "compile"});
		{
			$s.pop();
			return;
		}
	}
	this._bCompiled = true;
	this._nNbSegments = 0;
	var a, b, c;
	var i = 0;
	while(i <= this._nNbPoints - 2) {
		a = this._aContainer[i];
		b = this._aContainer[i + 1];
		c = this._aContainer[i + 2];
		this._aSegments.push([a,b,c]);
		i += 2;
	}
	if(this._bBoucle) {
		this._aSegments.push([this._aContainer[this._nNbPoints],sandy.util.BezierUtil.getQuadControlPoints(this._aContainer[this._nNbPoints],this._aContainer[0],this._aContainer[1]),this._aContainer[0]]);
	}
	this._nNbSegments = this._aSegments.length;
	this._nRatio = 1 / this._nNbSegments;
	$s.pop();
}
sandy.core.data.BezierPath.prototype.getNumberOfSegments = function() {
	$s.push("sandy.core.data.BezierPath::getNumberOfSegments");
	var $spos = $s.length;
	{
		var $tmp = this._nNbSegments;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.BezierPath.prototype.getPosition = function(p_nP) {
	$s.push("sandy.core.data.BezierPath::getPosition");
	var $spos = $s.length;
	var id = Math.floor(p_nP / this._nRatio);
	if(id == this._nNbSegments) {
		id--;
		p_nP = 1.0;
	}
	var seg = this.getSegment(id);
	{
		var $tmp = sandy.util.BezierUtil.getPointsOnQuadCurve((p_nP - id * this._nRatio) / this._nRatio,seg[0],seg[1],seg[2]);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.BezierPath.prototype.getSegment = function(p_nId) {
	$s.push("sandy.core.data.BezierPath::getSegment");
	var $spos = $s.length;
	if(p_nId >= 0 && p_nId < this._nNbSegments) {
		{
			var $tmp = this._aSegments[p_nId];
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			$s.pop();
			return null;
		}
	}
	$s.pop();
}
sandy.core.data.BezierPath.prototype.toString = function() {
	$s.push("sandy.core.data.BezierPath::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.core.data.BezierPath";
	}
	$s.pop();
}
sandy.core.data.BezierPath.prototype.__class__ = sandy.core.data.BezierPath;
neash = {}
neash.text = {}
neash.text.FontInstanceMode = { __ename__ : ["neash","text","FontInstanceMode"], __constructs__ : ["fimSolid"] }
neash.text.FontInstanceMode.fimSolid = ["fimSolid",0];
neash.text.FontInstanceMode.fimSolid.toString = $estr;
neash.text.FontInstanceMode.fimSolid.__enum__ = neash.text.FontInstanceMode;
Hash = function(p) { if( p === $_ ) return; {
	$s.push("Hash::new");
	var $spos = $s.length;
	this.h = {}
	if(this.h.__proto__ != null) {
		this.h.__proto__ = null;
		delete(this.h.__proto__);
	}
	else null;
	$s.pop();
}}
Hash.__name__ = ["Hash"];
Hash.prototype.exists = function(key) {
	$s.push("Hash::exists");
	var $spos = $s.length;
	try {
		key = "$" + key;
		{
			var $tmp = this.hasOwnProperty.call(this.h,key);
			$s.pop();
			return $tmp;
		}
	}
	catch( $e1 ) {
		{
			var e = $e1;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				
				for(var i in this.h)
					if( i == key ) return true;
			;
				{
					$s.pop();
					return false;
				}
			}
		}
	}
	$s.pop();
}
Hash.prototype.get = function(key) {
	$s.push("Hash::get");
	var $spos = $s.length;
	{
		var $tmp = this.h["$" + key];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Hash.prototype.h = null;
Hash.prototype.iterator = function() {
	$s.push("Hash::iterator");
	var $spos = $s.length;
	{
		var $tmp = { ref : this.h, it : this.keys(), hasNext : function() {
			$s.push("Hash::iterator@200");
			var $spos = $s.length;
			{
				var $tmp = this.it.hasNext();
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("Hash::iterator@201");
			var $spos = $s.length;
			var i = this.it.next();
			{
				var $tmp = this.ref["$" + i];
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Hash.prototype.keys = function() {
	$s.push("Hash::keys");
	var $spos = $s.length;
	var a = new Array();
	
			for(var i in this.h)
				a.push(i.substr(1));
		;
	{
		var $tmp = a.iterator();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Hash.prototype.remove = function(key) {
	$s.push("Hash::remove");
	var $spos = $s.length;
	if(!this.exists(key)) {
		$s.pop();
		return false;
	}
	delete(this.h["$" + key]);
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
Hash.prototype.set = function(key,value) {
	$s.push("Hash::set");
	var $spos = $s.length;
	this.h["$" + key] = value;
	$s.pop();
}
Hash.prototype.toString = function() {
	$s.push("Hash::toString");
	var $spos = $s.length;
	var s = new StringBuf();
	s.b += "{";
	var it = this.keys();
	{ var $it2 = it;
	while( $it2.hasNext() ) { var i = $it2.next();
	{
		s.b += i;
		s.b += " => ";
		s.b += Std.string(this.get(i));
		if(it.hasNext()) s.b += ", ";
	}
	}}
	s.b += "}";
	{
		var $tmp = s.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Hash.prototype.__class__ = Hash;
neash.text.FontInstance = function(inFont,inHeight) { if( inFont === $_ ) return; {
	$s.push("neash.text.FontInstance::new");
	var $spos = $s.length;
	this.mFont = inFont;
	this.mHeight = inHeight;
	this.mTryFreeType = true;
	$s.pop();
}}
neash.text.FontInstance.__name__ = ["neash","text","FontInstance"];
neash.text.FontInstance.CreateSolid = function(inFace,inHeight,inColour,inAlpha) {
	$s.push("neash.text.FontInstance::CreateSolid");
	var $spos = $s.length;
	var id = "SOLID:" + inFace + ":" + inHeight + ":" + inColour + ":" + inAlpha;
	var f = neash.text.FontInstance.mSolidFonts.get(id);
	if(f != null) {
		$s.pop();
		return f;
	}
	var font = neash.text.FontManager.GetFont(inFace,inHeight);
	if(font == null) {
		$s.pop();
		return null;
	}
	f = new neash.text.FontInstance(font,inHeight);
	f.SetSolid(inColour,inAlpha);
	neash.text.FontInstance.mSolidFonts.set(id,f);
	{
		$s.pop();
		return f;
	}
	$s.pop();
}
neash.text.FontInstance.prototype.GetAdvance = function(inChar) {
	$s.push("neash.text.FontInstance::GetAdvance");
	var $spos = $s.length;
	{
		var $tmp = this.mFont.GetAdvance(inChar);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.FontInstance.prototype.GetFace = function() {
	$s.push("neash.text.FontInstance::GetFace");
	var $spos = $s.length;
	{
		var $tmp = this.mFont.GetName();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.FontInstance.prototype.GetHeight = function() {
	$s.push("neash.text.FontInstance::GetHeight");
	var $spos = $s.length;
	{
		var $tmp = this.mHeight;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.FontInstance.prototype.RenderChar = function(inGraphics,inGlyph,inX,inY) {
	$s.push("neash.text.FontInstance::RenderChar");
	var $spos = $s.length;
	inGraphics.lineStyle();
	inGraphics.beginFill(this.mColour,this.mAlpha);
	{
		var $tmp = this.mFont.Render(inGraphics,inGlyph,inX,inY,this.mTryFreeType);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.FontInstance.prototype.SetSolid = function(inCol,inAlpha) {
	$s.push("neash.text.FontInstance::SetSolid");
	var $spos = $s.length;
	this.mColour = inCol;
	this.mAlpha = inAlpha;
	this.mMode = neash.text.FontInstanceMode.fimSolid;
	$s.pop();
}
neash.text.FontInstance.prototype.height = null;
neash.text.FontInstance.prototype.mAlpha = null;
neash.text.FontInstance.prototype.mColour = null;
neash.text.FontInstance.prototype.mFont = null;
neash.text.FontInstance.prototype.mHeight = null;
neash.text.FontInstance.prototype.mMode = null;
neash.text.FontInstance.prototype.mTryFreeType = null;
neash.text.FontInstance.prototype.__class__ = neash.text.FontInstance;
xpath.expression = {}
xpath.expression.Expression = function() { }
xpath.expression.Expression.__name__ = ["xpath","expression","Expression"];
xpath.expression.Expression.prototype.evaluate = null;
xpath.expression.Expression.prototype.__class__ = xpath.expression.Expression;
xpath.expression.VariableReference = function(name) { if( name === $_ ) return; {
	$s.push("xpath.expression.VariableReference::new");
	var $spos = $s.length;
	this.name = name;
	$s.pop();
}}
xpath.expression.VariableReference.__name__ = ["xpath","expression","VariableReference"];
xpath.expression.VariableReference.prototype.evaluate = function(context) {
	$s.push("xpath.expression.VariableReference::evaluate");
	var $spos = $s.length;
	var result = context.getVariable(this.name);
	if(result == null) throw new xpath.EvaluationException("undefined variable reference $" + this.name);
	else {
		$s.pop();
		return result;
	}
	$s.pop();
}
xpath.expression.VariableReference.prototype.name = null;
xpath.expression.VariableReference.prototype.__class__ = xpath.expression.VariableReference;
xpath.expression.VariableReference.__interfaces__ = [xpath.expression.Expression];
neash.events = {}
neash.events.IEventDispatcher = function() { }
neash.events.IEventDispatcher.__name__ = ["neash","events","IEventDispatcher"];
neash.events.IEventDispatcher.prototype.RemoveByID = null;
neash.events.IEventDispatcher.prototype.addEventListener = null;
neash.events.IEventDispatcher.prototype.dispatchEvent = null;
neash.events.IEventDispatcher.prototype.hasEventListener = null;
neash.events.IEventDispatcher.prototype.removeEventListener = null;
neash.events.IEventDispatcher.prototype.willTrigger = null;
neash.events.IEventDispatcher.prototype.__class__ = neash.events.IEventDispatcher;
neash.events.EventDispatcher = function(target) { if( target === $_ ) return; {
	$s.push("neash.events.EventDispatcher::new");
	var $spos = $s.length;
	this.mTarget = target;
	this.mEventMap = new Hash();
	$s.pop();
}}
neash.events.EventDispatcher.__name__ = ["neash","events","EventDispatcher"];
neash.events.EventDispatcher.prototype.DumpListeners = function() {
	$s.push("neash.events.EventDispatcher::DumpListeners");
	var $spos = $s.length;
	haxe.Log.trace(this.mEventMap,{ fileName : "EventDispatcher.hx", lineNumber : 140, className : "neash.events.EventDispatcher", methodName : "DumpListeners"});
	$s.pop();
}
neash.events.EventDispatcher.prototype.RemoveByID = function(inType,inID) {
	$s.push("neash.events.EventDispatcher::RemoveByID");
	var $spos = $s.length;
	if(!this.mEventMap.exists(inType)) {
		$s.pop();
		return;
	}
	var list = this.mEventMap.get(inType);
	{
		var _g1 = 0, _g = list.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(list[i].mID == inID) {
				list.splice(i,1);
				{
					$s.pop();
					return;
				}
			}
		}
	}
	haxe.Log.trace("could not remove?",{ fileName : "EventDispatcher.hx", lineNumber : 129, className : "neash.events.EventDispatcher", methodName : "RemoveByID"});
	$s.pop();
}
neash.events.EventDispatcher.prototype.addEventListener = function(type,inListener,useCapture,inPriority,useWeakReference) {
	$s.push("neash.events.EventDispatcher::addEventListener");
	var $spos = $s.length;
	var capture = (useCapture == null?false:useCapture);
	var priority = (inPriority == null?0:inPriority);
	var list = this.mEventMap.get(type);
	if(list == null) {
		list = new Array();
		this.mEventMap.set(type,list);
	}
	var l = new neash.events.Listener(inListener,capture,priority);
	list.push(l);
	{
		var $tmp = l.mID;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.EventDispatcher.prototype.dispatchEvent = function(event) {
	$s.push("neash.events.EventDispatcher::dispatchEvent");
	var $spos = $s.length;
	var list = this.mEventMap.get(event.type);
	var capture = event.eventPhase == neash.events.EventPhase.CAPTURING_PHASE;
	if(list != null) {
		{
			var _g1 = 0, _g = list.length;
			while(_g1 < _g) {
				var i = _g1++;
				var listener = list[i];
				if(listener.mUseCapture == capture) {
					listener.dispatchEvent(event);
					if(event.IsCancelledNow()) {
						$s.pop();
						return true;
					}
				}
			}
		}
		{
			$s.pop();
			return true;
		}
	}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
neash.events.EventDispatcher.prototype.hasEventListener = function(type) {
	$s.push("neash.events.EventDispatcher::hasEventListener");
	var $spos = $s.length;
	{
		var $tmp = this.mEventMap.exists(type);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.EventDispatcher.prototype.mEventMap = null;
neash.events.EventDispatcher.prototype.mTarget = null;
neash.events.EventDispatcher.prototype.removeEventListener = function(type,listener,inCapture) {
	$s.push("neash.events.EventDispatcher::removeEventListener");
	var $spos = $s.length;
	if(!this.mEventMap.exists(type)) {
		$s.pop();
		return;
	}
	var list = this.mEventMap.get(type);
	var capture = (inCapture == null?false:inCapture);
	{
		var _g1 = 0, _g = list.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(list[i].Is(listener,capture)) {
				list.splice(i,1);
				{
					$s.pop();
					return;
				}
			}
		}
	}
	$s.pop();
}
neash.events.EventDispatcher.prototype.willTrigger = function(type) {
	$s.push("neash.events.EventDispatcher::willTrigger");
	var $spos = $s.length;
	{
		var $tmp = this.hasEventListener(type);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.EventDispatcher.prototype.__class__ = neash.events.EventDispatcher;
neash.events.EventDispatcher.__interfaces__ = [neash.events.IEventDispatcher];
neash.display = {}
neash.display.DisplayObject = function(p) { if( p === $_ ) return; {
	$s.push("neash.display.DisplayObject::new");
	var $spos = $s.length;
	this.mParent = null;
	neash.events.EventDispatcher.apply(this,[]);
	this.mX = this.mY = 0;
	this.mScaleX = this.mScaleY = 1.0;
	this.alpha = 1.0;
	this.mTransformed = false;
	this.mRotation = 0.0;
	this.__swf_depth = 0;
	this.mMatrix = new canvas.geom.Matrix();
	this.mFullMatrix = new canvas.geom.Matrix();
	this.mMask = null;
	this.mMaskingObj = null;
	this.mCacheAsBitmap = false;
	this.mCachedBitmap = null;
	this.mFilteredBitmap = null;
	this.mCachedBitmapTx = 0;
	this.mCachedBitmapTy = 0;
	this.mBoundsDirty = false;
	this.mBoundsRect = new canvas.geom.Rectangle();
	this.mGraphicsBounds = null;
	this.mMaskHandle = null;
	this.visible = true;
	$s.pop();
}}
neash.display.DisplayObject.__name__ = ["neash","display","DisplayObject"];
neash.display.DisplayObject.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) neash.display.DisplayObject.prototype[k] = neash.events.EventDispatcher.prototype[k];
neash.display.DisplayObject.prototype.AppendMask = function(inMask) {
	$s.push("neash.display.DisplayObject::AppendMask");
	var $spos = $s.length;
	var gfx = this.GetGraphics();
	if(gfx != null) gfx.AddToMask(inMask,this.mFullMatrix);
	$s.pop();
}
neash.display.DisplayObject.prototype.AsContainer = function() {
	$s.push("neash.display.DisplayObject::AsContainer");
	var $spos = $s.length;
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.AsInteractiveObject = function() {
	$s.push("neash.display.DisplayObject::AsInteractiveObject");
	var $spos = $s.length;
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.BuildBounds = function() {
	$s.push("neash.display.DisplayObject::BuildBounds");
	var $spos = $s.length;
	if(this.mBoundsDirty) {
		this.mBoundsDirty = false;
		var gfx = this.GetGraphics();
		if(gfx == null) this.mBoundsRect = new canvas.geom.Rectangle(this.mFullMatrix.tx,this.mFullMatrix.ty,0,0);
		else this.mBoundsRect = gfx.GetExtent(this.mFullMatrix);
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.CacheGetObj = function(inX,inY,inObj) {
	$s.push("neash.display.DisplayObject::CacheGetObj");
	var $spos = $s.length;
	var tx = Std["int"](this.mFullMatrix.tx + this.mCachedBitmapTx + 0.5);
	var ty = Std["int"](this.mFullMatrix.ty + this.mCachedBitmapTy + 0.5);
	if(inX >= tx && inY >= ty && inX < tx + this.mCachedBitmap.getWidth() && inY < ty + this.mCachedBitmap.getHeight()) {
		var i = this.AsInteractiveObject();
		{
			var $tmp = (i == null?inObj:i);
			$s.pop();
			return $tmp;
		}
	}
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.ClearCache = function() {
	$s.push("neash.display.DisplayObject::ClearCache");
	var $spos = $s.length;
	this.mCachedBitmap = null;
	this.mFilteredBitmap = null;
	$s.pop();
}
neash.display.DisplayObject.prototype.CreateBitmapCache = function() {
	$s.push("neash.display.DisplayObject::CreateBitmapCache");
	var $spos = $s.length;
	this.BuildBounds();
	this.mCachedBitmap = null;
	this.mFilteredBitmap = null;
	var gfx = this.GetGraphics();
	if(gfx != null && this.mBoundsRect.width > 0 && this.mBoundsRect.height > 0) {
		var w = Std["int"](this.mBoundsRect.width + 1);
		var h = Std["int"](this.mBoundsRect.height + 1);
		if(w > 0 && h > 0) {
			var m = this.mFullMatrix.clone();
			this.mCachedBitmapTx = Math.floor(this.mBoundsRect.x);
			this.mCachedBitmapTy = Math.floor(this.mBoundsRect.y);
			m.tx -= this.mCachedBitmapTx;
			m.ty -= this.mCachedBitmapTy;
			this.mCachedBitmapTx -= this.mFullMatrix.tx;
			this.mCachedBitmapTy -= this.mFullMatrix.ty;
			this.mCachedBitmap = new canvas.display.BitmapData(w,h,true,0,0);
			gfx.render(m,this.mCachedBitmap.handle());
			this.mFilteredBitmap = null;
		}
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.DoAdded = function(inObj) {
	$s.push("neash.display.DisplayObject::DoAdded");
	var $spos = $s.length;
	if(inObj == this) {
		var evt = new neash.events.Event(neash.events.Event.ADDED,true,false);
		this.dispatchEvent(evt);
	}
	var evt = new neash.events.Event(neash.events.Event.ADDED_TO_STAGE,false,false);
	this.dispatchEvent(evt);
	$s.pop();
}
neash.display.DisplayObject.prototype.DoMouseEnter = function() {
	$s.push("neash.display.DisplayObject::DoMouseEnter");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.DisplayObject.prototype.DoMouseLeave = function() {
	$s.push("neash.display.DisplayObject::DoMouseLeave");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.DisplayObject.prototype.DoRemoved = function(inObj) {
	$s.push("neash.display.DisplayObject::DoRemoved");
	var $spos = $s.length;
	if(inObj == this) {
		var evt = new neash.events.Event(neash.events.Event.REMOVED,true,false);
		this.dispatchEvent(evt);
	}
	var evt = new neash.events.Event(neash.events.Event.REMOVED_FROM_STAGE,false,false);
	this.dispatchEvent(evt);
	$s.pop();
}
neash.display.DisplayObject.prototype.GetBackgroundRect = function() {
	$s.push("neash.display.DisplayObject::GetBackgroundRect");
	var $spos = $s.length;
	if(this.mGraphicsBounds == null) {
		var gfx = this.GetGraphics();
		if(gfx != null) this.mGraphicsBounds = gfx.GetExtent(new canvas.geom.Matrix());
	}
	{
		var $tmp = this.mGraphicsBounds;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetCacheAsBitmap = function() {
	$s.push("neash.display.DisplayObject::GetCacheAsBitmap");
	var $spos = $s.length;
	{
		var $tmp = this.mCacheAsBitmap || (this.mFilters != null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetFilters = function() {
	$s.push("neash.display.DisplayObject::GetFilters");
	var $spos = $s.length;
	var f = new Array();
	if(this.mFilters != null) {
		{
			var _g = 0, _g1 = this.mFilters;
			while(_g < _g1.length) {
				var filter = _g1[_g];
				++_g;
				f.push(filter.clone());
			}
		}
	}
	{
		$s.pop();
		return f;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetFocusObjects = function(outObjs) {
	$s.push("neash.display.DisplayObject::GetFocusObjects");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.DisplayObject.prototype.GetGraphics = function() {
	$s.push("neash.display.DisplayObject::GetGraphics");
	var $spos = $s.length;
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetHeight = function() {
	$s.push("neash.display.DisplayObject::GetHeight");
	var $spos = $s.length;
	this.BuildBounds();
	{
		var $tmp = this.mBoundsRect.height;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetMask = function() {
	$s.push("neash.display.DisplayObject::GetMask");
	var $spos = $s.length;
	{
		var $tmp = this.mMask;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetMaskHandle = function() {
	$s.push("neash.display.DisplayObject::GetMaskHandle");
	var $spos = $s.length;
	if(this.mMaskingObj == null) throw ("mask object mismatch");
	if(this.mMaskHandle == null) {
		var gfx = this.GetGraphics();
		if(gfx != null) {
			this.mMaskHandle = gfx.CreateMask(this.mFullMatrix);
		}
	}
	{
		var $tmp = this.mMaskHandle;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetMatrix = function() {
	$s.push("neash.display.DisplayObject::GetMatrix");
	var $spos = $s.length;
	{
		var $tmp = this.mMatrix.clone();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetMouseX = function() {
	$s.push("neash.display.DisplayObject::GetMouseX");
	var $spos = $s.length;
	{
		var $tmp = this.globalToLocal(neash.Lib.mLastMouse).x;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetMouseY = function() {
	$s.push("neash.display.DisplayObject::GetMouseY");
	var $spos = $s.length;
	{
		var $tmp = this.globalToLocal(neash.Lib.mLastMouse).y;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetObj = function(inX,inY,inObj) {
	$s.push("neash.display.DisplayObject::GetObj");
	var $spos = $s.length;
	if(!this.visible || this.mMaskingObj != null) {
		$s.pop();
		return null;
	}
	if(this.GetCacheAsBitmap() && this.mCachedBitmap != null) {
		var $tmp = this.CacheGetObj(inX,inY,inObj);
		$s.pop();
		return $tmp;
	}
	var gfx = this.GetGraphics();
	if(gfx != null && gfx.hitTest(inX,inY)) {
		var i = this.AsInteractiveObject();
		{
			var $tmp = (i == null?inObj:i);
			$s.pop();
			return $tmp;
		}
	}
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetOpaqueBackground = function() {
	$s.push("neash.display.DisplayObject::GetOpaqueBackground");
	var $spos = $s.length;
	{
		var $tmp = this.mOpaqueBackground;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetParent = function() {
	$s.push("neash.display.DisplayObject::GetParent");
	var $spos = $s.length;
	{
		var $tmp = this.mParent;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetRotation = function() {
	$s.push("neash.display.DisplayObject::GetRotation");
	var $spos = $s.length;
	{
		var $tmp = this.mRotation;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetScaleX = function() {
	$s.push("neash.display.DisplayObject::GetScaleX");
	var $spos = $s.length;
	{
		var $tmp = this.mScaleX;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetScaleY = function() {
	$s.push("neash.display.DisplayObject::GetScaleY");
	var $spos = $s.length;
	{
		var $tmp = this.mScaleY;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetScrollRect = function() {
	$s.push("neash.display.DisplayObject::GetScrollRect");
	var $spos = $s.length;
	if(this.mScrollRect == null) {
		$s.pop();
		return null;
	}
	{
		var $tmp = this.mScrollRect.clone();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetStage = function() {
	$s.push("neash.display.DisplayObject::GetStage");
	var $spos = $s.length;
	{
		var $tmp = neash.Lib.GetStage();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetTransform = function() {
	$s.push("neash.display.DisplayObject::GetTransform");
	var $spos = $s.length;
	{
		var $tmp = new neash.geom.Transform(this);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetWidth = function() {
	$s.push("neash.display.DisplayObject::GetWidth");
	var $spos = $s.length;
	this.BuildBounds();
	{
		var $tmp = this.mBoundsRect.width;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetX = function() {
	$s.push("neash.display.DisplayObject::GetX");
	var $spos = $s.length;
	{
		var $tmp = this.mX;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.GetY = function() {
	$s.push("neash.display.DisplayObject::GetY");
	var $spos = $s.length;
	{
		var $tmp = this.mY;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.Render = function(inParentMask,inScrollRect,inTX,inTY) {
	$s.push("neash.display.DisplayObject::Render");
	var $spos = $s.length;
	var mask_handle = (inParentMask != null?inParentMask:((this.mMask != null?this.mMask.GetMaskHandle():null)));
	if(this.GetCacheAsBitmap() && this.mCachedBitmap != null) this.RenderCache(mask_handle);
	else {
		if(this.mOpaqueBackground != null) {
			var bg = this.GetBackgroundRect();
			if(bg != null) {
				var gfx = canvas.Manager.graphics;
				canvas.display.Graphics.immediateMatrix = this.mFullMatrix;
				canvas.display.Graphics.immediateMask = mask_handle;
				gfx.beginFill(this.mOpaqueBackground);
				gfx.drawRect(bg.x,bg.y,bg.width,bg.height);
				gfx.endFill();
				gfx.flush();
				canvas.display.Graphics.immediateMatrix = null;
				canvas.display.Graphics.immediateMask = null;
			}
		}
		var gfx = this.GetGraphics();
		if(gfx != null) {
			if(inScrollRect != null) {
				var m = this.mFullMatrix.clone();
				m.tx -= inTX;
				m.ty -= inTY;
				gfx.render(m,null,mask_handle,inScrollRect);
			}
			else gfx.render(this.mFullMatrix,null,mask_handle,null);
		}
	}
	{
		$s.pop();
		return mask_handle;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.RenderCache = function(inMaskHandle) {
	$s.push("neash.display.DisplayObject::RenderCache");
	var $spos = $s.length;
	var tx = Std["int"](this.mFullMatrix.tx + this.mCachedBitmapTx + 0.5);
	var ty = Std["int"](this.mFullMatrix.ty + this.mCachedBitmapTy + 0.5);
	var gfx = canvas.Manager.graphics;
	if(this.mFilterSet != null) {
		if(this.mFilteredBitmap == null) this.mFilteredBitmap = this.mFilterSet.FilterImage(this.mCachedBitmap);
		gfx.moveTo(tx + this.mFilterSet.GetOffsetX(),ty + this.mFilterSet.GetOffsetY());
		gfx.blit(this.mFilteredBitmap);
	}
	else {
		gfx.moveTo(tx,ty);
		gfx.blit(this.mCachedBitmap);
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetCacheAsBitmap = function(inVal) {
	$s.push("neash.display.DisplayObject::SetCacheAsBitmap");
	var $spos = $s.length;
	this.mCacheAsBitmap = inVal;
	var c = this.GetCacheAsBitmap();
	if(!c) this.ClearCache();
	{
		$s.pop();
		return c;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetFilters = function(inFilters) {
	$s.push("neash.display.DisplayObject::SetFilters");
	var $spos = $s.length;
	var f = new Array();
	{
		var _g = 0;
		while(_g < inFilters.length) {
			var filter = inFilters[_g];
			++_g;
			f.push(filter.clone());
		}
	}
	this.mFilters = f;
	this.mCacheAsBitmap = null;
	this.mFilteredBitmap = null;
	if(this.mFilters.length < 1) this.mFilterSet = null;
	else this.mFilterSet = new canvas.filters.FilterSet(this.mFilters);
	{
		var $tmp = this.GetFilters();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetHeight = function(inHeight) {
	$s.push("neash.display.DisplayObject::SetHeight");
	var $spos = $s.length;
	this.BuildBounds();
	var h = this.mBoundsRect.height;
	if(h <= 0) {
		$s.pop();
		return 0;
	}
	this.mScaleY *= inHeight / h;
	this.UpdateMatrix();
	{
		$s.pop();
		return inHeight;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetMask = function(inMask) {
	$s.push("neash.display.DisplayObject::SetMask");
	var $spos = $s.length;
	if(this.mMask != null) this.mMask.mMaskingObj = null;
	this.mMask = inMask;
	if(this.mMask != null) this.mMask.mMaskingObj = this;
	{
		var $tmp = this.mMask;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetMatrix = function(inMatrix) {
	$s.push("neash.display.DisplayObject::SetMatrix");
	var $spos = $s.length;
	this.mMatrix = inMatrix.clone();
	this.mTransformed = true;
	{
		$s.pop();
		return inMatrix;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetOpaqueBackground = function(inBG) {
	$s.push("neash.display.DisplayObject::SetOpaqueBackground");
	var $spos = $s.length;
	this.mOpaqueBackground = inBG;
	{
		var $tmp = this.mOpaqueBackground;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetParent = function(inParent) {
	$s.push("neash.display.DisplayObject::SetParent");
	var $spos = $s.length;
	if(this.mParent == null && inParent != null) {
		this.mParent = inParent;
		this.DoAdded(this);
	}
	else if(this.mParent != null && inParent == null) {
		this.mParent = inParent;
		this.DoRemoved(this);
	}
	else this.mParent = inParent;
	$s.pop();
}
neash.display.DisplayObject.prototype.SetRotation = function(inRotation) {
	$s.push("neash.display.DisplayObject::SetRotation");
	var $spos = $s.length;
	this.mRotation = inRotation * Math.PI / 180.0;
	this.UpdateMatrix();
	{
		$s.pop();
		return inRotation;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetScaleX = function(inS) {
	$s.push("neash.display.DisplayObject::SetScaleX");
	var $spos = $s.length;
	this.mScaleX = inS;
	this.UpdateMatrix();
	{
		$s.pop();
		return inS;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetScaleY = function(inS) {
	$s.push("neash.display.DisplayObject::SetScaleY");
	var $spos = $s.length;
	this.mScaleY = inS;
	this.UpdateMatrix();
	{
		$s.pop();
		return inS;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetScrollRect = function(inRect) {
	$s.push("neash.display.DisplayObject::SetScrollRect");
	var $spos = $s.length;
	this.mScrollRect = inRect;
	{
		var $tmp = this.GetScrollRect();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetTransform = function(trans) {
	$s.push("neash.display.DisplayObject::SetTransform");
	var $spos = $s.length;
	this.mTransformed = true;
	this.mMatrix = trans.GetMatrix().clone();
	{
		$s.pop();
		return trans;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetWidth = function(inWidth) {
	$s.push("neash.display.DisplayObject::SetWidth");
	var $spos = $s.length;
	this.BuildBounds();
	var w = this.mBoundsRect.width;
	if(w <= 0) {
		$s.pop();
		return 0;
	}
	this.mScaleX *= inWidth / w;
	this.UpdateMatrix();
	{
		$s.pop();
		return inWidth;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetX = function(inX) {
	$s.push("neash.display.DisplayObject::SetX");
	var $spos = $s.length;
	this.mX = inX;
	this.UpdateMatrix();
	{
		var $tmp = this.mX;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetY = function(inY) {
	$s.push("neash.display.DisplayObject::SetY");
	var $spos = $s.length;
	this.mY = inY;
	this.UpdateMatrix();
	{
		var $tmp = this.mY;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.SetupRender = function(inParentMatrix) {
	$s.push("neash.display.DisplayObject::SetupRender");
	var $spos = $s.length;
	var result = 0;
	var m;
	if(this.mTransformed) m = this.mMatrix.mult(inParentMatrix);
	else m = inParentMatrix;
	if(m.a != this.mFullMatrix.a || m.b != this.mFullMatrix.b || m.c != this.mFullMatrix.c || m.d != this.mFullMatrix.d) result |= neash.display.DisplayObject.NON_TRANSLATE_CHANGE;
	if(m.tx != this.mFullMatrix.tx || m.ty != this.mFullMatrix.ty) result |= neash.display.DisplayObject.TRANSLATE_CHANGE;
	var gfx = this.GetGraphics();
	if(gfx != null) {
		if(gfx.CheckChanged()) {
			result |= (neash.display.DisplayObject.NON_TRANSLATE_CHANGE | neash.display.DisplayObject.GRAPHICS_CHANGE);
			this.mGraphicsBounds = null;
		}
	}
	if((result & neash.display.DisplayObject.NON_TRANSLATE_CHANGE) != 0) this.mBoundsDirty = true;
	else if(result != 0) {
		this.mBoundsRect.x += m.tx - this.mFullMatrix.tx;
		this.mBoundsRect.y += m.ty - this.mFullMatrix.ty;
	}
	this.mFullMatrix = m;
	if(this.GetCacheAsBitmap()) {
		if(this.mCachedBitmap == null || (result & neash.display.DisplayObject.NON_TRANSLATE_CHANGE) != 0) {
			this.CreateBitmapCache();
		}
	}
	if(result != 0) this.mMaskHandle = null;
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.UpdateMatrix = function() {
	$s.push("neash.display.DisplayObject::UpdateMatrix");
	var $spos = $s.length;
	this.mTransformed = true;
	this.mMatrix = new canvas.geom.Matrix(this.mScaleX,0.0,0.0,this.mScaleY);
	if(this.mRotation != 0.0) this.mMatrix.rotate(this.mRotation);
	this.mMatrix.tx = this.mX;
	this.mMatrix.ty = this.mY;
	$s.pop();
}
neash.display.DisplayObject.prototype.__swf_depth = null;
neash.display.DisplayObject.prototype.alpha = null;
neash.display.DisplayObject.prototype.cacheAsBitmap = null;
neash.display.DisplayObject.prototype.filters = null;
neash.display.DisplayObject.prototype.getBounds = function(targetCoordinateSpace) {
	$s.push("neash.display.DisplayObject::getBounds");
	var $spos = $s.length;
	throw "Not implemented";
	{
		var $tmp = this.mBoundsRect;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.getRect = function(targetCoordinateSpace) {
	$s.push("neash.display.DisplayObject::getRect");
	var $spos = $s.length;
	throw "Not implemented";
	{
		var $tmp = this.mGraphicsBounds;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.globalToLocal = function(inPos) {
	$s.push("neash.display.DisplayObject::globalToLocal");
	var $spos = $s.length;
	{
		var $tmp = this.GetMatrix().invert().transformPoint(inPos);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.height = null;
neash.display.DisplayObject.prototype.hitTestPoint = function(x,y,shapeFlag) {
	$s.push("neash.display.DisplayObject::hitTestPoint");
	var $spos = $s.length;
	var bounding_box = (shapeFlag == null?true:!shapeFlag);
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.mBoundsDirty = null;
neash.display.DisplayObject.prototype.mBoundsRect = null;
neash.display.DisplayObject.prototype.mCacheAsBitmap = null;
neash.display.DisplayObject.prototype.mCachedBitmap = null;
neash.display.DisplayObject.prototype.mCachedBitmapTx = null;
neash.display.DisplayObject.prototype.mCachedBitmapTy = null;
neash.display.DisplayObject.prototype.mFilterSet = null;
neash.display.DisplayObject.prototype.mFilteredBitmap = null;
neash.display.DisplayObject.prototype.mFilters = null;
neash.display.DisplayObject.prototype.mFullMatrix = null;
neash.display.DisplayObject.prototype.mGraphicsBounds = null;
neash.display.DisplayObject.prototype.mMask = null;
neash.display.DisplayObject.prototype.mMaskHandle = null;
neash.display.DisplayObject.prototype.mMaskingObj = null;
neash.display.DisplayObject.prototype.mMatrix = null;
neash.display.DisplayObject.prototype.mOpaqueBackground = null;
neash.display.DisplayObject.prototype.mParent = null;
neash.display.DisplayObject.prototype.mRotation = null;
neash.display.DisplayObject.prototype.mScaleX = null;
neash.display.DisplayObject.prototype.mScaleY = null;
neash.display.DisplayObject.prototype.mScrollRect = null;
neash.display.DisplayObject.prototype.mSizeDirty = null;
neash.display.DisplayObject.prototype.mTransformed = null;
neash.display.DisplayObject.prototype.mX = null;
neash.display.DisplayObject.prototype.mY = null;
neash.display.DisplayObject.prototype.mask = null;
neash.display.DisplayObject.prototype.mouseX = null;
neash.display.DisplayObject.prototype.mouseY = null;
neash.display.DisplayObject.prototype.name = null;
neash.display.DisplayObject.prototype.opaqueBackground = null;
neash.display.DisplayObject.prototype.parent = null;
neash.display.DisplayObject.prototype.rotation = null;
neash.display.DisplayObject.prototype.scaleX = null;
neash.display.DisplayObject.prototype.scaleY = null;
neash.display.DisplayObject.prototype.scrollRect = null;
neash.display.DisplayObject.prototype.stage = null;
neash.display.DisplayObject.prototype.toString = function() {
	$s.push("neash.display.DisplayObject::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "DisplayObject";
	}
	$s.pop();
}
neash.display.DisplayObject.prototype.transform = null;
neash.display.DisplayObject.prototype.visible = null;
neash.display.DisplayObject.prototype.width = null;
neash.display.DisplayObject.prototype.x = null;
neash.display.DisplayObject.prototype.y = null;
neash.display.DisplayObject.prototype.__class__ = neash.display.DisplayObject;
neash.display.DisplayObject.__interfaces__ = [neash.display.IBitmapDrawable];
neash.display.InteractiveObject = function(p) { if( p === $_ ) return; {
	$s.push("neash.display.InteractiveObject::new");
	var $spos = $s.length;
	neash.display.DisplayObject.apply(this,[]);
	this.tabEnabled = false;
	this.mouseEnabled = true;
	this.SetTabIndex(0);
	this.name = "InteractiveObject";
	$s.pop();
}}
neash.display.InteractiveObject.__name__ = ["neash","display","InteractiveObject"];
neash.display.InteractiveObject.__super__ = neash.display.DisplayObject;
for(var k in neash.display.DisplayObject.prototype ) neash.display.InteractiveObject.prototype[k] = neash.display.DisplayObject.prototype[k];
neash.display.InteractiveObject.prototype.AsInteractiveObject = function() {
	$s.push("neash.display.InteractiveObject::AsInteractiveObject");
	var $spos = $s.length;
	{
		$s.pop();
		return this;
	}
	$s.pop();
}
neash.display.InteractiveObject.prototype.OnFocusIn = function(inMouse) {
	$s.push("neash.display.InteractiveObject::OnFocusIn");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.InteractiveObject.prototype.OnFocusOut = function() {
	$s.push("neash.display.InteractiveObject::OnFocusOut");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.InteractiveObject.prototype.OnKey = function(inKey) {
	$s.push("neash.display.InteractiveObject::OnKey");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.InteractiveObject.prototype.OnMouseDown = function(inX,inY) {
	$s.push("neash.display.InteractiveObject::OnMouseDown");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.InteractiveObject.prototype.OnMouseDrag = function(inX,inY) {
	$s.push("neash.display.InteractiveObject::OnMouseDrag");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.InteractiveObject.prototype.OnMouseUp = function(inX,inY) {
	$s.push("neash.display.InteractiveObject::OnMouseUp");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.InteractiveObject.prototype.SetTabIndex = function(inIndex) {
	$s.push("neash.display.InteractiveObject::SetTabIndex");
	var $spos = $s.length;
	this.tabIndex = inIndex;
	{
		$s.pop();
		return inIndex;
	}
	$s.pop();
}
neash.display.InteractiveObject.prototype.mouseEnabled = null;
neash.display.InteractiveObject.prototype.tabEnabled = null;
neash.display.InteractiveObject.prototype.tabIndex = null;
neash.display.InteractiveObject.prototype.toString = function() {
	$s.push("neash.display.InteractiveObject::toString");
	var $spos = $s.length;
	{
		var $tmp = this.name;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.InteractiveObject.prototype.__class__ = neash.display.InteractiveObject;
neash.display.DisplayObjectContainer = function(p) { if( p === $_ ) return; {
	$s.push("neash.display.DisplayObjectContainer::new");
	var $spos = $s.length;
	this.mObjs = new Array();
	this.mouseChildren = true;
	neash.display.InteractiveObject.apply(this,[]);
	this.name = "DisplayObjectContainer";
	$s.pop();
}}
neash.display.DisplayObjectContainer.__name__ = ["neash","display","DisplayObjectContainer"];
neash.display.DisplayObjectContainer.__super__ = neash.display.InteractiveObject;
for(var k in neash.display.InteractiveObject.prototype ) neash.display.DisplayObjectContainer.prototype[k] = neash.display.InteractiveObject.prototype[k];
neash.display.DisplayObjectContainer.prototype.AppendMask = function(inMask) {
	$s.push("neash.display.DisplayObjectContainer::AppendMask");
	var $spos = $s.length;
	neash.display.InteractiveObject.prototype.AppendMask.apply(this,[inMask]);
	{
		var _g = 0, _g1 = this.mObjs;
		while(_g < _g1.length) {
			var obj = _g1[_g];
			++_g;
			obj.AppendMask(inMask);
		}
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.AsContainer = function() {
	$s.push("neash.display.DisplayObjectContainer::AsContainer");
	var $spos = $s.length;
	{
		$s.pop();
		return this;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.Broadcast = function(inEvent) {
	$s.push("neash.display.DisplayObjectContainer::Broadcast");
	var $spos = $s.length;
	this.dispatchEvent(inEvent);
	{
		var _g1 = 0, _g = this.mObjs.length;
		while(_g1 < _g) {
			var i = _g1++;
			var obj = this.mObjs[i];
			var container = obj.AsContainer();
			if(container != null) container.Broadcast(inEvent);
			else obj.dispatchEvent(inEvent);
		}
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.DoAdded = function(inObj) {
	$s.push("neash.display.DisplayObjectContainer::DoAdded");
	var $spos = $s.length;
	neash.display.InteractiveObject.prototype.DoAdded.apply(this,[inObj]);
	{
		var _g = 0, _g1 = this.mObjs;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			child.DoAdded(inObj);
		}
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.DoRemoved = function(inObj) {
	$s.push("neash.display.DisplayObjectContainer::DoRemoved");
	var $spos = $s.length;
	neash.display.InteractiveObject.prototype.DoAdded.apply(this,[inObj]);
	{
		var _g = 0, _g1 = this.mObjs;
		while(_g < _g1.length) {
			var child = _g1[_g];
			++_g;
			child.DoRemoved(inObj);
		}
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.GetBackgroundRect = function() {
	$s.push("neash.display.DisplayObjectContainer::GetBackgroundRect");
	var $spos = $s.length;
	var r = neash.display.InteractiveObject.prototype.GetBackgroundRect.apply(this,[]);
	if(r != null) r = r.clone();
	{
		var _g = 0, _g1 = this.mObjs;
		while(_g < _g1.length) {
			var obj = _g1[_g];
			++_g;
			if(obj.visible) {
				var o = obj.GetBackgroundRect();
				if(o != null) {
					var trans = o.transform(obj.mMatrix);
					if(r == null || r.width == 0 || r.height == 0) r = trans;
					else if(trans.width != 0 && trans.height != 0) r.extendBounds(trans);
				}
			}
		}
	}
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.GetFocusObjects = function(outObjs) {
	$s.push("neash.display.DisplayObjectContainer::GetFocusObjects");
	var $spos = $s.length;
	var _g = 0, _g1 = this.mObjs;
	while(_g < _g1.length) {
		var obj = _g1[_g];
		++_g;
		obj.GetFocusObjects(outObjs);
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.GetMaskHandle = function() {
	$s.push("neash.display.DisplayObjectContainer::GetMaskHandle");
	var $spos = $s.length;
	if(this.mMaskHandle == null) {
		var handle = neash.display.InteractiveObject.prototype.GetMaskHandle.apply(this,[]);
		if(handle != null) {
			{
				var _g = 0, _g1 = this.mObjs;
				while(_g < _g1.length) {
					var obj = _g1[_g];
					++_g;
					obj.AppendMask(handle);
				}
			}
		}
	}
	{
		var $tmp = this.mMaskHandle;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.GetNumChildren = function() {
	$s.push("neash.display.DisplayObjectContainer::GetNumChildren");
	var $spos = $s.length;
	{
		var $tmp = this.mObjs.length;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.GetObj = function(inX,inY,inObj) {
	$s.push("neash.display.DisplayObjectContainer::GetObj");
	var $spos = $s.length;
	if(!this.visible || this.mMaskingObj != null) {
		$s.pop();
		return null;
	}
	var l = this.mObjs.length - 1;
	{
		var _g1 = 0, _g = this.mObjs.length;
		while(_g1 < _g) {
			var i = _g1++;
			var result = this.mObjs[l - i].GetObj(inX,inY,this);
			if(result != null) {
				$s.pop();
				return result;
			}
		}
	}
	{
		var $tmp = neash.display.InteractiveObject.prototype.GetObj.apply(this,[inX,inY,this]);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.Render = function(inMask,inScrollRect,inTX,inTY) {
	$s.push("neash.display.DisplayObjectContainer::Render");
	var $spos = $s.length;
	if(!this.visible || this.mMaskingObj != null) {
		$s.pop();
		return;
	}
	if(this.GetCacheAsBitmap() && this.mCachedBitmap != null) this.RenderCache();
	else {
		inMask = neash.display.InteractiveObject.prototype.Render.apply(this,[inMask,inScrollRect,inTX,inTY]);
		{
			var _g = 0, _g1 = this.mObjs;
			while(_g < _g1.length) {
				var obj = _g1[_g];
				++_g;
				if(obj.visible && obj.mMaskingObj == null) {
					var scroll = obj.mScrollRect;
					if(scroll != null) {
						var m = obj.mFullMatrix;
						var x0 = m.tx;
						var y0 = m.ty;
						var x1 = m.a * scroll.width + m.tx;
						var y1 = m.d * scroll.height + m.ty;
						var display_rect = new canvas.geom.Rectangle(x0,y0,x1 - x0,y1 - y0);
						if(inScrollRect != null) display_rect = display_rect.intersection(inScrollRect);
						if(!display_rect.isEmpty()) {
							var tx = inTX + Std["int"](scroll.x * m.a);
							var ty = inTY + Std["int"](scroll.y * m.d);
							obj.Render(inMask,display_rect,tx,ty);
						}
					}
					else obj.Render(inMask,inScrollRect,inTX,inTY);
				}
			}
		}
	}
	{
		$s.pop();
		return inMask;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.SetupRender = function(inParentMatrix) {
	$s.push("neash.display.DisplayObjectContainer::SetupRender");
	var $spos = $s.length;
	var child_result = 0;
	{
		var _g = 0, _g1 = this.mObjs;
		while(_g < _g1.length) {
			var obj = _g1[_g];
			++_g;
			if(obj.visible) child_result |= obj.SetupRender(this.mFullMatrix);
		}
	}
	var result = 0;
	if(child_result != 0) result = (neash.display.DisplayObject.TRANSLATE_CHANGE | neash.display.DisplayObject.NON_TRANSLATE_CHANGE);
	var super_result = neash.display.InteractiveObject.prototype.SetupRender.apply(this,[inParentMatrix]);
	if(this.GetCacheAsBitmap() && (result & neash.display.DisplayObject.NON_TRANSLATE_CHANGE) != 0 && (super_result & neash.display.DisplayObject.NON_TRANSLATE_CHANGE) == 0) this.CreateBitmapCache();
	if(result != 0) this.mMaskHandle = null;
	{
		var $tmp = result | super_result;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.addChild = function(inObject) {
	$s.push("neash.display.DisplayObjectContainer::addChild");
	var $spos = $s.length;
	this.mObjs.push(inObject);
	inObject.SetParent(this);
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.addChildAt = function(obj,index) {
	$s.push("neash.display.DisplayObjectContainer::addChildAt");
	var $spos = $s.length;
	this.mObjs.insert(index,obj);
	obj.SetParent(this);
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.contains = function(obj) {
	$s.push("neash.display.DisplayObjectContainer::contains");
	var $spos = $s.length;
	if(obj == this) {
		$s.pop();
		return true;
	}
	{
		var _g = 0, _g1 = this.mObjs;
		while(_g < _g1.length) {
			var i = _g1[_g];
			++_g;
			if(obj == i) {
				$s.pop();
				return true;
			}
		}
	}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.getChildAt = function(index) {
	$s.push("neash.display.DisplayObjectContainer::getChildAt");
	var $spos = $s.length;
	{
		var $tmp = this.mObjs[index];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.getChildByName = function(inName) {
	$s.push("neash.display.DisplayObjectContainer::getChildByName");
	var $spos = $s.length;
	{
		var _g1 = 0, _g = this.mObjs.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.mObjs[i].name == inName) {
				var $tmp = this.mObjs[i];
				$s.pop();
				return $tmp;
			}
		}
	}
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.getChildIndex = function(child) {
	$s.push("neash.display.DisplayObjectContainer::getChildIndex");
	var $spos = $s.length;
	{
		var _g1 = 0, _g = this.mObjs.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.mObjs[i] == child) {
				$s.pop();
				return i;
			}
		}
	}
	{
		$s.pop();
		return -1;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.mObjs = null;
neash.display.DisplayObjectContainer.prototype.mouseChildren = null;
neash.display.DisplayObjectContainer.prototype.numChildren = null;
neash.display.DisplayObjectContainer.prototype.removeChild = function(child) {
	$s.push("neash.display.DisplayObjectContainer::removeChild");
	var $spos = $s.length;
	var _g1 = 0, _g = this.mObjs.length;
	while(_g1 < _g) {
		var i = _g1++;
		if(this.mObjs[i] == child) {
			this.mObjs[i].SetParent(null);
			this.mObjs.splice(i,1);
			break;
		}
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.removeChildAt = function(inI) {
	$s.push("neash.display.DisplayObjectContainer::removeChildAt");
	var $spos = $s.length;
	this.mObjs[inI].SetParent(null);
	this.mObjs.splice(inI,1);
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.setChildIndex = function(child,index) {
	$s.push("neash.display.DisplayObjectContainer::setChildIndex");
	var $spos = $s.length;
	var s = null;
	var orig = this.getChildIndex(child);
	if(orig < 0) throw "setChildIndex : object not found.";
	if(index < orig) {
		{
			var _g = index;
			while(_g < orig) {
				var i = _g++;
				this.mObjs[i] = this.mObjs[i - 1];
			}
		}
		this.mObjs[index] = child;
	}
	else if(orig < index) {
		{
			var _g = orig;
			while(_g < index) {
				var i = _g++;
				this.mObjs[i] = this.mObjs[i + 1];
			}
		}
		this.mObjs[index] = child;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.swapChildren = function(child1,child2) {
	$s.push("neash.display.DisplayObjectContainer::swapChildren");
	var $spos = $s.length;
	var c1 = -1;
	var c2 = -1;
	var swap;
	{
		var _g1 = 0, _g = this.mObjs.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.mObjs[i] == child1) c1 = i;
			else if(this.mObjs[i] == child2) c2 = i;
		}
	}
	if(c1 != -1 && c2 != -1) {
		swap = this.mObjs[c1];
		this.mObjs[c1] = this.mObjs[c2];
		this.mObjs[c2] = swap;
		swap = null;
	}
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.swapChildrenAt = function(child1,child2) {
	$s.push("neash.display.DisplayObjectContainer::swapChildrenAt");
	var $spos = $s.length;
	var swap = this.mObjs[child1];
	this.mObjs[child1] = this.mObjs[child2];
	this.mObjs[child2] = swap;
	swap = null;
	$s.pop();
}
neash.display.DisplayObjectContainer.prototype.__class__ = neash.display.DisplayObjectContainer;
neash.display.Stage = function(inWidth,inHeight,inManager) { if( inWidth === $_ ) return; {
	$s.push("neash.display.Stage::new");
	var $spos = $s.length;
	neash.display.DisplayObjectContainer.apply(this,[]);
	this.mFocusObject = null;
	this.mManager = inManager;
	this.mWindowWidth = this.mWidth = inWidth;
	this.mWindowHeight = this.mHeight = inHeight;
	this.stageFocusRect = false;
	this.scaleMode = neash.display.StageScaleMode.SHOW_ALL;
	this.mStageMatrix = new canvas.geom.Matrix();
	this.tabEnabled = true;
	this.frameRate = 0;
	this.SetBackgroundColour(16777215);
	this.name = "Stage";
	$s.pop();
}}
neash.display.Stage.__name__ = ["neash","display","Stage"];
neash.display.Stage.__super__ = neash.display.DisplayObjectContainer;
for(var k in neash.display.DisplayObjectContainer.prototype ) neash.display.Stage.prototype[k] = neash.display.DisplayObjectContainer.prototype[k];
neash.display.Stage.prototype.DoSetFocus = function(inObj,inKeyCode) {
	$s.push("neash.display.Stage::DoSetFocus");
	var $spos = $s.length;
	if(this.mFocusObject != inObj) {
		if(this.mFocusObject != null) {
			this.mFocusObject.OnFocusOut();
			var event = new neash.events.FocusEvent(neash.events.FocusEvent.FOCUS_OUT,true,false,this.mFocusObject);
			event.relatedObject = inObj;
			neash.Lib.SendEventToObject(event,this.mFocusObject);
		}
		var old = this.mFocusObject;
		this.mFocusObject = inObj;
		if(this.mFocusObject != null) {
			this.mFocusObject.OnFocusIn(inKeyCode < 0);
			var event = new neash.events.FocusEvent(neash.events.FocusEvent.FOCUS_IN,true,false,inObj);
			event.relatedObject = old;
			neash.Lib.SendEventToObject(event,this.mFocusObject);
		}
	}
	{
		$s.pop();
		return inObj;
	}
	$s.pop();
}
neash.display.Stage.prototype.GetFocus = function() {
	$s.push("neash.display.Stage::GetFocus");
	var $spos = $s.length;
	{
		var $tmp = this.mFocusObject;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Stage.prototype.GetInteractiveObjectAtPos = function(inX,inY) {
	$s.push("neash.display.Stage::GetInteractiveObjectAtPos");
	var $spos = $s.length;
	var l = this.mObjs.length - 1;
	{
		var _g1 = 0, _g = this.mObjs.length;
		while(_g1 < _g) {
			var i = _g1++;
			var result = this.mObjs[l - i].GetObj(inX,inY,null);
			if(result != null) {
				$s.pop();
				return result;
			}
		}
	}
	{
		$s.pop();
		return this;
	}
	$s.pop();
}
neash.display.Stage.prototype.GetQuality = function() {
	$s.push("neash.display.Stage::GetQuality");
	var $spos = $s.length;
	var q = canvas.Manager.get_draw_quality();
	switch(q) {
	case 0:{
		{
			var $tmp = neash.display.StageQuality.LOW;
			$s.pop();
			return $tmp;
		}
	}break;
	case 1:{
		{
			var $tmp = neash.display.StageQuality.MEDIUM;
			$s.pop();
			return $tmp;
		}
	}break;
	case 2:{
		{
			var $tmp = neash.display.StageQuality.HIGH;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		var $tmp = neash.display.StageQuality.BEST;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Stage.prototype.GetStageHeight = function() {
	$s.push("neash.display.Stage::GetStageHeight");
	var $spos = $s.length;
	{
		var $tmp = this.mHeight;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Stage.prototype.GetStageWidth = function() {
	$s.push("neash.display.Stage::GetStageWidth");
	var $spos = $s.length;
	{
		var $tmp = this.mWidth;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Stage.prototype.HandleKey = function(inKey) {
	$s.push("neash.display.Stage::HandleKey");
	var $spos = $s.length;
	if(this.mFocusObject != null) {
		this.mFocusObject.OnKey(inKey);
		this.mFocusObject.dispatchEvent(inKey);
	}
	else this.dispatchEvent(inKey);
	$s.pop();
}
neash.display.Stage.prototype.OnResize = function(inW,inH) {
	$s.push("neash.display.Stage::OnResize");
	var $spos = $s.length;
	this.mWindowWidth = inW;
	this.mWindowHeight = inH;
	$s.pop();
}
neash.display.Stage.prototype.RenderAll = function() {
	$s.push("neash.display.Stage::RenderAll");
	var $spos = $s.length;
	this.mManager.clear(this.backgroundColor);
	switch(this.scaleMode) {
	case neash.display.StageScaleMode.EXACT_FIT:{
		this.mStageMatrix = new canvas.geom.Matrix(this.mWindowWidth / this.mWidth,0,0,this.mWindowHeight / this.mHeight);
	}break;
	case neash.display.StageScaleMode.NO_SCALE:{
		this.mStageMatrix = new canvas.geom.Matrix();
	}break;
	case neash.display.StageScaleMode.SHOW_ALL:{
		if(this.mWidth * this.mWindowHeight > this.mHeight * this.mWindowWidth) this.mStageMatrix = new canvas.geom.Matrix(this.mWindowWidth / this.mWidth,0,0,this.mWindowWidth / this.mWidth);
		else this.mStageMatrix = new canvas.geom.Matrix(this.mWindowHeight / this.mHeight,0,0,this.mWindowHeight / this.mHeight);
	}break;
	case neash.display.StageScaleMode.NO_BORDER:{
		if(this.mWidth * this.mWindowHeight < this.mHeight * this.mWindowWidth) this.mStageMatrix = new canvas.geom.Matrix(this.mWindowWidth / this.mWidth,0,0,this.mWindowWidth / this.mWidth);
		else this.mStageMatrix = new canvas.geom.Matrix(this.mWindowHeight / this.mHeight,0,0,this.mWindowHeight / this.mHeight);
	}break;
	default:{
		null;
	}break;
	}
	this.SetupRender(this.mStageMatrix);
	this.Render(null,null,0,0);
	$s.pop();
}
neash.display.Stage.prototype.SetBackgroundColour = function(col) {
	$s.push("neash.display.Stage::SetBackgroundColour");
	var $spos = $s.length;
	this.backgroundColor = col;
	{
		$s.pop();
		return col;
	}
	$s.pop();
}
neash.display.Stage.prototype.SetFocus = function(inObj) {
	$s.push("neash.display.Stage::SetFocus");
	var $spos = $s.length;
	{
		var $tmp = this.DoSetFocus(inObj,-1);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Stage.prototype.SetQuality = function(inQuality) {
	$s.push("neash.display.Stage::SetQuality");
	var $spos = $s.length;
	canvas.Manager.set_draw_quality((inQuality == neash.display.StageQuality.LOW?0:1));
	{
		$s.pop();
		return inQuality;
	}
	$s.pop();
}
neash.display.Stage.prototype.TabChange = function(inDiff,inFromKey) {
	$s.push("neash.display.Stage::TabChange");
	var $spos = $s.length;
	var tabs = new Array();
	{
		var _g1 = 0, _g = this.mObjs.length;
		while(_g1 < _g) {
			var i = _g1++;
			this.mObjs[i].GetFocusObjects(tabs);
		}
	}
	var l = tabs.length;
	if(l == 0) this.SetFocus(null);
	else {
		var found = -1;
		if(this.mFocusObject != null) {
			{
				var _g = 0;
				while(_g < l) {
					var i = _g++;
					if(tabs[i] == this.mFocusObject) {
						found = i;
						break;
					}
				}
			}
		}
		if(found < 0) this.DoSetFocus((inDiff > 0?tabs[0]:tabs[l - 1]),inFromKey);
		else this.DoSetFocus(tabs[(l + inDiff + found) % l],inFromKey);
	}
	$s.pop();
}
neash.display.Stage.prototype.align = null;
neash.display.Stage.prototype.backgroundColor = null;
neash.display.Stage.prototype.focus = null;
neash.display.Stage.prototype.frameRate = null;
neash.display.Stage.prototype.mFocusObject = null;
neash.display.Stage.prototype.mHeight = null;
neash.display.Stage.prototype.mManager = null;
neash.display.Stage.prototype.mStageMatrix = null;
neash.display.Stage.prototype.mWidth = null;
neash.display.Stage.prototype.mWindowHeight = null;
neash.display.Stage.prototype.mWindowWidth = null;
neash.display.Stage.prototype.quality = null;
neash.display.Stage.prototype.scaleMode = null;
neash.display.Stage.prototype.stageFocusRect = null;
neash.display.Stage.prototype.stageHeight = null;
neash.display.Stage.prototype.stageWidth = null;
neash.display.Stage.prototype.__class__ = neash.display.Stage;
sandy.core.SandyFlags = function() { }
sandy.core.SandyFlags.__name__ = ["sandy","core","SandyFlags"];
sandy.core.SandyFlags.prototype.__class__ = sandy.core.SandyFlags;
sandy.math = {}
sandy.math.FastMath = function(p) { if( p === $_ ) return; {
	$s.push("sandy.math.FastMath::new");
	var $spos = $s.length;
	this.sinTable = new Array();
	this.tanTable = new Array();
	this.RAD_SLICE = sandy.math.FastMath.TWO_PI / sandy.math.FastMath.PRECISION;
	$s.pop();
}}
sandy.math.FastMath.__name__ = ["sandy","math","FastMath"];
sandy.math.FastMath._initialized = null;
sandy.math.FastMath.initialized = function() {
	$s.push("sandy.math.FastMath::initialized");
	var $spos = $s.length;
	if(sandy.math.FastMath._initialized == null) sandy.math.FastMath._initialized = sandy.math.FastMath.initialize();
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
sandy.math.FastMath.initialize = function() {
	$s.push("sandy.math.FastMath::initialize");
	var $spos = $s.length;
	var rad = 0;
	var inst = new sandy.math.FastMath();
	{
		var _g1 = 0, _g = sandy.math.FastMath.PRECISION;
		while(_g1 < _g) {
			var i = _g1++;
			rad = i * inst.RAD_SLICE;
			inst.sinTable[i] = Math.sin(rad);
			inst.tanTable[i] = Math.tan(rad);
		}
	}
	{
		$s.pop();
		return inst;
	}
	$s.pop();
}
sandy.math.FastMath.radToIndex = function(radians) {
	$s.push("sandy.math.FastMath::radToIndex");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](Std["int"](radians * sandy.math.FastMath.PRECISION_DIV_2PI) & (sandy.math.FastMath.PRECISION_S));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.FastMath.sin = function(radians) {
	$s.push("sandy.math.FastMath::sin");
	var $spos = $s.length;
	{
		var $tmp = sandy.math.FastMath._initialized.sinTable[Std["int"](sandy.math.FastMath.radToIndex(radians))];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.FastMath.cos = function(radians) {
	$s.push("sandy.math.FastMath::cos");
	var $spos = $s.length;
	{
		var $tmp = sandy.math.FastMath._initialized.sinTable[Std["int"](sandy.math.FastMath.radToIndex(sandy.math.FastMath.HALF_PI - radians))];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.FastMath.tan = function(radians) {
	$s.push("sandy.math.FastMath::tan");
	var $spos = $s.length;
	{
		var $tmp = sandy.math.FastMath._initialized.tanTable[(sandy.math.FastMath.radToIndex(radians))];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.FastMath.prototype.RAD_SLICE = null;
sandy.math.FastMath.prototype.sinTable = null;
sandy.math.FastMath.prototype.tanTable = null;
sandy.math.FastMath.prototype.__class__ = sandy.math.FastMath;
neash.text.NeashText = function(p) { if( p === $_ ) return; {
	$s.push("neash.text.NeashText::new");
	var $spos = $s.length;
	neash.display.InteractiveObject.apply(this,[]);
	this.mWidth = 40;
	this.mHeight = 20;
	this.mHTMLMode = false;
	this.multiline = false;
	this.mGraphics = new canvas.display.Graphics();
	this.mCaretGfx = new canvas.display.Graphics();
	this.mFace = neash.text.NeashText.mDefaultFont;
	this.mAlign = neash.text.TextFormatAlign.LEFT;
	this.defaultTextFormat = new neash.text.TextFormat();
	this.mParagraphs = new Array();
	this.mSelStart = -1;
	this.mSelEnd = -1;
	this.mScrollH = 0;
	this.mScrollV = 1;
	this.mType = neash.text.TextFieldType.DYNAMIC;
	this.SetAutoSize(neash.text.TextFieldAutoSize.NONE);
	this.mTextHeight = 12;
	this.mHTMLText = " ";
	this.mText = " ";
	this.mTextColour = 0;
	this.tabEnabled = false;
	this.mFace = neash.text.NeashText.mDefaultFont;
	this.mTryFreeType = true;
	this.selectable = true;
	this.mInsertPos = 0;
	this.mInput = false;
	this.mDownChar = 0;
	this.mSelectDrag = -1;
	this.mLineInfo = [];
	this.SetBorderColor(0);
	this.SetBorder(false);
	this.SetBackgroundColor(16777215);
	this.SetBackground(false);
	$s.pop();
}}
neash.text.NeashText.__name__ = ["neash","text","NeashText"];
neash.text.NeashText.__super__ = neash.display.InteractiveObject;
for(var k in neash.display.InteractiveObject.prototype ) neash.text.NeashText.prototype[k] = neash.display.InteractiveObject.prototype[k];
neash.text.NeashText.prototype.AddXML = function(x,a) {
	$s.push("neash.text.NeashText::AddXML");
	var $spos = $s.length;
	var type = x.nodeType;
	if(type == Xml.Document || type == Xml.Element) {
		if(type == Xml.Element) {
			a = { face : a.face, height : a.height, colour : a.colour, align : a.align}
			switch(x.getNodeName()) {
			case "p":{
				var l = this.mParagraphs.length;
				var align = x.get("align");
				if(align != null) a.align = align;
				if(l > 0 && this.mParagraphs[l - 1].spans.length > 0 && this.multiline) this.mParagraphs.push({ align : a.align, spans : []});
			}break;
			case "font":{
				var face = x.get("face");
				if(face != null) a.face = face;
				var height = x.get("size");
				if(height != null) a.height = Std["int"](Std.parseFloat(height));
				var col = x.get("color");
				if(col != null) a.colour = this.DecodeColour(col);
			}break;
			}
		}
		{ var $it3 = x.iterator();
		while( $it3.hasNext() ) { var child = $it3.next();
		{
			this.AddXML(child,a);
		}
		}}
	}
	else {
		var text = x.getNodeValue();
		var font = neash.text.FontInstance.CreateSolid(a.face,a.height,a.colour,1.0);
		if(font != null && text != "") {
			var span = { text : text, font : font}
			var l = this.mParagraphs.length;
			if(this.mParagraphs.length < 1) this.mParagraphs.push({ align : a.align, spans : [span]});
			else this.mParagraphs[l - 1].spans.push(span);
		}
	}
	$s.pop();
}
neash.text.NeashText.prototype.ClearSelection = function() {
	$s.push("neash.text.NeashText::ClearSelection");
	var $spos = $s.length;
	this.mSelStart = this.mSelEnd = -1;
	this.mSelectionAnchored = false;
	this.Rebuild();
	$s.pop();
}
neash.text.NeashText.prototype.ConvertHTMLToText = function(inUnSetHTML) {
	$s.push("neash.text.NeashText::ConvertHTMLToText");
	var $spos = $s.length;
	this.mText = "";
	{
		var _g = 0, _g1 = this.mParagraphs;
		while(_g < _g1.length) {
			var paragraph = _g1[_g];
			++_g;
			{
				var _g2 = 0, _g3 = paragraph.spans;
				while(_g2 < _g3.length) {
					var span = _g3[_g2];
					++_g2;
					this.mText += span.text;
				}
			}
		}
	}
	if(inUnSetHTML) {
		this.mHTMLMode = false;
		this.RebuildText();
	}
	$s.pop();
}
neash.text.NeashText.prototype.DecodeColour = function(col) {
	$s.push("neash.text.NeashText::DecodeColour");
	var $spos = $s.length;
	{
		var $tmp = Std.parseInt("0x" + col.substr(1));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.DeleteSelection = function() {
	$s.push("neash.text.NeashText::DeleteSelection");
	var $spos = $s.length;
	if(this.mSelEnd > this.mSelStart && this.mSelStart >= 0) {
		this.mText = this.mText.substr(0,this.mSelStart) + this.mText.substr(this.mSelEnd);
		this.mInsertPos = this.mSelStart;
		this.mSelStart = this.mSelEnd = -1;
		this.mSelectionAnchored = false;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetCaret = function() {
	$s.push("neash.text.NeashText::GetCaret");
	var $spos = $s.length;
	{
		var $tmp = this.mInsertPos;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetFocusObjects = function(outObjs) {
	$s.push("neash.text.NeashText::GetFocusObjects");
	var $spos = $s.length;
	if(this.mInput) outObjs.push(this);
	$s.pop();
}
neash.text.NeashText.prototype.GetGraphics = function() {
	$s.push("neash.text.NeashText::GetGraphics");
	var $spos = $s.length;
	{
		var $tmp = this.mGraphics;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetHTMLText = function() {
	$s.push("neash.text.NeashText::GetHTMLText");
	var $spos = $s.length;
	{
		var $tmp = this.mHTMLText;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetHeight = function() {
	$s.push("neash.text.NeashText::GetHeight");
	var $spos = $s.length;
	{
		var $tmp = this.mHeight;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetText = function() {
	$s.push("neash.text.NeashText::GetText");
	var $spos = $s.length;
	if(this.mHTMLMode) this.ConvertHTMLToText(false);
	{
		var $tmp = this.mText;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetTextColour = function() {
	$s.push("neash.text.NeashText::GetTextColour");
	var $spos = $s.length;
	{
		var $tmp = this.mTextColour;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetType = function() {
	$s.push("neash.text.NeashText::GetType");
	var $spos = $s.length;
	{
		var $tmp = this.mType;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.GetWidth = function() {
	$s.push("neash.text.NeashText::GetWidth");
	var $spos = $s.length;
	{
		var $tmp = this.mWidth;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.OnFocusIn = function(inMouse) {
	$s.push("neash.text.NeashText::OnFocusIn");
	var $spos = $s.length;
	if(this.mInput && this.selectable && !inMouse) {
		this.mSelStart = 0;
		this.mSelEnd = this.mText.length;
		this.RebuildText();
	}
	$s.pop();
}
neash.text.NeashText.prototype.OnKey = function(inKey) {
	$s.push("neash.text.NeashText::OnKey");
	var $spos = $s.length;
	if(inKey.type != neash.events.KeyboardEvent.KEY_DOWN) {
		$s.pop();
		return;
	}
	var key = inKey.keyCode;
	var ascii = inKey.charCode;
	var shift = inKey.shiftKey;
	if(ascii == 3) {
		if(this.mSelEnd > this.mSelStart && this.mSelStart >= 0) canvas.Manager.setClipboardString(this.GetText().substr(this.mSelStart,this.mSelEnd - this.mSelStart));
		{
			$s.pop();
			return;
		}
	}
	if(this.mInput) {
		if(key == neash.text.KeyCode.LEFT) {
			this.OnMoveKeyStart(shift);
			this.mInsertPos--;
			this.OnMoveKeyEnd();
		}
		else if(key == neash.text.KeyCode.RIGHT) {
			this.OnMoveKeyStart(shift);
			this.mInsertPos++;
			this.OnMoveKeyEnd();
		}
		else if(key == neash.text.KeyCode.HOME) {
			this.OnMoveKeyStart(shift);
			this.mInsertPos = 0;
			this.OnMoveKeyEnd();
		}
		else if(key == neash.text.KeyCode.END) {
			this.OnMoveKeyStart(shift);
			this.mInsertPos = this.mText.length;
			this.OnMoveKeyEnd();
		}
		else if(key == neash.text.KeyCode.DELETE || key == neash.text.KeyCode.BACKSPACE) {
			if(this.mSelEnd > this.mSelStart && this.mSelStart >= 0) this.DeleteSelection();
			else {
				if(key == neash.text.KeyCode.BACKSPACE && this.mInsertPos > 0) this.mInsertPos--;
				var l = this.mText.length;
				if(this.mInsertPos > l) {
					if(l > 0) this.mText = this.mText.substr(0,l - 1);
				}
				else {
					this.mText = this.mText.substr(0,this.mInsertPos) + this.mText.substr(this.mInsertPos + 1);
				}
			}
		}
		else if(ascii >= 32 && ascii < 128) {
			if(this.mSelEnd > this.mSelStart && this.mSelStart >= 0) this.DeleteSelection();
			this.mText = this.mText.substr(0,this.mInsertPos) + String.fromCharCode(ascii) + this.mText.substr(this.mInsertPos);
			this.mInsertPos++;
		}
		if(this.mInsertPos < 0) this.mInsertPos = 0;
		var l = this.mText.length;
		if(this.mInsertPos > l) this.mInsertPos = l;
		this.RebuildText();
	}
	$s.pop();
}
neash.text.NeashText.prototype.OnMouseDown = function(inX,inY) {
	$s.push("neash.text.NeashText::OnMouseDown");
	var $spos = $s.length;
	if(this.tabEnabled || this.selectable) {
		if(neash.text.NeashText.sSelectionOwner != null) neash.text.NeashText.sSelectionOwner.ClearSelection();
		neash.text.NeashText.sSelectionOwner = this;
		this.GetStage().SetFocus(this);
		var pos = this.globalToLocal(new canvas.geom.Point(inX,inY));
		this.mSelectDrag = this.getCharIndexAtPoint(pos.x,pos.y);
		if(this.tabEnabled) this.mInsertPos = this.mSelectDrag;
		this.mSelStart = this.mSelEnd = -1;
		this.RebuildText();
	}
	$s.pop();
}
neash.text.NeashText.prototype.OnMouseDrag = function(inX,inY) {
	$s.push("neash.text.NeashText::OnMouseDrag");
	var $spos = $s.length;
	if((this.tabEnabled || this.selectable) && this.mSelectDrag >= 0) {
		var pos = this.globalToLocal(new canvas.geom.Point(inX,inY));
		var idx = this.getCharIndexAtPoint(pos.x,pos.y);
		if(neash.text.NeashText.sSelectionOwner != this) {
			if(neash.text.NeashText.sSelectionOwner != null) neash.text.NeashText.sSelectionOwner.ClearSelection();
			neash.text.NeashText.sSelectionOwner = this;
		}
		if(idx < this.mSelectDrag) {
			this.mSelStart = idx;
			this.mSelEnd = this.mSelectDrag;
		}
		else if(idx > this.mSelectDrag) {
			this.mSelStart = this.mSelectDrag;
			this.mSelEnd = idx;
		}
		else this.mSelStart = this.mSelEnd = -1;
		if(this.tabEnabled) this.mInsertPos = idx;
		this.RebuildText();
	}
	$s.pop();
}
neash.text.NeashText.prototype.OnMouseUp = function(inX,inY) {
	$s.push("neash.text.NeashText::OnMouseUp");
	var $spos = $s.length;
	this.mSelectDrag = -1;
	$s.pop();
}
neash.text.NeashText.prototype.OnMoveKeyEnd = function() {
	$s.push("neash.text.NeashText::OnMoveKeyEnd");
	var $spos = $s.length;
	if(this.mSelectionAnchored) {
		if(this.mInsertPos < this.mSelectionAnchor) {
			this.mSelStart = this.mInsertPos;
			this.mSelEnd = this.mSelectionAnchor;
		}
		else {
			this.mSelStart = this.mSelectionAnchor;
			this.mSelEnd = this.mInsertPos;
		}
	}
	$s.pop();
}
neash.text.NeashText.prototype.OnMoveKeyStart = function(inShift) {
	$s.push("neash.text.NeashText::OnMoveKeyStart");
	var $spos = $s.length;
	if(inShift && this.selectable) {
		if(!this.mSelectionAnchored) {
			this.mSelectionAnchored = true;
			this.mSelectionAnchor = this.mInsertPos;
			if(neash.text.NeashText.sSelectionOwner != this) {
				if(neash.text.NeashText.sSelectionOwner != null) neash.text.NeashText.sSelectionOwner.ClearSelection();
				neash.text.NeashText.sSelectionOwner = this;
			}
		}
	}
	else this.ClearSelection();
	$s.pop();
}
neash.text.NeashText.prototype.Rebuild = function() {
	$s.push("neash.text.NeashText::Rebuild");
	var $spos = $s.length;
	this.mLineInfo = [];
	this.mGraphics.clear();
	this.mCaretGfx.clear();
	if(this.background) {
		this.mGraphics.beginFill(this.backgroundColor);
		this.mGraphics.drawRect(-2,-2,this.GetWidth() + 4,this.GetHeight() + 4);
		this.mGraphics.endFill();
	}
	this.mGraphics.lineStyle(this.mTextColour);
	var insert_x = null;
	this.mMaxWidth = 0;
	this.mLimitRenderX = ((this.autoSize == neash.text.TextFieldAutoSize.NONE)?Std["int"](this.GetWidth()):999999);
	var wrap = ((this.wordWrap && !this.mInput)?this.mLimitRenderX:999999);
	var char_idx = 0;
	var h = 0;
	var s0 = this.mSelStart;
	var s1 = this.mSelEnd;
	{
		var _g = 0, _g1 = this.mParagraphs;
		while(_g < _g1.length) {
			var paragraph = _g1[_g];
			++_g;
			var row = [];
			var row_width = 0;
			var last_word_break = 0;
			var last_word_break_width = 0;
			var last_word_char_idx = 0;
			var start_idx = char_idx;
			var tx = 0;
			{
				var _g2 = 0, _g3 = paragraph.spans;
				while(_g2 < _g3.length) {
					var span = _g3[_g2];
					++_g2;
					var text = span.text;
					var font = span.font;
					var fh = font.GetHeight();
					last_word_break = row.length;
					last_word_break_width = row_width;
					last_word_char_idx = char_idx;
					{
						var _g5 = 0, _g4 = text.length;
						while(_g5 < _g4) {
							var ch = _g5++;
							if(char_idx == this.mInsertPos && this.mInput) insert_x = tx;
							var g = text.charCodeAt(ch);
							var adv = font.GetAdvance(g);
							if(g == 32) {
								last_word_break = row.length;
								last_word_break_width = tx;
								last_word_char_idx = char_idx;
							}
							if((tx + adv) > wrap) {
								if(last_word_break > 0) {
									var row_end = row.splice(last_word_break,row.length - last_word_break);
									h += this.RenderRow(row,h,start_idx,paragraph.align);
									row = row_end;
									tx -= last_word_break_width;
									start_idx = last_word_char_idx;
									last_word_break = 0;
									last_word_break_width = 0;
									last_word_char_idx = 0;
									if(row_end.length > 0 && row_end[0]["char"] == 32) {
										row_end.shift();
										start_idx++;
									}
								}
								else {
									h += this.RenderRow(row,h,char_idx,paragraph.align);
									row = [];
									tx = 0;
									start_idx = char_idx;
								}
							}
							row.push({ font : font, char : g, x : tx, fh : fh, sel : (char_idx >= s0 && char_idx < s1), adv : adv});
							tx += adv;
							char_idx++;
						}
					}
				}
			}
			if(row.length > 0) h += this.RenderRow(row,h,start_idx,paragraph.align,((this.mInput && insert_x == null)?tx:insert_x));
		}
	}
	var w = this.mMaxWidth;
	if(h < this.mTextHeight) h = this.mTextHeight;
	switch(this.autoSize) {
	case neash.text.TextFieldAutoSize.LEFT:{
		this.SetWidth(w);
		this.SetHeight(h);
	}break;
	case neash.text.TextFieldAutoSize.RIGHT:{
		var x0 = this.GetX() + this.GetWidth();
		this.SetWidth(w);
		this.SetHeight(h);
		this.SetX(x0 - w);
	}break;
	case neash.text.TextFieldAutoSize.CENTER:{
		var x0 = this.GetX() + this.GetWidth() / 2;
		this.SetWidth(w);
		this.SetHeight(h);
		this.SetX(x0 - w / 2);
	}break;
	default:{
		if(this.wordWrap) this.SetHeight(h);
	}break;
	}
	if(char_idx == 0 && this.mInput) {
		var x = 0;
		if(this.mAlign == neash.text.TextFormatAlign.CENTER) x = Std["int"](this.GetWidth() / 2);
		else if(this.mAlign == neash.text.TextFormatAlign.RIGHT) x = Std["int"](this.GetWidth()) - 1;
		this.mCaretGfx.lineStyle(1,this.mTextColour);
		this.mCaretGfx.moveTo(x,0);
		this.mCaretGfx.lineTo(x,this.mTextHeight);
	}
	if(this.border) {
		this.mGraphics.endFill();
		this.mGraphics.lineStyle(1,this.borderColor);
		this.mGraphics.drawRect(-2,-2,this.GetWidth() + 4,this.GetHeight() + 4);
	}
	$s.pop();
}
neash.text.NeashText.prototype.RebuildText = function() {
	$s.push("neash.text.NeashText::RebuildText");
	var $spos = $s.length;
	this.mParagraphs = [];
	if(this.mHTMLMode) {
		var xml = Xml.parse(this.mHTMLText);
		var a = { face : this.mFace, height : this.mTextHeight, colour : this.mTextColour, align : this.mAlign}
		this.AddXML(xml,a);
	}
	else {
		var font = neash.text.FontInstance.CreateSolid(this.mFace,this.mTextHeight,this.mTextColour,1.0);
		var paras = this.mText.split("\n");
		{
			var _g = 0;
			while(_g < paras.length) {
				var paragraph = paras[_g];
				++_g;
				this.mParagraphs.push({ align : this.mAlign, spans : [{ font : font, text : paragraph}]});
			}
		}
	}
	this.Rebuild();
	$s.pop();
}
neash.text.NeashText.prototype.RenderRow = function(inRow,inY,inCharIdx,inAlign,inInsert) {
	$s.push("neash.text.NeashText::RenderRow");
	var $spos = $s.length;
	var h = 0;
	var w = 0;
	{
		var _g = 0;
		while(_g < inRow.length) {
			var $char = inRow[_g];
			++_g;
			if($char.fh > h) h = $char.fh;
			w += $char.adv;
		}
	}
	var full_height = Std["int"](h * 1.2);
	var align_x = 0;
	var insert_x = 0;
	if(inInsert != null) {
		if(this.autoSize != neash.text.TextFieldAutoSize.NONE) {
			this.mScrollH = 0;
			insert_x = inInsert;
		}
		else {
			insert_x = inInsert - this.mScrollH;
			if(insert_x < 0) {
				this.mScrollH -= ((this.mLimitRenderX * 3) >> 2) - insert_x;
			}
			else if(insert_x > this.mLimitRenderX) {
				this.mScrollH += insert_x - ((this.mLimitRenderX * 3) >> 2);
			}
			if(this.mScrollH < 0) this.mScrollH = 0;
		}
	}
	if(this.autoSize == neash.text.TextFieldAutoSize.NONE && w <= this.mLimitRenderX) {
		if(inAlign == neash.text.TextFormatAlign.CENTER) align_x = (this.mLimitRenderX - w) >> 1;
		else if(inAlign == neash.text.TextFormatAlign.RIGHT) align_x = (this.mLimitRenderX - w);
	}
	var x_list = new Array();
	this.mLineInfo.push({ mY0 : inY, mIndex : inCharIdx, mX : x_list});
	var cache_sel_font = null;
	var cache_normal_font = null;
	var x = align_x - this.mScrollH;
	{
		var _g = 0;
		while(_g < inRow.length) {
			var $char = inRow[_g];
			++_g;
			var adv = $char.adv;
			if(x + adv > this.mLimitRenderX) break;
			x_list.push(x);
			if(x >= 0) {
				var font = $char.font;
				if($char.sel) {
					this.mGraphics.lineStyle();
					this.mGraphics.beginFill(2105440);
					this.mGraphics.drawRect(x,inY,adv,full_height);
					this.mGraphics.endFill();
					if(cache_normal_font == $char.font) {
						font = cache_sel_font;
					}
					else {
						font = neash.text.FontInstance.CreateSolid($char.font.GetFace(),$char.fh,16777215,1.0);
						cache_sel_font = font;
						cache_normal_font = $char.font;
					}
				}
			}
			x += adv;
		}
	}
	x += this.mScrollH;
	if(x > this.mMaxWidth) this.mMaxWidth = x;
	if(inInsert != null) {
		this.mCaretGfx.lineStyle(1,this.mTextColour);
		this.mCaretGfx.moveTo(inInsert + align_x - this.mScrollH,inY);
		this.mCaretGfx.lineTo(inInsert + align_x - this.mScrollH,inY + full_height);
	}
	{
		$s.pop();
		return full_height;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetAutoSize = function(inAutoSize) {
	$s.push("neash.text.NeashText::SetAutoSize");
	var $spos = $s.length;
	this.autoSize = inAutoSize;
	this.Rebuild();
	{
		$s.pop();
		return inAutoSize;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetBackground = function(inBack) {
	$s.push("neash.text.NeashText::SetBackground");
	var $spos = $s.length;
	this.background = inBack;
	this.Rebuild();
	{
		$s.pop();
		return inBack;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetBackgroundColor = function(inCol) {
	$s.push("neash.text.NeashText::SetBackgroundColor");
	var $spos = $s.length;
	this.backgroundColor = inCol;
	this.Rebuild();
	{
		$s.pop();
		return inCol;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetBorder = function(inBorder) {
	$s.push("neash.text.NeashText::SetBorder");
	var $spos = $s.length;
	this.border = inBorder;
	this.Rebuild();
	{
		$s.pop();
		return inBorder;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetBorderColor = function(inBorderCol) {
	$s.push("neash.text.NeashText::SetBorderColor");
	var $spos = $s.length;
	this.borderColor = inBorderCol;
	this.Rebuild();
	{
		$s.pop();
		return inBorderCol;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetHTMLText = function(inHTMLText) {
	$s.push("neash.text.NeashText::SetHTMLText");
	var $spos = $s.length;
	this.mParagraphs = new Array();
	this.mHTMLText = inHTMLText;
	this.mHTMLMode = true;
	this.RebuildText();
	if(this.mInput) this.ConvertHTMLToText(true);
	{
		var $tmp = this.mHTMLText;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetHeight = function(inHeight) {
	$s.push("neash.text.NeashText::SetHeight");
	var $spos = $s.length;
	if(inHeight != this.mHeight) {
		this.mHeight = inHeight;
		this.Rebuild();
	}
	{
		var $tmp = this.mHeight;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetText = function(inText) {
	$s.push("neash.text.NeashText::SetText");
	var $spos = $s.length;
	this.mText = inText;
	this.mHTMLText = inText;
	this.mHTMLMode = false;
	this.RebuildText();
	{
		var $tmp = this.mText;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetTextColour = function(inCol) {
	$s.push("neash.text.NeashText::SetTextColour");
	var $spos = $s.length;
	this.mTextColour = inCol;
	this.RebuildText();
	{
		$s.pop();
		return inCol;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetType = function(inType) {
	$s.push("neash.text.NeashText::SetType");
	var $spos = $s.length;
	this.mType = inType;
	this.mInput = this.mType == neash.text.TextFieldType.INPUT;
	if(this.mInput && this.mHTMLMode) this.ConvertHTMLToText(true);
	this.tabEnabled = this.GetType() == neash.text.TextFieldType.INPUT;
	this.Rebuild();
	{
		$s.pop();
		return inType;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetWidth = function(inWidth) {
	$s.push("neash.text.NeashText::SetWidth");
	var $spos = $s.length;
	if(inWidth != this.mWidth) {
		this.mWidth = inWidth;
		this.Rebuild();
	}
	{
		var $tmp = this.mWidth;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.SetWordWrap = function(inWordWrap) {
	$s.push("neash.text.NeashText::SetWordWrap");
	var $spos = $s.length;
	this.wordWrap = inWordWrap;
	this.Rebuild();
	{
		var $tmp = this.wordWrap;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.antiAliasType = null;
neash.text.NeashText.prototype.autoSize = null;
neash.text.NeashText.prototype.background = null;
neash.text.NeashText.prototype.backgroundColor = null;
neash.text.NeashText.prototype.border = null;
neash.text.NeashText.prototype.borderColor = null;
neash.text.NeashText.prototype.caretIndex = null;
neash.text.NeashText.prototype.caretPos = null;
neash.text.NeashText.prototype.defaultTextFormat = null;
neash.text.NeashText.prototype.displayAsPassword = null;
neash.text.NeashText.prototype.embedFonts = null;
neash.text.NeashText.prototype.getCharBoundaries = function(a) {
	$s.push("neash.text.NeashText::getCharBoundaries");
	var $spos = $s.length;
	throw "Not implemented";
	{
		var $tmp = new canvas.geom.Rectangle();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.getCharIndexAtPoint = function(inX,inY) {
	$s.push("neash.text.NeashText::getCharIndexAtPoint");
	var $spos = $s.length;
	var li = this.getLineIndexAtPoint(inX,inY);
	if(li < 0) {
		$s.pop();
		return -1;
	}
	var line = this.mLineInfo[li];
	var idx = line.mIndex;
	{
		var _g = 0, _g1 = line.mX;
		while(_g < _g1.length) {
			var x = _g1[_g];
			++_g;
			if(x > inX) {
				$s.pop();
				return idx;
			}
			idx++;
		}
	}
	{
		$s.pop();
		return idx;
	}
	$s.pop();
}
neash.text.NeashText.prototype.getLineIndexAtPoint = function(inX,inY) {
	$s.push("neash.text.NeashText::getLineIndexAtPoint");
	var $spos = $s.length;
	if(this.mLineInfo.length < 1) {
		$s.pop();
		return -1;
	}
	if(inY <= 0) {
		$s.pop();
		return 0;
	}
	{
		var _g1 = 0, _g = this.mLineInfo.length;
		while(_g1 < _g) {
			var l = _g1++;
			if(this.mLineInfo[l].mY0 > inY) {
				var $tmp = (l == 0?0:l - 1);
				$s.pop();
				return $tmp;
			}
		}
	}
	{
		var $tmp = this.mLineInfo.length - 1;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.getTextFormat = function(beginIndex,endIndex) {
	$s.push("neash.text.NeashText::getTextFormat");
	var $spos = $s.length;
	{
		var $tmp = new neash.text.TextFormat();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NeashText.prototype.gridFitType = null;
neash.text.NeashText.prototype.htmlText = null;
neash.text.NeashText.prototype.length = null;
neash.text.NeashText.prototype.mAlign = null;
neash.text.NeashText.prototype.mCaretGfx = null;
neash.text.NeashText.prototype.mDownChar = null;
neash.text.NeashText.prototype.mFace = null;
neash.text.NeashText.prototype.mGraphics = null;
neash.text.NeashText.prototype.mHTMLMode = null;
neash.text.NeashText.prototype.mHTMLText = null;
neash.text.NeashText.prototype.mHeight = null;
neash.text.NeashText.prototype.mInput = null;
neash.text.NeashText.prototype.mInsertPos = null;
neash.text.NeashText.prototype.mLimitRenderX = null;
neash.text.NeashText.prototype.mLineInfo = null;
neash.text.NeashText.prototype.mMaxWidth = null;
neash.text.NeashText.prototype.mParagraphs = null;
neash.text.NeashText.prototype.mScrollH = null;
neash.text.NeashText.prototype.mScrollV = null;
neash.text.NeashText.prototype.mSelEnd = null;
neash.text.NeashText.prototype.mSelStart = null;
neash.text.NeashText.prototype.mSelectDrag = null;
neash.text.NeashText.prototype.mSelectionAnchor = null;
neash.text.NeashText.prototype.mSelectionAnchored = null;
neash.text.NeashText.prototype.mText = null;
neash.text.NeashText.prototype.mTextColour = null;
neash.text.NeashText.prototype.mTextHeight = null;
neash.text.NeashText.prototype.mTryFreeType = null;
neash.text.NeashText.prototype.mType = null;
neash.text.NeashText.prototype.mWidth = null;
neash.text.NeashText.prototype.maxChars = null;
neash.text.NeashText.prototype.multiline = null;
neash.text.NeashText.prototype.restrict = null;
neash.text.NeashText.prototype.selectable = null;
neash.text.NeashText.prototype.selectionBeginIndex = null;
neash.text.NeashText.prototype.selectionEndIndex = null;
neash.text.NeashText.prototype.setSelection = function(beginIndex,endIndex) {
	$s.push("neash.text.NeashText::setSelection");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.text.NeashText.prototype.setTextFormat = function(inFmt) {
	$s.push("neash.text.NeashText::setTextFormat");
	var $spos = $s.length;
	if(inFmt.font != null) this.mFace = inFmt.font;
	if(inFmt.size != null) this.mTextHeight = inFmt.size;
	if(inFmt.align != null) this.mAlign = inFmt.align;
	if(inFmt.color != null) this.mTextColour = inFmt.color;
	this.RebuildText();
	$s.pop();
}
neash.text.NeashText.prototype.sharpness = null;
neash.text.NeashText.prototype.text = null;
neash.text.NeashText.prototype.textColor = null;
neash.text.NeashText.prototype.type = null;
neash.text.NeashText.prototype.wordWrap = null;
neash.text.NeashText.prototype.__class__ = neash.text.NeashText;
sandy.math.VectorMath = function() { }
sandy.math.VectorMath.__name__ = ["sandy","math","VectorMath"];
sandy.math.VectorMath.getNorm = function(p_oV) {
	$s.push("sandy.math.VectorMath::getNorm");
	var $spos = $s.length;
	{
		var $tmp = Math.sqrt(p_oV.x * p_oV.x + p_oV.y * p_oV.y + p_oV.z * p_oV.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.negate = function(p_oV) {
	$s.push("sandy.math.VectorMath::negate");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(-p_oV.x,-p_oV.y,-p_oV.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.addVector = function(p_oV,p_oW) {
	$s.push("sandy.math.VectorMath::addVector");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(p_oV.x + p_oW.x,p_oV.y + p_oW.y,p_oV.z + p_oW.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.sub = function(p_oV,p_oW) {
	$s.push("sandy.math.VectorMath::sub");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(p_oV.x - p_oW.x,p_oV.y - p_oW.y,p_oV.z - p_oW.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.pow = function(p_oV,p_nExp) {
	$s.push("sandy.math.VectorMath::pow");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(Math.pow(p_oV.x,p_nExp),Math.pow(p_oV.y,p_nExp),Math.pow(p_oV.z,p_nExp));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.scale = function(p_oV,n) {
	$s.push("sandy.math.VectorMath::scale");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(p_oV.x * n,p_oV.y * n,p_oV.z * n);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.dot = function(p_oV,p_oW) {
	$s.push("sandy.math.VectorMath::dot");
	var $spos = $s.length;
	{
		var $tmp = (p_oV.x * p_oW.x + p_oV.y * p_oW.y + p_oW.z * p_oV.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.cross = function(p_oW,p_oV) {
	$s.push("sandy.math.VectorMath::cross");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector((p_oW.y * p_oV.z) - (p_oW.z * p_oV.y),(p_oW.z * p_oV.x) - (p_oW.x * p_oV.z),(p_oW.x * p_oV.y) - (p_oW.y * p_oV.x));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.normalize = function(p_oV) {
	$s.push("sandy.math.VectorMath::normalize");
	var $spos = $s.length;
	var norm = sandy.math.VectorMath.getNorm(p_oV);
	if(norm == 0 || norm == 1) {
		$s.pop();
		return false;
	}
	p_oV.x /= norm;
	p_oV.y /= norm;
	p_oV.z /= norm;
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
sandy.math.VectorMath.getAngle = function(p_oV,p_oW) {
	$s.push("sandy.math.VectorMath::getAngle");
	var $spos = $s.length;
	var ncos = sandy.math.VectorMath.dot(p_oV,p_oW) / (sandy.math.VectorMath.getNorm(p_oV) * sandy.math.VectorMath.getNorm(p_oW));
	var sin2 = 1 - ncos * ncos;
	if(sin2 < 0) {
		haxe.Log.trace(" wrong " + ncos,{ fileName : "VectorMath.hx", lineNumber : 174, className : "sandy.math.VectorMath", methodName : "getAngle"});
		sin2 = 0;
	}
	{
		var $tmp = Math.atan2(Math.sqrt(sin2),ncos);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.sphrand = function(inner,outer) {
	$s.push("sandy.math.VectorMath::sphrand");
	var $spos = $s.length;
	var v = new sandy.core.data.Vector(Math.random() - .5,Math.random() - .5,Math.random() - .5);
	v.normalize();
	var r = Math.random();
	r = (outer - inner) * r + inner;
	v.scale(r);
	{
		$s.pop();
		return v;
	}
	$s.pop();
}
sandy.math.VectorMath.clone = function(p_oV) {
	$s.push("sandy.math.VectorMath::clone");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(p_oV.x,p_oV.y,p_oV.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VectorMath.prototype.__class__ = sandy.math.VectorMath;
sandy.math.VertexMath = function(p) { if( p === $_ ) return; {
	$s.push("sandy.math.VertexMath::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
sandy.math.VertexMath.__name__ = ["sandy","math","VertexMath"];
sandy.math.VertexMath.__super__ = sandy.math.VectorMath;
for(var k in sandy.math.VectorMath.prototype ) sandy.math.VertexMath.prototype[k] = sandy.math.VectorMath.prototype[k];
sandy.math.VertexMath.instance = null;
sandy.math.VertexMath.getInstance = function() {
	$s.push("sandy.math.VertexMath::getInstance");
	var $spos = $s.length;
	if(sandy.math.VertexMath.instance == null) {
		sandy.math.VertexMath.instance = new sandy.math.VertexMath();
	}
	{
		var $tmp = sandy.math.VertexMath.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VertexMath.negate = function(p_oV) {
	$s.push("sandy.math.VertexMath::negate");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex(-p_oV.x,-p_oV.y,-p_oV.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VertexMath.dot = function(p_oV,p_oW) {
	$s.push("sandy.math.VertexMath::dot");
	var $spos = $s.length;
	{
		var $tmp = (p_oV.wx * p_oW.wx + p_oV.wy * p_oW.wy + p_oW.wz * p_oV.wz);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VertexMath.addVertex = function(p_oV,p_oW) {
	$s.push("sandy.math.VertexMath::addVertex");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex(p_oV.x + p_oW.x,p_oV.y + p_oW.y,p_oV.z + p_oW.z,p_oV.wx + p_oW.wx,p_oV.wy + p_oW.wy,p_oV.wz + p_oW.wz);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VertexMath.sub = function(p_oV,p_oW) {
	$s.push("sandy.math.VertexMath::sub");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex(p_oV.x - p_oW.x,p_oV.y - p_oW.y,p_oV.z - p_oW.z,p_oV.wx - p_oW.wx,p_oV.wy - p_oW.wy,p_oV.wz - p_oW.wz);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VertexMath.cross = function(p_oW,p_oV) {
	$s.push("sandy.math.VertexMath::cross");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex((p_oW.y * p_oV.z) - (p_oW.z * p_oV.y),(p_oW.z * p_oV.x) - (p_oW.x * p_oV.z),(p_oW.x * p_oV.y) - (p_oW.y * p_oV.x));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VertexMath.clone = function(p_oV) {
	$s.push("sandy.math.VertexMath::clone");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex(p_oV.x,p_oV.y,p_oV.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.VertexMath.linearGradientMatrix = function(p_oV0,p_oV1,p_oV2,p_nR0,p_nR1,p_nR2,p_oMatrix) {
	$s.push("sandy.math.VertexMath::linearGradientMatrix");
	var $spos = $s.length;
	var coef = (p_nR1 - p_nR0) / (p_nR2 - p_nR0);
	var p3x = p_oV0.sx + coef * (p_oV2.sx - p_oV0.sx);
	var p3y = p_oV0.sy + coef * (p_oV2.sy - p_oV0.sy);
	var p4x = p_oV2.sx - p_oV0.sx;
	var p4y = p_oV2.sy - p_oV0.sy;
	var p4len = Math.sqrt(p4x * p4x + p4y * p4y);
	var d = Math.atan2(p3x - p_oV1.sx,-(p3y - p_oV1.sy));
	if(p_oMatrix != null) p_oMatrix.identity();
	else p_oMatrix = new canvas.geom.Matrix();
	p_oMatrix.a = Math.cos(Math.atan2(p4y,p4x) - d) * p4len / (32768 * 0.05);
	p_oMatrix.rotate(d);
	p_oMatrix.translate((p_oV2.sx + p_oV0.sx) / 2,(p_oV2.sy + p_oV0.sy) / 2);
	{
		$s.pop();
		return p_oMatrix;
	}
	$s.pop();
}
sandy.math.VertexMath.prototype.__class__ = sandy.math.VertexMath;
neash.text.TextFieldType = function(p) { if( p === $_ ) return; {
	$s.push("neash.text.TextFieldType::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
neash.text.TextFieldType.__name__ = ["neash","text","TextFieldType"];
neash.text.TextFieldType.prototype.__class__ = neash.text.TextFieldType;
nme = {}
nme.display = {}
nme.display.CapsStyle = { __ename__ : ["nme","display","CapsStyle"], __constructs__ : ["NONE","ROUND","SQUARE"] }
nme.display.CapsStyle.NONE = ["NONE",0];
nme.display.CapsStyle.NONE.toString = $estr;
nme.display.CapsStyle.NONE.__enum__ = nme.display.CapsStyle;
nme.display.CapsStyle.ROUND = ["ROUND",1];
nme.display.CapsStyle.ROUND.toString = $estr;
nme.display.CapsStyle.ROUND.__enum__ = nme.display.CapsStyle;
nme.display.CapsStyle.SQUARE = ["SQUARE",2];
nme.display.CapsStyle.SQUARE.toString = $estr;
nme.display.CapsStyle.SQUARE.__enum__ = nme.display.CapsStyle;
sandy.events = {}
sandy.events.EventBroadcaster = function(p) { if( p === $_ ) return; {
	$s.push("sandy.events.EventBroadcaster::new");
	var $spos = $s.length;
	this.m_oAll = new Hash();
	this.m_oType = new Hash();
	this.m_oEventListener = new Hash();
	this.m_oDelegateDico = new Hash();
	$s.pop();
}}
sandy.events.EventBroadcaster.__name__ = ["sandy","events","EventBroadcaster"];
sandy.events.EventBroadcaster.prototype._broadcastEvent = function(c,e) {
	$s.push("sandy.events.EventBroadcaster::_broadcastEvent");
	var $spos = $s.length;
	var type = e.type;
	{ var $it4 = c.iterator();
	while( $it4.hasNext() ) { var listener = $it4.next();
	{
		var f = null;
		if(Reflect.hasField(listener,"get")) f = listener.get(type);
		if(listener.hasOwnProperty(type) && Reflect.isFunction(f)) {
			f(e);
		}
		else if(listener.hasOwnProperty("handleEvent") && Reflect.isFunction($closure(listener,"handleEvent"))) {
			listener.handleEvent(e);
		}
		else null;
	}
	}}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype._removeRef = function(type,listener) {
	$s.push("sandy.events.EventBroadcaster::_removeRef");
	var $spos = $s.length;
	var m = this.m_oEventListener.get(Std.string(listener));
	m.remove(type);
	if(this.isDicoEmpty(m)) {
		this.m_oEventListener.remove(Std.string(listener));
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype._storeRef = function(type,listener) {
	$s.push("sandy.events.EventBroadcaster::_storeRef");
	var $spos = $s.length;
	if(this.m_oEventListener.get(listener) == null) {
		this.m_oEventListener.set(listener,new Hash());
	}
	this.m_oEventListener.get(Std.string(listener)).set(type,listener);
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.addEventListener = function(type,listener,rest) {
	$s.push("sandy.events.EventBroadcaster::addEventListener");
	var $spos = $s.length;
	if(Reflect.isFunction(listener)) {
		var d = new sandy.commands.Delegate(listener);
		if(rest != null) {
			d.setArgumentsArray(rest);
		}
		this.m_oDelegateDico.set(Std.string(listener),d);
		listener = d;
	}
	else if(listener.hasOwnProperty(type) && (Reflect.isFunction(listener.get(type)))) null;
	else if(listener.hasOwnProperty("handleEvent") && Reflect.isFunction(listener.handleEvent)) null;
	else {
		{
			$s.pop();
			return false;
		}
	}
	if(!this.isRegistered(listener)) {
		if(this.m_oType.get(type) == null) {
			this.m_oType.set(type,new Hash());
		}
		var lDico = this.getListenerCollection(type);
		if(lDico.get(listener) == null) {
			lDico.set(listener,listener);
			this._storeRef(type,listener);
			{
				$s.pop();
				return true;
			}
		}
	}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.broadcastEvent = function(e) {
	$s.push("sandy.events.EventBroadcaster::broadcastEvent");
	var $spos = $s.length;
	if(this.hasListenerCollection(e.type)) {
		this._broadcastEvent(this.getListenerCollection(e.type),e);
	}
	if(!this.isDicoEmpty(this.m_oAll)) {
		this._broadcastEvent(this.m_oAll,e);
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.getListenerCollection = function(type) {
	$s.push("sandy.events.EventBroadcaster::getListenerCollection");
	var $spos = $s.length;
	{
		var $tmp = ((type != null)?this.m_oType.get(type):this.m_oAll);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.hasListenerCollection = function(type) {
	$s.push("sandy.events.EventBroadcaster::hasListenerCollection");
	var $spos = $s.length;
	{
		var $tmp = (this.m_oType.get(type) != null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.isDicoEmpty = function(pDico) {
	$s.push("sandy.events.EventBroadcaster::isDicoEmpty");
	var $spos = $s.length;
	var i = 0;
	{ var $it5 = pDico.iterator();
	while( $it5.hasNext() ) { var lElt = $it5.next();
	{
		i++;
	}
	}}
	{
		var $tmp = (i == 0);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.isRegistered = function(listener,type) {
	$s.push("sandy.events.EventBroadcaster::isRegistered");
	var $spos = $s.length;
	if(type == null) {
		{
			var $tmp = this.m_oAll.get(listener);
			$s.pop();
			return $tmp;
		}
	}
	else {
		if(this.m_oType.get(type) != null) {
			{ var $it6 = this.m_oType.get(type).iterator();
			while( $it6.hasNext() ) { var lElt = $it6.next();
			{
				if(lElt == listener) {
					{
						$s.pop();
						return true;
					}
				}
			}
			}}
			{
				$s.pop();
				return false;
			}
		}
		else {
			{
				$s.pop();
				return false;
			}
		}
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.listeners = null;
sandy.events.EventBroadcaster.prototype.m_oAll = null;
sandy.events.EventBroadcaster.prototype.m_oDelegateDico = null;
sandy.events.EventBroadcaster.prototype.m_oEventListener = null;
sandy.events.EventBroadcaster.prototype.m_oType = null;
sandy.events.EventBroadcaster.prototype.removeEventListener = function(type,listener) {
	$s.push("sandy.events.EventBroadcaster::removeEventListener");
	var $spos = $s.length;
	if(this.hasListenerCollection(type)) {
		var c = this.getListenerCollection(type);
		if(Reflect.isFunction(listener)) {
			listener = this.m_oDelegateDico.get(Std.string(listener));
		}
		if(c.get(listener) != null) {
			this._removeRef(type,listener);
			if(this.isDicoEmpty(c)) {
				this.removeListenerCollection(type);
			}
			c.remove(Std.string(listener));
			{
				$s.pop();
				return true;
			}
		}
		else {
			{
				$s.pop();
				return false;
			}
		}
	}
	else {
		{
			$s.pop();
			return false;
		}
	}
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.removeListenerCollection = function(type) {
	$s.push("sandy.events.EventBroadcaster::removeListenerCollection");
	var $spos = $s.length;
	this.m_oType.set(type,null);
	$s.pop();
}
sandy.events.EventBroadcaster.prototype.__class__ = sandy.events.EventBroadcaster;
sandy.materials.attributes.OutlineAttributes = function(p_nThickness,p_nColor,p_nAlpha) { if( p_nThickness === $_ ) return; {
	$s.push("sandy.materials.attributes.OutlineAttributes::new");
	var $spos = $s.length;
	if(p_nAlpha == null) p_nAlpha = 1.0;
	if(p_nColor == null) p_nColor = 0;
	if(p_nThickness == null) p_nThickness = 1;
	this.SHAPE_MAP = new IntHash();
	this.m_nThickness = p_nThickness;
	this.m_nAlpha = p_nAlpha;
	this.m_nColor = p_nColor;
	this.m_nAngleThreshold = 181.0;
	sandy.materials.attributes.AAttributes.apply(this,[]);
	this.modified = true;
	$s.pop();
}}
sandy.materials.attributes.OutlineAttributes.__name__ = ["sandy","materials","attributes","OutlineAttributes"];
sandy.materials.attributes.OutlineAttributes.__super__ = sandy.materials.attributes.AAttributes;
for(var k in sandy.materials.attributes.AAttributes.prototype ) sandy.materials.attributes.OutlineAttributes.prototype[k] = sandy.materials.attributes.AAttributes.prototype[k];
sandy.materials.attributes.OutlineAttributes.prototype.SHAPE_MAP = null;
sandy.materials.attributes.OutlineAttributes.prototype.__getAlpha = function() {
	$s.push("sandy.materials.attributes.OutlineAttributes::__getAlpha");
	var $spos = $s.length;
	{
		var $tmp = this.m_nAlpha;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__getAngleThreshold = function() {
	$s.push("sandy.materials.attributes.OutlineAttributes::__getAngleThreshold");
	var $spos = $s.length;
	{
		var $tmp = this.m_nAngleThreshold;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__getColor = function() {
	$s.push("sandy.materials.attributes.OutlineAttributes::__getColor");
	var $spos = $s.length;
	{
		var $tmp = this.m_nColor;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__getThickness = function() {
	$s.push("sandy.materials.attributes.OutlineAttributes::__getThickness");
	var $spos = $s.length;
	{
		var $tmp = this.m_nThickness;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__setAlpha = function(p_nValue) {
	$s.push("sandy.materials.attributes.OutlineAttributes::__setAlpha");
	var $spos = $s.length;
	this.m_nAlpha = p_nValue;
	this.modified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__setAngleThreshold = function(p_nValue) {
	$s.push("sandy.materials.attributes.OutlineAttributes::__setAngleThreshold");
	var $spos = $s.length;
	this.m_nAngleThreshold = p_nValue;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__setColor = function(p_nValue) {
	$s.push("sandy.materials.attributes.OutlineAttributes::__setColor");
	var $spos = $s.length;
	this.m_nColor = p_nValue;
	this.modified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__setThickness = function(p_nValue) {
	$s.push("sandy.materials.attributes.OutlineAttributes::__setThickness");
	var $spos = $s.length;
	this.m_nThickness = p_nValue;
	this.modified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.alpha = null;
sandy.materials.attributes.OutlineAttributes.prototype.angleThreshold = null;
sandy.materials.attributes.OutlineAttributes.prototype.color = null;
sandy.materials.attributes.OutlineAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.OutlineAttributes::draw");
	var $spos = $s.length;
	var l_oEdge;
	var l_oPolygon;
	var l_bFound;
	var l_bVisible = p_oPolygon.visible;
	var l_oNormal = null;
	var l_nDotThreshold = 0.0;
	if(this.m_nAngleThreshold < 180) {
		l_oNormal = p_oPolygon.normal;
		l_nDotThreshold = Math.cos(this.m_nAngleThreshold * 0.017453292519943295769236907684886);
	}
	p_oGraphics.lineStyle(this.m_nThickness,this.m_nColor,this.m_nAlpha);
	p_oGraphics.beginFill(0);
	{
		var _g = 0, _g1 = p_oPolygon.aEdges;
		while(_g < _g1.length) {
			var l_oEdge1 = _g1[_g];
			++_g;
			l_bFound = false;
			{
				var _g2 = 0, _g3 = p_oPolygon.aNeighboors;
				while(_g2 < _g3.length) {
					var l_oPolygon1 = _g3[_g2];
					++_g2;
					if((l_oPolygon1.aEdges.indexOf(l_oEdge1)) > -1) {
						if((l_oPolygon1.visible != l_bVisible) || ((this.m_nAngleThreshold < 180) && (l_oNormal.dot(l_oPolygon1.normal) < l_nDotThreshold))) {
							p_oGraphics.moveTo(l_oEdge1.vertex1.sx,l_oEdge1.vertex1.sy);
							p_oGraphics.lineTo(l_oEdge1.vertex2.sx,l_oEdge1.vertex2.sy);
						}
						l_bFound = true;
					}
				}
			}
			if(l_bFound == false) {
				p_oGraphics.moveTo(l_oEdge1.vertex1.sx,l_oEdge1.vertex1.sy);
				p_oGraphics.lineTo(l_oEdge1.vertex2.sx,l_oEdge1.vertex2.sy);
			}
		}
	}
	p_oGraphics.endFill();
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.drawOnSprite = function(p_oSprite,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.OutlineAttributes::drawOnSprite");
	var $spos = $s.length;
	var g = p_oSprite.__getContainer().GetGraphics();
	g.clear();
	var r = p_oSprite.__getContainer().getBounds(p_oSprite.__getContainer());
	g.lineStyle(this.m_nThickness,this.m_nColor,this.m_nAlpha);
	g.drawRect(r.x,r.y,r.width,r.height);
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.init = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.OutlineAttributes::init");
	var $spos = $s.length;
	if(this.SHAPE_MAP.get(p_oPolygon.shape.id) == null) {
		var l_aPoly = p_oPolygon.shape.aPolygons;
		var a = l_aPoly.length, lCount = 0, i, j;
		var lP1, lP2;
		var l_aEdges;
		var l_bNoInfo = true;
		{
			var _g = 0;
			while(_g < a) {
				var i1 = _g++;
				if(l_aPoly[i1].aNeighboors.length > 0) l_bNoInfo = false;
			}
		}
		if(l_bNoInfo) {
			{
				var _g1 = 0, _g = a - 1;
				while(_g1 < _g) {
					var i1 = _g1++;
					lP1 = l_aPoly[i1];
					{
						var _g2 = i1 + 1;
						while(_g2 < a) {
							var j1 = _g2++;
							lP2 = l_aPoly[j1];
							l_aEdges = lP2.aEdges;
							lCount = 0;
							{
								var _g3 = 0, _g4 = lP1.aEdges;
								while(_g3 < _g4.length) {
									var l_oEdge = _g4[_g3];
									++_g3;
									if((l_aEdges.indexOf(l_oEdge)) > -1) lCount += 1;
								}
							}
							if(lCount > 0) {
								lP1.aNeighboors.push(lP2);
								lP2.aNeighboors.push(lP1);
							}
						}
					}
				}
			}
		}
		this.SHAPE_MAP.set(p_oPolygon.shape.id,true);
	}
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.m_nAlpha = null;
sandy.materials.attributes.OutlineAttributes.prototype.m_nAngleThreshold = null;
sandy.materials.attributes.OutlineAttributes.prototype.m_nColor = null;
sandy.materials.attributes.OutlineAttributes.prototype.m_nThickness = null;
sandy.materials.attributes.OutlineAttributes.prototype.modified = null;
sandy.materials.attributes.OutlineAttributes.prototype.thickness = null;
sandy.materials.attributes.OutlineAttributes.prototype.unlink = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.OutlineAttributes::unlink");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.OutlineAttributes.prototype.__class__ = sandy.materials.attributes.OutlineAttributes;
xpath.tokenizer.token.FixedStringTokenizer = function(token,string,tokenName) { if( token === $_ ) return; {
	$s.push("xpath.tokenizer.token.FixedStringTokenizer::new");
	var $spos = $s.length;
	this.token = token;
	this.string = string;
	this.tokenName = tokenName;
	$s.pop();
}}
xpath.tokenizer.token.FixedStringTokenizer.__name__ = ["xpath","tokenizer","token","FixedStringTokenizer"];
xpath.tokenizer.token.FixedStringTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.FixedStringTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.FixedStringTokenizer.prototype.string = null;
xpath.tokenizer.token.FixedStringTokenizer.prototype.token = null;
xpath.tokenizer.token.FixedStringTokenizer.prototype.tokenName = null;
xpath.tokenizer.token.FixedStringTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.FixedStringTokenizer::tokenize");
	var $spos = $s.length;
	if(input.query.substr(input.position,this.string.length) == this.string) {
		var result = [this.token];
		var characterLength = this.string.length;
		characterLength += this.countWhitespace(input.query,input.position + characterLength);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : this.tokenName, position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.FixedStringTokenizer.prototype.__class__ = xpath.tokenizer.token.FixedStringTokenizer;
xpath.tokenizer.token.EndExpressionTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.EndExpressionTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.EndExpressionToken(),"","EndExpression"]);
	$s.pop();
}}
xpath.tokenizer.token.EndExpressionTokenizer.__name__ = ["xpath","tokenizer","token","EndExpressionTokenizer"];
xpath.tokenizer.token.EndExpressionTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.EndExpressionTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.EndExpressionTokenizer.instance = null;
xpath.tokenizer.token.EndExpressionTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.EndExpressionTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.EndExpressionTokenizer.instance == null) xpath.tokenizer.token.EndExpressionTokenizer.instance = new xpath.tokenizer.token.EndExpressionTokenizer();
	{
		var $tmp = xpath.tokenizer.token.EndExpressionTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.EndExpressionTokenizer.prototype.__class__ = xpath.tokenizer.token.EndExpressionTokenizer;
sandy.view = {}
sandy.view.CullingState = { __ename__ : ["sandy","view","CullingState"], __constructs__ : ["INTERSECT","INSIDE","OUTSIDE"] }
sandy.view.CullingState.INSIDE = ["INSIDE",1];
sandy.view.CullingState.INSIDE.toString = $estr;
sandy.view.CullingState.INSIDE.__enum__ = sandy.view.CullingState;
sandy.view.CullingState.INTERSECT = ["INTERSECT",0];
sandy.view.CullingState.INTERSECT.toString = $estr;
sandy.view.CullingState.INTERSECT.__enum__ = sandy.view.CullingState;
sandy.view.CullingState.OUTSIDE = ["OUTSIDE",2];
sandy.view.CullingState.OUTSIDE.toString = $estr;
sandy.view.CullingState.OUTSIDE.__enum__ = sandy.view.CullingState;
sandy.math.IntersectionMath = function() { }
sandy.math.IntersectionMath.__name__ = ["sandy","math","IntersectionMath"];
sandy.math.IntersectionMath.intersectionBSphere = function(p_oBSphereA,p_oBSphereB) {
	$s.push("sandy.math.IntersectionMath::intersectionBSphere");
	var $spos = $s.length;
	var l_oVec = p_oBSphereA.position.clone();
	l_oVec.sub(p_oBSphereB.position);
	var l_nDist = p_oBSphereA.radius + p_oBSphereB.radius;
	var l_nNorm = l_oVec.getNorm();
	{
		var $tmp = (l_nNorm <= l_nDist);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.IntersectionMath.intersectionLine3D = function(p_oPointA,p_oPointB,p_oPointC,p_oPointD) {
	$s.push("sandy.math.IntersectionMath::intersectionLine3D");
	var $spos = $s.length;
	var res = [new sandy.core.data.Vector(0.5 * (p_oPointA.x + p_oPointB.x),0.5 * (p_oPointA.y + p_oPointB.y),0.5 * (p_oPointA.z + p_oPointB.z)),new sandy.core.data.Vector(0.5 * (p_oPointC.x + p_oPointD.x),0.5 * (p_oPointC.y + p_oPointD.y),0.5 * (p_oPointC.z + p_oPointD.z))];
	var p13_x = p_oPointA.x - p_oPointC.x;
	var p13_y = p_oPointA.y - p_oPointC.y;
	var p13_z = p_oPointA.z - p_oPointC.z;
	var p43_x = p_oPointD.x - p_oPointC.x;
	var p43_y = p_oPointD.y - p_oPointC.y;
	var p43_z = p_oPointD.z - p_oPointC.z;
	if(sandy.util.NumberUtil.isZero(p43_x) && sandy.util.NumberUtil.isZero(p43_y) && sandy.util.NumberUtil.isZero(p43_z)) {
		$s.pop();
		return res;
	}
	var p21_x = p_oPointB.x - p_oPointA.x;
	var p21_y = p_oPointB.y - p_oPointA.y;
	var p21_z = p_oPointB.z - p_oPointA.z;
	if(sandy.util.NumberUtil.isZero(p21_x) && sandy.util.NumberUtil.isZero(p21_y) && sandy.util.NumberUtil.isZero(p21_z)) {
		$s.pop();
		return res;
	}
	var d1343 = p13_x * p43_x + p13_y * p43_y + p13_z * p43_z;
	var d4321 = p43_x * p21_x + p43_y * p21_y + p43_z * p21_z;
	var d1321 = p13_x * p21_x + p13_y * p21_y + p13_z * p21_z;
	var d4343 = p43_x * p43_x + p43_y * p43_y + p43_z * p43_z;
	var d2121 = p21_x * p21_x + p21_y * p21_y + p21_z * p21_z;
	var denom = d2121 * d4343 - d4321 * d4321;
	if(sandy.util.NumberUtil.isZero(denom)) {
		$s.pop();
		return res;
	}
	var mua = (d1343 * d4321 - d1321 * d4343) / denom;
	var mub = (d1343 + d4321 * mua) / d4343;
	{
		var $tmp = [new sandy.core.data.Vector(p_oPointA.x + mua * p21_x,p_oPointA.y + mua * p21_y,p_oPointA.z + mua * p21_z),new sandy.core.data.Vector(p_oPointC.x + mub * p43_x,p_oPointC.y + mub * p43_y,p_oPointC.z + mub * p43_z)];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.IntersectionMath.intersectionLine2D = function(p_oPointA,p_oPointB,p_oPointC,p_oPointD) {
	$s.push("sandy.math.IntersectionMath::intersectionLine2D");
	var $spos = $s.length;
	var xA = p_oPointA.x;
	var yA = p_oPointA.y;
	var xB = p_oPointB.x;
	var yB = p_oPointB.y;
	var xC = p_oPointC.x;
	var yC = p_oPointC.y;
	var xD = p_oPointD.x;
	var yD = p_oPointD.y;
	var denom = ((yD - yC) * (xB - xA) - (xD - xC) * (yB - yA));
	var retflag = false;
	if(denom == 0) retflag = true;
	var uA = ((xD - xC) * (yA - yC) - (yD - yC) * (xA - xC));
	uA /= denom;
	{
		var $tmp = (retflag?null:new canvas.geom.Point(xA + uA * (xB - xA),yA + uA * (yB - yA)));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.IntersectionMath.isPointInTriangle2D = function(p_oPoint,p_oA,p_oB,p_oC) {
	$s.push("sandy.math.IntersectionMath::isPointInTriangle2D");
	var $spos = $s.length;
	var oneOverDenom = (1 / (((p_oA.y - p_oC.y) * (p_oB.x - p_oC.x)) + ((p_oB.y - p_oC.y) * (p_oC.x - p_oA.x))));
	var b1 = (oneOverDenom * (((p_oPoint.y - p_oC.y) * (p_oB.x - p_oC.x)) + ((p_oB.y - p_oC.y) * (p_oC.x - p_oPoint.x))));
	var b2 = (oneOverDenom * (((p_oPoint.y - p_oA.y) * (p_oC.x - p_oA.x)) + ((p_oC.y - p_oA.y) * (p_oA.x - p_oPoint.x))));
	var b3 = (oneOverDenom * (((p_oPoint.y - p_oB.y) * (p_oA.x - p_oB.x)) + ((p_oA.y - p_oB.y) * (p_oB.x - p_oPoint.x))));
	{
		var $tmp = ((b1 > 0) && (b2 > 0) && (b3 > 0));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.IntersectionMath.prototype.__class__ = sandy.math.IntersectionMath;
xpath.xml = {}
xpath.xml.XmlNodeType = { __ename__ : ["xpath","xml","XmlNodeType"], __constructs__ : ["Root","Element","Text","Attribute","Namespace","ProcessingInstruction","Comment"] }
xpath.xml.XmlNodeType.Attribute = ["Attribute",3];
xpath.xml.XmlNodeType.Attribute.toString = $estr;
xpath.xml.XmlNodeType.Attribute.__enum__ = xpath.xml.XmlNodeType;
xpath.xml.XmlNodeType.Comment = ["Comment",6];
xpath.xml.XmlNodeType.Comment.toString = $estr;
xpath.xml.XmlNodeType.Comment.__enum__ = xpath.xml.XmlNodeType;
xpath.xml.XmlNodeType.Element = ["Element",1];
xpath.xml.XmlNodeType.Element.toString = $estr;
xpath.xml.XmlNodeType.Element.__enum__ = xpath.xml.XmlNodeType;
xpath.xml.XmlNodeType.Namespace = ["Namespace",4];
xpath.xml.XmlNodeType.Namespace.toString = $estr;
xpath.xml.XmlNodeType.Namespace.__enum__ = xpath.xml.XmlNodeType;
xpath.xml.XmlNodeType.ProcessingInstruction = ["ProcessingInstruction",5];
xpath.xml.XmlNodeType.ProcessingInstruction.toString = $estr;
xpath.xml.XmlNodeType.ProcessingInstruction.__enum__ = xpath.xml.XmlNodeType;
xpath.xml.XmlNodeType.Root = ["Root",0];
xpath.xml.XmlNodeType.Root.toString = $estr;
xpath.xml.XmlNodeType.Root.__enum__ = xpath.xml.XmlNodeType;
xpath.xml.XmlNodeType.Text = ["Text",2];
xpath.xml.XmlNodeType.Text.toString = $estr;
xpath.xml.XmlNodeType.Text.__enum__ = xpath.xml.XmlNodeType;
xpath.tokenizer.token.NegationOperatorTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.NegationOperatorTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.NegationOperatorToken(),"-","NegationOperator"]);
	$s.pop();
}}
xpath.tokenizer.token.NegationOperatorTokenizer.__name__ = ["xpath","tokenizer","token","NegationOperatorTokenizer"];
xpath.tokenizer.token.NegationOperatorTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.NegationOperatorTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.NegationOperatorTokenizer.instance = null;
xpath.tokenizer.token.NegationOperatorTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.NegationOperatorTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.NegationOperatorTokenizer.instance == null) xpath.tokenizer.token.NegationOperatorTokenizer.instance = new xpath.tokenizer.token.NegationOperatorTokenizer();
	{
		var $tmp = xpath.tokenizer.token.NegationOperatorTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.NegationOperatorTokenizer.prototype.__class__ = xpath.tokenizer.token.NegationOperatorTokenizer;
xpath.context = {}
xpath.context.Environment = function() { }
xpath.context.Environment.__name__ = ["xpath","context","Environment"];
xpath.context.Environment.prototype.callFunction = null;
xpath.context.Environment.prototype.existsFunction = null;
xpath.context.Environment.prototype.existsVariable = null;
xpath.context.Environment.prototype.getFunction = null;
xpath.context.Environment.prototype.getVariable = null;
xpath.context.Environment.prototype.__class__ = xpath.context.Environment;
xpath.context.UnionEnvironment = function(primary,secondary) { if( primary === $_ ) return; {
	$s.push("xpath.context.UnionEnvironment::new");
	var $spos = $s.length;
	this.primary = primary;
	this.secondary = secondary;
	$s.pop();
}}
xpath.context.UnionEnvironment.__name__ = ["xpath","context","UnionEnvironment"];
xpath.context.UnionEnvironment.prototype.callFunction = function(context,name,parameters) {
	$s.push("xpath.context.UnionEnvironment::callFunction");
	var $spos = $s.length;
	{
		var $tmp = (this.getFunction(name))(context,parameters);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.UnionEnvironment.prototype.existsFunction = function(name) {
	$s.push("xpath.context.UnionEnvironment::existsFunction");
	var $spos = $s.length;
	{
		var $tmp = this.primary.existsFunction(name) || this.secondary.existsFunction(name);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.UnionEnvironment.prototype.existsVariable = function(name) {
	$s.push("xpath.context.UnionEnvironment::existsVariable");
	var $spos = $s.length;
	{
		var $tmp = this.primary.existsVariable(name) || this.secondary.existsVariable(name);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.UnionEnvironment.prototype.getFunction = function(name) {
	$s.push("xpath.context.UnionEnvironment::getFunction");
	var $spos = $s.length;
	if(this.primary.existsFunction(name)) {
		var $tmp = this.primary.getFunction(name);
		$s.pop();
		return $tmp;
	}
	else {
		var $tmp = this.secondary.getFunction(name);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.UnionEnvironment.prototype.getVariable = function(name) {
	$s.push("xpath.context.UnionEnvironment::getVariable");
	var $spos = $s.length;
	if(this.primary.existsVariable(name)) {
		var $tmp = this.primary.getVariable(name);
		$s.pop();
		return $tmp;
	}
	else {
		var $tmp = this.secondary.getVariable(name);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.UnionEnvironment.prototype.primary = null;
xpath.context.UnionEnvironment.prototype.secondary = null;
xpath.context.UnionEnvironment.prototype.__class__ = xpath.context.UnionEnvironment;
xpath.context.UnionEnvironment.__interfaces__ = [xpath.context.Environment];
sandy.materials.attributes.ALightAttributes = function(p) { if( p === $_ ) return; {
	$s.push("sandy.materials.attributes.ALightAttributes::new");
	var $spos = $s.length;
	this.m_oH = new sandy.core.data.Vector();
	this.m_nFlags = 0;
	this._ambient = 0.3;
	this._diffuse = 1.0;
	this._specular = 0.0;
	this._gloss = 5.0;
	this.m_oCurrentL = new sandy.core.data.Vector();
	this.m_oCurrentV = new sandy.core.data.Vector();
	this.m_oCurrentH = new sandy.core.data.Vector();
	$s.pop();
}}
sandy.materials.attributes.ALightAttributes.__name__ = ["sandy","materials","attributes","ALightAttributes"];
sandy.materials.attributes.ALightAttributes.prototype.__getAmbient = function() {
	$s.push("sandy.materials.attributes.ALightAttributes::__getAmbient");
	var $spos = $s.length;
	{
		var $tmp = this._ambient;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__getDiffuse = function() {
	$s.push("sandy.materials.attributes.ALightAttributes::__getDiffuse");
	var $spos = $s.length;
	{
		var $tmp = this._diffuse;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__getFlags = function() {
	$s.push("sandy.materials.attributes.ALightAttributes::__getFlags");
	var $spos = $s.length;
	{
		var $tmp = this.m_nFlags;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__getGloss = function() {
	$s.push("sandy.materials.attributes.ALightAttributes::__getGloss");
	var $spos = $s.length;
	{
		var $tmp = this._gloss;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__getSpecular = function() {
	$s.push("sandy.materials.attributes.ALightAttributes::__getSpecular");
	var $spos = $s.length;
	{
		var $tmp = this._specular;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__setAmbient = function(p_nAmbient) {
	$s.push("sandy.materials.attributes.ALightAttributes::__setAmbient");
	var $spos = $s.length;
	this._ambient = p_nAmbient;
	this.onPropertyChange();
	{
		$s.pop();
		return p_nAmbient;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__setDiffuse = function(p_nDiffuse) {
	$s.push("sandy.materials.attributes.ALightAttributes::__setDiffuse");
	var $spos = $s.length;
	this._diffuse = p_nDiffuse;
	this.onPropertyChange();
	{
		$s.pop();
		return p_nDiffuse;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__setGloss = function(p_nGloss) {
	$s.push("sandy.materials.attributes.ALightAttributes::__setGloss");
	var $spos = $s.length;
	this._gloss = p_nGloss;
	this.onPropertyChange();
	{
		$s.pop();
		return p_nGloss;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__setSpecular = function(p_nSpecular) {
	$s.push("sandy.materials.attributes.ALightAttributes::__setSpecular");
	var $spos = $s.length;
	this._specular = p_nSpecular;
	this.onPropertyChange();
	{
		$s.pop();
		return p_nSpecular;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype._ambient = null;
sandy.materials.attributes.ALightAttributes.prototype._diffuse = null;
sandy.materials.attributes.ALightAttributes.prototype._gloss = null;
sandy.materials.attributes.ALightAttributes.prototype._specular = null;
sandy.materials.attributes.ALightAttributes.prototype.ambient = null;
sandy.materials.attributes.ALightAttributes.prototype.applyColorToDisplayObject = function(s,c,b) {
	$s.push("sandy.materials.attributes.ALightAttributes::applyColorToDisplayObject");
	var $spos = $s.length;
	if((c < 1) || (c > 16777215)) {
		c = 16777215;
	}
	var rgb_r_t = (16711680 & c) >> 16;
	var rgb_g_t = (65280 & c) >> 8;
	var rgb_b_t = (255 & c);
	var bY = b * 1.7321 / Math.sqrt(rgb_r_t * rgb_r_t + rgb_g_t * rgb_g_t + rgb_b_t * rgb_b_t);
	var rgb_r = rgb_r_t * bY;
	var rgb_g = rgb_r_t * bY;
	var rgb_b = rgb_r_t * bY;
	var ct = s.GetTransform().colorTransform;
	if((ct.redMultiplier != rgb_r) || (ct.greenMultiplier != rgb_g) || (ct.blueMultiplier != rgb_b)) {
		ct.redMultiplier = rgb_r;
		ct.greenMultiplier = rgb_g;
		ct.blueMultiplier = rgb_b;
		s.GetTransform().colorTransform = ct;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.begin = function(p_oScene) {
	$s.push("sandy.materials.attributes.ALightAttributes::begin");
	var $spos = $s.length;
	this.m_nI = p_oScene.__getLight().getNormalizedPower();
	this.m_oL = p_oScene.__getLight().getDirectionVector();
	this.m_oV = p_oScene.camera.getPosition("absolute");
	this.m_oV.scale(-1);
	this.m_oV.normalize();
	this.m_oH.copy(this.m_oL);
	this.m_oH.add(this.m_oV);
	this.m_oH.normalize();
	this.m_oCurrentShape = null;
	this.m_oCurrentL.copy(this.m_oL);
	this.m_oCurrentV.copy(this.m_oV);
	this.m_oCurrentH.copy(this.m_oH);
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.calculate = function(p_oNormal,p_bFrontside,p_bIgnoreSpecular) {
	$s.push("sandy.materials.attributes.ALightAttributes::calculate");
	var $spos = $s.length;
	if(p_bIgnoreSpecular == null) p_bIgnoreSpecular = false;
	var l_n = (p_bFrontside?-1:1);
	var l_k = l_n * this.m_oCurrentL.dot(p_oNormal);
	if(l_k < 0) l_k = 0;
	l_k = this._ambient + this._diffuse * l_k;
	if(!p_bIgnoreSpecular && (this.__getSpecular() > 0)) {
		var l_s = l_n * this.m_oCurrentH.dot(p_oNormal);
		if(l_s < 0) l_s = 0;
		l_k += this._specular * Math.pow(l_s,this._gloss);
	}
	{
		var $tmp = l_k * this.m_nI;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.diffuse = null;
sandy.materials.attributes.ALightAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.ALightAttributes::draw");
	var $spos = $s.length;
	if(p_oMaterial.lightingEnable) {
		this.applyColorToDisplayObject((p_oPolygon.shape.__getUseSingleContainer()?p_oPolygon.shape.__getContainer():p_oPolygon.__getContainer()),p_oScene.__getLight().__getColor(),1);
		if(this.m_oCurrentShape != p_oPolygon.shape) {
			this.m_oCurrentShape = p_oPolygon.shape;
			var invModelMatrix = this.m_oCurrentShape.invModelMatrix;
			this.m_oCurrentL.copy(this.m_oL);
			invModelMatrix.vectorMult3x3(this.m_oCurrentL);
			this.m_oCurrentV.copy(this.m_oV);
			invModelMatrix.vectorMult3x3(this.m_oCurrentV);
			this.m_oCurrentH.copy(this.m_oH);
			invModelMatrix.vectorMult3x3(this.m_oCurrentH);
		}
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.drawOnSprite = function(p_oSprite,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.ALightAttributes::drawOnSprite");
	var $spos = $s.length;
	if(p_oMaterial.lightingEnable) {
		this.applyColorToDisplayObject(p_oSprite.__getContainer(),p_oScene.__getLight().__getColor(),this.__getAmbient() * p_oScene.__getLight().getNormalizedPower());
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.finish = function(p_oScene) {
	$s.push("sandy.materials.attributes.ALightAttributes::finish");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.flags = null;
sandy.materials.attributes.ALightAttributes.prototype.gloss = null;
sandy.materials.attributes.ALightAttributes.prototype.init = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.ALightAttributes::init");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.m_nFlags = null;
sandy.materials.attributes.ALightAttributes.prototype.m_nI = null;
sandy.materials.attributes.ALightAttributes.prototype.m_oCurrentH = null;
sandy.materials.attributes.ALightAttributes.prototype.m_oCurrentL = null;
sandy.materials.attributes.ALightAttributes.prototype.m_oCurrentShape = null;
sandy.materials.attributes.ALightAttributes.prototype.m_oCurrentV = null;
sandy.materials.attributes.ALightAttributes.prototype.m_oH = null;
sandy.materials.attributes.ALightAttributes.prototype.m_oL = null;
sandy.materials.attributes.ALightAttributes.prototype.m_oV = null;
sandy.materials.attributes.ALightAttributes.prototype.onPropertyChange = function() {
	$s.push("sandy.materials.attributes.ALightAttributes::onPropertyChange");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.specular = null;
sandy.materials.attributes.ALightAttributes.prototype.unlink = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.ALightAttributes::unlink");
	var $spos = $s.length;
	if(this.m_oCurrentShape == p_oPolygon.shape) {
		this.m_oCurrentShape = null;
	}
	$s.pop();
}
sandy.materials.attributes.ALightAttributes.prototype.__class__ = sandy.materials.attributes.ALightAttributes;
sandy.materials.attributes.ALightAttributes.__interfaces__ = [sandy.materials.attributes.IAttributes];
sandy.materials.attributes.GouraudAttributes = function(p_bBright,p_nAmbient) { if( p_bBright === $_ ) return; {
	$s.push("sandy.materials.attributes.GouraudAttributes::new");
	var $spos = $s.length;
	if(p_nAmbient == null) p_nAmbient = 0.0;
	if(p_bBright == null) p_bBright = false;
	this.m1 = new canvas.geom.Matrix();
	this.m2 = new canvas.geom.Matrix();
	this._useBright = true;
	sandy.materials.attributes.ALightAttributes.apply(this,[]);
	this.__setUseBright(p_bBright);
	this.__setAmbient(Math.min(Math.max(p_nAmbient,0),1));
	$s.pop();
}}
sandy.materials.attributes.GouraudAttributes.__name__ = ["sandy","materials","attributes","GouraudAttributes"];
sandy.materials.attributes.GouraudAttributes.__super__ = sandy.materials.attributes.ALightAttributes;
for(var k in sandy.materials.attributes.ALightAttributes.prototype ) sandy.materials.attributes.GouraudAttributes.prototype[k] = sandy.materials.attributes.ALightAttributes.prototype[k];
sandy.materials.attributes.GouraudAttributes.prototype.__getUseBright = function() {
	$s.push("sandy.materials.attributes.GouraudAttributes::__getUseBright");
	var $spos = $s.length;
	{
		var $tmp = this._useBright;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.GouraudAttributes.prototype.__setUseBright = function(p_bUseBright) {
	$s.push("sandy.materials.attributes.GouraudAttributes::__setUseBright");
	var $spos = $s.length;
	this._useBright = p_bUseBright;
	this.makeLightMap();
	{
		$s.pop();
		return p_bUseBright;
	}
	$s.pop();
}
sandy.materials.attributes.GouraudAttributes.prototype._useBright = null;
sandy.materials.attributes.GouraudAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.GouraudAttributes::draw");
	var $spos = $s.length;
	sandy.materials.attributes.ALightAttributes.prototype.draw.apply(this,[p_oGraphics,p_oPolygon,p_oMaterial,p_oScene]);
	if(!p_oMaterial.lightingEnable) {
		$s.pop();
		return;
	}
	var l_aPoints = ((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices);
	var l_bVisible = p_oPolygon.visible;
	var l_nAmbient = this.__getAmbient();
	var v0L = this.calculate(p_oPolygon.vertexNormals[0].getVector(),l_bVisible);
	if(v0L < l_nAmbient) v0L = l_nAmbient;
	else if(v0L > 1) v0L = 1;
	var v1L = this.calculate(p_oPolygon.vertexNormals[1].getVector(),l_bVisible);
	if(v1L < l_nAmbient) v1L = l_nAmbient;
	else if(v1L > 1) v1L = 1;
	var v2L = this.calculate(p_oPolygon.vertexNormals[2].getVector(),l_bVisible);
	if(v2L < l_nAmbient) v2L = l_nAmbient;
	else if(v2L > 1) v2L = 1;
	var v0, v1, v2, u0, u1, u2, tmp;
	v0 = -100;
	v1 = 0;
	v2 = 100;
	u0 = (v0L - 0.5) * (32768 * 0.05);
	u1 = (v1L - 0.5) * (32768 * 0.05);
	u2 = (v2L - 0.5) * (32768 * 0.05);
	this.m2.tx = l_aPoints[0].sx;
	this.m2.ty = l_aPoints[0].sy;
	if((Std["int"](u0 * 0.1) == Std["int"](u1 * 0.1)) && (Std["int"](u1 * 0.1) == Std["int"](u2 * 0.1))) {
		p_oGraphics.lineStyle();
		if(this._useBright) p_oGraphics.beginFill(((v0L < 0.5)?0:16777215),((v0L < 0.5)?(1 - 2 * v0L):(2 * v0L - 1)));
		else p_oGraphics.beginFill(0,1 - v0L);
		p_oGraphics.moveTo(this.m2.tx,this.m2.ty);
		{
			var _g = 0;
			while(_g < l_aPoints.length) {
				var m_oVertex = l_aPoints[_g];
				++_g;
				p_oGraphics.lineTo(m_oVertex.sx,m_oVertex.sy);
			}
		}
		p_oGraphics.endFill();
		{
			$s.pop();
			return;
		}
	}
	if((u2 - u1) * (u1 - u0) > 0) {
		tmp = v1;
		v1 = v2;
		v2 = tmp;
	}
	this.m1.a = u1 - u0;
	this.m1.b = v1 - v0;
	this.m1.c = u2 - u0;
	this.m1.d = v2 - v0;
	this.m1.tx = u0;
	this.m1.ty = v0;
	this.m1.invert();
	this.m2.a = l_aPoints[1].sx - this.m2.tx;
	this.m2.b = l_aPoints[1].sy - this.m2.ty;
	this.m2.c = l_aPoints[2].sx - this.m2.tx;
	this.m2.d = l_aPoints[2].sy - this.m2.ty;
	this.m1.concat(this.m2);
	p_oGraphics.beginGradientFill(canvas.display.GradientType.LINEAR,this.m_aColors,this.m_aAlphas,this.m_aRatios,this.m1);
	p_oGraphics.moveTo(this.m2.tx,this.m2.ty);
	{
		var _g = 0;
		while(_g < l_aPoints.length) {
			var m_oVertex = l_aPoints[_g];
			++_g;
			p_oGraphics.lineTo(m_oVertex.sx,m_oVertex.sy);
		}
	}
	p_oGraphics.endFill();
	$s.pop();
}
sandy.materials.attributes.GouraudAttributes.prototype.m1 = null;
sandy.materials.attributes.GouraudAttributes.prototype.m2 = null;
sandy.materials.attributes.GouraudAttributes.prototype.m_aAlphas = null;
sandy.materials.attributes.GouraudAttributes.prototype.m_aColors = null;
sandy.materials.attributes.GouraudAttributes.prototype.m_aRatios = null;
sandy.materials.attributes.GouraudAttributes.prototype.m_oVertex = null;
sandy.materials.attributes.GouraudAttributes.prototype.makeLightMap = function() {
	$s.push("sandy.materials.attributes.GouraudAttributes::makeLightMap");
	var $spos = $s.length;
	this.m_aColors = (this._useBright?[0,0,16777215,16777215]:[0,0]);
	this.m_aAlphas = (this._useBright?[1.0,0.0,0.0,1.0]:[1.0,0.0]);
	this.m_aRatios = (this._useBright?[0,127,127,255]:[0,255]);
	$s.pop();
}
sandy.materials.attributes.GouraudAttributes.prototype.useBright = null;
sandy.materials.attributes.GouraudAttributes.prototype.v0L = null;
sandy.materials.attributes.GouraudAttributes.prototype.v1L = null;
sandy.materials.attributes.GouraudAttributes.prototype.v2L = null;
sandy.materials.attributes.GouraudAttributes.prototype.__class__ = sandy.materials.attributes.GouraudAttributes;
xpath.tokenizer.token.PINameTestTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.PINameTestTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.PINameTestTokenizer.__name__ = ["xpath","tokenizer","token","PINameTestTokenizer"];
xpath.tokenizer.token.PINameTestTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.PINameTestTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.PINameTestTokenizer.instance = null;
xpath.tokenizer.token.PINameTestTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.PINameTestTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.PINameTestTokenizer.instance == null) xpath.tokenizer.token.PINameTestTokenizer.instance = new xpath.tokenizer.token.PINameTestTokenizer();
	{
		var $tmp = xpath.tokenizer.token.PINameTestTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.PINameTestTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.PINameTestTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	if(input.query.substr(pos,22) != "processing-instruction") {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "PINameTest", position : input.position}]);
	}
	pos += 22;
	pos += this.countWhitespace(input.query,pos);
	if(input.query.charAt(pos) != "(") throw new xpath.tokenizer.ExpectedException([{ tokenName : "PINameTest", position : input.position}]);
	++pos;
	pos += this.countWhitespace(input.query,pos);
	var name;
	var quote = input.query.charAt(pos);
	if(quote == "'" || quote == "\"") {
		var nameStartPos = pos + 1;
		var $char;
		do {
			$char = input.query.charAt(++pos);
		} while($char != quote && pos < input.query.length - 1);
		if($char == quote) {
			name = input.query.substr(nameStartPos,pos - nameStartPos);
		}
		else {
			throw new xpath.tokenizer.ExpectedException([{ tokenName : "PINameTest", position : input.position}]);
		}
		++pos;
		pos += this.countWhitespace(input.query,pos);
	}
	else {
		name = null;
	}
	if(input.query.charAt(pos) == ")") {
		++pos;
		pos += this.countWhitespace(input.query,pos);
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.PINameTestToken(name);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		var characterLength = pos - input.position;
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "PINameTest", position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.PINameTestTokenizer.prototype.__class__ = xpath.tokenizer.token.PINameTestTokenizer;
sandy.core.data.UVCoord = function(p_nU,p_nV) { if( p_nU === $_ ) return; {
	$s.push("sandy.core.data.UVCoord::new");
	var $spos = $s.length;
	p_nU = ((p_nU != null)?p_nU:0);
	p_nV = ((p_nV != null)?p_nV:0);
	this.u = p_nU;
	this.v = p_nV;
	$s.pop();
}}
sandy.core.data.UVCoord.__name__ = ["sandy","core","data","UVCoord"];
sandy.core.data.UVCoord.prototype.add = function(p_oUV) {
	$s.push("sandy.core.data.UVCoord::add");
	var $spos = $s.length;
	this.u += p_oUV.u;
	this.v += p_oUV.v;
	$s.pop();
}
sandy.core.data.UVCoord.prototype.clone = function() {
	$s.push("sandy.core.data.UVCoord::clone");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.UVCoord(this.u,this.v);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.UVCoord.prototype.copy = function(p_oUV) {
	$s.push("sandy.core.data.UVCoord::copy");
	var $spos = $s.length;
	this.u = p_oUV.u;
	this.v = p_oUV.v;
	$s.pop();
}
sandy.core.data.UVCoord.prototype.length = function() {
	$s.push("sandy.core.data.UVCoord::length");
	var $spos = $s.length;
	{
		var $tmp = Math.sqrt(this.u * this.u + this.v * this.v);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.UVCoord.prototype.normalize = function() {
	$s.push("sandy.core.data.UVCoord::normalize");
	var $spos = $s.length;
	var l_nLength = this.length();
	this.u /= l_nLength;
	this.v /= l_nLength;
	$s.pop();
}
sandy.core.data.UVCoord.prototype.scale = function(p_nFactor) {
	$s.push("sandy.core.data.UVCoord::scale");
	var $spos = $s.length;
	this.u *= p_nFactor;
	this.v *= p_nFactor;
	$s.pop();
}
sandy.core.data.UVCoord.prototype.sub = function(p_oUV) {
	$s.push("sandy.core.data.UVCoord::sub");
	var $spos = $s.length;
	this.u -= p_oUV.u;
	this.v -= p_oUV.v;
	$s.pop();
}
sandy.core.data.UVCoord.prototype.toString = function() {
	$s.push("sandy.core.data.UVCoord::toString");
	var $spos = $s.length;
	{
		var $tmp = "sandy.core.data.UVCoord" + "(u:" + this.u + ", v:" + this.v + ")";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.UVCoord.prototype.u = null;
sandy.core.data.UVCoord.prototype.v = null;
sandy.core.data.UVCoord.prototype.__class__ = sandy.core.data.UVCoord;
sandy.materials.IAlphaMaterial = function() { }
sandy.materials.IAlphaMaterial.__name__ = ["sandy","materials","IAlphaMaterial"];
sandy.materials.IAlphaMaterial.prototype.__getAlpha = null;
sandy.materials.IAlphaMaterial.prototype.__setAlpha = null;
sandy.materials.IAlphaMaterial.prototype.alpha = null;
sandy.materials.IAlphaMaterial.prototype.__class__ = sandy.materials.IAlphaMaterial;
nme.geom = {}
nme.geom.Point = function(inX,inY) { if( inX === $_ ) return; {
	$s.push("nme.geom.Point::new");
	var $spos = $s.length;
	this.x = (inX == null?0.0:inX);
	this.y = (inY == null?0.0:inY);
	$s.pop();
}}
nme.geom.Point.__name__ = ["nme","geom","Point"];
nme.geom.Point.distance = function(pt1,pt2) {
	$s.push("nme.geom.Point::distance");
	var $spos = $s.length;
	var dx = pt1.x - pt2.x;
	var dy = pt1.y - pt2.y;
	{
		var $tmp = Math.sqrt(dx * dy + dy * dy);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.interpolate = function(pt1,pt2,f) {
	$s.push("nme.geom.Point::interpolate");
	var $spos = $s.length;
	{
		var $tmp = new nme.geom.Point(pt2.x + f * (pt1.x - pt2.x),pt2.y + f * (pt1.y - pt2.y));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.polar = function(len,angle) {
	$s.push("nme.geom.Point::polar");
	var $spos = $s.length;
	{
		var $tmp = new nme.geom.Point(len * Math.cos(angle),len * Math.sin(angle));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.prototype.add = function(v) {
	$s.push("nme.geom.Point::add");
	var $spos = $s.length;
	{
		var $tmp = new nme.geom.Point(v.x + this.x,v.y + this.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.prototype.clone = function() {
	$s.push("nme.geom.Point::clone");
	var $spos = $s.length;
	{
		var $tmp = new nme.geom.Point(this.x,this.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.prototype.equals = function(toCompare) {
	$s.push("nme.geom.Point::equals");
	var $spos = $s.length;
	{
		var $tmp = toCompare.x == this.x && toCompare.y == this.y;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.prototype.get_length = function() {
	$s.push("nme.geom.Point::get_length");
	var $spos = $s.length;
	{
		var $tmp = Math.sqrt(this.x * this.x + this.y * this.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.prototype.length = null;
nme.geom.Point.prototype.normalize = function(thickness) {
	$s.push("nme.geom.Point::normalize");
	var $spos = $s.length;
	if(this.x == 0 && this.y == 0) this.x = thickness;
	else {
		var norm = thickness / Math.sqrt(this.x * this.x + this.y * this.y);
		this.x *= norm;
		this.y *= norm;
	}
	$s.pop();
}
nme.geom.Point.prototype.offset = function(dx,dy) {
	$s.push("nme.geom.Point::offset");
	var $spos = $s.length;
	this.x += dx;
	this.y += dy;
	$s.pop();
}
nme.geom.Point.prototype.subtract = function(v) {
	$s.push("nme.geom.Point::subtract");
	var $spos = $s.length;
	{
		var $tmp = new nme.geom.Point(this.x - v.x,this.y - v.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
nme.geom.Point.prototype.x = null;
nme.geom.Point.prototype.y = null;
nme.geom.Point.prototype.__class__ = nme.geom.Point;
sandy.parser = {}
sandy.parser.IParser = function() { }
sandy.parser.IParser.__name__ = ["sandy","parser","IParser"];
sandy.parser.IParser.prototype.__setStandardAppearance = null;
sandy.parser.IParser.prototype.parse = null;
sandy.parser.IParser.prototype.standardAppearance = null;
sandy.parser.IParser.prototype.__class__ = sandy.parser.IParser;
xpath.tokenizer.util = {}
xpath.tokenizer.util.Disjunction = function(tokenizers) { if( tokenizers === $_ ) return; {
	$s.push("xpath.tokenizer.util.Disjunction::new");
	var $spos = $s.length;
	if(tokenizers.iterator().hasNext()) {
		this.tokenizers = tokenizers;
	}
	else throw new xpath.tokenizer.TokenizerError("Attempted to create an empty disjunction");
	$s.pop();
}}
xpath.tokenizer.util.Disjunction.__name__ = ["xpath","tokenizer","util","Disjunction"];
xpath.tokenizer.util.Disjunction.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.util.Disjunction::tokenize");
	var $spos = $s.length;
	var expectedTokens = new List();
	var output = null;
	{ var $it7 = this.tokenizers.iterator();
	while( $it7.hasNext() ) { var tokenizer = $it7.next();
	{
		try {
			var tmpOutput = tokenizer.tokenize(input);
			if(output == null || tmpOutput.characterLength > output.characterLength) output = tmpOutput;
		}
		catch( $e8 ) {
			if( js.Boot.__instanceof($e8,xpath.tokenizer.ExpectedException) ) {
				var exception = $e8;
				{
					$e = [];
					while($s.length >= $spos) $e.unshift($s.pop());
					$s.push($e[0]);
					{ var $it9 = exception.expectedTokens.iterator();
					while( $it9.hasNext() ) { var expectedToken = $it9.next();
					{
						expectedTokens.push(expectedToken);
					}
					}}
				}
			} else throw($e8);
		}
	}
	}}
	if(output == null) throw new xpath.tokenizer.ExpectedException(expectedTokens);
	else {
		$s.pop();
		return output;
	}
	$s.pop();
}
xpath.tokenizer.util.Disjunction.prototype.tokenizers = null;
xpath.tokenizer.util.Disjunction.prototype.__class__ = xpath.tokenizer.util.Disjunction;
xpath.tokenizer.util.Disjunction.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.value = {}
xpath.value.XPathValue = function(p) { if( p === $_ ) return; {
	$s.push("xpath.value.XPathValue::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.value.XPathValue.__name__ = ["xpath","value","XPathValue"];
xpath.value.XPathValue.prototype.and = function(rightOperand) {
	$s.push("xpath.value.XPathValue::and");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathBoolean(this.getBool() && rightOperand.getBool());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.divide = function(rightOperand) {
	$s.push("xpath.value.XPathValue::divide");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathNumber(this.getFloat() / rightOperand.getFloat());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.equals = function(rightOperand) {
	$s.push("xpath.value.XPathValue::equals");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.equals() must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.getBool = function() {
	$s.push("xpath.value.XPathValue::getBool");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.getBool() must be overridden");
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.getFloat = function() {
	$s.push("xpath.value.XPathValue::getFloat");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.getFloat() must be overridden");
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.getString = function() {
	$s.push("xpath.value.XPathValue::getString");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.getString() must be overridden");
	{
		$s.pop();
		return "";
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.getXPathBoolean = function() {
	$s.push("xpath.value.XPathValue::getXPathBoolean");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathBoolean(this.getBool());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.getXPathNumber = function() {
	$s.push("xpath.value.XPathValue::getXPathNumber");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathNumber(this.getFloat());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.getXPathString = function() {
	$s.push("xpath.value.XPathValue::getXPathString");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathString(this.getString());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.greaterThan = function(rightOperand) {
	$s.push("xpath.value.XPathValue::greaterThan");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.greaterThan() must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.greaterThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathValue::greaterThanOrEqual");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.greaterThanOrEqual() must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.lessThan = function(rightOperand) {
	$s.push("xpath.value.XPathValue::lessThan");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.lessThan() must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.lessThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathValue::lessThanOrEqual");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.lessThanOrEqual() must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.minus = function(rightOperand) {
	$s.push("xpath.value.XPathValue::minus");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathNumber(this.getFloat() - rightOperand.getFloat());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.modulo = function(rightOperand) {
	$s.push("xpath.value.XPathValue::modulo");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathNumber(this.getFloat() % rightOperand.getFloat());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.multiply = function(rightOperand) {
	$s.push("xpath.value.XPathValue::multiply");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathNumber(this.getFloat() * rightOperand.getFloat());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.notEqual = function(rightOperand) {
	$s.push("xpath.value.XPathValue::notEqual");
	var $spos = $s.length;
	throw new xpath.XPathError("XPathValue.notEqual() must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.or = function(rightOperand) {
	$s.push("xpath.value.XPathValue::or");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathBoolean(this.getBool() || rightOperand.getBool());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.plus = function(rightOperand) {
	$s.push("xpath.value.XPathValue::plus");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathNumber(this.getFloat() + rightOperand.getFloat());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.stringToFloat = function(string) {
	$s.push("xpath.value.XPathValue::stringToFloat");
	var $spos = $s.length;
	var rx = new EReg("^\\s*((-)\\s*)?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)\\s*$","");
	if(rx.match(string)) {
		var signString;
		if(rx.matched(2) == "" || rx.matched(2) == null) {
			{
				var $tmp = Std.parseFloat(rx.matched(3));
				$s.pop();
				return $tmp;
			}
		}
		else {
			{
				var $tmp = -Std.parseFloat(rx.matched(3));
				$s.pop();
				return $tmp;
			}
		}
	}
	else {
		{
			var $tmp = Math.NaN;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.typeName = null;
xpath.value.XPathValue.prototype.union = function(rightOperand) {
	$s.push("xpath.value.XPathValue::union");
	var $spos = $s.length;
	throw new xpath.EvaluationException("can't compute union of " + this.typeName + " and " + rightOperand.typeName);
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.value.XPathValue.prototype.__class__ = xpath.value.XPathValue;
xpath.value.XPathBoolean = function(value) { if( value === $_ ) return; {
	$s.push("xpath.value.XPathBoolean::new");
	var $spos = $s.length;
	xpath.value.XPathValue.apply(this,[]);
	this.typeName = "boolean";
	if(value == null) this.booleanValue = false;
	else this.booleanValue = value;
	$s.pop();
}}
xpath.value.XPathBoolean.__name__ = ["xpath","value","XPathBoolean"];
xpath.value.XPathBoolean.__super__ = xpath.value.XPathValue;
for(var k in xpath.value.XPathValue.prototype ) xpath.value.XPathBoolean.prototype[k] = xpath.value.XPathValue.prototype[k];
xpath.value.XPathBoolean.prototype.booleanValue = null;
xpath.value.XPathBoolean.prototype.equals = function(rightOperand) {
	$s.push("xpath.value.XPathBoolean::equals");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathBoolean(this.getBool() == rightOperand.getBool());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.getBool = function() {
	$s.push("xpath.value.XPathBoolean::getBool");
	var $spos = $s.length;
	{
		var $tmp = this.booleanValue;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.getFloat = function() {
	$s.push("xpath.value.XPathBoolean::getFloat");
	var $spos = $s.length;
	if(this.booleanValue) {
		$s.pop();
		return 1.0;
	}
	else {
		$s.pop();
		return 0.0;
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.getString = function() {
	$s.push("xpath.value.XPathBoolean::getString");
	var $spos = $s.length;
	if(this.booleanValue) {
		$s.pop();
		return "true";
	}
	else {
		$s.pop();
		return "false";
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.greaterThan = function(rightOperand) {
	$s.push("xpath.value.XPathBoolean::greaterThan");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getBool() && !rightOperand.getBool());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() > rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.greaterThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathBoolean::greaterThanOrEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getBool() || !rightOperand.getBool());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() >= rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.lessThan = function(rightOperand) {
	$s.push("xpath.value.XPathBoolean::lessThan");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		{
			var $tmp = new xpath.value.XPathBoolean(!this.getBool() && rightOperand.getBool());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() < rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.lessThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathBoolean::lessThanOrEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		{
			var $tmp = new xpath.value.XPathBoolean(!this.getBool() || rightOperand.getBool());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() <= rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.notEqual = function(rightOperand) {
	$s.push("xpath.value.XPathBoolean::notEqual");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathBoolean(this.getBool() != rightOperand.getBool());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathBoolean.prototype.__class__ = xpath.value.XPathBoolean;
xpath.value.XPathNumber = function(value) { if( value === $_ ) return; {
	$s.push("xpath.value.XPathNumber::new");
	var $spos = $s.length;
	xpath.value.XPathBoolean.apply(this,[]);
	this.typeName = "number";
	if(value == null) this.numberValue = 0;
	else this.numberValue = value;
	$s.pop();
}}
xpath.value.XPathNumber.__name__ = ["xpath","value","XPathNumber"];
xpath.value.XPathNumber.__super__ = xpath.value.XPathBoolean;
for(var k in xpath.value.XPathBoolean.prototype ) xpath.value.XPathNumber.prototype[k] = xpath.value.XPathBoolean.prototype[k];
xpath.value.XPathNumber.prototype.equals = function(rightOperand) {
	$s.push("xpath.value.XPathNumber::equals");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it10 = nodes.iterator();
		while( $it10.hasNext() ) { var node = $it10.next();
		{
			var nodeValue = this.stringToFloat(node.getStringValue());
			if(this.getFloat() == nodeValue) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else if(Std["is"](rightOperand,xpath.value.XPathNumber)) {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() == rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = xpath.value.XPathBoolean.prototype.equals.apply(this,[rightOperand]);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.getBool = function() {
	$s.push("xpath.value.XPathNumber::getBool");
	var $spos = $s.length;
	{
		var $tmp = (this.numberValue != 0 && !Math.isNaN(this.numberValue));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.getFloat = function() {
	$s.push("xpath.value.XPathNumber::getFloat");
	var $spos = $s.length;
	{
		var $tmp = this.numberValue;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.getString = function() {
	$s.push("xpath.value.XPathNumber::getString");
	var $spos = $s.length;
	var string = Std.string(this.numberValue);
	var eIndex = string.indexOf("e");
	if(eIndex > -1) {
		var digits = string.charAt(0) + string.substr(2,eIndex - 2);
		if(string.charAt(eIndex + 1) == "-") {
			var exponent = Std.parseInt(string.substr(eIndex + 2));
			string = "0.";
			{
				var _g = 1;
				while(_g < exponent) {
					var i = _g++;
					string += "0";
				}
			}
			string += digits;
		}
		else {
			var exponent = Std.parseInt(string.substr(eIndex + 1));
			if(digits.length <= exponent + 1) {
				string = digits;
				while(string.length <= exponent) {
					string += "0";
				}
			}
			else {
				string = (digits.substr(0,exponent + 1) + "." + digits.substr(exponent + 1));
			}
		}
	}
	{
		$s.pop();
		return string;
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.greaterThan = function(rightOperand) {
	$s.push("xpath.value.XPathNumber::greaterThan");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it11 = nodes.iterator();
		while( $it11.hasNext() ) { var node = $it11.next();
		{
			var nodeValue = this.stringToFloat(node.getStringValue());
			if(this.getFloat() > nodeValue) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() > rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.greaterThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathNumber::greaterThanOrEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it12 = nodes.iterator();
		while( $it12.hasNext() ) { var node = $it12.next();
		{
			var nodeValue = this.stringToFloat(node.getStringValue());
			if(this.getFloat() >= nodeValue) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() >= rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.lessThan = function(rightOperand) {
	$s.push("xpath.value.XPathNumber::lessThan");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it13 = nodes.iterator();
		while( $it13.hasNext() ) { var node = $it13.next();
		{
			var nodeValue = this.stringToFloat(node.getStringValue());
			if(this.getFloat() < nodeValue) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() < rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.lessThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathNumber::lessThanOrEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it14 = nodes.iterator();
		while( $it14.hasNext() ) { var node = $it14.next();
		{
			var nodeValue = this.stringToFloat(node.getStringValue());
			if(this.getFloat() <= nodeValue) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() <= rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.notEqual = function(rightOperand) {
	$s.push("xpath.value.XPathNumber::notEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it15 = nodes.iterator();
		while( $it15.hasNext() ) { var node = $it15.next();
		{
			var nodeValue = this.stringToFloat(node.getStringValue());
			if(this.getFloat() != nodeValue) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else if(Std["is"](rightOperand,xpath.value.XPathNumber)) {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getFloat() != rightOperand.getFloat());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = xpath.value.XPathBoolean.prototype.notEqual.apply(this,[rightOperand]);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNumber.prototype.numberValue = null;
xpath.value.XPathNumber.prototype.__class__ = xpath.value.XPathNumber;
xpath.value.XPathString = function(value) { if( value === $_ ) return; {
	$s.push("xpath.value.XPathString::new");
	var $spos = $s.length;
	xpath.value.XPathNumber.apply(this,[]);
	this.typeName = "string";
	if(value == null) this.stringValue = "";
	else this.stringValue = value;
	$s.pop();
}}
xpath.value.XPathString.__name__ = ["xpath","value","XPathString"];
xpath.value.XPathString.__super__ = xpath.value.XPathNumber;
for(var k in xpath.value.XPathNumber.prototype ) xpath.value.XPathString.prototype[k] = xpath.value.XPathNumber.prototype[k];
xpath.value.XPathString.prototype.equals = function(rightOperand) {
	$s.push("xpath.value.XPathString::equals");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it16 = nodes.iterator();
		while( $it16.hasNext() ) { var node = $it16.next();
		{
			if(this.getString() == node.getStringValue()) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else if(Std["is"](rightOperand,xpath.value.XPathNumber)) {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getString() == rightOperand.getString());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = xpath.value.XPathNumber.prototype.equals.apply(this,[rightOperand]);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathString.prototype.getBool = function() {
	$s.push("xpath.value.XPathString::getBool");
	var $spos = $s.length;
	{
		var $tmp = this.stringValue.length != 0;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathString.prototype.getFloat = function() {
	$s.push("xpath.value.XPathString::getFloat");
	var $spos = $s.length;
	{
		var $tmp = this.stringToFloat(this.stringValue);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathString.prototype.getString = function() {
	$s.push("xpath.value.XPathString::getString");
	var $spos = $s.length;
	{
		var $tmp = this.stringValue;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathString.prototype.notEqual = function(rightOperand) {
	$s.push("xpath.value.XPathString::notEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it17 = nodes.iterator();
		while( $it17.hasNext() ) { var node = $it17.next();
		{
			if(this.getString() != node.getStringValue()) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else if(Std["is"](rightOperand,xpath.value.XPathString)) {
		{
			var $tmp = new xpath.value.XPathBoolean(this.getString() != rightOperand.getString());
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = xpath.value.XPathNumber.prototype.notEqual.apply(this,[rightOperand]);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathString.prototype.stringValue = null;
xpath.value.XPathString.prototype.__class__ = xpath.value.XPathString;
xpath.value.XPathNodeSet = function(nodes) { if( nodes === $_ ) return; {
	$s.push("xpath.value.XPathNodeSet::new");
	var $spos = $s.length;
	xpath.value.XPathString.apply(this,[]);
	this.typeName = "node set";
	if(nodes == null) this.nodes = new Array();
	else this.nodes = nodes;
	$s.pop();
}}
xpath.value.XPathNodeSet.__name__ = ["xpath","value","XPathNodeSet"];
xpath.value.XPathNodeSet.__super__ = xpath.value.XPathString;
for(var k in xpath.value.XPathString.prototype ) xpath.value.XPathNodeSet.prototype[k] = xpath.value.XPathString.prototype[k];
xpath.value.XPathNodeSet.prototype.equals = function(rightOperand) {
	$s.push("xpath.value.XPathNodeSet::equals");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var rightNodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it18 = this.nodes.iterator();
		while( $it18.hasNext() ) { var leftNode = $it18.next();
		{
			var leftString = leftNode.getStringValue();
			{ var $it19 = rightNodes.iterator();
			while( $it19.hasNext() ) { var rightNode = $it19.next();
			{
				if(leftString == rightNode.getStringValue()) {
					{
						var $tmp = new xpath.value.XPathBoolean(true);
						$s.pop();
						return $tmp;
					}
				}
			}
			}}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = rightOperand.equals(this);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.getBool = function() {
	$s.push("xpath.value.XPathNodeSet::getBool");
	var $spos = $s.length;
	{
		var $tmp = this.nodes.iterator().hasNext();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.getFirstNodeDocumentOrder = function() {
	$s.push("xpath.value.XPathNodeSet::getFirstNodeDocumentOrder");
	var $spos = $s.length;
	var nodesIterator = this.nodes.iterator();
	if(nodesIterator.hasNext()) {
		{ var $it20 = nodesIterator.next().getDocumentIterator();
		while( $it20.hasNext() ) { var node1 = $it20.next();
		{
			{ var $it21 = this.nodes.iterator();
			while( $it21.hasNext() ) { var node2 = $it21.next();
			{
				if(node1["is"](node2)) {
					$s.pop();
					return node1;
				}
			}
			}}
		}
		}}
	}
	else throw new xpath.EvaluationException("Attempted to get first node of an empty node set");
	throw new xpath.XPathError();
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.getFloat = function() {
	$s.push("xpath.value.XPathNodeSet::getFloat");
	var $spos = $s.length;
	{
		var $tmp = this.getXPathString().getFloat();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.getNodes = function() {
	$s.push("xpath.value.XPathNodeSet::getNodes");
	var $spos = $s.length;
	{
		var $tmp = this.nodes;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.getNodesDocumentOrder = function() {
	$s.push("xpath.value.XPathNodeSet::getNodesDocumentOrder");
	var $spos = $s.length;
	var result = new List();
	var nodesIterator = this.nodes.iterator();
	if(nodesIterator.hasNext()) {
		{ var $it22 = nodesIterator.next().getDocumentIterator();
		while( $it22.hasNext() ) { var node1 = $it22.next();
		{
			{ var $it23 = this.nodes.iterator();
			while( $it23.hasNext() ) { var node2 = $it23.next();
			{
				if(node1["is"](node2)) result.add(node1);
			}
			}}
		}
		}}
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.getString = function() {
	$s.push("xpath.value.XPathNodeSet::getString");
	var $spos = $s.length;
	if(this.nodes.iterator().hasNext()) {
		{
			var $tmp = this.getFirstNodeDocumentOrder().getStringValue();
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			$s.pop();
			return "";
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.greaterThan = function(rightOperand) {
	$s.push("xpath.value.XPathNodeSet::greaterThan");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var rightNodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it24 = this.nodes.iterator();
		while( $it24.hasNext() ) { var leftNode = $it24.next();
		{
			var leftString = leftNode.getStringValue();
			var leftValue = this.stringToFloat(leftString);
			{ var $it25 = rightNodes.iterator();
			while( $it25.hasNext() ) { var rightNode = $it25.next();
			{
				var rightString = rightNode.getStringValue();
				var rightValue = this.stringToFloat(rightString);
				if(leftValue > rightValue) {
					{
						var $tmp = new xpath.value.XPathBoolean(true);
						$s.pop();
						return $tmp;
					}
				}
			}
			}}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{ var $it26 = this.nodes.iterator();
		while( $it26.hasNext() ) { var node = $it26.next();
		{
			var nodeString = node.getStringValue();
			var nodeValue = this.stringToFloat(nodeString);
			if(nodeValue > rightOperand.getFloat()) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.greaterThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathNodeSet::greaterThanOrEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var rightNodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it27 = this.nodes.iterator();
		while( $it27.hasNext() ) { var leftNode = $it27.next();
		{
			var leftString = leftNode.getStringValue();
			var leftValue = this.stringToFloat(leftString);
			{ var $it28 = rightNodes.iterator();
			while( $it28.hasNext() ) { var rightNode = $it28.next();
			{
				var rightString = rightNode.getStringValue();
				var rightValue = this.stringToFloat(rightString);
				if(leftValue >= rightValue) {
					{
						var $tmp = new xpath.value.XPathBoolean(true);
						$s.pop();
						return $tmp;
					}
				}
			}
			}}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{ var $it29 = this.nodes.iterator();
		while( $it29.hasNext() ) { var node = $it29.next();
		{
			var nodeString = node.getStringValue();
			var nodeValue = this.stringToFloat(nodeString);
			if(nodeValue >= rightOperand.getFloat()) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.lessThan = function(rightOperand) {
	$s.push("xpath.value.XPathNodeSet::lessThan");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var rightNodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it30 = this.nodes.iterator();
		while( $it30.hasNext() ) { var leftNode = $it30.next();
		{
			var leftString = leftNode.getStringValue();
			var leftValue = this.stringToFloat(leftString);
			{ var $it31 = rightNodes.iterator();
			while( $it31.hasNext() ) { var rightNode = $it31.next();
			{
				var rightString = rightNode.getStringValue();
				var rightValue = this.stringToFloat(rightString);
				if(leftValue < rightValue) {
					{
						var $tmp = new xpath.value.XPathBoolean(true);
						$s.pop();
						return $tmp;
					}
				}
			}
			}}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{ var $it32 = this.nodes.iterator();
		while( $it32.hasNext() ) { var node = $it32.next();
		{
			var nodeString = node.getStringValue();
			var nodeValue = this.stringToFloat(nodeString);
			if(nodeValue < rightOperand.getFloat()) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.lessThanOrEqual = function(rightOperand) {
	$s.push("xpath.value.XPathNodeSet::lessThanOrEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var rightNodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it33 = this.nodes.iterator();
		while( $it33.hasNext() ) { var leftNode = $it33.next();
		{
			var leftString = leftNode.getStringValue();
			var leftValue = this.stringToFloat(leftString);
			{ var $it34 = rightNodes.iterator();
			while( $it34.hasNext() ) { var rightNode = $it34.next();
			{
				var rightString = rightNode.getStringValue();
				var rightValue = this.stringToFloat(rightString);
				if(leftValue <= rightValue) {
					{
						var $tmp = new xpath.value.XPathBoolean(true);
						$s.pop();
						return $tmp;
					}
				}
			}
			}}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{ var $it35 = this.nodes.iterator();
		while( $it35.hasNext() ) { var node = $it35.next();
		{
			var nodeString = node.getStringValue();
			var nodeValue = this.stringToFloat(nodeString);
			if(nodeValue <= rightOperand.getFloat()) {
				{
					var $tmp = new xpath.value.XPathBoolean(true);
					$s.pop();
					return $tmp;
				}
			}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.nodes = null;
xpath.value.XPathNodeSet.prototype.notEqual = function(rightOperand) {
	$s.push("xpath.value.XPathNodeSet::notEqual");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var rightNodes = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it36 = this.nodes.iterator();
		while( $it36.hasNext() ) { var leftNode = $it36.next();
		{
			var leftString = leftNode.getStringValue();
			{ var $it37 = rightNodes.iterator();
			while( $it37.hasNext() ) { var rightNode = $it37.next();
			{
				if(leftString != rightNode.getStringValue()) {
					{
						var $tmp = new xpath.value.XPathBoolean(true);
						$s.pop();
						return $tmp;
					}
				}
			}
			}}
		}
		}}
		{
			var $tmp = new xpath.value.XPathBoolean(false);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = rightOperand.notEqual(this);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.union = function(rightOperand) {
	$s.push("xpath.value.XPathNodeSet::union");
	var $spos = $s.length;
	if(Std["is"](rightOperand,xpath.value.XPathNodeSet)) {
		var nodes = new List();
		{ var $it38 = this.getNodes().iterator();
		while( $it38.hasNext() ) { var node = $it38.next();
		{
			nodes.add(node);
		}
		}}
		{ var $it39 = function($this) {
			var $r;
			var tmp = rightOperand;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes().iterator();
		while( $it39.hasNext() ) { var node = $it39.next();
		{
			nodes.add(node);
		}
		}}
		{
			var $tmp = new xpath.value.XPathNodeSet(nodes);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = xpath.value.XPathString.prototype.union.apply(this,[rightOperand]);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.value.XPathNodeSet.prototype.__class__ = xpath.value.XPathNodeSet;
neash.net = {}
neash.net.URLLoaderDataFormat = { __ename__ : ["neash","net","URLLoaderDataFormat"], __constructs__ : ["BINARY","TEXT","VARIABLES"] }
neash.net.URLLoaderDataFormat.BINARY = ["BINARY",0];
neash.net.URLLoaderDataFormat.BINARY.toString = $estr;
neash.net.URLLoaderDataFormat.BINARY.__enum__ = neash.net.URLLoaderDataFormat;
neash.net.URLLoaderDataFormat.TEXT = ["TEXT",1];
neash.net.URLLoaderDataFormat.TEXT.toString = $estr;
neash.net.URLLoaderDataFormat.TEXT.__enum__ = neash.net.URLLoaderDataFormat;
neash.net.URLLoaderDataFormat.VARIABLES = ["VARIABLES",2];
neash.net.URLLoaderDataFormat.VARIABLES.toString = $estr;
neash.net.URLLoaderDataFormat.VARIABLES.__enum__ = neash.net.URLLoaderDataFormat;
sandy.core.scenegraph = {}
sandy.core.scenegraph.Node = function(p_sName) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.Node::new");
	var $spos = $s.length;
	this.id = sandy.core.scenegraph.Node._ID_++;
	this.culled = sandy.view.CullingState.OUTSIDE;
	this.visible = true;
	this.scene = null;
	this.children = new Array();
	this.modelMatrix = new sandy.core.data.Matrix4();
	this.viewMatrix = new sandy.core.data.Matrix4();
	this.m_oEB = new sandy.events.BubbleEventBroadcaster();
	this.changed = false;
	p_sName = ((p_sName != null)?p_sName:"");
	this.__setParent(null);
	if(p_sName != null) this.name = p_sName;
	else this.name = Std.string(this.id);
	this.changed = true;
	this.m_oEB = new sandy.events.BubbleEventBroadcaster();
	this.culled = sandy.view.CullingState.INSIDE;
	$s.pop();
}}
sandy.core.scenegraph.Node.__name__ = ["sandy","core","scenegraph","Node"];
sandy.core.scenegraph.Node.prototype.__getAppearance = function() {
	$s.push("sandy.core.scenegraph.Node::__getAppearance");
	var $spos = $s.length;
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__getBroadcaster = function() {
	$s.push("sandy.core.scenegraph.Node::__getBroadcaster");
	var $spos = $s.length;
	{
		var $tmp = this.m_oEB;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__getEnableBackFaceCulling = function() {
	$s.push("sandy.core.scenegraph.Node::__getEnableBackFaceCulling");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__getEnableEvents = function() {
	$s.push("sandy.core.scenegraph.Node::__getEnableEvents");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__getEnableInteractivity = function() {
	$s.push("sandy.core.scenegraph.Node::__getEnableInteractivity");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__getParent = function() {
	$s.push("sandy.core.scenegraph.Node::__getParent");
	var $spos = $s.length;
	{
		var $tmp = this._parent;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__getUseSingleContainer = function() {
	$s.push("sandy.core.scenegraph.Node::__getUseSingleContainer");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__setAppearance = function(p_oApp) {
	$s.push("sandy.core.scenegraph.Node::__setAppearance");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode = _g1[_g];
			++_g;
			l_oNode.__setAppearance(p_oApp);
		}
	}
	{
		$s.pop();
		return p_oApp;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__setEnableBackFaceCulling = function(b) {
	$s.push("sandy.core.scenegraph.Node::__setEnableBackFaceCulling");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_onode = _g1[_g];
			++_g;
			l_onode.__setEnableBackFaceCulling(b);
		}
	}
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__setEnableEvents = function(b) {
	$s.push("sandy.core.scenegraph.Node::__setEnableEvents");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode = _g1[_g];
			++_g;
			l_oNode.__setEnableEvents(b);
		}
	}
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__setEnableInteractivity = function(p_bState) {
	$s.push("sandy.core.scenegraph.Node::__setEnableInteractivity");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode = _g1[_g];
			++_g;
			l_oNode.__setEnableInteractivity(p_bState);
		}
	}
	{
		$s.pop();
		return p_bState;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__setParent = function(p_oNode) {
	$s.push("sandy.core.scenegraph.Node::__setParent");
	var $spos = $s.length;
	if(p_oNode != null) {
		this._parent = p_oNode;
		this.changed = true;
	}
	{
		$s.pop();
		return p_oNode;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.__setUseSingleContainer = function(p_bUseSingleContainer) {
	$s.push("sandy.core.scenegraph.Node::__setUseSingleContainer");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode = _g1[_g];
			++_g;
			l_oNode.__setUseSingleContainer(p_bUseSingleContainer);
		}
	}
	{
		$s.pop();
		return p_bUseSingleContainer;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype._parent = null;
sandy.core.scenegraph.Node.prototype.addChild = function(p_oChild) {
	$s.push("sandy.core.scenegraph.Node::addChild");
	var $spos = $s.length;
	if(p_oChild.__getParent() != null) {
		p_oChild.__getParent().removeChildByName(p_oChild.name);
	}
	p_oChild.__setParent(this);
	this.changed = true;
	this.children.push(p_oChild);
	if(p_oChild.__getBroadcaster() != null) this.m_oEB.addChild(p_oChild.__getBroadcaster());
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.addEventListener = function(p_sEvt,p_oL) {
	$s.push("sandy.core.scenegraph.Node::addEventListener");
	var $spos = $s.length;
	($closure(this.m_oEB,"addEventListener").apply(p_sEvt,[p_sEvt,p_oL]));
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.appearance = null;
sandy.core.scenegraph.Node.prototype.boundingBox = null;
sandy.core.scenegraph.Node.prototype.boundingSphere = null;
sandy.core.scenegraph.Node.prototype.broadcaster = null;
sandy.core.scenegraph.Node.prototype.changed = null;
sandy.core.scenegraph.Node.prototype.children = null;
sandy.core.scenegraph.Node.prototype.cull = function(p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Node::cull");
	var $spos = $s.length;
	if(this.visible == false) {
		this.culled = sandy.view.CullingState.OUTSIDE;
	}
	else {
		if(p_bChanged || this.changed) {
			this.viewMatrix.copy(p_oViewMatrix);
			this.viewMatrix.multiply4x3(this.modelMatrix);
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.culled = null;
sandy.core.scenegraph.Node.prototype.destroy = function() {
	$s.push("sandy.core.scenegraph.Node::destroy");
	var $spos = $s.length;
	if(this.hasParent() == true) this.__getParent().removeChildByName(this.name);
	var l_aTmp = this.children;
	{
		var _g = 0;
		while(_g < l_aTmp.length) {
			var lNode = l_aTmp[_g];
			++_g;
			lNode.destroy();
		}
	}
	this.children.splice(0,this.children.length);
	this.m_oEB = null;
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.enableBackFaceCulling = null;
sandy.core.scenegraph.Node.prototype.enableEvents = null;
sandy.core.scenegraph.Node.prototype.enableInteractivity = null;
sandy.core.scenegraph.Node.prototype.getChildByName = function(p_sName,p_bRecurs) {
	$s.push("sandy.core.scenegraph.Node::getChildByName");
	var $spos = $s.length;
	var l_oNode, l_oNode2;
	p_bRecurs = ((p_bRecurs)?p_bRecurs:false);
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode1 = _g1[_g];
			++_g;
			if(l_oNode1.name == p_sName) {
				{
					$s.pop();
					return l_oNode1;
				}
			}
		}
	}
	if(p_bRecurs) {
		var node = null;
		{
			var _g = 0, _g1 = this.children;
			while(_g < _g1.length) {
				var l_oNode1 = _g1[_g];
				++_g;
				node = l_oNode1.getChildByName(p_sName,p_bRecurs);
				if(node != null) {
					{
						$s.pop();
						return node;
					}
				}
			}
		}
	}
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.hasParent = function() {
	$s.push("sandy.core.scenegraph.Node::hasParent");
	var $spos = $s.length;
	{
		var $tmp = (this._parent != null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.id = null;
sandy.core.scenegraph.Node.prototype.isParent = function(p_oNode) {
	$s.push("sandy.core.scenegraph.Node::isParent");
	var $spos = $s.length;
	{
		var $tmp = (this._parent == p_oNode && p_oNode != null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.m_oEB = null;
sandy.core.scenegraph.Node.prototype.modelMatrix = null;
sandy.core.scenegraph.Node.prototype.name = null;
sandy.core.scenegraph.Node.prototype.parent = null;
sandy.core.scenegraph.Node.prototype.remove = function() {
	$s.push("sandy.core.scenegraph.Node::remove");
	var $spos = $s.length;
	this.__getParent().removeChildByName(this.name);
	var l_aTmp = this.children;
	{
		var _g = 0;
		while(_g < l_aTmp.length) {
			var lNode = l_aTmp[_g];
			++_g;
			this.__getParent().addChild(lNode);
		}
	}
	this.children.splice(0,this.children.length);
	this.m_oEB = null;
	this.changed = true;
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.removeChildByName = function(p_sName) {
	$s.push("sandy.core.scenegraph.Node::removeChildByName");
	var $spos = $s.length;
	var found = false;
	var i = 0;
	var l = this.children.length;
	while(i < l && !found) {
		if(this.children[i].name == p_sName) {
			this.__getBroadcaster().removeChild(this.children[i].__getBroadcaster());
			this.children.splice(i,1);
			this.changed = true;
			found = true;
		}
		i++;
	}
	{
		$s.pop();
		return found;
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.removeEventListener = function(p_sEvt,p_oL) {
	$s.push("sandy.core.scenegraph.Node::removeEventListener");
	var $spos = $s.length;
	this.m_oEB.removeEventListener(p_sEvt,p_oL);
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.render = function(p_oScene,p_oCamera) {
	$s.push("sandy.core.scenegraph.Node::render");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.scene = null;
sandy.core.scenegraph.Node.prototype.swapParent = function(p_oNewParent) {
	$s.push("sandy.core.scenegraph.Node::swapParent");
	var $spos = $s.length;
	if(this.__getParent().removeChildByName(this.name)) p_oNewParent.addChild(this);
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.toString = function() {
	$s.push("sandy.core.scenegraph.Node::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.core.scenegraph.Node";
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.update = function(p_oScene,p_oModelMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Node::update");
	var $spos = $s.length;
	this.scene = p_oScene;
	if(this.boundingBox != null) this.boundingBox.uptodate = false;
	if(this.boundingSphere != null) this.boundingSphere.uptodate = false;
	this.changed = this.changed || p_bChanged;
	var l_oNode;
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode1 = _g1[_g];
			++_g;
			l_oNode1.update(p_oScene,p_oModelMatrix,this.changed);
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Node.prototype.useSingleContainer = null;
sandy.core.scenegraph.Node.prototype.viewMatrix = null;
sandy.core.scenegraph.Node.prototype.visible = null;
sandy.core.scenegraph.Node.prototype.__class__ = sandy.core.scenegraph.Node;
sandy.core.scenegraph.ATransformable = function(p_sName) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.ATransformable::new");
	var $spos = $s.length;
	p_sName = ((p_sName != null)?p_sName:"");
	sandy.core.scenegraph.Node.apply(this,[p_sName]);
	this.disable = false;
	this.m_oPreviousOffsetRotation = new sandy.core.data.Vector();
	this.initFrame();
	this._p = new sandy.core.data.Vector();
	this._oScale = new sandy.core.data.Vector(1,1,1);
	this._vRotation = new sandy.core.data.Vector(0,0,0);
	this._vLookatDown = new sandy.core.data.Vector(0.00000000001,-1,0);
	this._nRoll = 0;
	this._nTilt = 0;
	this._nYaw = 0;
	this.m_tmpMt = new sandy.core.data.Matrix4();
	this.m_oMatrix = new sandy.core.data.Matrix4();
	$s.pop();
}}
sandy.core.scenegraph.ATransformable.__name__ = ["sandy","core","scenegraph","ATransformable"];
sandy.core.scenegraph.ATransformable.__super__ = sandy.core.scenegraph.Node;
for(var k in sandy.core.scenegraph.Node.prototype ) sandy.core.scenegraph.ATransformable.prototype[k] = sandy.core.scenegraph.Node.prototype[k];
sandy.core.scenegraph.ATransformable.prototype.__getMatrix = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getMatrix");
	var $spos = $s.length;
	{
		var $tmp = this.m_oMatrix;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getOut = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getOut");
	var $spos = $s.length;
	{
		var $tmp = this._vOut;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getPan = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getPan");
	var $spos = $s.length;
	{
		var $tmp = this._nYaw;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getRoll = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getRoll");
	var $spos = $s.length;
	{
		var $tmp = this._nRoll;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getRotateX = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getRotateX");
	var $spos = $s.length;
	{
		var $tmp = this._vRotation.x;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getRotateY = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getRotateY");
	var $spos = $s.length;
	{
		var $tmp = this._vRotation.y;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getRotateZ = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getRotateZ");
	var $spos = $s.length;
	{
		var $tmp = this._vRotation.z;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getScaleX = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getScaleX");
	var $spos = $s.length;
	{
		var $tmp = this._oScale.x;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getScaleY = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getScaleY");
	var $spos = $s.length;
	{
		var $tmp = this._oScale.y;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getScaleZ = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getScaleZ");
	var $spos = $s.length;
	{
		var $tmp = this._oScale.z;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getSide = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getSide");
	var $spos = $s.length;
	{
		var $tmp = this._vSide;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getTilt = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getTilt");
	var $spos = $s.length;
	{
		var $tmp = this._nTilt;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getUp = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getUp");
	var $spos = $s.length;
	{
		var $tmp = this._vUp;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getX = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getX");
	var $spos = $s.length;
	{
		var $tmp = this._p.x;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getY = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getY");
	var $spos = $s.length;
	{
		var $tmp = this._p.y;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__getZ = function() {
	$s.push("sandy.core.scenegraph.ATransformable::__getZ");
	var $spos = $s.length;
	{
		var $tmp = this._p.z;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setMatrix = function(p_oMatrix) {
	$s.push("sandy.core.scenegraph.ATransformable::__setMatrix");
	var $spos = $s.length;
	this.m_oMatrix = p_oMatrix;
	this.m_oMatrix.vectorMult3x3(this._vSide);
	this.m_oMatrix.vectorMult3x3(this._vUp);
	this.m_oMatrix.vectorMult3x3(this._vOut);
	this._vSide.normalize();
	this._vUp.normalize();
	this._vOut.normalize();
	this._p.x = p_oMatrix.n14;
	this._p.y = p_oMatrix.n24;
	this._p.z = p_oMatrix.n34;
	{
		$s.pop();
		return p_oMatrix;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setPan = function(p_nAngle) {
	$s.push("sandy.core.scenegraph.ATransformable::__setPan");
	var $spos = $s.length;
	var l_nAngle = (p_nAngle - this._nYaw);
	if(l_nAngle == 0) {
		$s.pop();
		return p_nAngle;
	}
	this.changed = true;
	this.m_tmpMt.axisRotation(this._vUp.x,this._vUp.y,this._vUp.z,l_nAngle);
	this.m_tmpMt.vectorMult3x3(this._vOut);
	this.m_tmpMt.vectorMult3x3(this._vSide);
	this._nYaw = p_nAngle;
	{
		$s.pop();
		return p_nAngle;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setRoll = function(p_nAngle) {
	$s.push("sandy.core.scenegraph.ATransformable::__setRoll");
	var $spos = $s.length;
	var l_nAngle = (p_nAngle - this._nRoll);
	if(l_nAngle == 0) {
		$s.pop();
		return p_nAngle;
	}
	this.changed = true;
	this.m_tmpMt.axisRotation(this._vOut.x,this._vOut.y,this._vOut.z,l_nAngle);
	this.m_tmpMt.vectorMult3x3(this._vSide);
	this.m_tmpMt.vectorMult3x3(this._vUp);
	this._nRoll = p_nAngle;
	{
		$s.pop();
		return p_nAngle;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setRotateX = function(p_nAngle) {
	$s.push("sandy.core.scenegraph.ATransformable::__setRotateX");
	var $spos = $s.length;
	var l_nAngle = (p_nAngle - this._vRotation.x);
	if(l_nAngle == 0) {
		$s.pop();
		return p_nAngle;
	}
	this.changed = true;
	this.m_tmpMt.rotationX(l_nAngle);
	this.m_tmpMt.vectorMult3x3(this._vSide);
	this.m_tmpMt.vectorMult3x3(this._vUp);
	this.m_tmpMt.vectorMult3x3(this._vOut);
	this._vRotation.x = p_nAngle;
	{
		$s.pop();
		return p_nAngle;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setRotateY = function(p_nAngle) {
	$s.push("sandy.core.scenegraph.ATransformable::__setRotateY");
	var $spos = $s.length;
	var l_nAngle = (p_nAngle - this._vRotation.y);
	if(l_nAngle == 0) {
		$s.pop();
		return p_nAngle;
	}
	this.changed = true;
	this.m_tmpMt.rotationY(l_nAngle);
	this.m_tmpMt.vectorMult3x3(this._vSide);
	this.m_tmpMt.vectorMult3x3(this._vUp);
	this.m_tmpMt.vectorMult3x3(this._vOut);
	this._vRotation.y = p_nAngle;
	{
		$s.pop();
		return p_nAngle;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setRotateZ = function(p_nAngle) {
	$s.push("sandy.core.scenegraph.ATransformable::__setRotateZ");
	var $spos = $s.length;
	var l_nAngle = (p_nAngle - this._vRotation.z);
	if(l_nAngle == 0) {
		$s.pop();
		return p_nAngle;
	}
	this.changed = true;
	this.m_tmpMt.rotationZ(l_nAngle);
	this.m_tmpMt.vectorMult3x3(this._vSide);
	this.m_tmpMt.vectorMult3x3(this._vUp);
	this.m_tmpMt.vectorMult3x3(this._vOut);
	this._vRotation.z = p_nAngle;
	{
		$s.pop();
		return p_nAngle;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setScaleX = function(p_nScaleX) {
	$s.push("sandy.core.scenegraph.ATransformable::__setScaleX");
	var $spos = $s.length;
	this._oScale.x = p_nScaleX;
	this.changed = true;
	{
		$s.pop();
		return p_nScaleX;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setScaleY = function(p_scaleY) {
	$s.push("sandy.core.scenegraph.ATransformable::__setScaleY");
	var $spos = $s.length;
	this._oScale.y = p_scaleY;
	this.changed = true;
	{
		$s.pop();
		return p_scaleY;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setScaleZ = function(p_scaleZ) {
	$s.push("sandy.core.scenegraph.ATransformable::__setScaleZ");
	var $spos = $s.length;
	this._oScale.z = p_scaleZ;
	this.changed = true;
	{
		$s.pop();
		return p_scaleZ;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setTarget = function(p_oTarget) {
	$s.push("sandy.core.scenegraph.ATransformable::__setTarget");
	var $spos = $s.length;
	this.lookAt(p_oTarget.x,p_oTarget.y,p_oTarget.z);
	{
		$s.pop();
		return p_oTarget;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setTilt = function(p_nAngle) {
	$s.push("sandy.core.scenegraph.ATransformable::__setTilt");
	var $spos = $s.length;
	var l_nAngle = (p_nAngle - this._nTilt);
	if(l_nAngle == 0) {
		$s.pop();
		return p_nAngle;
	}
	this.changed = true;
	this.m_tmpMt.axisRotation(this._vSide.x,this._vSide.y,this._vSide.z,l_nAngle);
	this.m_tmpMt.vectorMult3x3(this._vOut);
	this.m_tmpMt.vectorMult3x3(this._vUp);
	this._nTilt = p_nAngle;
	{
		$s.pop();
		return p_nAngle;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setX = function(p_nX) {
	$s.push("sandy.core.scenegraph.ATransformable::__setX");
	var $spos = $s.length;
	this._p.x = p_nX;
	this.changed = true;
	{
		$s.pop();
		return p_nX;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setY = function(p_nY) {
	$s.push("sandy.core.scenegraph.ATransformable::__setY");
	var $spos = $s.length;
	this._p.y = p_nY;
	this.changed = true;
	{
		$s.pop();
		return p_nY;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.__setZ = function(p_nZ) {
	$s.push("sandy.core.scenegraph.ATransformable::__setZ");
	var $spos = $s.length;
	this._p.z = p_nZ;
	this.changed = true;
	{
		$s.pop();
		return p_nZ;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype._nRoll = null;
sandy.core.scenegraph.ATransformable.prototype._nTilt = null;
sandy.core.scenegraph.ATransformable.prototype._nYaw = null;
sandy.core.scenegraph.ATransformable.prototype._oScale = null;
sandy.core.scenegraph.ATransformable.prototype._p = null;
sandy.core.scenegraph.ATransformable.prototype._vLookatDown = null;
sandy.core.scenegraph.ATransformable.prototype._vOut = null;
sandy.core.scenegraph.ATransformable.prototype._vRotation = null;
sandy.core.scenegraph.ATransformable.prototype._vSide = null;
sandy.core.scenegraph.ATransformable.prototype._vUp = null;
sandy.core.scenegraph.ATransformable.prototype.disable = null;
sandy.core.scenegraph.ATransformable.prototype.getPosition = function(p_sMode) {
	$s.push("sandy.core.scenegraph.ATransformable::getPosition");
	var $spos = $s.length;
	var l_oPos;
	p_sMode = ((p_sMode != null)?p_sMode:"local");
	switch(p_sMode) {
	case "local":{
		l_oPos = new sandy.core.data.Vector(this._p.x,this._p.y,this._p.z);
	}break;
	case "camera":{
		l_oPos = new sandy.core.data.Vector(this.viewMatrix.n14,this.viewMatrix.n24,this.viewMatrix.n34);
	}break;
	case "absolute":{
		l_oPos = new sandy.core.data.Vector(this.modelMatrix.n14,this.modelMatrix.n24,this.modelMatrix.n34);
	}break;
	default:{
		l_oPos = new sandy.core.data.Vector(this._p.x,this._p.y,this._p.z);
	}break;
	}
	{
		$s.pop();
		return l_oPos;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.initFrame = function() {
	$s.push("sandy.core.scenegraph.ATransformable::initFrame");
	var $spos = $s.length;
	this._vSide = new sandy.core.data.Vector(1,0,0);
	this._vUp = new sandy.core.data.Vector(0,1,0);
	this._vOut = new sandy.core.data.Vector(0,0,1);
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.lookAt = function(p_nX,p_nY,p_nZ) {
	$s.push("sandy.core.scenegraph.ATransformable::lookAt");
	var $spos = $s.length;
	this.changed = true;
	this._vOut.x = p_nX;
	this._vOut.y = p_nY;
	this._vOut.z = p_nZ;
	this._vOut.sub(this._p);
	this._vOut.normalize();
	this._vSide = null;
	this._vSide = this._vOut.cross(this._vLookatDown);
	this._vSide.normalize();
	this._vUp = null;
	this._vUp = this._vOut.cross(this._vSide);
	this._vUp.normalize();
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.m_oMatrix = null;
sandy.core.scenegraph.ATransformable.prototype.m_oPreviousOffsetRotation = null;
sandy.core.scenegraph.ATransformable.prototype.m_tmpMt = null;
sandy.core.scenegraph.ATransformable.prototype.matrix = null;
sandy.core.scenegraph.ATransformable.prototype.moveForward = function(p_nD) {
	$s.push("sandy.core.scenegraph.ATransformable::moveForward");
	var $spos = $s.length;
	this.changed = true;
	this._p.x += this._vOut.x * p_nD;
	this._p.y += this._vOut.y * p_nD;
	this._p.z += this._vOut.z * p_nD;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.moveHorizontally = function(p_nD) {
	$s.push("sandy.core.scenegraph.ATransformable::moveHorizontally");
	var $spos = $s.length;
	this.changed = true;
	this._p.x += this._vOut.x * p_nD;
	this._p.z += this._vOut.z * p_nD;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.moveLateraly = function(p_nD) {
	$s.push("sandy.core.scenegraph.ATransformable::moveLateraly");
	var $spos = $s.length;
	this.changed = true;
	this._p.x += p_nD;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.moveSideways = function(p_nD) {
	$s.push("sandy.core.scenegraph.ATransformable::moveSideways");
	var $spos = $s.length;
	this.changed = true;
	this._p.x += this._vSide.x * p_nD;
	this._p.y += this._vSide.y * p_nD;
	this._p.z += this._vSide.z * p_nD;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.moveUpwards = function(p_nD) {
	$s.push("sandy.core.scenegraph.ATransformable::moveUpwards");
	var $spos = $s.length;
	this.changed = true;
	this._p.x += this._vUp.x * p_nD;
	this._p.y += this._vUp.y * p_nD;
	this._p.z += this._vUp.z * p_nD;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.moveVertically = function(p_nD) {
	$s.push("sandy.core.scenegraph.ATransformable::moveVertically");
	var $spos = $s.length;
	this.changed = true;
	this._p.y += p_nD;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.out = null;
sandy.core.scenegraph.ATransformable.prototype.pan = null;
sandy.core.scenegraph.ATransformable.prototype.roll = null;
sandy.core.scenegraph.ATransformable.prototype.rotateAxis = function(p_nX,p_nY,p_nZ,p_nAngle) {
	$s.push("sandy.core.scenegraph.ATransformable::rotateAxis");
	var $spos = $s.length;
	this.changed = true;
	p_nAngle = (p_nAngle + 360) % 360;
	var n = Math.sqrt(p_nX * p_nX + p_nY * p_nY + p_nZ * p_nZ);
	this.m_tmpMt.axisRotation(p_nX / n,p_nY / n,p_nZ / n,p_nAngle);
	this.m_tmpMt.vectorMult3x3(this._vSide);
	this.m_tmpMt.vectorMult3x3(this._vUp);
	this.m_tmpMt.vectorMult3x3(this._vOut);
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.rotateX = null;
sandy.core.scenegraph.ATransformable.prototype.rotateY = null;
sandy.core.scenegraph.ATransformable.prototype.rotateZ = null;
sandy.core.scenegraph.ATransformable.prototype.scaleX = null;
sandy.core.scenegraph.ATransformable.prototype.scaleY = null;
sandy.core.scenegraph.ATransformable.prototype.scaleZ = null;
sandy.core.scenegraph.ATransformable.prototype.setPosition = function(p_nX,p_nY,p_nZ) {
	$s.push("sandy.core.scenegraph.ATransformable::setPosition");
	var $spos = $s.length;
	this.changed = true;
	this._p.x = p_nX;
	this._p.y = p_nY;
	this._p.z = p_nZ;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.side = null;
sandy.core.scenegraph.ATransformable.prototype.target = null;
sandy.core.scenegraph.ATransformable.prototype.tilt = null;
sandy.core.scenegraph.ATransformable.prototype.toString = function() {
	$s.push("sandy.core.scenegraph.ATransformable::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.core.scenegraph.ATransformable";
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.translate = function(p_nX,p_nY,p_nZ) {
	$s.push("sandy.core.scenegraph.ATransformable::translate");
	var $spos = $s.length;
	this.changed = true;
	this._p.x += p_nX;
	this._p.y += p_nY;
	this._p.z += p_nZ;
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.up = null;
sandy.core.scenegraph.ATransformable.prototype.update = function(p_oScene,p_oModelMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.ATransformable::update");
	var $spos = $s.length;
	this.updateTransform();
	if(p_bChanged || this.changed) {
		if(p_oModelMatrix != null && !this.disable) {
			this.modelMatrix.copy(p_oModelMatrix);
			this.modelMatrix.multiply4x3(this.m_oMatrix);
		}
		else {
			this.modelMatrix.copy(this.m_oMatrix);
		}
	}
	sandy.core.scenegraph.Node.prototype.update.apply(this,[p_oScene,this.modelMatrix,p_bChanged]);
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.updateTransform = function() {
	$s.push("sandy.core.scenegraph.ATransformable::updateTransform");
	var $spos = $s.length;
	if(this.changed) {
		this.m_oMatrix.n11 = this._vSide.x * this._oScale.x;
		this.m_oMatrix.n12 = this._vUp.x * this._oScale.y;
		this.m_oMatrix.n13 = this._vOut.x * this._oScale.z;
		this.m_oMatrix.n14 = this._p.x;
		this.m_oMatrix.n21 = this._vSide.y * this._oScale.x;
		this.m_oMatrix.n22 = this._vUp.y * this._oScale.y;
		this.m_oMatrix.n23 = this._vOut.y * this._oScale.z;
		this.m_oMatrix.n24 = this._p.y;
		this.m_oMatrix.n31 = this._vSide.z * this._oScale.x;
		this.m_oMatrix.n32 = this._vUp.z * this._oScale.y;
		this.m_oMatrix.n33 = this._vOut.z * this._oScale.z;
		this.m_oMatrix.n34 = this._p.z;
	}
	$s.pop();
}
sandy.core.scenegraph.ATransformable.prototype.x = null;
sandy.core.scenegraph.ATransformable.prototype.y = null;
sandy.core.scenegraph.ATransformable.prototype.z = null;
sandy.core.scenegraph.ATransformable.prototype.__class__ = sandy.core.scenegraph.ATransformable;
sandy.core.scenegraph.TransformGroup = function(p_sName) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.TransformGroup::new");
	var $spos = $s.length;
	if(p_sName == null) p_sName = "";
	sandy.core.scenegraph.ATransformable.apply(this,[p_sName]);
	$s.pop();
}}
sandy.core.scenegraph.TransformGroup.__name__ = ["sandy","core","scenegraph","TransformGroup"];
sandy.core.scenegraph.TransformGroup.__super__ = sandy.core.scenegraph.ATransformable;
for(var k in sandy.core.scenegraph.ATransformable.prototype ) sandy.core.scenegraph.TransformGroup.prototype[k] = sandy.core.scenegraph.ATransformable.prototype[k];
sandy.core.scenegraph.TransformGroup.prototype.clone = function(p_sName) {
	$s.push("sandy.core.scenegraph.TransformGroup::clone");
	var $spos = $s.length;
	var l_oGroup = new sandy.core.scenegraph.TransformGroup(p_sName);
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode = _g1[_g];
			++_g;
			if(Std["is"](l_oNode,sandy.core.scenegraph.Shape3D) || Std["is"](l_oNode,sandy.core.scenegraph.Group) || Std["is"](l_oNode,sandy.core.scenegraph.TransformGroup)) {
				l_oGroup.addChild("clone".apply(l_oNode,[p_sName + "_" + l_oNode.name]));
			}
		}
	}
	{
		$s.pop();
		return l_oGroup;
	}
	$s.pop();
}
sandy.core.scenegraph.TransformGroup.prototype.cull = function(p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.TransformGroup::cull");
	var $spos = $s.length;
	if(this.visible == false) {
		this.culled = sandy.view.CullingState.OUTSIDE;
	}
	else {
		var lChanged = p_bChanged || this.changed;
		{
			var _g = 0, _g1 = this.children;
			while(_g < _g1.length) {
				var l_oNode = _g1[_g];
				++_g;
				l_oNode.cull(p_oScene,p_oFrustum,p_oViewMatrix,lChanged);
			}
		}
	}
	$s.pop();
}
sandy.core.scenegraph.TransformGroup.prototype.render = function(p_oScene,p_oCamera) {
	$s.push("sandy.core.scenegraph.TransformGroup::render");
	var $spos = $s.length;
	var _g = 0, _g1 = this.children;
	while(_g < _g1.length) {
		var l_oNode = _g1[_g];
		++_g;
		if(l_oNode.culled != sandy.view.CullingState.OUTSIDE) l_oNode.render(p_oScene,p_oCamera);
		l_oNode.changed = false;
		l_oNode.culled = sandy.view.CullingState.INSIDE;
	}
	$s.pop();
}
sandy.core.scenegraph.TransformGroup.prototype.toString = function() {
	$s.push("sandy.core.scenegraph.TransformGroup::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.core.scenegraph.TransformGroup";
	}
	$s.pop();
}
sandy.core.scenegraph.TransformGroup.prototype.__class__ = sandy.core.scenegraph.TransformGroup;
xpath.XPathError = function(message) { if( message === $_ ) return; {
	$s.push("xpath.XPathError::new");
	var $spos = $s.length;
	this.message = message;
	$s.pop();
}}
xpath.XPathError.__name__ = ["xpath","XPathError"];
xpath.XPathError.prototype.message = null;
xpath.XPathError.prototype.toString = function() {
	$s.push("xpath.XPathError::toString");
	var $spos = $s.length;
	var string = "XPathError";
	if(this.message != null) string += ": " + this.message;
	{
		$s.pop();
		return string;
	}
	$s.pop();
}
xpath.XPathError.prototype.__class__ = xpath.XPathError;
xpath.tokenizer.TokenizerError = function(message) { if( message === $_ ) return; {
	$s.push("xpath.tokenizer.TokenizerError::new");
	var $spos = $s.length;
	xpath.XPathError.apply(this,[message]);
	$s.pop();
}}
xpath.tokenizer.TokenizerError.__name__ = ["xpath","tokenizer","TokenizerError"];
xpath.tokenizer.TokenizerError.__super__ = xpath.XPathError;
for(var k in xpath.XPathError.prototype ) xpath.tokenizer.TokenizerError.prototype[k] = xpath.XPathError.prototype[k];
xpath.tokenizer.TokenizerError.prototype.toString = function() {
	$s.push("xpath.tokenizer.TokenizerError::toString");
	var $spos = $s.length;
	var string = "TokenizerError";
	if(this.message != null) string += ": " + this.message;
	{
		$s.pop();
		return string;
	}
	$s.pop();
}
xpath.tokenizer.TokenizerError.prototype.__class__ = xpath.tokenizer.TokenizerError;
sandy.materials.attributes.MaterialAttributes = function(args) { if( args === $_ ) return; {
	$s.push("sandy.materials.attributes.MaterialAttributes::new");
	var $spos = $s.length;
	if(args == null) args = new Array();
	this.attributes = new Array();
	{
		var _g = 0;
		while(_g < args.length) {
			var attr = args[_g];
			++_g;
			if(Std["is"](attr,sandy.materials.attributes.IAttributes)) {
				this.attributes.push(attr);
			}
		}
	}
	$s.pop();
}}
sandy.materials.attributes.MaterialAttributes.__name__ = ["sandy","materials","attributes","MaterialAttributes"];
sandy.materials.attributes.MaterialAttributes.prototype.__getFlags = function() {
	$s.push("sandy.materials.attributes.MaterialAttributes::__getFlags");
	var $spos = $s.length;
	var l_nFlags = 0;
	{
		var _g = 0, _g1 = this.attributes;
		while(_g < _g1.length) {
			var l_oAttr = _g1[_g];
			++_g;
			l_nFlags |= l_oAttr.__getFlags();
		}
	}
	{
		$s.pop();
		return l_nFlags;
	}
	$s.pop();
}
sandy.materials.attributes.MaterialAttributes.prototype.attributes = null;
sandy.materials.attributes.MaterialAttributes.prototype.begin = function(p_oScene) {
	$s.push("sandy.materials.attributes.MaterialAttributes::begin");
	var $spos = $s.length;
	var _g = 0, _g1 = this.attributes;
	while(_g < _g1.length) {
		var l_oAttr = _g1[_g];
		++_g;
		l_oAttr.begin(p_oScene);
	}
	$s.pop();
}
sandy.materials.attributes.MaterialAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.MaterialAttributes::draw");
	var $spos = $s.length;
	var _g = 0, _g1 = this.attributes;
	while(_g < _g1.length) {
		var l_oAttr = _g1[_g];
		++_g;
		l_oAttr.draw(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene);
	}
	$s.pop();
}
sandy.materials.attributes.MaterialAttributes.prototype.drawOnSprite = function(p_oSprite,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.MaterialAttributes::drawOnSprite");
	var $spos = $s.length;
	var _g = 0, _g1 = this.attributes;
	while(_g < _g1.length) {
		var l_oAttr = _g1[_g];
		++_g;
		l_oAttr.drawOnSprite(p_oSprite,p_oMaterial,p_oScene);
	}
	$s.pop();
}
sandy.materials.attributes.MaterialAttributes.prototype.finish = function(p_oScene) {
	$s.push("sandy.materials.attributes.MaterialAttributes::finish");
	var $spos = $s.length;
	var _g = 0, _g1 = this.attributes;
	while(_g < _g1.length) {
		var l_oAttr = _g1[_g];
		++_g;
		l_oAttr.finish(p_oScene);
	}
	$s.pop();
}
sandy.materials.attributes.MaterialAttributes.prototype.flags = null;
sandy.materials.attributes.MaterialAttributes.prototype.init = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.MaterialAttributes::init");
	var $spos = $s.length;
	var _g = 0, _g1 = this.attributes;
	while(_g < _g1.length) {
		var l_oAttr = _g1[_g];
		++_g;
		l_oAttr.init(p_oPolygon);
	}
	$s.pop();
}
sandy.materials.attributes.MaterialAttributes.prototype.unlink = function(p_oPolygon) {
	$s.push("sandy.materials.attributes.MaterialAttributes::unlink");
	var $spos = $s.length;
	var _g = 0, _g1 = this.attributes;
	while(_g < _g1.length) {
		var l_oAttr = _g1[_g];
		++_g;
		l_oAttr.unlink(p_oPolygon);
	}
	$s.pop();
}
sandy.materials.attributes.MaterialAttributes.prototype.__class__ = sandy.materials.attributes.MaterialAttributes;
xpath.tokenizer.container = {}
xpath.tokenizer.container.FunctionCallTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.FunctionCallTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.FunctionCallTokenizer.__name__ = ["xpath","tokenizer","container","FunctionCallTokenizer"];
xpath.tokenizer.container.FunctionCallTokenizer.instance = null;
xpath.tokenizer.container.FunctionCallTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.FunctionCallTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.FunctionCallTokenizer.instance == null) {
		xpath.tokenizer.container.FunctionCallTokenizer.instance = new xpath.tokenizer.container.FunctionCallTokenizer();
		xpath.tokenizer.container.FunctionCallTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.FunctionCallTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FunctionCallTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.FunctionCallTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginFunctionCallTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Optional([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.FunctionArgumentsTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this)]),xpath.tokenizer.token.EndFunctionCallTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.FunctionCallTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.FunctionCallTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FunctionCallTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.FunctionCallTokenizer.prototype.__class__ = xpath.tokenizer.container.FunctionCallTokenizer;
xpath.tokenizer.container.FunctionCallTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
neash.swf = {}
neash.swf.Tags = function() { }
neash.swf.Tags.__name__ = ["neash","swf","Tags"];
neash.swf.Tags.string = function(i) {
	$s.push("neash.swf.Tags::string");
	var $spos = $s.length;
	{
		var $tmp = neash.swf.Tags.tags[i];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.Tags.prototype.__class__ = neash.swf.Tags;
Std = function() { }
Std.__name__ = ["Std"];
Std["is"] = function(v,t) {
	$s.push("Std::is");
	var $spos = $s.length;
	{
		var $tmp = js.Boot.__instanceof(v,t);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Std.string = function(s) {
	$s.push("Std::string");
	var $spos = $s.length;
	{
		var $tmp = js.Boot.__string_rec(s,"");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Std["int"] = function(x) {
	$s.push("Std::int");
	var $spos = $s.length;
	if(x < 0) {
		var $tmp = Math.ceil(x);
		$s.pop();
		return $tmp;
	}
	{
		var $tmp = Math.floor(x);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Std.parseInt = function(x) {
	$s.push("Std::parseInt");
	var $spos = $s.length;
	var v = parseInt(x);
	if(Math.isNaN(v)) {
		$s.pop();
		return null;
	}
	{
		$s.pop();
		return v;
	}
	$s.pop();
}
Std.parseFloat = function(x) {
	$s.push("Std::parseFloat");
	var $spos = $s.length;
	{
		var $tmp = parseFloat(x);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Std.random = function(x) {
	$s.push("Std::random");
	var $spos = $s.length;
	{
		var $tmp = Math.floor(Math.random() * x);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Std.prototype.__class__ = Std;
xpath.tokenizer.container.StepTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.StepTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.StepTokenizer.__name__ = ["xpath","tokenizer","container","StepTokenizer"];
xpath.tokenizer.container.StepTokenizer.instance = null;
xpath.tokenizer.container.StepTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.StepTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.StepTokenizer.instance == null) {
		xpath.tokenizer.container.StepTokenizer.instance = new xpath.tokenizer.container.StepTokenizer();
		xpath.tokenizer.container.StepTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.StepTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.StepTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.StepTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = new xpath.tokenizer.util.Sequence([function($this) {
			var $r;
			var tmp = new xpath.tokenizer.util.Disjunction([function($this) {
				var $r;
				var tmp = new xpath.tokenizer.util.Sequence([function($this) {
					var $r;
					var tmp = xpath.tokenizer.token.AxisTokenizer.getInstance();
					$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
						var $r;
						throw "Class cast error";
						return $r;
					}($this));
					return $r;
				}($this),xpath.tokenizer.container.NodeTestTokenizer.getInstance()]);
				$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}($this),xpath.tokenizer.container.FilterExpressionTokenizer.getInstance()]);
			$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}($this),new xpath.tokenizer.util.Repetition([function($this) {
			var $r;
			var tmp = xpath.tokenizer.container.PredicateTokenizer.getInstance();
			$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}($this)])]);
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.token.AbbreviatedStepTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.StepTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.StepTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.StepTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.StepTokenizer.prototype.__class__ = xpath.tokenizer.container.StepTokenizer;
xpath.tokenizer.container.StepTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
neash.text.Font = function() { }
neash.text.Font.__name__ = ["neash","text","Font"];
neash.text.Font.prototype.CanRenderOutline = null;
neash.text.Font.prototype.CanRenderSolid = null;
neash.text.Font.prototype.GetAdvance = null;
neash.text.Font.prototype.GetAscent = null;
neash.text.Font.prototype.GetDescent = null;
neash.text.Font.prototype.GetHeight = null;
neash.text.Font.prototype.GetLeading = null;
neash.text.Font.prototype.GetName = null;
neash.text.Font.prototype.Render = null;
neash.text.Font.prototype.__class__ = neash.text.Font;
neash.text.NativeFont = function(inFace,inHeight) { if( inFace === $_ ) return; {
	$s.push("neash.text.NativeFont::new");
	var $spos = $s.length;
	this.mName = inFace;
	this.mHeight = inHeight;
	$s.pop();
}}
neash.text.NativeFont.__name__ = ["neash","text","NativeFont"];
neash.text.NativeFont.prototype.CanRenderOutline = function() {
	$s.push("neash.text.NativeFont::CanRenderOutline");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.CanRenderSolid = function() {
	$s.push("neash.text.NativeFont::CanRenderSolid");
	var $spos = $s.length;
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.GetAdvance = function(inGlyph) {
	$s.push("neash.text.NativeFont::GetAdvance");
	var $spos = $s.length;
	{
		var $tmp = this.mHeight;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.GetAscent = function() {
	$s.push("neash.text.NativeFont::GetAscent");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mHeight * 0.8);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.GetDescent = function() {
	$s.push("neash.text.NativeFont::GetDescent");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mHeight * 0.1);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.GetHeight = function() {
	$s.push("neash.text.NativeFont::GetHeight");
	var $spos = $s.length;
	{
		var $tmp = this.mHeight;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.GetLeading = function() {
	$s.push("neash.text.NativeFont::GetLeading");
	var $spos = $s.length;
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.GetName = function() {
	$s.push("neash.text.NativeFont::GetName");
	var $spos = $s.length;
	{
		var $tmp = this.mName;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.Ok = function() {
	$s.push("neash.text.NativeFont::Ok");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.Render = function(inGfx,inChar,inX,inY,inOutline) {
	$s.push("neash.text.NativeFont::Render");
	var $spos = $s.length;
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
neash.text.NativeFont.prototype.mHeight = null;
neash.text.NativeFont.prototype.mName = null;
neash.text.NativeFont.prototype.__class__ = neash.text.NativeFont;
neash.text.NativeFont.__interfaces__ = [neash.text.Font];
neash.events.Event = function(inType,inBubbles,inCancelable) { if( inType === $_ ) return; {
	$s.push("neash.events.Event::new");
	var $spos = $s.length;
	this.type = inType;
	this.bubbles = (inBubbles == null?false:inBubbles);
	this.cancelable = (inCancelable == null?false:inCancelable);
	this.mIsCancelled = false;
	this.mIsCancelledNow = false;
	this.target = null;
	this.currentTarget = null;
	$s.pop();
}}
neash.events.Event.__name__ = ["neash","events","Event"];
neash.events.Event.prototype.IsCancelled = function() {
	$s.push("neash.events.Event::IsCancelled");
	var $spos = $s.length;
	{
		var $tmp = this.mIsCancelled;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.Event.prototype.IsCancelledNow = function() {
	$s.push("neash.events.Event::IsCancelledNow");
	var $spos = $s.length;
	{
		var $tmp = this.mIsCancelledNow;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.Event.prototype.SetPhase = function(inPhase) {
	$s.push("neash.events.Event::SetPhase");
	var $spos = $s.length;
	this.eventPhase = inPhase;
	$s.pop();
}
neash.events.Event.prototype.bubbles = null;
neash.events.Event.prototype.cancelable = null;
neash.events.Event.prototype.clone = function() {
	$s.push("neash.events.Event::clone");
	var $spos = $s.length;
	{
		var $tmp = new neash.events.Event(this.type,this.bubbles,this.cancelable);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.Event.prototype.currentTarget = null;
neash.events.Event.prototype.eventPhase = null;
neash.events.Event.prototype.mIsCancelled = null;
neash.events.Event.prototype.mIsCancelledNow = null;
neash.events.Event.prototype.stopImmediatePropagation = function() {
	$s.push("neash.events.Event::stopImmediatePropagation");
	var $spos = $s.length;
	if(this.cancelable) this.mIsCancelledNow = this.mIsCancelled = true;
	$s.pop();
}
neash.events.Event.prototype.stopPropagation = function() {
	$s.push("neash.events.Event::stopPropagation");
	var $spos = $s.length;
	if(this.cancelable) this.mIsCancelled = true;
	$s.pop();
}
neash.events.Event.prototype.target = null;
neash.events.Event.prototype.toString = function() {
	$s.push("neash.events.Event::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "Event";
	}
	$s.pop();
}
neash.events.Event.prototype.type = null;
neash.events.Event.prototype.__class__ = neash.events.Event;
sandy.parser.ParserEvent = function(p_sType) { if( p_sType === $_ ) return; {
	$s.push("sandy.parser.ParserEvent::new");
	var $spos = $s.length;
	neash.events.Event.apply(this,[p_sType]);
	$s.pop();
}}
sandy.parser.ParserEvent.__name__ = ["sandy","parser","ParserEvent"];
sandy.parser.ParserEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) sandy.parser.ParserEvent.prototype[k] = neash.events.Event.prototype[k];
sandy.parser.ParserEvent.prototype.group = null;
sandy.parser.ParserEvent.prototype.percent = null;
sandy.parser.ParserEvent.prototype.__class__ = sandy.parser.ParserEvent;
nme.display.LineScaleMode = { __ename__ : ["nme","display","LineScaleMode"], __constructs__ : ["HORIZONTAL","NONE","NORMAL","VERTICAL"] }
nme.display.LineScaleMode.HORIZONTAL = ["HORIZONTAL",0];
nme.display.LineScaleMode.HORIZONTAL.toString = $estr;
nme.display.LineScaleMode.HORIZONTAL.__enum__ = nme.display.LineScaleMode;
nme.display.LineScaleMode.NONE = ["NONE",1];
nme.display.LineScaleMode.NONE.toString = $estr;
nme.display.LineScaleMode.NONE.__enum__ = nme.display.LineScaleMode;
nme.display.LineScaleMode.NORMAL = ["NORMAL",2];
nme.display.LineScaleMode.NORMAL.toString = $estr;
nme.display.LineScaleMode.NORMAL.__enum__ = nme.display.LineScaleMode;
nme.display.LineScaleMode.VERTICAL = ["VERTICAL",3];
nme.display.LineScaleMode.VERTICAL.toString = $estr;
nme.display.LineScaleMode.VERTICAL.__enum__ = nme.display.LineScaleMode;
neash.events.ProgressEvent = function() { }
neash.events.ProgressEvent.__name__ = ["neash","events","ProgressEvent"];
neash.events.ProgressEvent.prototype.bytesLoaded = null;
neash.events.ProgressEvent.prototype.bytesTotal = null;
neash.events.ProgressEvent.prototype.__class__ = neash.events.ProgressEvent;
xpath.tokenizer.container.StepDelimitersTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.StepDelimitersTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.StepDelimitersTokenizer.__name__ = ["xpath","tokenizer","container","StepDelimitersTokenizer"];
xpath.tokenizer.container.StepDelimitersTokenizer.instance = null;
xpath.tokenizer.container.StepDelimitersTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.StepDelimitersTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.StepDelimitersTokenizer.instance == null) {
		xpath.tokenizer.container.StepDelimitersTokenizer.instance = new xpath.tokenizer.container.StepDelimitersTokenizer();
		xpath.tokenizer.container.StepDelimitersTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.StepDelimitersTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.StepDelimitersTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.StepDelimitersTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.StepDelimiterTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.token.DeepStepDelimiterTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.StepDelimitersTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.StepDelimitersTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.StepDelimitersTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.StepDelimitersTokenizer.prototype.__class__ = xpath.tokenizer.container.StepDelimitersTokenizer;
xpath.tokenizer.container.StepDelimitersTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.expression.PathStep = function(step,nextStep) { if( step === $_ ) return; {
	$s.push("xpath.expression.PathStep::new");
	var $spos = $s.length;
	this.step = step;
	this.nextStep = nextStep;
	$s.pop();
}}
xpath.expression.PathStep.__name__ = ["xpath","expression","PathStep"];
xpath.expression.PathStep.prototype.evaluate = function(context) {
	$s.push("xpath.expression.PathStep::evaluate");
	var $spos = $s.length;
	if(this.nextStep == null) {
		{
			var $tmp = new xpath.value.XPathNodeSet(this.step(context));
			$s.pop();
			return $tmp;
		}
	}
	else {
		var me = this;
		var index = 0;
		var selected = Lambda.array(this.step(context));
		var nextNode = null;
		var nextStepNodes = new List().iterator();
		var hasNext = function() {
			$s.push("xpath.expression.PathStep::evaluate@44");
			var $spos = $s.length;
			{
				var $tmp = nextNode != null;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}
		var next = function() {
			$s.push("xpath.expression.PathStep::evaluate@47");
			var $spos = $s.length;
			var node = nextNode;
			while(!nextStepNodes.hasNext() && index < selected.length) {
				var nextStepContext = new xpath.context.Context(selected[index],index + 1,selected.length,context.environment);
				var nextStepResult = function($this) {
					var $r;
					var tmp = me.nextStep.evaluate(nextStepContext);
					$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
						var $r;
						throw "Class cast error";
						return $r;
					}($this));
					return $r;
				}(this);
				nextStepNodes = nextStepResult.getNodes().iterator();
				++index;
			}
			if(nextStepNodes.hasNext()) {
				nextNode = nextStepNodes.next();
			}
			else {
				nextNode = null;
			}
			{
				$s.pop();
				return node;
			}
			$s.pop();
		}
		next();
		var iterator = function() {
			$s.push("xpath.expression.PathStep::evaluate@66");
			var $spos = $s.length;
			{
				var $tmp = { hasNext : hasNext, next : next}
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}
		{
			var $tmp = new xpath.value.XPathNodeSet({ iterator : iterator});
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.expression.PathStep.prototype.nextStep = null;
xpath.expression.PathStep.prototype.step = null;
xpath.expression.PathStep.prototype.__class__ = xpath.expression.PathStep;
xpath.expression.PathStep.__interfaces__ = [xpath.expression.Expression];
xpath.expression.RootStep = function(nextStep) { if( nextStep === $_ ) return; {
	$s.push("xpath.expression.RootStep::new");
	var $spos = $s.length;
	xpath.expression.PathStep.apply(this,[$closure(this,"rootStep"),nextStep]);
	$s.pop();
}}
xpath.expression.RootStep.__name__ = ["xpath","expression","RootStep"];
xpath.expression.RootStep.__super__ = xpath.expression.PathStep;
for(var k in xpath.expression.PathStep.prototype ) xpath.expression.RootStep.prototype[k] = xpath.expression.PathStep.prototype[k];
xpath.expression.RootStep.prototype.rootStep = function(context) {
	$s.push("xpath.expression.RootStep::rootStep");
	var $spos = $s.length;
	var node = context.node;
	var parent = node.getParent();
	while(parent != null) {
		node = parent;
		parent = node.getParent();
	}
	{
		var $tmp = [node];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.RootStep.prototype.__class__ = xpath.expression.RootStep;
neash.text.FontManager = function() { }
neash.text.FontManager.__name__ = ["neash","text","FontManager"];
neash.text.FontManager.GetFont = function(inFace,inHeight) {
	$s.push("neash.text.FontManager::GetFont");
	var $spos = $s.length;
	var id = inFace + ":" + inHeight;
	var font = neash.text.FontManager.mFontMap.get(inFace);
	if(font == null) {
		var swf_font = neash.text.FontManager.mSWFFonts.get(inFace);
		if(swf_font != null) {
			font = new neash.swf.ScaledFont(swf_font,inHeight);
		}
		else {
			var native_font = new neash.text.NativeFont(inFace,inHeight);
			if(native_font.Ok()) font = native_font;
		}
		if(font != null) neash.text.FontManager.mFontMap.set(id,font);
	}
	{
		$s.pop();
		return font;
	}
	$s.pop();
}
neash.text.FontManager.RegisterFont = function(inFont) {
	$s.push("neash.text.FontManager::RegisterFont");
	var $spos = $s.length;
	neash.text.FontManager.mSWFFonts.set(inFont.GetName(),inFont);
	$s.pop();
}
neash.text.FontManager.prototype.__class__ = neash.text.FontManager;
sandy.parser.AParser = function(p_sFile,p_nScale) { if( p_sFile === $_ ) return; {
	$s.push("sandy.parser.AParser::new");
	var $spos = $s.length;
	this.m_oLoader = new neash.net.URLLoader();
	neash.events.EventDispatcher.apply(this,[this]);
	this.m_oGroup = new sandy.core.scenegraph.Group("parser");
	this.m_nScale = p_nScale;
	if(Std["is"](p_sFile,String)) {
		this.m_sUrl = p_sFile;
		this.m_oFileLoader = new neash.net.URLLoader();
		this.m_sDataFormat = neash.net.URLLoaderDataFormat.TEXT;
	}
	else {
		this.m_oFile = p_sFile;
	}
	this.__setStandardAppearance(new sandy.materials.Appearance(new sandy.materials.ColorMaterial(255,100,new sandy.materials.attributes.MaterialAttributes([new sandy.materials.attributes.LineAttributes()]))));
	$s.pop();
}}
sandy.parser.AParser.__name__ = ["sandy","parser","AParser"];
sandy.parser.AParser.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) sandy.parser.AParser.prototype[k] = neash.events.EventDispatcher.prototype[k];
sandy.parser.AParser.prototype.__setStandardAppearance = function(p_oAppearance) {
	$s.push("sandy.parser.AParser::__setStandardAppearance");
	var $spos = $s.length;
	this.m_oStandardAppearance = p_oAppearance;
	{
		$s.pop();
		return p_oAppearance;
	}
	$s.pop();
}
sandy.parser.AParser.prototype._io_error = function(e) {
	$s.push("sandy.parser.AParser::_io_error");
	var $spos = $s.length;
	this.dispatchEvent(new sandy.parser.ParserEvent(sandy.parser.ParserEvent.FAIL));
	$s.pop();
}
sandy.parser.AParser.prototype.m_nScale = null;
sandy.parser.AParser.prototype.m_oFile = null;
sandy.parser.AParser.prototype.m_oFileLoader = null;
sandy.parser.AParser.prototype.m_oGroup = null;
sandy.parser.AParser.prototype.m_oLoader = null;
sandy.parser.AParser.prototype.m_oStandardAppearance = null;
sandy.parser.AParser.prototype.m_sDataFormat = null;
sandy.parser.AParser.prototype.m_sUrl = null;
sandy.parser.AParser.prototype.onProgress = function(p_oEvt) {
	$s.push("sandy.parser.AParser::onProgress");
	var $spos = $s.length;
	var event = new sandy.parser.ParserEvent(sandy.parser.ParserEvent.PROGRESS);
	event.percent = 100 * p_oEvt.bytesLoaded / p_oEvt.bytesTotal;
	this.dispatchEvent(event);
	$s.pop();
}
sandy.parser.AParser.prototype.parse = function() {
	$s.push("sandy.parser.AParser::parse");
	var $spos = $s.length;
	if(Std["is"](this.m_sUrl,String)) {
		var urlRequest = new neash.net.URLRequest(this.m_sUrl);
		this.m_oFileLoader.addEventListener(neash.events.Event.COMPLETE,$closure(this,"parseData"));
		this.m_oFileLoader.addEventListener(neash.events.ProgressEvent.PROGRESS,$closure(this,"onProgress"));
		this.m_oFileLoader.addEventListener(neash.events.IOErrorEvent.IO_ERROR,$closure(this,"_io_error"));
		this.m_oFileLoader.dataFormat = this.m_sDataFormat;
		this.m_oFileLoader.load(urlRequest);
	}
	else {
		this.parseData();
	}
	$s.pop();
}
sandy.parser.AParser.prototype.parseData = function(e) {
	$s.push("sandy.parser.AParser::parseData");
	var $spos = $s.length;
	if(e != null) {
		this.m_oFileLoader = e.target;
		this.m_oFile = this.m_oFileLoader.data;
	}
	$s.pop();
}
sandy.parser.AParser.prototype.standardAppearance = null;
sandy.parser.AParser.prototype.__class__ = sandy.parser.AParser;
sandy.parser.AParser.__interfaces__ = [sandy.parser.IParser];
sandy.parser.ASEParser = function(p_sUrl,p_nScale) { if( p_sUrl === $_ ) return; {
	$s.push("sandy.parser.ASEParser::new");
	var $spos = $s.length;
	sandy.parser.AParser.apply(this,[p_sUrl,p_nScale]);
	$s.pop();
}}
sandy.parser.ASEParser.__name__ = ["sandy","parser","ASEParser"];
sandy.parser.ASEParser.__super__ = sandy.parser.AParser;
for(var k in sandy.parser.AParser.prototype ) sandy.parser.ASEParser.prototype[k] = sandy.parser.AParser.prototype[k];
sandy.parser.ASEParser.prototype.parseData = function(e) {
	$s.push("sandy.parser.ASEParser::parseData");
	var $spos = $s.length;
	sandy.parser.AParser.prototype.parseData.apply(this,[e]);
	var lines = this.m_oFile.split("\n");
	var lineLength = lines.length;
	var id;
	var line;
	var content;
	var chunk;
	var l_oAppearance = null;
	var l_oGeometry = null;
	var l_oShape = null;
	while(lines.length > 0) {
		var event = new sandy.parser.ParserEvent(sandy.parser.ParserEvent.PARSING);
		event.percent = (100 - (lines.length * 100 / lineLength));
		this.dispatchEvent(event);
		line = lines.shift();
		line = line.substr(line.indexOf("*") + 1);
		if(line.indexOf("}") >= 0) line = "";
		chunk = line.substr(0,line.indexOf(" "));
		switch(chunk) {
		case "MESH_NUMFACES":{
			{
				if(l_oGeometry != null) {
					l_oShape = new sandy.core.scenegraph.Shape3D(null,l_oGeometry,this.m_oStandardAppearance);
					this.m_oGroup.addChild(l_oShape);
				}
				l_oGeometry = new sandy.core.scenegraph.Geometry3D();
			}
		}break;
		case "MESH_VERTEX_LIST":{
			{
				while((content = lines.shift()).indexOf("}") < 0) {
					content = content.substr(content.indexOf("*") + 1);
					var vertexReg = new EReg("MESH_VERTEX\\s*(\\d+)\\s*([\\d-.]+)\\s*([\\d-.]+)\\s*([\\d-.]+)","");
					id = Std.parseInt(vertexReg.replace(content,"$1"));
					var v1 = Std.parseFloat(vertexReg.replace(content,"$2"));
					var v2 = Std.parseFloat(vertexReg.replace(content,"$4"));
					var v3 = Std.parseFloat(vertexReg.replace(content,"$3"));
					l_oGeometry.setVertex(id,v1 * this.m_nScale,v2 * this.m_nScale,v3 * this.m_nScale);
				}
			}
		}break;
		case "MESH_FACE_LIST":{
			{
				while((content = lines.shift()).indexOf("}") < 0) {
					content = content.substr(content.indexOf("*") + 1);
					var mfl = content.split("*")[0];
					var faceReg = new EReg("MESH_FACE\\s*(\\d+):\\s*A:\\s*(\\d+)\\s*B:\\s*(\\d+)\\s*C:\\s*(\\d+)\\s*AB:\\s*(\\d+)\\s*BC:\\s*(\\d+)\\s*CA:\\s*(\\d+)\\s*","");
					id = Std.parseInt(faceReg.replace(mfl,"$1"));
					var p1 = Std.parseInt(faceReg.replace(mfl,"$2"));
					var p2 = Std.parseInt(faceReg.replace(mfl,"$3"));
					var p3 = Std.parseInt(faceReg.replace(mfl,"$4"));
					l_oGeometry.setFaceVertexIds(id,[p1,p2,p3]);
				}
			}
		}break;
		case "MESH_TVERTLIST":{
			{
				while((content = lines.shift()).indexOf("}") < 0) {
					content = content.substr(content.indexOf("*") + 1);
					var vertexReg = new EReg("MESH_TVERT\\s*(\\d+)\\s*([\\d-.]+)\\s*([\\d-.]+)\\s*([\\d-.]+)","");
					id = Std.parseInt(vertexReg.replace(content,"$1"));
					var v1 = Std.parseFloat(vertexReg.replace(content,"$2"));
					var v2 = Std.parseFloat(vertexReg.replace(content,"$3"));
					l_oGeometry.setUVCoords(id,v1,1 - v2);
				}
			}
		}break;
		case "MESH_TFACELIST":{
			{
				while((content = lines.shift()).indexOf("}") < 0) {
					content = content.substr(content.indexOf("*") + 1);
					var faceReg = new EReg("MESH_TFACE\\s*(\\d+)\\s*(\\d+)\\s*(\\d+)\\s*(\\d+)","");
					id = Std.parseInt(faceReg.replace(content,"$1"));
					var f1 = Std.parseInt(faceReg.replace(content,"$2"));
					var f2 = Std.parseInt(faceReg.replace(content,"$3"));
					var f3 = Std.parseInt(faceReg.replace(content,"$4"));
					l_oGeometry.setFaceUVCoordsIds(id,[f1,f2,f3]);
				}
			}
		}break;
		}
	}
	l_oShape = new sandy.core.scenegraph.Shape3D(null,l_oGeometry,this.m_oStandardAppearance);
	this.m_oGroup.addChild(l_oShape);
	var l_eOnInit = new sandy.parser.ParserEvent(sandy.parser.ParserEvent.INIT);
	l_eOnInit.group = this.m_oGroup;
	this.dispatchEvent(l_eOnInit);
	$s.pop();
}
sandy.parser.ASEParser.prototype.__class__ = sandy.parser.ASEParser;
sandy.parser.ASEParser.__interfaces__ = [sandy.parser.IParser];
sandy.events.BubbleEventBroadcaster = function(p) { if( p === $_ ) return; {
	$s.push("sandy.events.BubbleEventBroadcaster::new");
	var $spos = $s.length;
	this.m_oParent = null;
	sandy.events.EventBroadcaster.apply(this,[]);
	$s.pop();
}}
sandy.events.BubbleEventBroadcaster.__name__ = ["sandy","events","BubbleEventBroadcaster"];
sandy.events.BubbleEventBroadcaster.__super__ = sandy.events.EventBroadcaster;
for(var k in sandy.events.EventBroadcaster.prototype ) sandy.events.BubbleEventBroadcaster.prototype[k] = sandy.events.EventBroadcaster.prototype[k];
sandy.events.BubbleEventBroadcaster.prototype.__getParent = function() {
	$s.push("sandy.events.BubbleEventBroadcaster::__getParent");
	var $spos = $s.length;
	{
		var $tmp = this.m_oParent;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.events.BubbleEventBroadcaster.prototype.__setParent = function(pEB) {
	$s.push("sandy.events.BubbleEventBroadcaster::__setParent");
	var $spos = $s.length;
	this.m_oParent = pEB;
	{
		$s.pop();
		return pEB;
	}
	$s.pop();
}
sandy.events.BubbleEventBroadcaster.prototype.addChild = function(child) {
	$s.push("sandy.events.BubbleEventBroadcaster::addChild");
	var $spos = $s.length;
	child.__setParent(this);
	$s.pop();
}
sandy.events.BubbleEventBroadcaster.prototype.broadcastEvent = function(e) {
	$s.push("sandy.events.BubbleEventBroadcaster::broadcastEvent");
	var $spos = $s.length;
	if(Std["is"](e,sandy.events.BubbleEvent)) {
		sandy.events.EventBroadcaster.prototype.broadcastEvent.apply(this,[e]);
		if(this.__getParent() != null) {
			this.__getParent().broadcastEvent(e);
		}
	}
	else {
		this.__getParent().broadcastEvent(e);
	}
	$s.pop();
}
sandy.events.BubbleEventBroadcaster.prototype.m_oParent = null;
sandy.events.BubbleEventBroadcaster.prototype.parent = null;
sandy.events.BubbleEventBroadcaster.prototype.removeChild = function(child) {
	$s.push("sandy.events.BubbleEventBroadcaster::removeChild");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.events.BubbleEventBroadcaster.prototype.__class__ = sandy.events.BubbleEventBroadcaster;
xpath.expression.PINameStep = function(name,nextStep) { if( name === $_ ) return; {
	$s.push("xpath.expression.PINameStep::new");
	var $spos = $s.length;
	xpath.expression.PathStep.apply(this,[$closure(this,"piNameStep"),nextStep]);
	this.name = name;
	$s.pop();
}}
xpath.expression.PINameStep.__name__ = ["xpath","expression","PINameStep"];
xpath.expression.PINameStep.__super__ = xpath.expression.PathStep;
for(var k in xpath.expression.PathStep.prototype ) xpath.expression.PINameStep.prototype[k] = xpath.expression.PathStep.prototype[k];
xpath.expression.PINameStep.prototype.name = null;
xpath.expression.PINameStep.prototype.piNameStep = function(context) {
	$s.push("xpath.expression.PINameStep::piNameStep");
	var $spos = $s.length;
	if(context.node.getType() == xpath.xml.XmlNodeType.ProcessingInstruction) {
		if(this.name == null || context.node.getName() == this.name) {
			{
				var $tmp = [context.node];
				$s.pop();
				return $tmp;
			}
		}
	}
	{
		var $tmp = [];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.PINameStep.prototype.__class__ = xpath.expression.PINameStep;
sandy.materials.attributes.LightAttributes = function(p_bBright,p_nAmbient) { if( p_bBright === $_ ) return; {
	$s.push("sandy.materials.attributes.LightAttributes::new");
	var $spos = $s.length;
	if(p_nAmbient == null) p_nAmbient = 0.3;
	if(p_bBright == null) p_bBright = false;
	sandy.materials.attributes.ALightAttributes.apply(this,[]);
	this.useBright = p_bBright;
	this.__setAmbient(sandy.util.NumberUtil.constrain(p_nAmbient,0,1));
	this.m_nFlags |= sandy.core.SandyFlags.POLYGON_NORMAL_WORLD;
	$s.pop();
}}
sandy.materials.attributes.LightAttributes.__name__ = ["sandy","materials","attributes","LightAttributes"];
sandy.materials.attributes.LightAttributes.__super__ = sandy.materials.attributes.ALightAttributes;
for(var k in sandy.materials.attributes.ALightAttributes.prototype ) sandy.materials.attributes.LightAttributes.prototype[k] = sandy.materials.attributes.ALightAttributes.prototype[k];
sandy.materials.attributes.LightAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.LightAttributes::draw");
	var $spos = $s.length;
	sandy.materials.attributes.ALightAttributes.prototype.draw.apply(this,[p_oGraphics,p_oPolygon,p_oMaterial,p_oScene]);
	if(p_oMaterial.lightingEnable) {
		var l_aPoints = ((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices);
		var l_oNormal = p_oPolygon.normal.getWorldVector();
		var lightStrength = this.calculate(l_oNormal,p_oPolygon.visible);
		if(lightStrength > 1) lightStrength = 1;
		else if(lightStrength < this.__getAmbient()) lightStrength = this.__getAmbient();
		p_oGraphics.lineStyle();
		if(this.useBright) p_oGraphics.beginFill(((lightStrength < 0.5)?0:16777215),((lightStrength < 0.5)?(1 - 2 * lightStrength):(2 * lightStrength - 1)));
		else p_oGraphics.beginFill(0,1 - lightStrength);
		p_oGraphics.moveTo(l_aPoints[0].sx,l_aPoints[0].sy);
		{
			var _g = 0;
			while(_g < l_aPoints.length) {
				var l_oVertex = l_aPoints[_g];
				++_g;
				p_oGraphics.lineTo(l_oVertex.sx,l_oVertex.sy);
			}
		}
		p_oGraphics.endFill();
		l_oNormal = null;
	}
	$s.pop();
}
sandy.materials.attributes.LightAttributes.prototype.useBright = null;
sandy.materials.attributes.LightAttributes.prototype.__class__ = sandy.materials.attributes.LightAttributes;
xpath.tokenizer.container.XPathTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.XPathTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.XPathTokenizer.__name__ = ["xpath","tokenizer","container","XPathTokenizer"];
xpath.tokenizer.container.XPathTokenizer.instance = null;
xpath.tokenizer.container.XPathTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.XPathTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.XPathTokenizer.instance == null) {
		xpath.tokenizer.container.XPathTokenizer.instance = new xpath.tokenizer.container.XPathTokenizer();
		xpath.tokenizer.container.XPathTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.XPathTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.XPathTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.XPathTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginXPathTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.ExpressionTokenizer.getInstance(),xpath.tokenizer.token.EndXPathTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.XPathTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.XPathTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.XPathTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.XPathTokenizer.prototype.__class__ = xpath.tokenizer.container.XPathTokenizer;
xpath.tokenizer.container.XPathTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.parser = {}
xpath.parser.Parser = function() { }
xpath.parser.Parser.__name__ = ["xpath","parser","Parser"];
xpath.parser.Parser.prototype.parse = null;
xpath.parser.Parser.prototype.__class__ = xpath.parser.Parser;
xpath.parser.StepParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.StepParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.StepParser.__name__ = ["xpath","parser","StepParser"];
xpath.parser.StepParser.instance = null;
xpath.parser.StepParser.getInstance = function() {
	$s.push("xpath.parser.StepParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.StepParser.instance == null) xpath.parser.StepParser.instance = new xpath.parser.StepParser();
	{
		var $tmp = xpath.parser.StepParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.StepParser.prototype.parse = function(input) {
	$s.push("xpath.parser.StepParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(Std["is"](token,xpath.tokenizer.AxisToken)) {
		var axis = function($this) {
			var $r;
			var tmp = token;
			$r = (Std["is"](tmp,xpath.tokenizer.AxisToken)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).axis;
		if(!input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
		var nodeTestToken = input.next();
		if(!(Std["is"](nodeTestToken,xpath.tokenizer.NameTestToken) || Std["is"](nodeTestToken,xpath.tokenizer.TypeTestToken) || Std["is"](nodeTestToken,xpath.tokenizer.PINameTestToken))) throw new xpath.parser.ParseError("Invalid token stream");
		var nextStep;
		var output = xpath.parser.NextStepParser.getInstance().parse(input.descend());
		if(output == null) nextStep = null;
		else {
			nextStep = function($this) {
				var $r;
				var tmp = output.result;
				$r = (Std["is"](tmp,xpath.expression.PathStep)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this);
			input = output.getNextInput();
		}
		var nodeTest;
		if(Std["is"](nodeTestToken,xpath.tokenizer.NameTestToken)) {
			var name = function($this) {
				var $r;
				var tmp = nodeTestToken;
				$r = (Std["is"](tmp,xpath.tokenizer.NameTestToken)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).name;
			nodeTest = new xpath.expression.NameStep(name,nextStep);
		}
		else if(Std["is"](nodeTestToken,xpath.tokenizer.TypeTestToken)) {
			var type = function($this) {
				var $r;
				var tmp = nodeTestToken;
				$r = (Std["is"](tmp,xpath.tokenizer.TypeTestToken)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).type;
			if(type == xpath.NodeCategory.Node) nodeTest = nextStep;
			else nodeTest = new xpath.expression.TypeStep(type,nextStep);
		}
		else if(Std["is"](nodeTestToken,xpath.tokenizer.PINameTestToken)) {
			var name = function($this) {
				var $r;
				var tmp = nodeTestToken;
				$r = (Std["is"](tmp,xpath.tokenizer.PINameTestToken)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).name;
			nodeTest = new xpath.expression.PINameStep(name,nextStep);
		}
		else throw new xpath.parser.ParseError("Invalid token stream");
		var result;
		if(axis == xpath.Axis.Self) {
			result = nodeTest;
		}
		else {
			result = new xpath.expression.AxisStep(axis,nodeTest);
		}
		{
			var $tmp = input.getOutput(input.count,result);
			$s.pop();
			return $tmp;
		}
	}
	else {
		input.restart();
		var output = xpath.parser.ExpressionParser.getInstance().parse(input);
		if(output == null) {
			$s.pop();
			return null;
		}
		var filterExpression = output.result;
		input = output.getNextInput();
		output = xpath.parser.NextStepParser.getInstance().parse(input.descend());
		var nextStep;
		if(output == null) nextStep = null;
		else {
			nextStep = function($this) {
				var $r;
				var tmp = output.result;
				$r = (Std["is"](tmp,xpath.expression.PathStep)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this);
			input = output.getNextInput();
		}
		var result = new xpath.expression.FilterStep(filterExpression,nextStep);
		{
			var $tmp = input.getOutput(input.count,result);
			$s.pop();
			return $tmp;
		}
	}
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.parser.StepParser.prototype.__class__ = xpath.parser.StepParser;
xpath.parser.StepParser.__interfaces__ = [xpath.parser.Parser];
EReg = function(r,opt) { if( r === $_ ) return; {
	$s.push("EReg::new");
	var $spos = $s.length;
	opt = opt.split("u").join("");
	this.r = new RegExp(r,opt);
	$s.pop();
}}
EReg.__name__ = ["EReg"];
EReg.prototype.customReplace = function(s,f) {
	$s.push("EReg::customReplace");
	var $spos = $s.length;
	var buf = new StringBuf();
	while(true) {
		if(!this.match(s)) break;
		buf.b += this.matchedLeft();
		buf.b += f(this);
		s = this.matchedRight();
	}
	buf.b += s;
	{
		var $tmp = buf.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.match = function(s) {
	$s.push("EReg::match");
	var $spos = $s.length;
	this.r.m = this.r.exec(s);
	this.r.s = s;
	this.r.l = RegExp.leftContext;
	this.r.r = RegExp.rightContext;
	{
		var $tmp = (this.r.m != null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.matched = function(n) {
	$s.push("EReg::matched");
	var $spos = $s.length;
	{
		var $tmp = (this.r.m != null && n >= 0 && n < this.r.m.length?this.r.m[n]:function($this) {
			var $r;
			throw "EReg::matched";
			return $r;
		}(this));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.matchedLeft = function() {
	$s.push("EReg::matchedLeft");
	var $spos = $s.length;
	if(this.r.m == null) throw "No string matched";
	if(this.r.l == null) {
		var $tmp = this.r.s.substr(0,this.r.m.index);
		$s.pop();
		return $tmp;
	}
	{
		var $tmp = this.r.l;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.matchedPos = function() {
	$s.push("EReg::matchedPos");
	var $spos = $s.length;
	if(this.r.m == null) throw "No string matched";
	{
		var $tmp = { pos : this.r.m.index, len : this.r.m[0].length}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.matchedRight = function() {
	$s.push("EReg::matchedRight");
	var $spos = $s.length;
	if(this.r.m == null) throw "No string matched";
	if(this.r.r == null) {
		var sz = this.r.m.index + this.r.m[0].length;
		{
			var $tmp = this.r.s.substr(sz,this.r.s.length - sz);
			$s.pop();
			return $tmp;
		}
	}
	{
		var $tmp = this.r.r;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.r = null;
EReg.prototype.replace = function(s,by) {
	$s.push("EReg::replace");
	var $spos = $s.length;
	{
		var $tmp = s.replace(this.r,by);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.split = function(s) {
	$s.push("EReg::split");
	var $spos = $s.length;
	var d = "#__delim__#";
	{
		var $tmp = s.replace(this.r,d).split(d);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
EReg.prototype.__class__ = EReg;
xpath.tokenizer.container.PathTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.PathTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.PathTokenizer.__name__ = ["xpath","tokenizer","container","PathTokenizer"];
xpath.tokenizer.container.PathTokenizer.instance = null;
xpath.tokenizer.container.PathTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.PathTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.PathTokenizer.instance == null) {
		xpath.tokenizer.container.PathTokenizer.instance = new xpath.tokenizer.container.PathTokenizer();
		xpath.tokenizer.container.PathTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.PathTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.PathTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.PathTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginPathTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.StepDelimitersTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = new xpath.tokenizer.util.Disjunction([function($this) {
			var $r;
			var tmp = new xpath.tokenizer.util.Sequence([function($this) {
				var $r;
				var tmp = xpath.tokenizer.container.StepDelimitersTokenizer.getInstance();
				$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}($this),xpath.tokenizer.container.UnaryStepTokenizer.getInstance()]);
			$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}($this),xpath.tokenizer.container.StepTokenizer.getInstance()]);
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Repetition([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.StepDelimitersTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.UnaryStepTokenizer.getInstance()])])]),xpath.tokenizer.token.EndPathTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.PathTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.PathTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.PathTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.PathTokenizer.prototype.__class__ = xpath.tokenizer.container.PathTokenizer;
xpath.tokenizer.container.PathTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.Axis = { __ename__ : ["xpath","Axis"], __constructs__ : ["Ancestor","AncestorOrSelf","Attribute","Child","Descendant","DescendantOrSelf","Following","FollowingSibling","Namespace","Parent","Preceding","PrecedingSibling","Self"] }
xpath.Axis.Ancestor = ["Ancestor",0];
xpath.Axis.Ancestor.toString = $estr;
xpath.Axis.Ancestor.__enum__ = xpath.Axis;
xpath.Axis.AncestorOrSelf = ["AncestorOrSelf",1];
xpath.Axis.AncestorOrSelf.toString = $estr;
xpath.Axis.AncestorOrSelf.__enum__ = xpath.Axis;
xpath.Axis.Attribute = ["Attribute",2];
xpath.Axis.Attribute.toString = $estr;
xpath.Axis.Attribute.__enum__ = xpath.Axis;
xpath.Axis.Child = ["Child",3];
xpath.Axis.Child.toString = $estr;
xpath.Axis.Child.__enum__ = xpath.Axis;
xpath.Axis.Descendant = ["Descendant",4];
xpath.Axis.Descendant.toString = $estr;
xpath.Axis.Descendant.__enum__ = xpath.Axis;
xpath.Axis.DescendantOrSelf = ["DescendantOrSelf",5];
xpath.Axis.DescendantOrSelf.toString = $estr;
xpath.Axis.DescendantOrSelf.__enum__ = xpath.Axis;
xpath.Axis.Following = ["Following",6];
xpath.Axis.Following.toString = $estr;
xpath.Axis.Following.__enum__ = xpath.Axis;
xpath.Axis.FollowingSibling = ["FollowingSibling",7];
xpath.Axis.FollowingSibling.toString = $estr;
xpath.Axis.FollowingSibling.__enum__ = xpath.Axis;
xpath.Axis.Namespace = ["Namespace",8];
xpath.Axis.Namespace.toString = $estr;
xpath.Axis.Namespace.__enum__ = xpath.Axis;
xpath.Axis.Parent = ["Parent",9];
xpath.Axis.Parent.toString = $estr;
xpath.Axis.Parent.__enum__ = xpath.Axis;
xpath.Axis.Preceding = ["Preceding",10];
xpath.Axis.Preceding.toString = $estr;
xpath.Axis.Preceding.__enum__ = xpath.Axis;
xpath.Axis.PrecedingSibling = ["PrecedingSibling",11];
xpath.Axis.PrecedingSibling.toString = $estr;
xpath.Axis.PrecedingSibling.__enum__ = xpath.Axis;
xpath.Axis.Self = ["Self",12];
xpath.Axis.Self.toString = $estr;
xpath.Axis.Self.__enum__ = xpath.Axis;
sandy.parser.ColladaParser = function(p_sUrl,p_nScale) { if( p_sUrl === $_ ) return; {
	$s.push("sandy.parser.ColladaParser::new");
	var $spos = $s.length;
	this.RELATIVE_TEXTURE_PATH = ".";
	sandy.parser.AParser.apply(this,[p_sUrl,p_nScale]);
	$s.pop();
}}
sandy.parser.ColladaParser.__name__ = ["sandy","parser","ColladaParser"];
sandy.parser.ColladaParser.__super__ = sandy.parser.AParser;
for(var k in sandy.parser.AParser.prototype ) sandy.parser.ColladaParser.prototype[k] = sandy.parser.AParser.prototype[k];
sandy.parser.ColladaParser.prototype.RELATIVE_TEXTURE_PATH = null;
sandy.parser.ColladaParser.prototype.convertTriangleArray = function(p_oInput,p_aTriangles,p_nTriangleCount) {
	$s.push("sandy.parser.ColladaParser::convertTriangleArray");
	var $spos = $s.length;
	var l_nTriangles = p_aTriangles.length;
	var l_aOutput = new Array();
	var l_nValuesPerTriangle = Std["int"](l_nTriangles / p_nTriangleCount);
	var l_nMaxOffset = 0;
	var l_aInputA = Lambda.array(p_oInput);
	var l_aInputB = l_aInputA.copy();
	{
		var _g = 0;
		while(_g < l_aInputA.length) {
			var l_oI = l_aInputA[_g];
			++_g;
			l_nMaxOffset = Std["int"](Math.max(l_nMaxOffset,Std.parseFloat(new xpath.XPath("./@offset").selectNode(l_oI).getStringValue())));
		}
	}
	l_nMaxOffset += 1;
	var l_oSemantic = new xpath.XPath("./@semantic");
	var l_oOffset = new xpath.XPath("./@offset");
	{
		var _g = 0;
		while(_g < p_nTriangleCount) {
			var i = _g++;
			var semantic = new Hash();
			{
				var _g1 = 0;
				while(_g1 < l_nValuesPerTriangle) {
					var j = _g1++;
					{
						var _g2 = 0;
						while(_g2 < l_aInputB.length) {
							var l_oI = l_aInputB[_g2];
							++_g2;
							if(Std.parseInt(l_oOffset.selectNode(l_oI).getStringValue()) == j % l_nMaxOffset) {
								if(semantic.get(l_oSemantic.selectNode(l_oI).getStringValue()) == null) semantic.set(l_oSemantic.selectNode(l_oI).getStringValue(),new Array());
								var index = (i * l_nValuesPerTriangle) + j;
								semantic.get(l_oSemantic.selectNode(l_oI).getStringValue()).push(p_aTriangles[index]);
							}
						}
					}
				}
			}
			l_aOutput.push(semantic);
		}
	}
	{
		$s.pop();
		return l_aOutput;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.formatVector = function(p_oVect) {
	$s.push("sandy.parser.ColladaParser::formatVector");
	var $spos = $s.length;
	var tmp;
	var $e = (this.m_oUp);
	switch( $e[1] ) {
	case 1:
	{
		null;
	}break;
	case 0:
	{
		p_oVect.x = -p_oVect.x;
	}break;
	case 2:
	{
		var t = p_oVect.z;
		p_oVect.z = p_oVect.y;
		p_oVect.y = t;
	}break;
	case 3:
	{
		null;
	}break;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.getAppearance = function(p_oNode) {
	$s.push("sandy.parser.ColladaParser::getAppearance");
	var $spos = $s.length;
	var l_oAppearance = null;
	var l_oMaterials = (new xpath.XPath(".//instance_material").selectNodes(p_oNode));
	{ var $it40 = l_oMaterials.iterator();
	while( $it40.hasNext() ) { var l_oInstMat = $it40.next();
	{
		var l_oMaterial = new xpath.XPath("//library_materials/material[ ./@id = \"" + new xpath.XPath("@target").selectNode(l_oInstMat).getStringValue().split("#")[1] + "\" ]").selectNode(this.m_oCollada);
		var l_sEffectID = new xpath.XPath("./instance_effect/@url").selectNode(l_oMaterial).getStringValue().split("#")[1];
		var l_oEffect = ((l_sEffectID == "")?new xpath.XPath("//library_effects/effect/").selectNode(this.m_oCollada):new xpath.XPath("//library_effects/effect[ ./@id = \"" + l_sEffectID + "\" ]").selectNode(this.m_oCollada));
		if(Lambda.count(new xpath.XPath(".//texture").selectNodes(l_oEffect)) == 0 && Lambda.count(new xpath.XPath(".//phong").selectNodes(l_oEffect)) == 0) {
			var $tmp = this.m_oStandardAppearance;
			$s.pop();
			return $tmp;
		}
		if(Lambda.count(new xpath.XPath(".//texture").selectNodes(l_oEffect)) > 0) {
			var l_sTextureID = new xpath.XPath(".//texture/@texture").selectNode(l_oEffect).getStringValue();
			var l_sSurfaceID = new xpath.XPath(".//newparam[ ./@sid = \"" + l_sTextureID + "\" ]/sampler2D/source").selectNode(l_oEffect).getStringValue();
			var l_sImageID = new xpath.XPath(".//newparam[ ./@sid = \"" + l_sSurfaceID + "\" ]/surface/init_from").selectNode(l_oEffect).getStringValue();
			if(this.m_oMaterials.get(l_sImageID).bitmapData != null) l_oAppearance = new sandy.materials.Appearance(new sandy.materials.BitmapMaterial(this.m_oMaterials.get(l_sImageID).bitmapData));
			if(l_oAppearance == null) l_oAppearance = this.m_oStandardAppearance;
		}
		else if(Lambda.count(new xpath.XPath(".//phong").selectNodes(l_oEffect)) > 0) {
			var l_aColors = this.stringToArray(new xpath.XPath(".//phong/ambient/color").selectNode(l_oEffect).getStringValue());
			var l_nColor;
			var r = Std["int"](sandy.util.NumberUtil.constrain(l_aColors[0] * 255,0,255));
			var g = Std["int"](sandy.util.NumberUtil.constrain(l_aColors[1] * 255,0,255));
			var b = Std["int"](sandy.util.NumberUtil.constrain(l_aColors[2] * 255,0,255));
			l_nColor = ((r << 16 | g << 8) | b);
			l_oAppearance = new sandy.materials.Appearance(new sandy.materials.ColorMaterial(l_nColor,l_aColors[3] * 100));
		}
	}
	}}
	if(l_oAppearance == null) {
		var $tmp = this.m_oStandardAppearance;
		$s.pop();
		return $tmp;
	}
	else {
		$s.pop();
		return l_oAppearance;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.getFloatArray = function(p_sSourceID,p_oGeometry) {
	$s.push("sandy.parser.ColladaParser::getFloatArray");
	var $spos = $s.length;
	var l_aFloatArray = new xpath.XPath(".//source[ @id = \"" + p_sSourceID + "\" ]/float_array").selectNode(p_oGeometry).getStringValue().split(" ");
	var l_nCount = Std.parseInt(new xpath.XPath(".//source[ @id = \"" + p_sSourceID + "\"]/technique_common/accessor/@count").selectNode(p_oGeometry).getStringValue());
	var l_nOffset = Std.parseInt(new xpath.XPath(".//source[ @id = \"" + p_sSourceID + "\"]/technique_common/accessor/@stride").selectNode(p_oGeometry).getStringValue());
	var l_nFloatArray = l_aFloatArray.length;
	var l_aOutput = new Array();
	var i = 0;
	while(i < l_nFloatArray) {
		var l_oCoords = null;
		if(l_nOffset == 3) {
			l_oCoords = new sandy.core.data.Vector(Std.parseFloat(l_aFloatArray[i]),Std.parseFloat(l_aFloatArray[i + 1]),Std.parseFloat(l_aFloatArray[i + 2]));
		}
		else if(l_nOffset == 2) {
			l_oCoords = new sandy.core.data.Vector(Std.parseFloat(l_aFloatArray[i]),Std.parseFloat(l_aFloatArray[i + 1]),0);
		}
		l_aOutput.push(l_oCoords);
		i += l_nOffset;
	}
	{
		$s.pop();
		return l_aOutput;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.getGeometry = function(p_sGeometryID,p_oMaterials) {
	$s.push("sandy.parser.ColladaParser::getGeometry");
	var $spos = $s.length;
	var i;
	var l_oOutpGeom = new sandy.core.scenegraph.Geometry3D();
	var l_oGeometry = new xpath.XPath("/COLLADA/library_geometries/geometry[ ./@id = \"" + p_sGeometryID + "\" ]").selectNode(this.m_oCollada);
	var l_oTriangles = new xpath.XPath("./mesh/triangles").selectNode(l_oGeometry);
	if(l_oTriangles == null) {
		$s.pop();
		return null;
	}
	var l_aTriangles = this.stringToArray(new xpath.XPath("./p").selectNode(l_oTriangles).getStringValue());
	var l_sMaterial = new xpath.XPath("./@material").selectNode(l_oTriangles).getStringValue();
	var l_nCount = Std.parseInt(new xpath.XPath("./@count").selectNode(l_oTriangles).getStringValue());
	var l_nStep = Lambda.count(new xpath.XPath("./input").selectNodes(l_oTriangles));
	var l_sVerticesID = new xpath.XPath("./input[ ./@semantic = \"VERTEX\" ]/@source").selectNode(l_oTriangles).getStringValue().split("#")[1];
	var l_sPosSourceID = new xpath.XPath("./mesh/vertices[ ./@id = \"" + l_sVerticesID + "\"]/input[ ./@semantic = \"POSITION\" ]/@source").selectNode(l_oGeometry).getStringValue().split("#")[1];
	var l_aVertexFloats = this.getFloatArray(l_sPosSourceID,l_oGeometry);
	var l_nVertexFloat = l_aVertexFloats.length;
	{
		var _g = 0;
		while(_g < l_nVertexFloat) {
			var i1 = _g++;
			var l_oVertex = l_aVertexFloats[i1];
			l_oVertex.scale(this.m_nScale);
			this.formatVector(l_oVertex);
			l_oOutpGeom.setVertex(i1,l_oVertex.x,l_oVertex.y,l_oVertex.z);
		}
	}
	if(Lambda.count(new xpath.XPath("./input[ ./@semantic = \"TEXCOORD\" ]").selectNodes(l_oTriangles)) > 0) {
		var l_sUVCoordsID = new xpath.XPath("./input[ @semantic = \"TEXCOORD\" ]/@source").selectNode(l_oTriangles).getStringValue().split("#")[1];
		var l_aUVCoordsFloats = this.getFloatArray(l_sUVCoordsID,l_oGeometry);
		var l_nUVCoordsFloats = l_aUVCoordsFloats.length;
		{
			var _g = 0;
			while(_g < l_nUVCoordsFloats) {
				var i1 = _g++;
				var l_oUVCoord = l_aUVCoordsFloats[i1];
				l_oOutpGeom.setUVCoords(i1,l_oUVCoord.x,1 - l_oUVCoord.y);
			}
		}
	}
	if(Lambda.count(new xpath.XPath("./input[ @semantic = \"NORMAL\" ]").selectNodes(l_oTriangles)) > 0) {
		var l_sNormalsID = new xpath.XPath("./input[ @semantic = \"NORMAL\" ]/@source").selectNode(l_oTriangles).getStringValue().split("#")[1];
		var l_aNormalFloats = this.getFloatArray(l_sNormalsID,l_oGeometry);
		var l_nNormalFloats = l_aNormalFloats.length;
		{
			var _g = 0;
			while(_g < l_nNormalFloats) {
				var i1 = _g++;
				var l_oNormal = l_aNormalFloats[i1];
				l_oNormal.normalize();
				this.formatVector(l_oNormal);
			}
		}
	}
	var l_aTrianglez = this.convertTriangleArray(new xpath.XPath("./input").selectNodes(l_oTriangles),l_aTriangles,l_nCount);
	var l_nTriangeLength = l_aTrianglez.length;
	{
		var _g = 0;
		while(_g < l_nTriangeLength) {
			var i1 = _g++;
			var l_aVertex = l_aTrianglez[i1].get("VERTEX");
			var l_aNormals = l_aTrianglez[i1].get("NORMAL");
			var l_aUVs = l_aTrianglez[i1].get("TEXCOORD");
			l_oOutpGeom.setFaceVertexIds(i1,[l_aVertex[0],l_aVertex[1],l_aVertex[2]]);
			if(l_aUVs != null) l_oOutpGeom.setFaceUVCoordsIds(i1,[l_aUVs[0],l_aUVs[1],l_aUVs[2]]);
		}
	}
	{
		$s.pop();
		return l_oOutpGeom;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.imageQueueCompleteHandler = function(p_oEvent) {
	$s.push("sandy.parser.ColladaParser::imageQueueCompleteHandler");
	var $spos = $s.length;
	var l_oLoaders = p_oEvent.__getLoaders();
	{ var $it41 = l_oLoaders.iterator();
	while( $it41.hasNext() ) { var l_oLoader = $it41.next();
	{
		if(l_oLoader.loader.content != null && Reflect.hasField(l_oLoader.loader.content,"bitmapData")) this.m_oMaterials.get(l_oLoader.name).bitmapData = Reflect.field(l_oLoader.loader.content,"bitmapData");
	}
	}}
	this.parseScene(new xpath.XPath("/COLLADA/library_visual_scenes/visual_scene").selectNode(this.m_oCollada));
	$s.pop();
}
sandy.parser.ColladaParser.prototype.loadImages = function(p_oLibImages) {
	$s.push("sandy.parser.ColladaParser::loadImages");
	var $spos = $s.length;
	var l_oImages = new Hash();
	var l_oQueue = new sandy.util.LoaderQueue();
	{ var $it42 = p_oLibImages.iterator();
	while( $it42.hasNext() ) { var l_oImage = $it42.next();
	{
		var l_oInitFrom = new xpath.XPath("init_from").selectNode(l_oImage).getStringValue();
		l_oImages.set(new xpath.XPath("@id").selectNode(l_oImage).getStringValue(),{ bitmapData : null, id : new xpath.XPath("@id").selectNode(l_oImage).getStringValue(), fileName : l_oInitFrom.substr(l_oInitFrom.lastIndexOf("/") + 1,l_oInitFrom.length)});
		l_oQueue.add(new xpath.XPath("@id").selectNode(l_oImage).getStringValue(),new neash.net.URLRequest(this.RELATIVE_TEXTURE_PATH + "/" + l_oImages.get(new xpath.XPath("@id").selectNode(l_oImage).getStringValue()).fileName));
	}
	}}
	l_oQueue.addEventListener(sandy.events.QueueEvent.QUEUE_COMPLETE,$closure(this,"imageQueueCompleteHandler"));
	l_oQueue.start();
	{
		$s.pop();
		return l_oImages;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.m_oCollada = null;
sandy.parser.ColladaParser.prototype.m_oMaterials = null;
sandy.parser.ColladaParser.prototype.m_oUp = null;
sandy.parser.ColladaParser.prototype.parseData = function(e) {
	$s.push("sandy.parser.ColladaParser::parseData");
	var $spos = $s.length;
	sandy.parser.AParser.prototype.parseData.apply(this,[e]);
	this.m_oCollada = xpath.xml.XPathHxXml.wrapNode(Xml.parse(this.m_oFile));
	switch((new xpath.XPath("/COLLADA/asset/up_axis")).selectNode(this.m_oCollada).getStringValue()) {
	case "Y_UP":{
		this.m_oUp = sandy.parser.UpAxis.Y_UP;
	}break;
	case "Z_UP":{
		this.m_oUp = sandy.parser.UpAxis.Z_UP;
	}break;
	case "X_UP":{
		this.m_oUp = sandy.parser.UpAxis.X_UP;
	}break;
	default:{
		this.m_oUp = sandy.parser.UpAxis.NONE;
	}break;
	}
	if(Lambda.count((new xpath.XPath("/COLLADA/library_images")).selectNodes(this.m_oCollada)) > 0) this.m_oMaterials = this.loadImages(new xpath.XPath("/COLLADA/library_images/image").selectNodes(this.m_oCollada));
	else this.parseScene(new xpath.XPath("/COLLADA/library_visual_scenes/visual_scene").selectNode(this.m_oCollada));
	$s.pop();
}
sandy.parser.ColladaParser.prototype.parseNode = function(p_oNode) {
	$s.push("sandy.parser.ColladaParser::parseNode");
	var $spos = $s.length;
	var l_oNode = null;
	var l_sGeometryID;
	var l_oNodes;
	var l_nNodeLen;
	var l_oVector;
	var l_oGeometry = null;
	var i;
	if(Lambda.count(new xpath.XPath("./instance_geometry").selectNodes(p_oNode)) != 0) {
		var l_aGeomArray;
		var l_oAppearance = this.m_oStandardAppearance;
		l_oGeometry = new sandy.core.scenegraph.Geometry3D();
		l_oAppearance = this.getAppearance(p_oNode);
		l_aGeomArray = new xpath.XPath("instance_geometry/@url").selectNode(p_oNode).getStringValue().split("#");
		l_sGeometryID = l_aGeomArray[1];
		l_oGeometry = this.getGeometry(l_sGeometryID,this.m_oMaterials);
		if(l_oGeometry == null) {
			$s.pop();
			return null;
		}
		l_oNode = new sandy.core.scenegraph.Shape3D(new xpath.XPath("@name").selectNode(p_oNode).getStringValue(),l_oGeometry,l_oAppearance);
	}
	else {
		l_oNode = new sandy.core.scenegraph.TransformGroup(new xpath.XPath("@name").selectNode(p_oNode).getStringValue());
	}
	if(Lambda.count(new xpath.XPath("./scale").selectNodes(p_oNode)) > 0) {
		l_oVector = this.stringToVector(new xpath.XPath("./scale").selectNode(p_oNode).getStringValue());
		this.formatVector(l_oVector);
		l_oNode.__setScaleX(l_oVector.x);
		l_oNode.__setScaleY(l_oVector.y);
		l_oNode.__setScaleZ(l_oVector.z);
	}
	if(Lambda.count(new xpath.XPath("./translate").selectNodes(p_oNode)) >= 1) {
		var l_aTransAtt = new xpath.XPath("./translate").selectNodes(p_oNode);
		{ var $it43 = l_aTransAtt.iterator();
		while( $it43.hasNext() ) { var l_oT = $it43.next();
		{
			var l_sTranslationValue = "";
			var l_oAttTranslateNode = new xpath.XPath("./@sid").selectNode(l_oT);
			var l_sAttTranslateValue = "";
			if(l_oAttTranslateNode != null) l_sAttTranslateValue = l_oAttTranslateNode.getStringValue().toLowerCase();
			if(l_sAttTranslateValue == "translation" || l_sAttTranslateValue == "translate") l_sTranslationValue = l_oT.getStringValue();
			else if(l_sAttTranslateValue.length == 0) l_sTranslationValue = l_oT.getStringValue();
			if(l_sTranslationValue.length > 0) {
				l_oVector = this.stringToVector(l_sTranslationValue);
				l_oVector.scale(this.m_nScale);
				this.formatVector(l_oVector);
				l_oNode.__setX(l_oVector.x);
				l_oNode.__setY(l_oVector.y);
				l_oNode.__setZ(l_oVector.z);
			}
		}
		}}
	}
	if(Lambda.count(new xpath.XPath("./rotate").selectNodes(p_oNode)) == 1) {
		var l_oRotations = this.stringToArray(new xpath.XPath("./rotate").selectNode(p_oNode).getStringValue());
		var $e = (this.m_oUp);
		switch( $e[1] ) {
		case 1:
		{
			null;
		}break;
		case 0:
		{
			l_oNode.rotateAxis(l_oRotations[0],l_oRotations[1],l_oRotations[2],l_oRotations[3]);
		}break;
		case 2:
		{
			null;
		}break;
		case 3:
		{
			l_oNode.rotateAxis(l_oRotations[0],l_oRotations[2],l_oRotations[1],l_oRotations[3]);
		}break;
		}
	}
	else if(Lambda.count(new xpath.XPath("./rotate").selectNodes(p_oNode)) == 3) {
		var l_oRotateNodes = (new xpath.XPath("./rotate").selectNodes(p_oNode));
		try {
			{ var $it44 = l_oRotateNodes.iterator();
			while( $it44.hasNext() ) { var l_oN = $it44.next();
			{
				var l_oRot = this.stringToArray(l_oN.getStringValue());
				switch(new xpath.XPath("@sid").selectNode(l_oN).getStringValue().toLowerCase()) {
				case "rotatex":{
					{
						if(l_oRot[3] != 0) {
							var $e = (this.m_oUp);
							switch( $e[1] ) {
							case 1:
							{
								null;
							}break;
							case 0:
							{
								l_oNode.__setRotateX(l_oRot[3]);
							}break;
							case 2:
							{
								null;
							}break;
							case 3:
							{
								l_oNode.__setRotateX(l_oRot[3]);
							}break;
							}
						}
						throw "__break__";
					}
				}break;
				case "rotatey":{
					{
						if(l_oRot[3] != 0) {
							var $e = (this.m_oUp);
							switch( $e[1] ) {
							case 1:
							{
								null;
							}break;
							case 0:
							{
								l_oNode.__setRotateY(l_oRot[3]);
							}break;
							case 2:
							{
								null;
							}break;
							case 3:
							{
								l_oNode.__setRotateZ(l_oRot[3]);
							}break;
							}
						}
						throw "__break__";
					}
				}break;
				case "rotatez":{
					{
						if(l_oRot[3] != 0) {
							var $e = (this.m_oUp);
							switch( $e[1] ) {
							case 1:
							{
								null;
							}break;
							case 0:
							{
								l_oNode.__setRotateZ(l_oRot[3]);
							}break;
							case 2:
							{
								null;
							}break;
							case 3:
							{
								l_oNode.__setRotateY(l_oRot[3]);
							}break;
							}
						}
						throw "__break__";
					}
				}break;
				}
			}
			}}
		} catch( e ) { if( e != "__break__" ) throw e; }
	}
	if(Lambda.count(new xpath.XPath("./matrix").selectNodes(p_oNode)) > 0) {
		this.stringToMatrix(new xpath.XPath("./matrix").selectNode(p_oNode).getStringValue());
	}
	l_oNodes = new xpath.XPath("./node").selectNodes(p_oNode);
	{ var $it45 = l_oNodes.iterator();
	while( $it45.hasNext() ) { var l_oN = $it45.next();
	{
		var l_oChildNode = this.parseNode(l_oN);
		if(l_oChildNode != null) l_oNode.addChild(l_oChildNode);
	}
	}}
	if(Lambda.count(new xpath.XPath("./instance_node").selectNodes(p_oNode)) != 0) {
		var l_sNodeId = new xpath.XPath("instance_node/@url").selectNode(p_oNode).getStringValue();
		if((l_sNodeId != "") && (l_sNodeId.charAt(0) == "#")) {
			l_sNodeId = l_sNodeId.substr(1);
			var l_oMatchingNodes = new xpath.XPath("//library_nodes/node[ @id = \"" + l_sNodeId + "\"").selectNodes(this.m_oCollada);
			{ var $it46 = l_oMatchingNodes.iterator();
			while( $it46.hasNext() ) { var l_oMatchingNode = $it46.next();
			{
				var l_oNode3D = this.parseNode(l_oMatchingNode);
				if(l_oNode3D != null) l_oNode.addChild(l_oNode3D);
			}
			}}
		}
	}
	{
		$s.pop();
		return l_oNode;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.parseScene = function(p_oScene) {
	$s.push("sandy.parser.ColladaParser::parseScene");
	var $spos = $s.length;
	var l_oNodes = (new xpath.XPath("node")).selectNodes(p_oScene);
	{ var $it47 = l_oNodes.iterator();
	while( $it47.hasNext() ) { var l_oN = $it47.next();
	{
		var l_oNode = this.parseNode(l_oN);
		if(l_oNode != null) this.m_oGroup.addChild(l_oNode);
	}
	}}
	var l_eOnInit = new sandy.parser.ParserEvent(sandy.parser.ParserEvent.INIT);
	l_eOnInit.group = this.m_oGroup;
	this.dispatchEvent(l_eOnInit);
	$s.pop();
}
sandy.parser.ColladaParser.prototype.stringToArray = function(p_sValues) {
	$s.push("sandy.parser.ColladaParser::stringToArray");
	var $spos = $s.length;
	var l_aValues = p_sValues.split(" ");
	var l_nValues = new Array();
	{
		var _g = 0;
		while(_g < l_aValues.length) {
			var l_oV = l_aValues[_g];
			++_g;
			l_nValues.push(Std.parseFloat(l_oV));
		}
	}
	{
		$s.pop();
		return l_nValues;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.stringToMatrix = function(p_sValues) {
	$s.push("sandy.parser.ColladaParser::stringToMatrix");
	var $spos = $s.length;
	var l_aValues = p_sValues.split(" ");
	var l_nValues = l_aValues.length;
	if(l_nValues != 16) throw "ColladaParser.stringToMatrix(): A vector must have 16 values";
	var l_oMatrix4 = new sandy.core.data.Matrix4(Std.parseFloat(l_aValues[0]),Std.parseFloat(l_aValues[1]),Std.parseFloat(l_aValues[2]),Std.parseFloat(l_aValues[3]),Std.parseFloat(l_aValues[4]),Std.parseFloat(l_aValues[5]),Std.parseFloat(l_aValues[6]),Std.parseFloat(l_aValues[7]),Std.parseFloat(l_aValues[8]),Std.parseFloat(l_aValues[9]),Std.parseFloat(l_aValues[10]),Std.parseFloat(l_aValues[11]),Std.parseFloat(l_aValues[12]),Std.parseFloat(l_aValues[13]),Std.parseFloat(l_aValues[14]),Std.parseFloat(l_aValues[15]));
	{
		$s.pop();
		return l_oMatrix4;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.stringToVector = function(p_sValues) {
	$s.push("sandy.parser.ColladaParser::stringToVector");
	var $spos = $s.length;
	var l_aValues = p_sValues.split(" ");
	var l_nValues = l_aValues.length;
	if(l_nValues != 3) throw "ColladaParser.stringToVector(): A vector must have 3 values";
	{
		var $tmp = new sandy.core.data.Vector(Std.parseFloat(l_aValues[0]),Std.parseFloat(l_aValues[1]),Std.parseFloat(l_aValues[2]));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.parser.ColladaParser.prototype.__class__ = sandy.parser.ColladaParser;
sandy.parser.ColladaParser.__interfaces__ = [sandy.parser.IParser];
sandy.parser.UpAxis = { __ename__ : ["sandy","parser","UpAxis"], __constructs__ : ["Y_UP","X_UP","Z_UP","NONE"] }
sandy.parser.UpAxis.NONE = ["NONE",3];
sandy.parser.UpAxis.NONE.toString = $estr;
sandy.parser.UpAxis.NONE.__enum__ = sandy.parser.UpAxis;
sandy.parser.UpAxis.X_UP = ["X_UP",1];
sandy.parser.UpAxis.X_UP.toString = $estr;
sandy.parser.UpAxis.X_UP.__enum__ = sandy.parser.UpAxis;
sandy.parser.UpAxis.Y_UP = ["Y_UP",0];
sandy.parser.UpAxis.Y_UP.toString = $estr;
sandy.parser.UpAxis.Y_UP.__enum__ = sandy.parser.UpAxis;
sandy.parser.UpAxis.Z_UP = ["Z_UP",2];
sandy.parser.UpAxis.Z_UP.toString = $estr;
sandy.parser.UpAxis.Z_UP.__enum__ = sandy.parser.UpAxis;
xpath.library = {}
xpath.library.NodeSetLibrary = function() { }
xpath.library.NodeSetLibrary.__name__ = ["xpath","library","NodeSetLibrary"];
xpath.library.NodeSetLibrary.last = function(context,parameters) {
	$s.push("xpath.library.NodeSetLibrary::last");
	var $spos = $s.length;
	if(parameters.length > 0) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	{
		var $tmp = new xpath.value.XPathNumber(context.size);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NodeSetLibrary.position = function(context,parameters) {
	$s.push("xpath.library.NodeSetLibrary::position");
	var $spos = $s.length;
	if(parameters.length > 0) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	{
		var $tmp = new xpath.value.XPathNumber(context.position);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NodeSetLibrary.count = function(context,parameters) {
	$s.push("xpath.library.NodeSetLibrary::count");
	var $spos = $s.length;
	if(parameters.length != 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	if(!Std["is"](parameters[0],xpath.value.XPathNodeSet)) {
		throw new xpath.EvaluationException("Parameter was a " + parameters[0].typeName + ", but a node set was expected");
	}
	var nodeSet = function($this) {
		var $r;
		var tmp = parameters[0];
		$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this);
	var count = 0;
	{ var $it48 = nodeSet.getNodes().iterator();
	while( $it48.hasNext() ) { var node = $it48.next();
	++count;
	}}
	{
		var $tmp = new xpath.value.XPathNumber(count);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NodeSetLibrary.localName = function(context,parameters) {
	$s.push("xpath.library.NodeSetLibrary::localName");
	var $spos = $s.length;
	if(parameters.length > 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var node;
	if(parameters[0] == null) {
		node = context.node;
	}
	else {
		if(!Std["is"](parameters[0],xpath.value.XPathNodeSet)) {
			throw new xpath.EvaluationException("Parameter was a " + parameters[0].typeName + ", but a node set was expected");
		}
		try {
			node = function($this) {
				var $r;
				var tmp = parameters[0];
				$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).getFirstNodeDocumentOrder();
		}
		catch( $e49 ) {
			if( js.Boot.__instanceof($e49,xpath.EvaluationException) ) {
				var exception = $e49;
				{
					$e = [];
					while($s.length >= $spos) $e.unshift($s.pop());
					$s.push($e[0]);
					throw new xpath.EvaluationException("Called local-name on an empty node set");
				}
			} else throw($e49);
		}
	}
	{
		var $tmp = new xpath.value.XPathString(node.getName());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NodeSetLibrary.nodeName = function(context,parameters) {
	$s.push("xpath.library.NodeSetLibrary::nodeName");
	var $spos = $s.length;
	{
		var $tmp = xpath.library.NodeSetLibrary.localName(context,parameters);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NodeSetLibrary.prototype.__class__ = xpath.library.NodeSetLibrary;
xpath.tokenizer.token.BeginPredicateTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.BeginPredicateTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.BeginPredicateToken(),"[","BeginPredicate"]);
	$s.pop();
}}
xpath.tokenizer.token.BeginPredicateTokenizer.__name__ = ["xpath","tokenizer","token","BeginPredicateTokenizer"];
xpath.tokenizer.token.BeginPredicateTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.BeginPredicateTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.BeginPredicateTokenizer.instance = null;
xpath.tokenizer.token.BeginPredicateTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.BeginPredicateTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.BeginPredicateTokenizer.instance == null) xpath.tokenizer.token.BeginPredicateTokenizer.instance = new xpath.tokenizer.token.BeginPredicateTokenizer();
	{
		var $tmp = xpath.tokenizer.token.BeginPredicateTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.BeginPredicateTokenizer.prototype.__class__ = xpath.tokenizer.token.BeginPredicateTokenizer;
xpath.parser.PathParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.PathParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.PathParser.__name__ = ["xpath","parser","PathParser"];
xpath.parser.PathParser.instance = null;
xpath.parser.PathParser.getInstance = function() {
	$s.push("xpath.parser.PathParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.PathParser.instance == null) xpath.parser.PathParser.instance = new xpath.parser.PathParser();
	{
		var $tmp = xpath.parser.PathParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.PathParser.prototype.parse = function(input) {
	$s.push("xpath.parser.PathParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(!Std["is"](token,xpath.tokenizer.BeginPathToken)) {
		$s.pop();
		return null;
	}
	if(!input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
	token = input.next();
	var absolute = Std["is"](token,xpath.tokenizer.StepDelimiterToken);
	if(!absolute) input.back();
	var firstStep;
	var output = xpath.parser.StepParser.getInstance().parse(input.descend());
	if(absolute && output == null) {
		firstStep = null;
	}
	else if(output.result == null) {
		if(absolute) {
			firstStep = null;
		}
		else {
			firstStep = new xpath.expression.TypeStep(xpath.NodeCategory.Node);
		}
		input = output.getNextInput();
	}
	else {
		firstStep = function($this) {
			var $r;
			var tmp = output.result;
			$r = (Std["is"](tmp,xpath.expression.PathStep)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this);
		input = output.getNextInput();
	}
	if(!input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
	token = input.next();
	if(!Std["is"](token,xpath.tokenizer.EndPathToken)) throw new xpath.parser.ParseError("Invalid token stream");
	var result;
	if(absolute) result = new xpath.expression.RootStep(firstStep);
	else result = firstStep;
	{
		var $tmp = input.getOutput(input.count,result);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.PathParser.prototype.__class__ = xpath.parser.PathParser;
xpath.parser.PathParser.__interfaces__ = [xpath.parser.Parser];
haxe = {}
haxe.Firebug = function() { }
haxe.Firebug.__name__ = ["haxe","Firebug"];
haxe.Firebug.detect = function() {
	$s.push("haxe.Firebug::detect");
	var $spos = $s.length;
	try {
		{
			var $tmp = console != null && console.error != null;
			$s.pop();
			return $tmp;
		}
	}
	catch( $e50 ) {
		{
			var e = $e50;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				{
					$s.pop();
					return false;
				}
			}
		}
	}
	$s.pop();
}
haxe.Firebug.redirectTraces = function() {
	$s.push("haxe.Firebug::redirectTraces");
	var $spos = $s.length;
	haxe.Log.trace = $closure(haxe.Firebug,"trace");
	js.Lib.setErrorHandler($closure(haxe.Firebug,"onError"));
	$s.pop();
}
haxe.Firebug.onError = function(err,stack) {
	$s.push("haxe.Firebug::onError");
	var $spos = $s.length;
	var buf = err + "\n";
	{
		var _g = 0;
		while(_g < stack.length) {
			var s = stack[_g];
			++_g;
			buf += "Called from " + s + "\n";
		}
	}
	haxe.Firebug.trace(buf,null);
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
haxe.Firebug.trace = function(v,inf) {
	$s.push("haxe.Firebug::trace");
	var $spos = $s.length;
	var type = (inf != null && inf.customParams != null?inf.customParams[0]:null);
	if(type != "warn" && type != "info" && type != "debug" && type != "error") type = (inf == null?"error":"log");
	console[type](((inf == null?"":inf.fileName + ":" + inf.lineNumber + " : ")) + Std.string(v));
	$s.pop();
}
haxe.Firebug.prototype.__class__ = haxe.Firebug;
xpath.tokenizer.container.PredicateTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.PredicateTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.PredicateTokenizer.__name__ = ["xpath","tokenizer","container","PredicateTokenizer"];
xpath.tokenizer.container.PredicateTokenizer.instance = null;
xpath.tokenizer.container.PredicateTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.PredicateTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.PredicateTokenizer.instance == null) {
		xpath.tokenizer.container.PredicateTokenizer.instance = new xpath.tokenizer.container.PredicateTokenizer();
		xpath.tokenizer.container.PredicateTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.PredicateTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.PredicateTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.PredicateTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginPredicateTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.ExpressionTokenizer.getInstance(),xpath.tokenizer.token.EndPredicateTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.PredicateTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.PredicateTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.PredicateTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.PredicateTokenizer.prototype.__class__ = xpath.tokenizer.container.PredicateTokenizer;
xpath.tokenizer.container.PredicateTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
sandy.events.BubbleEvent = function(e,oT) { if( e === $_ ) return; {
	$s.push("sandy.events.BubbleEvent::new");
	var $spos = $s.length;
	neash.events.Event.apply(this,[e,true,true]);
	this.m_oTarget = oT;
	$s.pop();
}}
sandy.events.BubbleEvent.__name__ = ["sandy","events","BubbleEvent"];
sandy.events.BubbleEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) sandy.events.BubbleEvent.prototype[k] = neash.events.Event.prototype[k];
sandy.events.BubbleEvent.prototype.__getTarget = function() {
	$s.push("sandy.events.BubbleEvent::__getTarget");
	var $spos = $s.length;
	{
		var $tmp = this.m_oTarget;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.events.BubbleEvent.prototype.m_oTarget = null;
sandy.events.BubbleEvent.prototype.tgt = null;
sandy.events.BubbleEvent.prototype.toString = function() {
	$s.push("sandy.events.BubbleEvent::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "BubbleEvent";
	}
	$s.pop();
}
sandy.events.BubbleEvent.prototype.__class__ = sandy.events.BubbleEvent;
haxe.Int32 = function() { }
haxe.Int32.__name__ = ["haxe","Int32"];
haxe.Int32.make = function(a,b) {
	$s.push("haxe.Int32::make");
	var $spos = $s.length;
	{
		var $tmp = (a << 16) | b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.ofInt = function(x) {
	$s.push("haxe.Int32::ofInt");
	var $spos = $s.length;
	{
		$s.pop();
		return x;
	}
	$s.pop();
}
haxe.Int32.toInt = function(x) {
	$s.push("haxe.Int32::toInt");
	var $spos = $s.length;
	if((((x) >> 30) & 1) != ((x) >>> 31)) throw "Overflow " + x;
	{
		var $tmp = ((x) & -1);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.add = function(a,b) {
	$s.push("haxe.Int32::add");
	var $spos = $s.length;
	{
		var $tmp = (a) + (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.sub = function(a,b) {
	$s.push("haxe.Int32::sub");
	var $spos = $s.length;
	{
		var $tmp = (a) - (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.mul = function(a,b) {
	$s.push("haxe.Int32::mul");
	var $spos = $s.length;
	{
		var $tmp = (a) * (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.div = function(a,b) {
	$s.push("haxe.Int32::div");
	var $spos = $s.length;
	{
		var $tmp = Std["int"]((a) / (b));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.mod = function(a,b) {
	$s.push("haxe.Int32::mod");
	var $spos = $s.length;
	{
		var $tmp = (a) % (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.shl = function(a,b) {
	$s.push("haxe.Int32::shl");
	var $spos = $s.length;
	{
		var $tmp = (a) << b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.shr = function(a,b) {
	$s.push("haxe.Int32::shr");
	var $spos = $s.length;
	{
		var $tmp = (a) >> b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.ushr = function(a,b) {
	$s.push("haxe.Int32::ushr");
	var $spos = $s.length;
	{
		var $tmp = (a) >>> b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.and = function(a,b) {
	$s.push("haxe.Int32::and");
	var $spos = $s.length;
	{
		var $tmp = (a) & (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.or = function(a,b) {
	$s.push("haxe.Int32::or");
	var $spos = $s.length;
	{
		var $tmp = (a) | (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.xor = function(a,b) {
	$s.push("haxe.Int32::xor");
	var $spos = $s.length;
	{
		var $tmp = (a) ^ (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.neg = function(a) {
	$s.push("haxe.Int32::neg");
	var $spos = $s.length;
	{
		var $tmp = -(a);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.complement = function(a) {
	$s.push("haxe.Int32::complement");
	var $spos = $s.length;
	{
		var $tmp = ~(a);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.compare = function(a,b) {
	$s.push("haxe.Int32::compare");
	var $spos = $s.length;
	{
		var $tmp = (a) - (b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Int32.prototype.__class__ = haxe.Int32;
xpath.library.BooleanLibrary = function() { }
xpath.library.BooleanLibrary.__name__ = ["xpath","library","BooleanLibrary"];
xpath.library.BooleanLibrary["boolean"] = function(context,parameters) {
	$s.push("xpath.library.BooleanLibrary::boolean");
	var $spos = $s.length;
	if(parameters.length != 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	{
		var $tmp = parameters[0].getXPathBoolean();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.BooleanLibrary.not = function(context,parameters) {
	$s.push("xpath.library.BooleanLibrary::not");
	var $spos = $s.length;
	if(parameters.length != 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	{
		var $tmp = new xpath.value.XPathBoolean(!parameters[0].getBool());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.BooleanLibrary["true"] = function(context,parameters) {
	$s.push("xpath.library.BooleanLibrary::true");
	var $spos = $s.length;
	if(parameters.length != 0) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	{
		var $tmp = new xpath.value.XPathBoolean(true);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.BooleanLibrary["false"] = function(context,parameters) {
	$s.push("xpath.library.BooleanLibrary::false");
	var $spos = $s.length;
	if(parameters.length != 0) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	{
		var $tmp = new xpath.value.XPathBoolean(false);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.BooleanLibrary.prototype.__class__ = xpath.library.BooleanLibrary;
canvas.display.SpreadMethod = { __ename__ : ["canvas","display","SpreadMethod"], __constructs__ : ["REPEAT","REFLECT","PAD"] }
canvas.display.SpreadMethod.PAD = ["PAD",2];
canvas.display.SpreadMethod.PAD.toString = $estr;
canvas.display.SpreadMethod.PAD.__enum__ = canvas.display.SpreadMethod;
canvas.display.SpreadMethod.REFLECT = ["REFLECT",1];
canvas.display.SpreadMethod.REFLECT.toString = $estr;
canvas.display.SpreadMethod.REFLECT.__enum__ = canvas.display.SpreadMethod;
canvas.display.SpreadMethod.REPEAT = ["REPEAT",0];
canvas.display.SpreadMethod.REPEAT.toString = $estr;
canvas.display.SpreadMethod.REPEAT.__enum__ = canvas.display.SpreadMethod;
canvas.utils = {}
canvas.utils.ByteArray = function() { }
canvas.utils.ByteArray.__name__ = ["canvas","utils","ByteArray"];
canvas.utils.ByteArray.prototype.bytesAvailable = null;
canvas.utils.ByteArray.prototype.endian = null;
canvas.utils.ByteArray.prototype.length = null;
canvas.utils.ByteArray.prototype.objectEncoding = null;
canvas.utils.ByteArray.prototype.position = null;
canvas.utils.ByteArray.prototype.readByte = function() {
	$s.push("canvas.utils.ByteArray::readByte");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
canvas.utils.ByteArray.prototype.readFloat = function() {
	$s.push("canvas.utils.ByteArray::readFloat");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0.0;
	}
	$s.pop();
}
canvas.utils.ByteArray.prototype.readUnsignedByte = function() {
	$s.push("canvas.utils.ByteArray::readUnsignedByte");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
canvas.utils.ByteArray.prototype.readUnsignedInt = function() {
	$s.push("canvas.utils.ByteArray::readUnsignedInt");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
canvas.utils.ByteArray.prototype.readUnsignedShort = function() {
	$s.push("canvas.utils.ByteArray::readUnsignedShort");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
canvas.utils.ByteArray.prototype.__class__ = canvas.utils.ByteArray;
xpath.parser.XPathParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.XPathParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.XPathParser.__name__ = ["xpath","parser","XPathParser"];
xpath.parser.XPathParser.instance = null;
xpath.parser.XPathParser.getInstance = function() {
	$s.push("xpath.parser.XPathParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.XPathParser.instance == null) xpath.parser.XPathParser.instance = new xpath.parser.XPathParser();
	{
		var $tmp = xpath.parser.XPathParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.XPathParser.prototype.parse = function(input) {
	$s.push("xpath.parser.XPathParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(!Std["is"](token,xpath.tokenizer.BeginXPathToken)) {
		$s.pop();
		return null;
	}
	var output = xpath.parser.ExpressionParser.getInstance().parse(input.descend());
	if(output == null) throw new xpath.parser.ParseError("Invalid token stream");
	var result = output.result;
	input = output.getNextInput();
	if(!input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
	token = input.next();
	if(!Std["is"](token,xpath.tokenizer.EndXPathToken)) throw new xpath.parser.ParseError("Invalid token stream");
	if(input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
	{
		var $tmp = input.getOutput(input.count,result);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.XPathParser.prototype.__class__ = xpath.parser.XPathParser;
xpath.parser.XPathParser.__interfaces__ = [xpath.parser.Parser];
neash.swf.Font = function(inStream,inVersion) { if( inStream === $_ ) return; {
	$s.push("neash.swf.Font::new");
	var $spos = $s.length;
	this.mGlyphs = [];
	inStream.AlignBits();
	var has_layout = (inVersion > 1) && inStream.ReadBool();
	var has_jis = (inVersion > 1) && inStream.ReadBool();
	var small_text = (inVersion > 1) && inStream.ReadBool();
	var is_ansi = (inVersion > 1) && inStream.ReadBool();
	var wide_offsets = (inVersion > 1) && inStream.ReadBool();
	var wide_codes = (inVersion > 1) && inStream.ReadBool();
	var italic = (inVersion > 1) && inStream.ReadBool();
	var bold = (inVersion > 1) && inStream.ReadBool();
	var lang_code = ((inVersion > 1)?inStream.ReadByte():0);
	this.mName = ((inVersion > 1)?inStream.ReadPascalString():"font");
	var n;
	var s0;
	var offsets = new Array();
	var code_offset = 0;
	var v3scale = (inVersion > 2?1.0:0.05);
	if(inVersion > 1) {
		n = inStream.ReadUI16();
		s0 = inStream.BytesLeft();
		{
			var _g = 0;
			while(_g < n) {
				var i = _g++;
				offsets.push((wide_offsets?inStream.ReadInt():inStream.ReadUI16()));
			}
		}
		code_offset = (wide_offsets?inStream.ReadInt():inStream.ReadUI16());
		code_offset = s0 - code_offset;
	}
	else {
		s0 = inStream.BytesLeft();
		var o0 = inStream.ReadUI16();
		n = o0 >> 1;
		offsets.push(o0);
		{
			var _g = 1;
			while(_g < n) {
				var i = _g++;
				offsets.push(inStream.ReadUI16());
			}
		}
	}
	var access_last = this.mGlyphs[n - 1];
	inStream.AlignBits();
	{
		var _g = 0;
		while(_g < n) {
			var i = _g++;
			if(inStream.BytesLeft() != (s0 - offsets[i])) throw ("bad offset in font stream (" + inStream.BytesLeft() + "!=" + (s0 - offsets[i]) + ")");
			var moved = false;
			var pen_x = 0.0;
			var pen_y = 0.0;
			var commands = new Array();
			inStream.AlignBits();
			var fill_bits = inStream.Bits(4);
			var line_bits = inStream.Bits(4);
			while(true) {
				var edge = inStream.ReadBool();
				if(!edge) {
					var new_styles = inStream.ReadBool();
					var new_line_style = inStream.ReadBool();
					var new_fill_style1 = inStream.ReadBool();
					var new_fill_style0 = inStream.ReadBool();
					var move_to = inStream.ReadBool();
					if(new_styles || new_styles || new_fill_style1) throw ("fill style can't be changed here " + new_styles + "," + new_styles + "," + new_fill_style0);
					if(!move_to) break;
					if(!new_fill_style0 && commands.length == 0) throw ("fill style should be defined");
					var bits = inStream.Bits(5);
					pen_x = inStream.Twips(bits) * v3scale;
					pen_y = inStream.Twips(bits) * v3scale;
					var px = [pen_x];
					var py = [pen_y];
					commands.push(function(py,px) {
						$s.push("neash.swf.Font::new@127");
						var $spos = $s.length;
						{
							var $tmp = function(g,m) {
								$s.push("neash.swf.Font::new@127@127");
								var $spos = $s.length;
								g.moveTo(px[0] * m.a + py[0] * m.c + m.tx,px[0] * m.b + py[0] * m.d + m.ty);
								$s.pop();
							}
							$s.pop();
							return $tmp;
						}
						$s.pop();
					}(py,px));
					if(new_fill_style0) {
						var fill_style = inStream.Bits(1);
					}
				}
				else {
					if(inStream.ReadBool()) {
						var delta_bits = inStream.Bits(4) + 2;
						if(inStream.ReadBool()) {
							pen_x += inStream.Twips(delta_bits) * v3scale;
							pen_y += inStream.Twips(delta_bits) * v3scale;
						}
						else if(inStream.ReadBool()) pen_y += inStream.Twips(delta_bits) * v3scale;
						else pen_x += inStream.Twips(delta_bits) * v3scale;
						var px = [pen_x];
						var py = [pen_y];
						commands.push(function(py,px) {
							$s.push("neash.swf.Font::new@155");
							var $spos = $s.length;
							{
								var $tmp = function(g,m) {
									$s.push("neash.swf.Font::new@155@155");
									var $spos = $s.length;
									g.lineTo(px[0] * m.a + py[0] * m.c + m.tx,px[0] * m.b + py[0] * m.d + m.ty);
									$s.pop();
								}
								$s.pop();
								return $tmp;
							}
							$s.pop();
						}(py,px));
					}
					else {
						var delta_bits = inStream.Bits(4) + 2;
						var cx = [pen_x + inStream.Twips(delta_bits) * v3scale];
						var cy = [pen_y + inStream.Twips(delta_bits) * v3scale];
						var px = [cx[0] + inStream.Twips(delta_bits) * v3scale];
						var py = [cy[0] + inStream.Twips(delta_bits) * v3scale];
						pen_x = px[0];
						pen_y = py[0];
						commands.push(function(py,px,cy,cx) {
							$s.push("neash.swf.Font::new@171");
							var $spos = $s.length;
							{
								var $tmp = function(g,m) {
									$s.push("neash.swf.Font::new@171@171");
									var $spos = $s.length;
									g.curveTo(cx[0] * m.a + cy[0] * m.c + m.tx,cx[0] * m.b + cy[0] * m.d + m.ty,px[0] * m.a + py[0] * m.c + m.tx,px[0] * m.b + py[0] * m.d + m.ty);
									$s.pop();
								}
								$s.pop();
								return $tmp;
							}
							$s.pop();
						}(py,px,cy,cx));
					}
				}
			}
			commands.push(function() {
				$s.push("neash.swf.Font::new@178");
				var $spos = $s.length;
				{
					var $tmp = function(g,m) {
						$s.push("neash.swf.Font::new@178@178");
						var $spos = $s.length;
						g.endFill();
						$s.pop();
					}
					$s.pop();
					return $tmp;
				}
				$s.pop();
			}());
			this.mGlyphs[i] = { mCommands : commands, mAdvance : 1024.0}
		}
	}
	if(code_offset != 0) {
		inStream.AlignBits();
		if(inStream.BytesLeft() != code_offset) throw ("Code offset miscaculation");
		this.mCodeToGlyph = new Array();
		{
			var _g = 0;
			while(_g < n) {
				var i = _g++;
				var code = (wide_codes?inStream.ReadUI16():inStream.ReadByte());
				this.mCodeToGlyph[code] = this.mGlyphs[i];
			}
		}
	}
	else this.mCodeToGlyph = this.mGlyphs;
	if(has_layout) {
		this.mAscent = inStream.ReadSTwips();
		this.mDescent = inStream.ReadSTwips();
		this.mLeading = inStream.ReadSTwips();
		this.mAdvance = new Array();
		{
			var _g = 0;
			while(_g < n) {
				var i = _g++;
				this.mGlyphs[i].mAdvance = inStream.ReadSTwips();
			}
		}
	}
	else {
		this.mAscent = 800;
		this.mDescent = 224;
		this.mLeading = 0;
	}
	neash.text.FontManager.RegisterFont(this);
	$s.pop();
}}
neash.swf.Font.__name__ = ["neash","swf","Font"];
neash.swf.Font.prototype.GetAdvance = function(inChar,inNext) {
	$s.push("neash.swf.Font::GetAdvance");
	var $spos = $s.length;
	if(this.mCodeToGlyph.length > inChar) {
		var glyph = this.mCodeToGlyph[inChar];
		if(glyph != null) {
			var $tmp = glyph.mAdvance;
			$s.pop();
			return $tmp;
		}
	}
	{
		$s.pop();
		return 1024.0;
	}
	$s.pop();
}
neash.swf.Font.prototype.GetAscent = function() {
	$s.push("neash.swf.Font::GetAscent");
	var $spos = $s.length;
	{
		var $tmp = this.mAscent;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.Font.prototype.GetDescent = function() {
	$s.push("neash.swf.Font::GetDescent");
	var $spos = $s.length;
	{
		var $tmp = this.mDescent;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.Font.prototype.GetLeading = function() {
	$s.push("neash.swf.Font::GetLeading");
	var $spos = $s.length;
	{
		var $tmp = this.mLeading;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.Font.prototype.GetName = function() {
	$s.push("neash.swf.Font::GetName");
	var $spos = $s.length;
	{
		var $tmp = this.mName;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.Font.prototype.Ok = function() {
	$s.push("neash.swf.Font::Ok");
	var $spos = $s.length;
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
neash.swf.Font.prototype.RenderChar = function(inGraphics,inChar,m) {
	$s.push("neash.swf.Font::RenderChar");
	var $spos = $s.length;
	if(this.mCodeToGlyph.length > inChar) {
		var glyph = this.mCodeToGlyph[inChar];
		if(glyph != null) {
			{
				var _g = 0, _g1 = glyph.mCommands;
				while(_g < _g1.length) {
					var c = _g1[_g];
					++_g;
					c(inGraphics,m);
				}
			}
			{
				var $tmp = glyph.mAdvance;
				$s.pop();
				return $tmp;
			}
		}
	}
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
neash.swf.Font.prototype.RenderGlyph = function(inGraphics,inGlyph,m) {
	$s.push("neash.swf.Font::RenderGlyph");
	var $spos = $s.length;
	if(this.mGlyphs.length > inGlyph) {
		var commands = this.mGlyphs[inGlyph].mCommands;
		{
			var _g = 0;
			while(_g < commands.length) {
				var c = commands[_g];
				++_g;
				c(inGraphics,m);
			}
		}
	}
	else {
		haxe.Log.trace("Unsupported glyph: " + String.fromCharCode(inGlyph),{ fileName : "Font.hx", lineNumber : 265, className : "neash.swf.Font", methodName : "RenderGlyph"});
	}
	$s.pop();
}
neash.swf.Font.prototype.RestoreLineStyle = function(g) {
	$s.push("neash.swf.Font::RestoreLineStyle");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.swf.Font.prototype.mAdvance = null;
neash.swf.Font.prototype.mAscent = null;
neash.swf.Font.prototype.mCodeToGlyph = null;
neash.swf.Font.prototype.mDescent = null;
neash.swf.Font.prototype.mGlyphs = null;
neash.swf.Font.prototype.mLeading = null;
neash.swf.Font.prototype.mName = null;
neash.swf.Font.prototype.__class__ = neash.swf.Font;
xpath.XPathException = function(message) { if( message === $_ ) return; {
	$s.push("xpath.XPathException::new");
	var $spos = $s.length;
	this.message = message;
	$s.pop();
}}
xpath.XPathException.__name__ = ["xpath","XPathException"];
xpath.XPathException.prototype.message = null;
xpath.XPathException.prototype.toString = function() {
	$s.push("xpath.XPathException::toString");
	var $spos = $s.length;
	var string = "XPathException";
	if(this.message != null) string += ": " + this.message;
	{
		$s.pop();
		return string;
	}
	$s.pop();
}
xpath.XPathException.prototype.__class__ = xpath.XPathException;
sandy.parser.Parser3DSChunkTypes = function() { }
sandy.parser.Parser3DSChunkTypes.__name__ = ["sandy","parser","Parser3DSChunkTypes"];
sandy.parser.Parser3DSChunkTypes.prototype.__class__ = sandy.parser.Parser3DSChunkTypes;
nme.display.JointStyle = { __ename__ : ["nme","display","JointStyle"], __constructs__ : ["MITER","ROUND","BEVEL"] }
nme.display.JointStyle.BEVEL = ["BEVEL",2];
nme.display.JointStyle.BEVEL.toString = $estr;
nme.display.JointStyle.BEVEL.__enum__ = nme.display.JointStyle;
nme.display.JointStyle.MITER = ["MITER",0];
nme.display.JointStyle.MITER.toString = $estr;
nme.display.JointStyle.MITER.__enum__ = nme.display.JointStyle;
nme.display.JointStyle.ROUND = ["ROUND",1];
nme.display.JointStyle.ROUND.toString = $estr;
nme.display.JointStyle.ROUND.__enum__ = nme.display.JointStyle;
sandy.bounds = {}
sandy.bounds.BSphere = function(p) { if( p === $_ ) return; {
	$s.push("sandy.bounds.BSphere::new");
	var $spos = $s.length;
	this.uptodate = false;
	this.center = new sandy.core.data.Vector();
	this.radius = 1;
	this.position = new sandy.core.data.Vector();
	$s.pop();
}}
sandy.bounds.BSphere.__name__ = ["sandy","bounds","BSphere"];
sandy.bounds.BSphere.create = function(p_aVertices) {
	$s.push("sandy.bounds.BSphere::create");
	var $spos = $s.length;
	var l_sphere = new sandy.bounds.BSphere();
	l_sphere.compute(p_aVertices);
	{
		$s.pop();
		return l_sphere;
	}
	$s.pop();
}
sandy.bounds.BSphere.prototype.center = null;
sandy.bounds.BSphere.prototype.compute = function(p_aVertices) {
	$s.push("sandy.bounds.BSphere::compute");
	var $spos = $s.length;
	if(p_aVertices.length == 0) {
		$s.pop();
		return;
	}
	var x, y, z, d, i = 0, j = 0, l = p_aVertices.length;
	var p1 = p_aVertices[0].clone();
	var p2 = p_aVertices[0].clone();
	var dmax = 0;
	var pA, pB;
	while(i < l) {
		j = i + 1;
		while(j < l) {
			pA = p_aVertices[i];
			pB = p_aVertices[j];
			x = pB.x - pA.x;
			y = pB.y - pA.y;
			z = pB.z - pA.z;
			d = x * x + y * y + z * z;
			if(d > dmax) {
				dmax = d;
				p1.copy(pA);
				p2.copy(pB);
			}
			j += 1;
		}
		i += 1;
	}
	this.center = new sandy.core.data.Vector((p1.x + p2.x) / 2,(p1.y + p2.y) / 2,(p1.z + p2.z) / 2);
	this.radius = Math.sqrt(dmax) / 2;
	$s.pop();
}
sandy.bounds.BSphere.prototype.computeRadius = function(p_aPoints) {
	$s.push("sandy.bounds.BSphere::computeRadius");
	var $spos = $s.length;
	var x, y, z, d, dmax = 0;
	var i = 0, l = p_aPoints.length;
	while(i < l) {
		x = p_aPoints[(i)].x - this.center.x;
		y = p_aPoints[(i)].x - this.center.x;
		z = p_aPoints[(i)].x - this.center.x;
		d = x * x + y * y + z * z;
		if(d > dmax) dmax = d;
		i++;
	}
	{
		var $tmp = Math.sqrt(dmax);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.bounds.BSphere.prototype.distance = function(p_oPoint) {
	$s.push("sandy.bounds.BSphere::distance");
	var $spos = $s.length;
	var x = p_oPoint.x - this.center.x;
	var y = p_oPoint.y - this.center.y;
	var z = p_oPoint.z - this.center.z;
	{
		var $tmp = Math.sqrt(x * x + y * y + z * z) - this.radius;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.bounds.BSphere.prototype.pointsOutofSphere = function(p_aPoints) {
	$s.push("sandy.bounds.BSphere::pointsOutofSphere");
	var $spos = $s.length;
	var r = new Array();
	var i = 0, l = p_aPoints.length;
	while(i < l) {
		if(this.distance(p_aPoints[(i)]) > 0) {
			r.push(p_aPoints[(i)]);
		}
		i++;
	}
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
sandy.bounds.BSphere.prototype.position = null;
sandy.bounds.BSphere.prototype.radius = null;
sandy.bounds.BSphere.prototype.toString = function() {
	$s.push("sandy.bounds.BSphere::toString");
	var $spos = $s.length;
	{
		var $tmp = "sandy.bounds.BSphere (center : " + this.center + ", radius : " + this.radius + ")";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.bounds.BSphere.prototype.transform = function(p_oMatrix) {
	$s.push("sandy.bounds.BSphere::transform");
	var $spos = $s.length;
	this.position.copy(this.center);
	p_oMatrix.vectorMult(this.position);
	this.uptodate = true;
	$s.pop();
}
sandy.bounds.BSphere.prototype.uptodate = null;
sandy.bounds.BSphere.prototype.__class__ = sandy.bounds.BSphere;
haxe.io = {}
haxe.io.Bytes = function(length,b) { if( length === $_ ) return; {
	$s.push("haxe.io.Bytes::new");
	var $spos = $s.length;
	this.length = length;
	this.b = b;
	$s.pop();
}}
haxe.io.Bytes.__name__ = ["haxe","io","Bytes"];
haxe.io.Bytes.alloc = function(length) {
	$s.push("haxe.io.Bytes::alloc");
	var $spos = $s.length;
	var a = new Array();
	{
		var _g = 0;
		while(_g < length) {
			var i = _g++;
			a.push(0);
		}
	}
	{
		var $tmp = new haxe.io.Bytes(length,a);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.ofString = function(s) {
	$s.push("haxe.io.Bytes::ofString");
	var $spos = $s.length;
	var a = new Array();
	{
		var _g1 = 0, _g = s.length;
		while(_g1 < _g) {
			var i = _g1++;
			var c = s["cca"](i);
			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));
			}
		}
	}
	{
		var $tmp = new haxe.io.Bytes(a.length,a);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.ofData = function(b) {
	$s.push("haxe.io.Bytes::ofData");
	var $spos = $s.length;
	{
		var $tmp = new haxe.io.Bytes(b.length,b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.prototype.b = null;
haxe.io.Bytes.prototype.blit = function(pos,src,srcpos,len) {
	$s.push("haxe.io.Bytes::blit");
	var $spos = $s.length;
	if(pos < 0 || srcpos < 0 || len < 0 || pos + len > this.length || srcpos + len > src.length) throw haxe.io.Error.OutsideBounds;
	var b1 = this.b;
	var b2 = src.b;
	if(b1 == b2 && pos > srcpos) {
		var i = len;
		while(i > 0) {
			i--;
			b1[i + pos] = b2[i + srcpos];
		}
		{
			$s.pop();
			return;
		}
	}
	{
		var _g = 0;
		while(_g < len) {
			var i = _g++;
			b1[i + pos] = b2[i + srcpos];
		}
	}
	$s.pop();
}
haxe.io.Bytes.prototype.compare = function(other) {
	$s.push("haxe.io.Bytes::compare");
	var $spos = $s.length;
	var b1 = this.b;
	var b2 = other.b;
	var len = ((this.length < other.length)?this.length:other.length);
	{
		var _g = 0;
		while(_g < len) {
			var i = _g++;
			if(b1[i] != b2[i]) {
				var $tmp = b1[i] - b2[i];
				$s.pop();
				return $tmp;
			}
		}
	}
	{
		var $tmp = this.length - other.length;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.prototype.get = function(pos) {
	$s.push("haxe.io.Bytes::get");
	var $spos = $s.length;
	{
		var $tmp = this.b[pos];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.prototype.getData = function() {
	$s.push("haxe.io.Bytes::getData");
	var $spos = $s.length;
	{
		var $tmp = this.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.prototype.length = null;
haxe.io.Bytes.prototype.readString = function(pos,len) {
	$s.push("haxe.io.Bytes::readString");
	var $spos = $s.length;
	if(pos < 0 || len < 0 || pos + len > this.length) throw haxe.io.Error.OutsideBounds;
	var s = "";
	var b = this.b;
	var fcc = $closure(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 c2 = b[i++];
			var c3 = b[i++];
			s += fcc(((((c & 15) << 18) | ((c2 & 127) << 12)) | ((c3 << 6) & 127)) | (b[i++] & 127));
		}
	}
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
haxe.io.Bytes.prototype.set = function(pos,v) {
	$s.push("haxe.io.Bytes::set");
	var $spos = $s.length;
	this.b[pos] = v;
	$s.pop();
}
haxe.io.Bytes.prototype.sub = function(pos,len) {
	$s.push("haxe.io.Bytes::sub");
	var $spos = $s.length;
	if(pos < 0 || len < 0 || pos + len > this.length) throw haxe.io.Error.OutsideBounds;
	{
		var $tmp = new haxe.io.Bytes(len,this.b.slice(pos,pos + len));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.prototype.toString = function() {
	$s.push("haxe.io.Bytes::toString");
	var $spos = $s.length;
	{
		var $tmp = this.readString(0,this.length);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Bytes.prototype.__class__ = haxe.io.Bytes;
xpath.tokenizer.container.FilterOperandTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.FilterOperandTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.FilterOperandTokenizer.__name__ = ["xpath","tokenizer","container","FilterOperandTokenizer"];
xpath.tokenizer.container.FilterOperandTokenizer.instance = null;
xpath.tokenizer.container.FilterOperandTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.FilterOperandTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.FilterOperandTokenizer.instance == null) {
		xpath.tokenizer.container.FilterOperandTokenizer.instance = new xpath.tokenizer.container.FilterOperandTokenizer();
		xpath.tokenizer.container.FilterOperandTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.FilterOperandTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FilterOperandTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.FilterOperandTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.GroupTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.token.LiteralTokenizer.getInstance(),xpath.tokenizer.token.NumberTokenizer.getInstance(),xpath.tokenizer.container.FunctionCallTokenizer.getInstance(),xpath.tokenizer.token.VariableReferenceTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.FilterOperandTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.FilterOperandTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FilterOperandTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.FilterOperandTokenizer.prototype.__class__ = xpath.tokenizer.container.FilterOperandTokenizer;
xpath.tokenizer.container.FilterOperandTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
canvas.display.GradientType = { __ename__ : ["canvas","display","GradientType"], __constructs__ : ["RADIAL","LINEAR"] }
canvas.display.GradientType.LINEAR = ["LINEAR",1];
canvas.display.GradientType.LINEAR.toString = $estr;
canvas.display.GradientType.LINEAR.__enum__ = canvas.display.GradientType;
canvas.display.GradientType.RADIAL = ["RADIAL",0];
canvas.display.GradientType.RADIAL.toString = $estr;
canvas.display.GradientType.RADIAL.__enum__ = canvas.display.GradientType;
xpath.tokenizer.container.UnaryOperandTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.UnaryOperandTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.UnaryOperandTokenizer.__name__ = ["xpath","tokenizer","container","UnaryOperandTokenizer"];
xpath.tokenizer.container.UnaryOperandTokenizer.instance = null;
xpath.tokenizer.container.UnaryOperandTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.UnaryOperandTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.UnaryOperandTokenizer.instance == null) {
		xpath.tokenizer.container.UnaryOperandTokenizer.instance = new xpath.tokenizer.container.UnaryOperandTokenizer();
		xpath.tokenizer.container.UnaryOperandTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.UnaryOperandTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.UnaryOperandTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.UnaryOperandTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.NegationOperatorTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Repetition([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.NegationOperatorTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this)]),new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.UnaryPathTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.GroupTokenizer.getInstance(),xpath.tokenizer.token.LiteralTokenizer.getInstance(),xpath.tokenizer.token.NumberTokenizer.getInstance(),xpath.tokenizer.container.FunctionCallTokenizer.getInstance(),xpath.tokenizer.token.VariableReferenceTokenizer.getInstance()])]);
	$s.pop();
}
xpath.tokenizer.container.UnaryOperandTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.UnaryOperandTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.UnaryOperandTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.UnaryOperandTokenizer.prototype.__class__ = xpath.tokenizer.container.UnaryOperandTokenizer;
xpath.tokenizer.container.UnaryOperandTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.tokenizer.TokenizerOutput = function(result,characterLength,nextInput) { if( result === $_ ) return; {
	$s.push("xpath.tokenizer.TokenizerOutput::new");
	var $spos = $s.length;
	this.result = result;
	this.characterLength = characterLength;
	this.nextInput = nextInput;
	$s.pop();
}}
xpath.tokenizer.TokenizerOutput.__name__ = ["xpath","tokenizer","TokenizerOutput"];
xpath.tokenizer.TokenizerOutput.prototype.characterLength = null;
xpath.tokenizer.TokenizerOutput.prototype.getNextInput = function() {
	$s.push("xpath.tokenizer.TokenizerOutput::getNextInput");
	var $spos = $s.length;
	if(this.nextInput != null) {
		var $tmp = this.nextInput;
		$s.pop();
		return $tmp;
	}
	else throw new xpath.tokenizer.TokenizerException(null,"Unexpected end of query");
	$s.pop();
}
xpath.tokenizer.TokenizerOutput.prototype.isComplete = function() {
	$s.push("xpath.tokenizer.TokenizerOutput::isComplete");
	var $spos = $s.length;
	{
		var $tmp = this.nextInput == null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.TokenizerOutput.prototype.nextInput = null;
xpath.tokenizer.TokenizerOutput.prototype.result = null;
xpath.tokenizer.TokenizerOutput.prototype.__class__ = xpath.tokenizer.TokenizerOutput;
xpath.parser.GroupParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.GroupParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.GroupParser.__name__ = ["xpath","parser","GroupParser"];
xpath.parser.GroupParser.instance = null;
xpath.parser.GroupParser.getInstance = function() {
	$s.push("xpath.parser.GroupParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.GroupParser.instance == null) xpath.parser.GroupParser.instance = new xpath.parser.GroupParser();
	{
		var $tmp = xpath.parser.GroupParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.GroupParser.prototype.parse = function(input) {
	$s.push("xpath.parser.GroupParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(!Std["is"](token,xpath.tokenizer.BeginGroupToken)) {
		$s.pop();
		return null;
	}
	var output = xpath.parser.ExpressionParser.getInstance().parse(input.descend());
	if(output.result == null) throw new xpath.parser.ParseError("Invalid token stream");
	input = output.getNextInput();
	if(!input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
	if(!Std["is"](input.next(),xpath.tokenizer.EndGroupToken)) throw new xpath.parser.ParseError("Invalid token stream");
	var result = output.result;
	{
		var $tmp = input.getOutput(input.count,result);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.GroupParser.prototype.__class__ = xpath.parser.GroupParser;
xpath.parser.GroupParser.__interfaces__ = [xpath.parser.Parser];
StringTools = function() { }
StringTools.__name__ = ["StringTools"];
StringTools.urlEncode = function(s) {
	$s.push("StringTools::urlEncode");
	var $spos = $s.length;
	{
		var $tmp = encodeURIComponent(s);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.urlDecode = function(s) {
	$s.push("StringTools::urlDecode");
	var $spos = $s.length;
	{
		var $tmp = decodeURIComponent(s.split("+").join(" "));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.htmlEscape = function(s) {
	$s.push("StringTools::htmlEscape");
	var $spos = $s.length;
	{
		var $tmp = s.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.htmlUnescape = function(s) {
	$s.push("StringTools::htmlUnescape");
	var $spos = $s.length;
	{
		var $tmp = s.split("&gt;").join(">").split("&lt;").join("<").split("&amp;").join("&");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.startsWith = function(s,start) {
	$s.push("StringTools::startsWith");
	var $spos = $s.length;
	{
		var $tmp = (s.length >= start.length && s.substr(0,start.length) == start);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.endsWith = function(s,end) {
	$s.push("StringTools::endsWith");
	var $spos = $s.length;
	var elen = end.length;
	var slen = s.length;
	{
		var $tmp = (slen >= elen && s.substr(slen - elen,elen) == end);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.isSpace = function(s,pos) {
	$s.push("StringTools::isSpace");
	var $spos = $s.length;
	var c = s.charCodeAt(pos);
	{
		var $tmp = (c >= 9 && c <= 13) || c == 32;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.ltrim = function(s) {
	$s.push("StringTools::ltrim");
	var $spos = $s.length;
	var l = s.length;
	var r = 0;
	while(r < l && StringTools.isSpace(s,r)) {
		r++;
	}
	if(r > 0) {
		var $tmp = s.substr(r,l - r);
		$s.pop();
		return $tmp;
	}
	else {
		$s.pop();
		return s;
	}
	$s.pop();
}
StringTools.rtrim = function(s) {
	$s.push("StringTools::rtrim");
	var $spos = $s.length;
	var l = s.length;
	var r = 0;
	while(r < l && StringTools.isSpace(s,l - r - 1)) {
		r++;
	}
	if(r > 0) {
		{
			var $tmp = s.substr(0,l - r);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			$s.pop();
			return s;
		}
	}
	$s.pop();
}
StringTools.trim = function(s) {
	$s.push("StringTools::trim");
	var $spos = $s.length;
	{
		var $tmp = StringTools.ltrim(StringTools.rtrim(s));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.rpad = function(s,c,l) {
	$s.push("StringTools::rpad");
	var $spos = $s.length;
	var sl = s.length;
	var cl = c.length;
	while(sl < l) {
		if(l - sl < cl) {
			s += c.substr(0,l - sl);
			sl = l;
		}
		else {
			s += c;
			sl += cl;
		}
	}
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
StringTools.lpad = function(s,c,l) {
	$s.push("StringTools::lpad");
	var $spos = $s.length;
	var ns = "";
	var sl = s.length;
	if(sl >= l) {
		$s.pop();
		return s;
	}
	var cl = c.length;
	while(sl < l) {
		if(l - sl < cl) {
			ns += c.substr(0,l - sl);
			sl = l;
		}
		else {
			ns += c;
			sl += cl;
		}
	}
	{
		var $tmp = ns + s;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.replace = function(s,sub,by) {
	$s.push("StringTools::replace");
	var $spos = $s.length;
	{
		var $tmp = s.split(sub).join(by);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringTools.hex = function(n,digits) {
	$s.push("StringTools::hex");
	var $spos = $s.length;
	var neg = false;
	if(n < 0) {
		neg = true;
		n = -n;
	}
	var s = n.toString(16);
	s = s.toUpperCase();
	if(digits != null) while(s.length < digits) s = "0" + s;
	if(neg) s = "-" + s;
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
StringTools.prototype.__class__ = StringTools;
sandy.materials.Material = function(p_oAttr) { if( p_oAttr === $_ ) return; {
	$s.push("sandy.materials.Material::new");
	var $spos = $s.length;
	this.useVertexNormal = false;
	this.lightingEnable = false;
	this.repeat = true;
	this.m_nFlags = 0;
	this._useLight = false;
	this._filters = [];
	this._id = sandy.materials.Material._ID_++;
	this.attributes = ((p_oAttr == null)?new sandy.materials.attributes.MaterialAttributes():p_oAttr);
	this.m_bModified = true;
	this.m_oType = sandy.materials.MaterialType.NONE;
	$s.pop();
}}
sandy.materials.Material.__name__ = ["sandy","materials","Material"];
sandy.materials.Material.create = null;
sandy.materials.Material.prototype.__getFilters = function() {
	$s.push("sandy.materials.Material::__getFilters");
	var $spos = $s.length;
	{
		var $tmp = this._filters;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.Material.prototype.__getFlags = function() {
	$s.push("sandy.materials.Material::__getFlags");
	var $spos = $s.length;
	var l_nFlags = this.m_nFlags;
	l_nFlags |= this.attributes.__getFlags();
	{
		$s.pop();
		return l_nFlags;
	}
	$s.pop();
}
sandy.materials.Material.prototype.__getId = function() {
	$s.push("sandy.materials.Material::__getId");
	var $spos = $s.length;
	{
		var $tmp = this._id;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.Material.prototype.__getModified = function() {
	$s.push("sandy.materials.Material::__getModified");
	var $spos = $s.length;
	{
		var $tmp = (this.m_bModified);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.Material.prototype.__getType = function() {
	$s.push("sandy.materials.Material::__getType");
	var $spos = $s.length;
	{
		var $tmp = this.m_oType;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.Material.prototype.__setFilters = function(a) {
	$s.push("sandy.materials.Material::__setFilters");
	var $spos = $s.length;
	this._filters = a;
	this.m_bModified = true;
	{
		$s.pop();
		return a;
	}
	$s.pop();
}
sandy.materials.Material.prototype._filters = null;
sandy.materials.Material.prototype._id = null;
sandy.materials.Material.prototype._useLight = null;
sandy.materials.Material.prototype.attributes = null;
sandy.materials.Material.prototype.begin = function(p_oScene) {
	$s.push("sandy.materials.Material::begin");
	var $spos = $s.length;
	this.attributes.begin(p_oScene);
	$s.pop();
}
sandy.materials.Material.prototype.filters = null;
sandy.materials.Material.prototype.finish = function(p_oScene) {
	$s.push("sandy.materials.Material::finish");
	var $spos = $s.length;
	this.attributes.finish(p_oScene);
	$s.pop();
}
sandy.materials.Material.prototype.flags = null;
sandy.materials.Material.prototype.id = null;
sandy.materials.Material.prototype.init = function(p_oPolygon) {
	$s.push("sandy.materials.Material::init");
	var $spos = $s.length;
	this.attributes.init(p_oPolygon);
	$s.pop();
}
sandy.materials.Material.prototype.lightingEnable = null;
sandy.materials.Material.prototype.m_bModified = null;
sandy.materials.Material.prototype.m_nFlags = null;
sandy.materials.Material.prototype.m_oType = null;
sandy.materials.Material.prototype.modified = null;
sandy.materials.Material.prototype.renderPolygon = function(p_oScene,p_oPolygon,p_mcContainer) {
	$s.push("sandy.materials.Material::renderPolygon");
	var $spos = $s.length;
	if(this.attributes != null) {
		this.attributes.draw(p_mcContainer.GetGraphics(),p_oPolygon,this,p_oScene);
	}
	$s.pop();
}
sandy.materials.Material.prototype.renderSprite = function(p_oSprite,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.Material::renderSprite");
	var $spos = $s.length;
	if(this.attributes != null) {
		this.attributes.drawOnSprite(p_oSprite,p_oMaterial,p_oScene);
	}
	$s.pop();
}
sandy.materials.Material.prototype.repeat = null;
sandy.materials.Material.prototype.type = null;
sandy.materials.Material.prototype.unlink = function(p_oPolygon) {
	$s.push("sandy.materials.Material::unlink");
	var $spos = $s.length;
	this.attributes.unlink(p_oPolygon);
	$s.pop();
}
sandy.materials.Material.prototype.useVertexNormal = null;
sandy.materials.Material.prototype.__class__ = sandy.materials.Material;
sandy.materials.ZShaderMaterial = function(p_nCoef,p_oAttr) { if( p_nCoef === $_ ) return; {
	$s.push("sandy.materials.ZShaderMaterial::new");
	var $spos = $s.length;
	if(p_nCoef == null) p_nCoef = 1;
	this.matrix = new canvas.geom.Matrix();
	sandy.materials.Material.apply(this,[p_oAttr]);
	$s.pop();
}}
sandy.materials.ZShaderMaterial.__name__ = ["sandy","materials","ZShaderMaterial"];
sandy.materials.ZShaderMaterial.__super__ = sandy.materials.Material;
for(var k in sandy.materials.Material.prototype ) sandy.materials.ZShaderMaterial.prototype[k] = sandy.materials.Material.prototype[k];
sandy.materials.ZShaderMaterial.prototype.matrix = null;
sandy.materials.ZShaderMaterial.prototype.renderPolygon = function(p_oScene,p_oPolygon,p_mcContainer) {
	$s.push("sandy.materials.ZShaderMaterial::renderPolygon");
	var $spos = $s.length;
	var l_points = (((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices));
	if(l_points.length == 0) {
		{
			$s.pop();
			return;
		}
	}
	var l_graphics = p_mcContainer.GetGraphics();
	var zIndices = (l_points.sortOn("wz",Array.NUMERIC | Array.RETURNINDEXEDARRAY));
	var v0 = l_points[zIndices[0]];
	var v1 = l_points[zIndices[1]];
	var v2 = l_points[zIndices[2]];
	if(!p_oPolygon.shape.boundingBox.uptodate) {
		p_oPolygon.shape.boundingBox.transform(p_oPolygon.shape.viewMatrix);
	}
	var zM = p_oPolygon.shape.boundingBox.tmin.z;
	var zR = p_oPolygon.shape.boundingBox.tmax.z - zM;
	var g0 = 255 - Std["int"]((v0.wz - zM) / zR) * 255;
	var g1 = 255 - Std["int"]((v1.wz - zM) / zR) * 255;
	var g2 = 255 - Std["int"]((v2.wz - zM) / zR) * 255;
	g0 = Std["int"](sandy.util.NumberUtil.constrain(g0,0,255));
	g1 = Std["int"](sandy.util.NumberUtil.constrain(g1,0,255));
	g2 = Std["int"](sandy.util.NumberUtil.constrain(g2,0,255));
	sandy.math.VertexMath.linearGradientMatrix(v0,v1,v2,g0,g1,g2,this.matrix);
	l_graphics.lineStyle();
	l_graphics.beginGradientFill(canvas.display.GradientType.LINEAR,[((g0 << 16) | (g0 << 8)) | g0,((g2 << 16) | (g2 << 8)) | g2],[100,100],[0,255],this.matrix);
	l_graphics.moveTo(l_points[0].sx,l_points[0].sy);
	{
		var _g = 0;
		while(_g < l_points.length) {
			var l_oVertex = l_points[_g];
			++_g;
			l_graphics.lineTo(l_oVertex.sx,l_oVertex.sy);
		}
	}
	l_graphics.endFill();
	if(this.attributes != null) {
		this.attributes.draw(l_graphics,p_oPolygon,this,p_oScene);
	}
	$s.pop();
}
sandy.materials.ZShaderMaterial.prototype.__class__ = sandy.materials.ZShaderMaterial;
sandy.math.PlaneMath = function() { }
sandy.math.PlaneMath.__name__ = ["sandy","math","PlaneMath"];
sandy.math.PlaneMath.normalizePlane = function(p_oPlane) {
	$s.push("sandy.math.PlaneMath::normalizePlane");
	var $spos = $s.length;
	var mag;
	mag = Math.sqrt(p_oPlane.a * p_oPlane.a + p_oPlane.b * p_oPlane.b + p_oPlane.c * p_oPlane.c);
	p_oPlane.a = p_oPlane.a / mag;
	p_oPlane.b = p_oPlane.b / mag;
	p_oPlane.c = p_oPlane.c / mag;
	p_oPlane.d = p_oPlane.d / mag;
	$s.pop();
}
sandy.math.PlaneMath.distanceToPoint = function(p_oPlane,p_oPoint) {
	$s.push("sandy.math.PlaneMath::distanceToPoint");
	var $spos = $s.length;
	{
		var $tmp = p_oPlane.a * p_oPoint.x + p_oPlane.b * p_oPoint.y + p_oPlane.c * p_oPoint.z + p_oPlane.d;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.PlaneMath.classifyPoint = function(p_oPlane,p_oPoint) {
	$s.push("sandy.math.PlaneMath::classifyPoint");
	var $spos = $s.length;
	var d;
	d = sandy.math.PlaneMath.distanceToPoint(p_oPlane,p_oPoint);
	if(d < 0) {
		var $tmp = sandy.math.PlaneMath.NEGATIVE;
		$s.pop();
		return $tmp;
	}
	if(d > 0) {
		var $tmp = sandy.math.PlaneMath.POSITIVE;
		$s.pop();
		return $tmp;
	}
	{
		var $tmp = sandy.math.PlaneMath.ON_PLANE;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.PlaneMath.computePlaneFromPoints = function(p_oPointA,p_oPointB,p_oPointC) {
	$s.push("sandy.math.PlaneMath::computePlaneFromPoints");
	var $spos = $s.length;
	var n = sandy.math.VectorMath.cross(sandy.math.VectorMath.sub(p_oPointA,p_oPointB),sandy.math.VectorMath.sub(p_oPointA,p_oPointC));
	sandy.math.VectorMath.normalize(n);
	var d = sandy.math.VectorMath.dot(p_oPointA,n);
	{
		var $tmp = new sandy.core.data.Plane(n.x,n.y,n.z,d);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.PlaneMath.createFromNormalAndPoint = function(p_oNormal,p_nPoint) {
	$s.push("sandy.math.PlaneMath::createFromNormalAndPoint");
	var $spos = $s.length;
	var p = new sandy.core.data.Plane();
	sandy.math.VectorMath.normalize(p_oNormal);
	p.a = p_oNormal.x;
	p.b = p_oNormal.y;
	p.c = p_oNormal.z;
	p.d = p_nPoint;
	sandy.math.PlaneMath.normalizePlane(p);
	{
		$s.pop();
		return p;
	}
	$s.pop();
}
sandy.math.PlaneMath.prototype.__class__ = sandy.math.PlaneMath;
sandy.math.ColorMath = function() { }
sandy.math.ColorMath.__name__ = ["sandy","math","ColorMath"];
sandy.math.ColorMath.applyAlpha = function(c,a) {
	$s.push("sandy.math.ColorMath::applyAlpha");
	var $spos = $s.length;
	var a0 = Std["int"](c / 16777216);
	{
		var $tmp = (c & 16777215) + Math.floor(a * a0) * 16777216;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.ColorMath.rgb2hex = function(r,g,b) {
	$s.push("sandy.math.ColorMath::rgb2hex");
	var $spos = $s.length;
	{
		var $tmp = (((r << 16) | (g << 8)) | b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.ColorMath.hex2rgb = function(hex) {
	$s.push("sandy.math.ColorMath::hex2rgb");
	var $spos = $s.length;
	var r;
	var g;
	var b;
	r = (16711680 & hex) >> 16;
	g = (65280 & hex) >> 8;
	b = (255 & hex);
	{
		var $tmp = { r : r, g : g, b : b}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.ColorMath.hex2rgbn = function(hex) {
	$s.push("sandy.math.ColorMath::hex2rgbn");
	var $spos = $s.length;
	var r;
	var g;
	var b;
	r = (16711680 & hex) >> 16;
	g = (65280 & hex) >> 8;
	b = (255 & hex);
	{
		var $tmp = { r : r / 255, g : g / 255, b : b / 255}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.ColorMath.calculateLitColour = function(col,lightStrength) {
	$s.push("sandy.math.ColorMath::calculateLitColour");
	var $spos = $s.length;
	var r = (col >> 16) & 255;
	var g = (col >> 8) & 255;
	var b = (col) & 255;
	r *= 0.00390625;
	g *= 0.00390625;
	b *= 0.00390625;
	var min = 0.0, mid = 0.0, max = 0.0, delta = 0.0;
	var l = 0.0, s = 0.0, h = 0.0, F = 0.0, n = 0;
	var a = [r,g,b];
	a.sort(function(a1,b1) {
		$s.push("sandy.math.ColorMath::calculateLitColour@112");
		var $spos = $s.length;
		{
			var $tmp = (((a1 > b1)?1:((a1 < b1)?-1:0)));
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	min = a[0];
	mid = a[1];
	max = a[2];
	var range = max - min;
	l = (min + max) * 0.5;
	if(l == 0) {
		s = 1;
	}
	else {
		delta = range * 0.5;
		if(l < 0.5) {
			s = delta / l;
		}
		else {
			s = delta / (1 - l);
		}
		if(range != 0) {
			while(true) {
				if(r == max) {
					if(b == min) n = 0;
					else n = 5;
					break;
				}
				if(g == max) {
					if(b == min) n = 1;
					else n = 2;
					break;
				}
				if(r == min) n = 3;
				else n = 4;
				break;
			}
			if((n % 2) == 0) {
				F = mid - min;
			}
			else {
				F = max - mid;
			}
			F = F / range;
			h = 60 * (n + F);
		}
	}
	if(lightStrength < 0.5) {
		delta = s * lightStrength;
	}
	else {
		delta = s * (1 - lightStrength);
	}
	min = lightStrength - delta;
	max = lightStrength + delta;
	n = Math.floor(h / 60);
	F = (h - n * 60) * delta / 30;
	n %= 6;
	var mu = min + F;
	var md = max - F;
	switch(n) {
	case 0:{
		r = max;
		g = mu;
		b = min;
	}break;
	case 1:{
		r = md;
		g = max;
		b = min;
	}break;
	case 2:{
		r = min;
		g = max;
		b = mu;
	}break;
	case 3:{
		r = min;
		g = md;
		b = max;
	}break;
	case 4:{
		r = mu;
		g = min;
		b = max;
	}break;
	case 5:{
		r = max;
		g = min;
		b = md;
	}break;
	}
	{
		var $tmp = ((Std["int"](r * 256) << 16 | Std["int"](g * 256) << 8) | Std["int"](b * 256));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.math.ColorMath.prototype.__class__ = sandy.math.ColorMath;
neash.events.Listener = function(inListener,inUseCapture,inPriority) { if( inListener === $_ ) return; {
	$s.push("neash.events.Listener::new");
	var $spos = $s.length;
	this.mListner = inListener;
	this.mUseCapture = inUseCapture;
	this.mPriority = inPriority;
	this.mID = neash.events.Listener.sIDs++;
	$s.pop();
}}
neash.events.Listener.__name__ = ["neash","events","Listener"];
neash.events.Listener.prototype.Is = function(inListener,inCapture) {
	$s.push("neash.events.Listener::Is");
	var $spos = $s.length;
	{
		var $tmp = Reflect.compareMethods($closure(this,"mListner"),inListener) && this.mUseCapture == inCapture;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.Listener.prototype.dispatchEvent = function(event) {
	$s.push("neash.events.Listener::dispatchEvent");
	var $spos = $s.length;
	this.mListner(event);
	$s.pop();
}
neash.events.Listener.prototype.mID = null;
neash.events.Listener.prototype.mListner = null;
neash.events.Listener.prototype.mPriority = null;
neash.events.Listener.prototype.mUseCapture = null;
neash.events.Listener.prototype.__class__ = neash.events.Listener;
sandy.core.scenegraph.IDisplayable = function() { }
sandy.core.scenegraph.IDisplayable.__name__ = ["sandy","core","scenegraph","IDisplayable"];
sandy.core.scenegraph.IDisplayable.prototype.__getContainer = null;
sandy.core.scenegraph.IDisplayable.prototype.__getDepth = null;
sandy.core.scenegraph.IDisplayable.prototype.__setDepth = null;
sandy.core.scenegraph.IDisplayable.prototype.clear = null;
sandy.core.scenegraph.IDisplayable.prototype.container = null;
sandy.core.scenegraph.IDisplayable.prototype.depth = null;
sandy.core.scenegraph.IDisplayable.prototype.display = null;
sandy.core.scenegraph.IDisplayable.prototype.__class__ = sandy.core.scenegraph.IDisplayable;
sandy.core.scenegraph.Sprite2D = function(p_sName,p_oContent,p_nScale) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.Sprite2D::new");
	var $spos = $s.length;
	this.fixedAngle = false;
	this.autoCenter = true;
	this.floorCenter = false;
	this.enableForcedDepth = false;
	this.forcedDepth = 0;
	this.m_bEv = false;
	this.m_nW2 = 0;
	this.m_nH2 = 0;
	this.m_oContainer;
	this.m_bLightingEnabled = false;
	this.m_nPerspScaleX = 0;
	this.m_nPerspScaleY = 0;
	this.m_nRotation = 0;
	if(p_sName == null) p_sName = "";
	if(p_oContent == null) p_oContent = null;
	if(p_nScale == null) p_nScale = 1;
	sandy.core.scenegraph.ATransformable.apply(this,[p_sName]);
	this.m_oContainer = new neash.display.Sprite();
	this._v = new sandy.core.data.Vertex();
	this._vx = new sandy.core.data.Vertex();
	this._vy = new sandy.core.data.Vertex();
	this.boundingSphere = new sandy.bounds.BSphere();
	this.boundingBox = null;
	this._nScale = p_nScale;
	if(p_oContent != null) this.__setContent(p_oContent);
	this.setBoundingSphereRadius(30);
	$s.pop();
}}
sandy.core.scenegraph.Sprite2D.__name__ = ["sandy","core","scenegraph","Sprite2D"];
sandy.core.scenegraph.Sprite2D.__super__ = sandy.core.scenegraph.ATransformable;
for(var k in sandy.core.scenegraph.ATransformable.prototype ) sandy.core.scenegraph.Sprite2D.prototype[k] = sandy.core.scenegraph.ATransformable.prototype[k];
sandy.core.scenegraph.Sprite2D.prototype.__getContainer = function() {
	$s.push("sandy.core.scenegraph.Sprite2D::__getContainer");
	var $spos = $s.length;
	{
		var $tmp = this.m_oContainer;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__getDepth = function() {
	$s.push("sandy.core.scenegraph.Sprite2D::__getDepth");
	var $spos = $s.length;
	{
		var $tmp = this.m_nDepth;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__getEnableEvents = function() {
	$s.push("sandy.core.scenegraph.Sprite2D::__getEnableEvents");
	var $spos = $s.length;
	{
		var $tmp = this.m_bEv;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__getMaterial = function() {
	$s.push("sandy.core.scenegraph.Sprite2D::__getMaterial");
	var $spos = $s.length;
	{
		var $tmp = this.m_oMaterial;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__getScale = function() {
	$s.push("sandy.core.scenegraph.Sprite2D::__getScale");
	var $spos = $s.length;
	{
		var $tmp = this._nScale;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__setContent = function(p_content) {
	$s.push("sandy.core.scenegraph.Sprite2D::__setContent");
	var $spos = $s.length;
	p_content.GetTransform().GetMatrix().identity();
	if(this.m_oContent != null) this.m_oContainer.removeChild(this.m_oContent);
	this.m_oContent = p_content;
	this.m_oContainer.addChildAt(this.m_oContent,0);
	this.m_oContent.SetX(0);
	this.m_oContent.SetY(0);
	this.m_nW2 = this.m_oContainer.GetWidth() / 2;
	this.m_nH2 = this.m_oContainer.GetHeight() / 2;
	{
		$s.pop();
		return p_content;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__setDepth = function(p_nDepth) {
	$s.push("sandy.core.scenegraph.Sprite2D::__setDepth");
	var $spos = $s.length;
	{
		$s.pop();
		return p_nDepth;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__setEnableEvents = function(b) {
	$s.push("sandy.core.scenegraph.Sprite2D::__setEnableEvents");
	var $spos = $s.length;
	if(b && !this.m_bEv) {
		this.m_oContainer.addEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.ROLL_OVER,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.ROLL_OUT,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onInteraction"));
		this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onInteraction"));
	}
	else if(!b && this.m_bEv) {
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.ROLL_OVER,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.ROLL_OUT,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onInteraction"));
		this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onInteraction"));
	}
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__setMaterial = function(p_oMaterial) {
	$s.push("sandy.core.scenegraph.Sprite2D::__setMaterial");
	var $spos = $s.length;
	this.m_oMaterial = p_oMaterial;
	{
		$s.pop();
		return p_oMaterial;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__setScale = function(n) {
	$s.push("sandy.core.scenegraph.Sprite2D::__setScale");
	var $spos = $s.length;
	this._nScale = n;
	{
		$s.pop();
		return n;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype._nScale = null;
sandy.core.scenegraph.Sprite2D.prototype._onInteraction = function(p_oEvt) {
	$s.push("sandy.core.scenegraph.Sprite2D::_onInteraction");
	var $spos = $s.length;
	this.m_oEB.broadcastEvent(new sandy.events.BubbleEvent(p_oEvt.type,this));
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype._v = null;
sandy.core.scenegraph.Sprite2D.prototype._vx = null;
sandy.core.scenegraph.Sprite2D.prototype._vy = null;
sandy.core.scenegraph.Sprite2D.prototype.autoCenter = null;
sandy.core.scenegraph.Sprite2D.prototype.clear = function() {
	$s.push("sandy.core.scenegraph.Sprite2D::clear");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.container = null;
sandy.core.scenegraph.Sprite2D.prototype.content = null;
sandy.core.scenegraph.Sprite2D.prototype.cull = function(p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Sprite2D::cull");
	var $spos = $s.length;
	sandy.core.scenegraph.ATransformable.prototype.cull.apply(this,[p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged]);
	if(this.viewMatrix != null) {
		this.boundingSphere.transform(this.viewMatrix);
		this.culled = p_oFrustum.sphereInFrustum(this.boundingSphere);
	}
	if(this.culled == sandy.view.CullingState.OUTSIDE) this.__getContainer().visible = false;
	else if(this.culled == sandy.view.CullingState.INTERSECT) {
		if(this.boundingSphere.position.z <= p_oScene.camera.__getNear()) this.__getContainer().visible = false;
		else this.__getContainer().visible = true;
	}
	else this.__getContainer().visible = true;
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.depth = null;
sandy.core.scenegraph.Sprite2D.prototype.display = function(p_oScene,p_oContainer) {
	$s.push("sandy.core.scenegraph.Sprite2D::display");
	var $spos = $s.length;
	this.m_oContainer.SetScaleX(this.m_nPerspScaleX);
	this.m_oContainer.SetScaleY(this.m_nPerspScaleY);
	this.m_oContainer.SetX(this._v.sx - ((this.autoCenter?this.m_oContainer.GetWidth() / 2:0)));
	this.m_oContainer.SetY(this._v.sy - ((this.autoCenter?this.m_oContainer.GetHeight() / 2:0)));
	this.m_oContainer.SetY(this._v.sy - ((this.autoCenter?this.m_oContainer.GetHeight() / 2:((this.floorCenter?this.m_oContainer.GetHeight():0)))));
	if(this.fixedAngle) this.m_oContainer.SetRotation(this.m_nRotation * 180 / Math.PI);
	if(this.m_oMaterial != null) this.m_oMaterial.renderSprite(this,this.m_oMaterial,p_oScene);
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.enableEvents = null;
sandy.core.scenegraph.Sprite2D.prototype.enableForcedDepth = null;
sandy.core.scenegraph.Sprite2D.prototype.fixedAngle = null;
sandy.core.scenegraph.Sprite2D.prototype.floorCenter = null;
sandy.core.scenegraph.Sprite2D.prototype.forcedDepth = null;
sandy.core.scenegraph.Sprite2D.prototype.m_bEv = null;
sandy.core.scenegraph.Sprite2D.prototype.m_bLightingEnabled = null;
sandy.core.scenegraph.Sprite2D.prototype.m_nDepth = null;
sandy.core.scenegraph.Sprite2D.prototype.m_nH2 = null;
sandy.core.scenegraph.Sprite2D.prototype.m_nPerspScaleX = null;
sandy.core.scenegraph.Sprite2D.prototype.m_nPerspScaleY = null;
sandy.core.scenegraph.Sprite2D.prototype.m_nRotation = null;
sandy.core.scenegraph.Sprite2D.prototype.m_nW2 = null;
sandy.core.scenegraph.Sprite2D.prototype.m_oContainer = null;
sandy.core.scenegraph.Sprite2D.prototype.m_oContent = null;
sandy.core.scenegraph.Sprite2D.prototype.m_oMaterial = null;
sandy.core.scenegraph.Sprite2D.prototype.material = null;
sandy.core.scenegraph.Sprite2D.prototype.remove = function() {
	$s.push("sandy.core.scenegraph.Sprite2D::remove");
	var $spos = $s.length;
	if(this.m_oContainer.GetParent() != null) this.m_oContainer.GetParent().removeChild(this.m_oContainer);
	sandy.core.scenegraph.ATransformable.prototype.remove.apply(this,[]);
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.render = function(p_oScene,p_oCamera) {
	$s.push("sandy.core.scenegraph.Sprite2D::render");
	var $spos = $s.length;
	if((this.m_oMaterial != null) && !p_oScene.materialManager.isRegistered(this.m_oMaterial)) {
		p_oScene.materialManager.register(this.m_oMaterial);
	}
	this._v.wx = this._v.x * this.viewMatrix.n11 + this._v.y * this.viewMatrix.n12 + this._v.z * this.viewMatrix.n13 + this.viewMatrix.n14;
	this._v.wy = this._v.x * this.viewMatrix.n21 + this._v.y * this.viewMatrix.n22 + this._v.z * this.viewMatrix.n23 + this.viewMatrix.n24;
	this._v.wz = this._v.x * this.viewMatrix.n31 + this._v.y * this.viewMatrix.n32 + this._v.z * this.viewMatrix.n33 + this.viewMatrix.n34;
	this.m_nDepth = (this.enableForcedDepth?this.forcedDepth:this._v.wz);
	p_oCamera.projectVertex(this._v);
	p_oCamera.addToDisplayList(this);
	this._vx.copy(this._v);
	this._vx.wx++;
	p_oCamera.projectVertex(this._vx);
	this._vy.copy(this._v);
	this._vy.wy++;
	p_oCamera.projectVertex(this._vy);
	this.m_nPerspScaleX = this._nScale * (this._vx.sx - this._v.sx);
	this.m_nPerspScaleY = this._nScale * (this._v.sy - this._vy.sy);
	this.m_nRotation = Math.atan2(this.viewMatrix.n12,this.viewMatrix.n22);
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.scale = null;
sandy.core.scenegraph.Sprite2D.prototype.setBoundingSphereRadius = function(p_nRadius) {
	$s.push("sandy.core.scenegraph.Sprite2D::setBoundingSphereRadius");
	var $spos = $s.length;
	this.boundingSphere.radius = p_nRadius;
	$s.pop();
}
sandy.core.scenegraph.Sprite2D.prototype.__class__ = sandy.core.scenegraph.Sprite2D;
sandy.core.scenegraph.Sprite2D.__interfaces__ = [sandy.core.scenegraph.IDisplayable];
sandy.core.scenegraph.Geometry3D = function(p_points) { if( p_points === $_ ) return; {
	$s.push("sandy.core.scenegraph.Geometry3D::new");
	var $spos = $s.length;
	this.EDGES_DICO = new Hash();
	this.aVertex = new Array();
	this.aFacesVertexID = new Array();
	this.aFacesUVCoordsID = new Array();
	this.aFacesNormals = new Array();
	this.aVertexNormals = new Array();
	this.aEdges = new Array();
	this.aFaceEdges = new Array();
	this.aUVCoords = new Array();
	this.m_nLastVertexId = 0;
	this.m_nLastNormalId = 0;
	this.m_nLastFaceId = 0;
	this.m_nLastFaceUVId = 0;
	this.m_nLastUVId = 0;
	this.m_nLastVertexNormalId = 0;
	this.m_aVertexFaces = new Array();
	this.init();
	$s.pop();
}}
sandy.core.scenegraph.Geometry3D.__name__ = ["sandy","core","scenegraph","Geometry3D"];
sandy.core.scenegraph.Geometry3D.prototype.EDGES_DICO = null;
sandy.core.scenegraph.Geometry3D.prototype.aEdges = null;
sandy.core.scenegraph.Geometry3D.prototype.aFaceEdges = null;
sandy.core.scenegraph.Geometry3D.prototype.aFacesNormals = null;
sandy.core.scenegraph.Geometry3D.prototype.aFacesUVCoordsID = null;
sandy.core.scenegraph.Geometry3D.prototype.aFacesVertexID = null;
sandy.core.scenegraph.Geometry3D.prototype.aUVCoords = null;
sandy.core.scenegraph.Geometry3D.prototype.aVertex = null;
sandy.core.scenegraph.Geometry3D.prototype.aVertexNormals = null;
sandy.core.scenegraph.Geometry3D.prototype.clone = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::clone");
	var $spos = $s.length;
	var l_result = new sandy.core.scenegraph.Geometry3D();
	var i = 0, l_oVertex;
	{
		var _g = 0, _g1 = this.aVertex;
		while(_g < _g1.length) {
			var l_oVertex1 = _g1[_g];
			++_g;
			l_result.aVertex[i] = l_oVertex1.clone();
			i++;
		}
	}
	i = 0;
	{
		var _g = 0, _g1 = this.aFacesVertexID;
		while(_g < _g1.length) {
			var a = _g1[_g];
			++_g;
			l_result.aFacesVertexID[i] = a.concat([]);
			i++;
		}
	}
	i = 0;
	{
		var _g = 0, _g1 = this.aFacesNormals;
		while(_g < _g1.length) {
			var l_oVertex1 = _g1[_g];
			++_g;
			l_result.aFacesNormals[i] = l_oVertex1.clone();
			i++;
		}
	}
	i = 0;
	{
		var _g = 0, _g1 = this.aVertexNormals;
		while(_g < _g1.length) {
			var l_oVertex1 = _g1[_g];
			++_g;
			if(l_oVertex1 != null) {
				l_result.aVertexNormals[i] = l_oVertex1.clone();
			}
			else {
				l_result.aVertexNormals[i] = null;
			}
			i++;
		}
	}
	i = 0;
	{
		var _g = 0, _g1 = this.aFacesUVCoordsID;
		while(_g < _g1.length) {
			var b = _g1[_g];
			++_g;
			l_result.aFacesUVCoordsID[i] = b.concat([]);
			i++;
		}
	}
	i = 0;
	{
		var _g = 0, _g1 = this.aUVCoords;
		while(_g < _g1.length) {
			var u = _g1[_g];
			++_g;
			l_result.aUVCoords[i] = u.clone();
			i++;
		}
	}
	i = 0;
	{
		var _g = 0, _g1 = this.aEdges;
		while(_g < _g1.length) {
			var l_oEdge = _g1[_g];
			++_g;
			l_result.aEdges[i] = l_oEdge.clone();
			i++;
		}
	}
	i = 0;
	{
		var _g = 0, _g1 = this.aFaceEdges;
		while(_g < _g1.length) {
			var l_oEdges = _g1[_g];
			++_g;
			l_result.aFaceEdges[i] = l_oEdges;
			i++;
		}
	}
	{
		$s.pop();
		return l_result;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.dispose = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::dispose");
	var $spos = $s.length;
	var a, l_oVertex;
	{
		var _g = 0, _g1 = this.aVertex;
		while(_g < _g1.length) {
			var l_oVertex1 = _g1[_g];
			++_g;
			l_oVertex1 = null;
		}
	}
	this.aVertex = null;
	{
		var _g = 0, _g1 = this.aFacesVertexID;
		while(_g < _g1.length) {
			var a1 = _g1[_g];
			++_g;
			a1 = null;
		}
	}
	this.aFacesVertexID = null;
	{
		var _g = 0, _g1 = this.aFacesNormals;
		while(_g < _g1.length) {
			var l_oVertex1 = _g1[_g];
			++_g;
			l_oVertex1 = null;
		}
	}
	this.aFacesNormals = null;
	{
		var _g = 0, _g1 = this.aVertexNormals;
		while(_g < _g1.length) {
			var l_oVertex1 = _g1[_g];
			++_g;
			l_oVertex1 = null;
		}
	}
	this.aVertexNormals = null;
	{
		var _g = 0, _g1 = this.aFacesUVCoordsID;
		while(_g < _g1.length) {
			var b = _g1[_g];
			++_g;
			b = null;
		}
	}
	this.aFacesUVCoordsID = null;
	{
		var _g = 0, _g1 = this.aUVCoords;
		while(_g < _g1.length) {
			var u = _g1[_g];
			++_g;
			u = null;
		}
	}
	this.aUVCoords = null;
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.generateFaceNormals = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::generateFaceNormals");
	var $spos = $s.length;
	if(this.aFacesNormals.length > 0) {
		$s.pop();
		return;
	}
	else {
		{
			var _g = 0, _g1 = this.aFacesVertexID;
			while(_g < _g1.length) {
				var a = _g1[_g];
				++_g;
				if(a.length < 3) continue;
				var lA, lB, lC;
				lA = this.aVertex[a[0]];
				lB = this.aVertex[a[1]];
				lC = this.aVertex[a[2]];
				var lV = new sandy.core.data.Vector(lB.wx - lA.wx,lB.wy - lA.wy,lB.wz - lA.wz);
				var lW = new sandy.core.data.Vector(lB.wx - lC.wx,lB.wy - lC.wy,lB.wz - lC.wz);
				var lNormal = lV.cross(lW);
				lNormal.normalize();
				this.setFaceNormal(this.getNextFaceNormalID(),lNormal.x,lNormal.y,lNormal.z);
			}
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.generateVertexNormals = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::generateVertexNormals");
	var $spos = $s.length;
	if(this.aVertexNormals.length > 0) {
		$s.pop();
		return;
	}
	else {
		var lId = 0;
		{
			var _g1 = 0, _g = this.aFacesVertexID.length;
			while(_g1 < _g) {
				var lId1 = _g1++;
				var l_aList = this.aFacesVertexID[lId1];
				var l_oNormal = this.aFacesNormals[lId1];
				if(l_oNormal == null) continue;
				if(null == this.aVertexNormals[l_aList[0]]) {
					this.m_nLastVertexNormalId++;
					this.aVertexNormals[l_aList[0]] = new sandy.core.data.Vertex();
				}
				this.aVertexNormals[l_aList[0]].add(l_oNormal);
				if(null == this.aVertexNormals[l_aList[1]]) {
					this.m_nLastVertexNormalId++;
					this.aVertexNormals[l_aList[1]] = new sandy.core.data.Vertex();
				}
				this.aVertexNormals[l_aList[1]].add(l_oNormal);
				if(null == this.aVertexNormals[l_aList[2]]) {
					this.m_nLastVertexNormalId++;
					this.aVertexNormals[l_aList[2]] = new sandy.core.data.Vertex();
				}
				this.aVertexNormals[l_aList[2]].add(l_oNormal);
				if((this.aVertex[l_aList[0]].aFaces.indexOf(lId1)) == 0) this.aVertex[l_aList[0]].aFaces.push(lId1);
				if((this.aVertex[l_aList[1]].aFaces.indexOf(lId1)) == 0) this.aVertex[l_aList[1]].aFaces.push(lId1);
				if((this.aVertex[l_aList[2]].aFaces.indexOf(lId1)) == 0) this.aVertex[l_aList[2]].aFaces.push(lId1);
				this.aVertex[l_aList[0]].nbFaces++;
				this.aVertex[l_aList[1]].nbFaces++;
				this.aVertex[l_aList[2]].nbFaces++;
			}
		}
		{
			var _g1 = 0, _g = this.aVertexNormals.length;
			while(_g1 < _g) {
				var lId1 = _g1++;
				var l_oVertex = this.aVertex[lId1];
				if(l_oVertex.nbFaces == 0) continue;
				if(l_oVertex.nbFaces > 0) this.aVertexNormals[lId1].scale(1 / l_oVertex.nbFaces);
			}
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.getNextFaceID = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::getNextFaceID");
	var $spos = $s.length;
	{
		var $tmp = this.m_nLastFaceId;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.getNextFaceNormalID = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::getNextFaceNormalID");
	var $spos = $s.length;
	{
		var $tmp = this.m_nLastNormalId;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.getNextFaceUVCoordID = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::getNextFaceUVCoordID");
	var $spos = $s.length;
	{
		var $tmp = this.m_nLastFaceUVId;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.getNextUVCoordID = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::getNextUVCoordID");
	var $spos = $s.length;
	{
		var $tmp = this.m_nLastUVId;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.getNextVertexID = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::getNextVertexID");
	var $spos = $s.length;
	{
		var $tmp = this.m_nLastVertexId;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.getNextVertexNormalID = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::getNextVertexNormalID");
	var $spos = $s.length;
	{
		var $tmp = this.m_nLastVertexNormalId;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.getVertexId = function(p_point) {
	$s.push("sandy.core.scenegraph.Geometry3D::getVertexId");
	var $spos = $s.length;
	var j = 0;
	{
		var _g1 = 0, _g = this.aVertex.length;
		while(_g1 < _g) {
			var j1 = _g1++;
			if(!(this.aVertex[j1] == p_point)) break;
		}
	}
	{
		var $tmp = (j == this.aVertex.length?-1:j);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.init = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::init");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.isEdgeExist = function(p_nVertexId1,p_nVertexId2) {
	$s.push("sandy.core.scenegraph.Geometry3D::isEdgeExist");
	var $spos = $s.length;
	var lString;
	if(p_nVertexId1 < p_nVertexId2) lString = p_nVertexId1 + "_" + p_nVertexId2;
	else lString = p_nVertexId2 + "_" + p_nVertexId1;
	if(this.EDGES_DICO.get(lString) == null) {
		$s.pop();
		return false;
	}
	else {
		$s.pop();
		return true;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.m_aVertexFaces = null;
sandy.core.scenegraph.Geometry3D.prototype.m_nLastFaceId = null;
sandy.core.scenegraph.Geometry3D.prototype.m_nLastFaceUVId = null;
sandy.core.scenegraph.Geometry3D.prototype.m_nLastNormalId = null;
sandy.core.scenegraph.Geometry3D.prototype.m_nLastUVId = null;
sandy.core.scenegraph.Geometry3D.prototype.m_nLastVertexId = null;
sandy.core.scenegraph.Geometry3D.prototype.m_nLastVertexNormalId = null;
sandy.core.scenegraph.Geometry3D.prototype.setFaceNormal = function(p_nNormalID,p_nX,p_nY,p_nZ) {
	$s.push("sandy.core.scenegraph.Geometry3D::setFaceNormal");
	var $spos = $s.length;
	if(this.aFacesNormals[p_nNormalID] != null) {
		$s.pop();
		return -1;
	}
	else {
		this.aFacesNormals[p_nNormalID] = new sandy.core.data.Vertex(p_nX,p_nY,p_nZ);
		{
			var $tmp = ++this.m_nLastNormalId - 1;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.setFaceUVCoordsIds = function(p_nFaceID,arguments) {
	$s.push("sandy.core.scenegraph.Geometry3D::setFaceUVCoordsIds");
	var $spos = $s.length;
	if(arguments == null) arguments = [];
	if(this.aFacesUVCoordsID[p_nFaceID] != null) {
		{
			$s.pop();
			return -1;
		}
	}
	else {
		var rest = (Std["is"](arguments[0],Array)?arguments[0]:arguments.splice(0,arguments.length));
		this.aFacesUVCoordsID[p_nFaceID] = rest;
		{
			var $tmp = ++this.m_nLastFaceUVId - 1;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.setFaceVertexIds = function(p_nFaceID,arguments) {
	$s.push("sandy.core.scenegraph.Geometry3D::setFaceVertexIds");
	var $spos = $s.length;
	if(arguments == null) arguments = [];
	if(this.aFacesVertexID[p_nFaceID] != null) {
		{
			$s.pop();
			return -1;
		}
	}
	else {
		var rest = (Std["is"](arguments[0],Array)?arguments[0]:arguments.splice(0,arguments.length));
		this.aFacesVertexID[p_nFaceID] = rest;
		{
			var _g1 = 0, _g = rest.length;
			while(_g1 < _g) {
				var lId = _g1++;
				var lId1 = rest[lId];
				var lId2 = rest[(lId + 1) % rest.length];
				var lEdgeID;
				var lString;
				if(this.isEdgeExist(lId1,lId2) == false) {
					lEdgeID = this.aEdges.push(new sandy.core.data.Edge3D(lId1,lId2)) - 1;
					if(lId1 < lId2) lString = lId1 + "_" + lId2;
					else lString = lId2 + "_" + lId1;
					this.EDGES_DICO.set(lString,lEdgeID);
				}
				else {
					if(lId1 < lId2) lString = lId1 + "_" + lId2;
					else lString = lId2 + "_" + lId1;
					lEdgeID = this.EDGES_DICO.get(lString);
				}
				if(null == this.aFaceEdges[p_nFaceID]) this.aFaceEdges[p_nFaceID] = new Array();
				this.aFaceEdges[p_nFaceID].push(lEdgeID);
			}
		}
		{
			var $tmp = ++this.m_nLastFaceId - 1;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.setUVCoords = function(p_nID,p_UValue,p_nVValue) {
	$s.push("sandy.core.scenegraph.Geometry3D::setUVCoords");
	var $spos = $s.length;
	if(this.aUVCoords[p_nID] != null) {
		{
			$s.pop();
			return -1;
		}
	}
	else {
		this.aUVCoords[p_nID] = new sandy.core.data.UVCoord(p_UValue,p_nVValue);
		{
			var $tmp = ++this.m_nLastUVId - 1;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.setVertex = function(p_nVertexID,p_nX,p_nY,p_nZ) {
	$s.push("sandy.core.scenegraph.Geometry3D::setVertex");
	var $spos = $s.length;
	if(this.aVertex[p_nVertexID] != null) {
		$s.pop();
		return -1;
	}
	else {
		this.aVertex[p_nVertexID] = new sandy.core.data.Vertex(p_nX,p_nY,p_nZ);
		{
			var $tmp = ++this.m_nLastVertexId - 1;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.setVertexNormal = function(p_nNormalID,p_nX,p_nY,p_nZ) {
	$s.push("sandy.core.scenegraph.Geometry3D::setVertexNormal");
	var $spos = $s.length;
	if(this.aVertexNormals[p_nNormalID] != null) {
		$s.pop();
		return -1;
	}
	else {
		this.aVertexNormals[p_nNormalID] = new sandy.core.data.Vertex(p_nX,p_nY,p_nZ);
		{
			var $tmp = ++this.m_nLastVertexNormalId - 1;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.toString = function() {
	$s.push("sandy.core.scenegraph.Geometry3D::toString");
	var $spos = $s.length;
	{
		var $tmp = "[Geometry: " + this.aFacesVertexID.length + " faces, " + this.aVertex.length + " points, " + this.aFacesNormals.length + " normals, " + this.aUVCoords.length + " uv coords]";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Geometry3D.prototype.__class__ = sandy.core.scenegraph.Geometry3D;
js = {}
js.Boot = function() { }
js.Boot.__name__ = ["js","Boot"];
js.Boot.__unhtml = function(s) {
	$s.push("js.Boot::__unhtml");
	var $spos = $s.length;
	{
		var $tmp = s.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.Boot.__trace = function(v,i) {
	$s.push("js.Boot::__trace");
	var $spos = $s.length;
	var msg = (i != null?i.fileName + ":" + i.lineNumber + ": ":"");
	msg += js.Boot.__unhtml(js.Boot.__string_rec(v,"")) + "<br/>";
	var d = document.getElementById("haxe:trace");
	if(d == null) alert("No haxe:trace element defined\n" + msg);
	else d.innerHTML += msg;
	$s.pop();
}
js.Boot.__clear_trace = function() {
	$s.push("js.Boot::__clear_trace");
	var $spos = $s.length;
	var d = document.getElementById("haxe:trace");
	if(d != null) d.innerHTML = "";
	else null;
	$s.pop();
}
js.Boot.__closure = function(o,f) {
	$s.push("js.Boot::__closure");
	var $spos = $s.length;
	var m = o[f];
	if(m == null) {
		$s.pop();
		return null;
	}
	var f1 = function() {
		$s.push("js.Boot::__closure@67");
		var $spos = $s.length;
		{
			var $tmp = m.apply(o,arguments);
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	f1.scope = o;
	f1.method = m;
	{
		$s.pop();
		return f1;
	}
	$s.pop();
}
js.Boot.__string_rec = function(o,s) {
	$s.push("js.Boot::__string_rec");
	var $spos = $s.length;
	if(o == null) {
		$s.pop();
		return "null";
	}
	if(s.length >= 5) {
		$s.pop();
		return "<...>";
	}
	var t = typeof(o);
	if(t == "function" && (o.__name__ != null || o.__ename__ != null)) t = "object";
	switch(t) {
	case "object":{
		if(o instanceof Array) {
			if(o.__enum__ != null) {
				if(o.length == 2) {
					var $tmp = o[0];
					$s.pop();
					return $tmp;
				}
				var str = o[0] + "(";
				s += "\t";
				{
					var _g1 = 2, _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);
					}
				}
				{
					var $tmp = str + ")";
					$s.pop();
					return $tmp;
				}
			}
			var l = o.length;
			var i;
			var str = "[";
			s += "\t";
			{
				var _g = 0;
				while(_g < l) {
					var i1 = _g++;
					str += ((i1 > 0?",":"")) + js.Boot.__string_rec(o[i1],s);
				}
			}
			str += "]";
			{
				$s.pop();
				return str;
			}
		}
		var tostr;
		try {
			tostr = o.toString;
		}
		catch( $e51 ) {
			{
				var e = $e51;
				{
					$e = [];
					while($s.length >= $spos) $e.unshift($s.pop());
					$s.push($e[0]);
					{
						$s.pop();
						return "???";
					}
				}
			}
		}
		if(tostr != null && tostr != Object.toString) {
			var s2 = o.toString();
			if(s2 != "[object Object]") {
				$s.pop();
				return s2;
			}
		}
		var k = null;
		var str = "{\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__") continue;
		if(str.length != 2) str += ", \n";
		str += s + k + " : " + js.Boot.__string_rec(o[k],s);
		}
		s = s.substring(1);
		str += "\n" + s + "}";
		{
			$s.pop();
			return str;
		}
	}break;
	case "function":{
		{
			$s.pop();
			return "<function>";
		}
	}break;
	case "string":{
		{
			$s.pop();
			return o;
		}
	}break;
	default:{
		{
			var $tmp = String(o);
			$s.pop();
			return $tmp;
		}
	}break;
	}
	$s.pop();
}
js.Boot.__interfLoop = function(cc,cl) {
	$s.push("js.Boot::__interfLoop");
	var $spos = $s.length;
	if(cc == null) {
		$s.pop();
		return false;
	}
	if(cc == cl) {
		$s.pop();
		return true;
	}
	var intf = cc.__interfaces__;
	if(intf != null) {
		var _g1 = 0, _g = intf.length;
		while(_g1 < _g) {
			var i = _g1++;
			var i1 = intf[i];
			if(i1 == cl || js.Boot.__interfLoop(i1,cl)) {
				$s.pop();
				return true;
			}
		}
	}
	{
		var $tmp = js.Boot.__interfLoop(cc.__super__,cl);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.Boot.__instanceof = function(o,cl) {
	$s.push("js.Boot::__instanceof");
	var $spos = $s.length;
	try {
		if(o instanceof cl) {
			if(cl == Array) {
				var $tmp = (o.__enum__ == null);
				$s.pop();
				return $tmp;
			}
			{
				$s.pop();
				return true;
			}
		}
		if(js.Boot.__interfLoop(o.__class__,cl)) {
			$s.pop();
			return true;
		}
	}
	catch( $e52 ) {
		{
			var e = $e52;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				if(cl == null) {
					$s.pop();
					return false;
				}
			}
		}
	}
	switch(cl) {
	case Int:{
		{
			var $tmp = Math.ceil(o%2147483648.0) === o;
			$s.pop();
			return $tmp;
		}
	}break;
	case Float:{
		{
			var $tmp = typeof(o) == "number";
			$s.pop();
			return $tmp;
		}
	}break;
	case Bool:{
		{
			var $tmp = o === true || o === false;
			$s.pop();
			return $tmp;
		}
	}break;
	case String:{
		{
			var $tmp = typeof(o) == "string";
			$s.pop();
			return $tmp;
		}
	}break;
	case Dynamic:{
		{
			$s.pop();
			return true;
		}
	}break;
	default:{
		if(o == null) {
			$s.pop();
			return false;
		}
		{
			var $tmp = o.__enum__ == cl || (cl == Class && o.__name__ != null) || (cl == Enum && o.__ename__ != null);
			$s.pop();
			return $tmp;
		}
	}break;
	}
	$s.pop();
}
js.Boot.__init = function() {
	$s.push("js.Boot::__init");
	var $spos = $s.length;
	js.Lib.isIE = (document.all != null && window.opera == null);
	js.Lib.isOpera = (window.opera != null);
	Array.prototype.copy = Array.prototype.slice;
	Array.prototype.insert = function(i,x) {
		$s.push("js.Boot::__init@199");
		var $spos = $s.length;
		this.splice(i,0,x);
		$s.pop();
	}
	Array.prototype.remove = function(obj) {
		$s.push("js.Boot::__init@202");
		var $spos = $s.length;
		var i = 0;
		var l = this.length;
		while(i < l) {
			if(this[i] == obj) {
				this.splice(i,1);
				{
					$s.pop();
					return true;
				}
			}
			i++;
		}
		{
			$s.pop();
			return false;
		}
		$s.pop();
	}
	Array.prototype.iterator = function() {
		$s.push("js.Boot::__init@214");
		var $spos = $s.length;
		{
			var $tmp = { cur : 0, arr : this, hasNext : function() {
				$s.push("js.Boot::__init@214@218");
				var $spos = $s.length;
				{
					var $tmp = this.cur < this.arr.length;
					$s.pop();
					return $tmp;
				}
				$s.pop();
			}, next : function() {
				$s.push("js.Boot::__init@214@221");
				var $spos = $s.length;
				{
					var $tmp = this.arr[this.cur++];
					$s.pop();
					return $tmp;
				}
				$s.pop();
			}}
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	var cca = String.prototype.charCodeAt;
	String.prototype.cca = cca;
	String.prototype.charCodeAt = function(i) {
		$s.push("js.Boot::__init@228");
		var $spos = $s.length;
		var x = cca.call(this,i);
		if(isNaN(x)) {
			$s.pop();
			return null;
		}
		{
			$s.pop();
			return x;
		}
		$s.pop();
	}
	var oldsub = String.prototype.substr;
	String.prototype.substr = function(pos,len) {
		$s.push("js.Boot::__init@235");
		var $spos = $s.length;
		if(pos != null && pos != 0 && len != null && len < 0) {
			$s.pop();
			return "";
		}
		if(len == null) len = this.length;
		if(pos < 0) {
			pos = this.length + pos;
			if(pos < 0) pos = 0;
		}
		else if(len < 0) {
			len = this.length + len - pos;
		}
		{
			var $tmp = oldsub.apply(this,[pos,len]);
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	$closure = js.Boot.__closure;
	$s.pop();
}
js.Boot.prototype.__class__ = js.Boot;
xpath.expression.NameStep = function(name,nextStep) { if( name === $_ ) return; {
	$s.push("xpath.expression.NameStep::new");
	var $spos = $s.length;
	xpath.expression.PathStep.apply(this,[$closure(this,"nameStep"),nextStep]);
	this.name = name;
	$s.pop();
}}
xpath.expression.NameStep.__name__ = ["xpath","expression","NameStep"];
xpath.expression.NameStep.__super__ = xpath.expression.PathStep;
for(var k in xpath.expression.PathStep.prototype ) xpath.expression.NameStep.prototype[k] = xpath.expression.PathStep.prototype[k];
xpath.expression.NameStep.prototype.name = null;
xpath.expression.NameStep.prototype.nameStep = function(context) {
	$s.push("xpath.expression.NameStep::nameStep");
	var $spos = $s.length;
	var contextNodeType = context.node.getType();
	if(contextNodeType == xpath.xml.XmlNodeType.Element || contextNodeType == xpath.xml.XmlNodeType.Attribute) {
		if(this.name == "*" || context.node.getName() == this.name) {
			{
				var $tmp = [context.node];
				$s.pop();
				return $tmp;
			}
		}
	}
	{
		var $tmp = [];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.NameStep.prototype.__class__ = xpath.expression.NameStep;
xpath.library.StringLibrary = function() { }
xpath.library.StringLibrary.__name__ = ["xpath","library","StringLibrary"];
xpath.library.StringLibrary.string = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::string");
	var $spos = $s.length;
	if(parameters.length > 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	if(parameters[0] == null) {
		var $tmp = new xpath.value.XPathString(context.node.getStringValue());
		$s.pop();
		return $tmp;
	}
	else {
		var $tmp = parameters[0].getXPathString();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.concat = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::concat");
	var $spos = $s.length;
	if(parameters.length < 2) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var result = "";
	{
		var _g = 0;
		while(_g < parameters.length) {
			var parameter = parameters[_g];
			++_g;
			result += parameter.getString();
		}
	}
	{
		var $tmp = new xpath.value.XPathString(result);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.startsWith = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::startsWith");
	var $spos = $s.length;
	if(parameters.length != 2) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string = parameters[0].getString();
	var substring = parameters[1].getString();
	{
		var $tmp = new xpath.value.XPathBoolean(string.substr(0,substring.length) == substring);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.contains = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::contains");
	var $spos = $s.length;
	if(parameters.length != 2) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string = parameters[0].getString();
	var substring = parameters[1].getString();
	{
		var $tmp = new xpath.value.XPathBoolean(string.indexOf(substring) >= 0);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.substringBefore = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::substringBefore");
	var $spos = $s.length;
	if(parameters.length != 2) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string = parameters[0].getString();
	var substring = parameters[1].getString();
	var i = string.indexOf(substring);
	if(i < 0) {
		var $tmp = new xpath.value.XPathString("");
		$s.pop();
		return $tmp;
	}
	else {
		var $tmp = new xpath.value.XPathString(string.substr(0,i));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.substringAfter = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::substringAfter");
	var $spos = $s.length;
	if(parameters.length != 2) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string = parameters[0].getString();
	var substring = parameters[1].getString();
	var i = string.indexOf(substring) + substring.length;
	{
		var $tmp = new xpath.value.XPathString(string.substr(i));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.substring = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::substring");
	var $spos = $s.length;
	if(parameters.length < 2 || parameters.length > 3) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string = parameters[0].getString();
	var startFloat = parameters[1].getFloat();
	var start = Math.round(startFloat);
	if(parameters[2] == null) {
		if(Math.isNaN(start)) {
			var $tmp = new xpath.value.XPathString("");
			$s.pop();
			return $tmp;
		}
		else if(start < 1) {
			var $tmp = new xpath.value.XPathString(string);
			$s.pop();
			return $tmp;
		}
		else {
			var $tmp = new xpath.value.XPathString(string.substr(start - 1));
			$s.pop();
			return $tmp;
		}
	}
	else {
		var lengthFloat = parameters[2].getFloat();
		var length = Math.round(lengthFloat);
		if(Math.isNaN(startFloat + lengthFloat)) {
			var $tmp = new xpath.value.XPathString("");
			$s.pop();
			return $tmp;
		}
		if(!Math.isFinite(startFloat)) {
			var $tmp = new xpath.value.XPathString("");
			$s.pop();
			return $tmp;
		}
		if(Math.isFinite(lengthFloat)) {
			if(start < 1) {
				length += start - 1;
				start = 1;
			}
			{
				var $tmp = new xpath.value.XPathString(string.substr(start - 1,length));
				$s.pop();
				return $tmp;
			}
		}
		else if(lengthFloat > 0) {
			{
				var $tmp = new xpath.value.XPathString(string.substr(start - 1));
				$s.pop();
				return $tmp;
			}
		}
		else {
			{
				var $tmp = new xpath.value.XPathString("");
				$s.pop();
				return $tmp;
			}
		}
	}
	$s.pop();
}
xpath.library.StringLibrary.stringLength = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::stringLength");
	var $spos = $s.length;
	if(parameters.length > 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string;
	if(parameters[0] == null) {
		string = context.node.getStringValue();
	}
	else {
		string = parameters[0].getString();
	}
	{
		var $tmp = new xpath.value.XPathNumber(string.length);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.normalizeSpace = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::normalizeSpace");
	var $spos = $s.length;
	if(parameters.length > 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string;
	if(parameters[0] == null) string = context.node.getStringValue();
	else string = parameters[0].getString();
	var buf = new StringBuf();
	var doneSpace = true;
	{
		var _g1 = 0, _g = string.length;
		while(_g1 < _g) {
			var i = _g1++;
			var c = string.charAt(i);
			if(c == " " || c == "\t" || c == "\n" || c == "\r") {
				if(!doneSpace) {
					buf.b += " ";
					doneSpace = true;
				}
			}
			else {
				doneSpace = false;
				buf.b += c;
			}
		}
	}
	{
		var $tmp = new xpath.value.XPathString(StringTools.rtrim(buf.b));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.translate = function(context,parameters) {
	$s.push("xpath.library.StringLibrary::translate");
	var $spos = $s.length;
	if(parameters.length != 3) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var string = parameters[0].getString();
	var fromChars = parameters[1].getString();
	var toChars = parameters[2].getString();
	var translations = new Hash();
	var i = fromChars.length;
	while(i > 0) {
		--i;
		translations.set(fromChars.charAt(i),toChars.charAt(i));
	}
	var buf = new StringBuf();
	{
		var _g1 = 0, _g = string.length;
		while(_g1 < _g) {
			var i1 = _g1++;
			var c = string.charAt(i1);
			if(translations.exists(c)) {
				buf.b += translations.get(c);
			}
			else {
				buf.b += c;
			}
		}
	}
	{
		var $tmp = new xpath.value.XPathString(buf.b);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.StringLibrary.prototype.__class__ = xpath.library.StringLibrary;
sandy.events.QueueEvent = function(type,bubbles,cancelable) { if( type === $_ ) return; {
	$s.push("sandy.events.QueueEvent::new");
	var $spos = $s.length;
	if(bubbles == null) bubbles = false;
	if(cancelable == null) cancelable = false;
	neash.events.Event.apply(this,[type,bubbles,cancelable]);
	this._loaders = this.__getLoaders();
	$s.pop();
}}
sandy.events.QueueEvent.__name__ = ["sandy","events","QueueEvent"];
sandy.events.QueueEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) sandy.events.QueueEvent.prototype[k] = neash.events.Event.prototype[k];
sandy.events.QueueEvent.prototype.__getLoaders = function() {
	$s.push("sandy.events.QueueEvent::__getLoaders");
	var $spos = $s.length;
	{
		var $tmp = this._loaders;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.events.QueueEvent.prototype.__setLoaders = function(loaderObject) {
	$s.push("sandy.events.QueueEvent::__setLoaders");
	var $spos = $s.length;
	this._loaders = loaderObject;
	{
		$s.pop();
		return loaderObject;
	}
	$s.pop();
}
sandy.events.QueueEvent.prototype._loaders = null;
sandy.events.QueueEvent.prototype.clone = function() {
	$s.push("sandy.events.QueueEvent::clone");
	var $spos = $s.length;
	var e = new sandy.events.QueueEvent(this.type,this.bubbles,this.cancelable);
	e.__setLoaders(this._loaders);
	{
		$s.pop();
		return e;
	}
	$s.pop();
}
sandy.events.QueueEvent.prototype.loaders = null;
sandy.events.QueueEvent.prototype.__class__ = sandy.events.QueueEvent;
sandy.bounds.BBox = function(p_min,p_max) { if( p_min === $_ ) return; {
	$s.push("sandy.bounds.BBox::new");
	var $spos = $s.length;
	this.uptodate = false;
	this.min = ((p_min != null)?p_min:new sandy.core.data.Vector(-0.5,-0.5,-0.5));
	this.max = ((p_max != null)?p_max:new sandy.core.data.Vector(0.5,0.5,0.5));
	this.tmin = new sandy.core.data.Vector();
	this.tmax = new sandy.core.data.Vector();
	this.aCorners = new Array();
	this.aTCorners = new Array();
	this.__computeCorners(false);
	$s.pop();
}}
sandy.bounds.BBox.__name__ = ["sandy","bounds","BBox"];
sandy.bounds.BBox.create = function(p_aVertices) {
	$s.push("sandy.bounds.BBox::create");
	var $spos = $s.length;
	if(p_aVertices.length == 0) {
		$s.pop();
		return null;
	}
	var l = p_aVertices.length;
	var l_min = new sandy.core.data.Vector();
	var l_max = new sandy.core.data.Vector();
	var lTmp = [];
	var t = p_aVertices.copy();
	t.sort(function(a,b) {
		$s.push("sandy.bounds.BBox::create@82");
		var $spos = $s.length;
		{
			var $tmp = ((a.x > b.x)?1:(a.x < b.x?-1:0));
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	{
		var _g1 = 0, _g = t.length;
		while(_g1 < _g) {
			var i = _g1++;
			lTmp.push(i);
		}
	}
	l_min.x = p_aVertices[lTmp[0]].x;
	l_max.x = p_aVertices[lTmp[lTmp.length - 1]].x;
	var t1 = p_aVertices.copy();
	t1.sort(function(a,b) {
		$s.push("sandy.bounds.BBox::create@92");
		var $spos = $s.length;
		{
			var $tmp = ((a.y > b.y)?1:(a.y < b.y?-1:0));
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	{
		var _g1 = 0, _g = t1.length;
		while(_g1 < _g) {
			var i = _g1++;
			lTmp.push(i);
		}
	}
	l_min.y = p_aVertices[lTmp[0]].y;
	l_max.y = p_aVertices[lTmp[lTmp.length - 1]].y;
	var t2 = p_aVertices.copy();
	t2.sort(function(a,b) {
		$s.push("sandy.bounds.BBox::create@102");
		var $spos = $s.length;
		{
			var $tmp = ((a.z > b.z)?1:(a.z < b.z?-1:0));
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	{
		var _g1 = 0, _g = t2.length;
		while(_g1 < _g) {
			var i = _g1++;
			lTmp.push(i);
		}
	}
	l_min.z = p_aVertices[lTmp[0]].z;
	l_max.z = p_aVertices[lTmp[lTmp.length - 1]].z;
	{
		var $tmp = new sandy.bounds.BBox(l_min,l_max);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.bounds.BBox.prototype.__computeCorners = function(p_bRecalcVertices) {
	$s.push("sandy.bounds.BBox::__computeCorners");
	var $spos = $s.length;
	p_bRecalcVertices = ((p_bRecalcVertices != null)?p_bRecalcVertices:false);
	var minx, miny, minz, maxx, maxy, maxz;
	if(p_bRecalcVertices == true) {
		minx = this.tmin.x;
		miny = this.tmin.y;
		minz = this.tmin.z;
		maxx = this.tmax.x;
		maxy = this.tmax.y;
		maxz = this.tmax.z;
	}
	else {
		minx = this.min.x;
		miny = this.min.y;
		minz = this.min.z;
		maxx = this.max.x;
		maxy = this.max.y;
		maxz = this.max.z;
	}
	this.aTCorners[0] = new sandy.core.data.Vector();
	this.aCorners[0] = new sandy.core.data.Vector((minx),(maxy),(maxz));
	this.aTCorners[1] = new sandy.core.data.Vector();
	this.aCorners[1] = new sandy.core.data.Vector((maxx),(maxy),(maxz));
	this.aTCorners[2] = new sandy.core.data.Vector();
	this.aCorners[2] = new sandy.core.data.Vector((maxx),(miny),(maxz));
	this.aTCorners[3] = new sandy.core.data.Vector();
	this.aCorners[3] = new sandy.core.data.Vector((minx),(miny),(maxz));
	this.aTCorners[4] = new sandy.core.data.Vector();
	this.aCorners[4] = new sandy.core.data.Vector((minx),(maxy),(minz));
	this.aTCorners[5] = new sandy.core.data.Vector();
	this.aCorners[5] = new sandy.core.data.Vector((maxx),(maxy),(minz));
	this.aTCorners[6] = new sandy.core.data.Vector();
	this.aCorners[6] = new sandy.core.data.Vector((maxx),(miny),(minz));
	this.aTCorners[7] = new sandy.core.data.Vector();
	this.aCorners[7] = new sandy.core.data.Vector((minx),(miny),(minz));
	{
		var $tmp = this.aCorners;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.bounds.BBox.prototype.aCorners = null;
sandy.bounds.BBox.prototype.aTCorners = null;
sandy.bounds.BBox.prototype.clone = function() {
	$s.push("sandy.bounds.BBox::clone");
	var $spos = $s.length;
	var l_oBBox = new sandy.bounds.BBox();
	l_oBBox.max = this.max.clone();
	l_oBBox.min = this.min.clone();
	l_oBBox.tmax = this.tmax.clone();
	l_oBBox.tmin = this.tmin.clone();
	{
		$s.pop();
		return l_oBBox;
	}
	$s.pop();
}
sandy.bounds.BBox.prototype.getCenter = function() {
	$s.push("sandy.bounds.BBox::getCenter");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector((this.max.x + this.min.x) / 2,(this.max.y + this.min.y) / 2,(this.max.z + this.min.z) / 2);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.bounds.BBox.prototype.getSize = function() {
	$s.push("sandy.bounds.BBox::getSize");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(Math.abs(this.max.x - this.min.x),Math.abs(this.max.y - this.min.y),Math.abs(this.max.z - this.min.z));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.bounds.BBox.prototype.max = null;
sandy.bounds.BBox.prototype.min = null;
sandy.bounds.BBox.prototype.tmax = null;
sandy.bounds.BBox.prototype.tmin = null;
sandy.bounds.BBox.prototype.toString = function() {
	$s.push("sandy.bounds.BBox::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.bounds.BBox";
	}
	$s.pop();
}
sandy.bounds.BBox.prototype.transform = function(p_oMatrix) {
	$s.push("sandy.bounds.BBox::transform");
	var $spos = $s.length;
	this.aTCorners[0].copy(this.aCorners[0]);
	p_oMatrix.vectorMult(this.aTCorners[0]);
	this.tmin.copy(this.aTCorners[0]);
	this.tmax.copy(this.tmin);
	var lVector;
	{
		var _g = 1;
		while(_g < 8) {
			var lId = _g++;
			this.aTCorners[lId].copy(this.aCorners[lId]);
			p_oMatrix.vectorMult(this.aTCorners[lId]);
			lVector = this.aTCorners[lId];
			if(lVector.x < this.tmin.x) this.tmin.x = lVector.x;
			else if(lVector.x > this.tmax.x) this.tmax.x = lVector.x;
			if(lVector.y < this.tmin.y) this.tmin.y = lVector.y;
			else if(lVector.y > this.tmax.y) this.tmax.y = lVector.y;
			if(lVector.z < this.tmin.z) this.tmin.z = lVector.z;
			else if(lVector.z > this.tmax.z) this.tmax.z = lVector.z;
		}
	}
	this.uptodate = true;
	$s.pop();
}
sandy.bounds.BBox.prototype.uptodate = null;
sandy.bounds.BBox.prototype.__class__ = sandy.bounds.BBox;
canvas.geom = {}
canvas.geom.Rectangle = function(inX,inY,inWidth,inHeight) { if( inX === $_ ) return; {
	$s.push("canvas.geom.Rectangle::new");
	var $spos = $s.length;
	this.x = (inX == null?0:inX);
	this.y = (inY == null?0:inY);
	this.width = (inWidth == null?0:inWidth);
	this.height = (inHeight == null?0:inHeight);
	$s.pop();
}}
canvas.geom.Rectangle.__name__ = ["canvas","geom","Rectangle"];
canvas.geom.Rectangle.prototype.bottom = null;
canvas.geom.Rectangle.prototype.bottomRight = null;
canvas.geom.Rectangle.prototype.clone = function() {
	$s.push("canvas.geom.Rectangle::clone");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Rectangle(this.x,this.y,this.width,this.height);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.contains = function(inX,inY) {
	$s.push("canvas.geom.Rectangle::contains");
	var $spos = $s.length;
	{
		var $tmp = inX >= this.x && inY >= this.y && inX < this.get_right() && inY < this.get_bottom();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.containsPoint = function(point) {
	$s.push("canvas.geom.Rectangle::containsPoint");
	var $spos = $s.length;
	{
		var $tmp = this.contains(point.x,point.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.containsRect = function(rect) {
	$s.push("canvas.geom.Rectangle::containsRect");
	var $spos = $s.length;
	{
		var $tmp = this.contains(rect.x,rect.y) && this.containsPoint(rect.get_bottomRight());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.equals = function(toCompare) {
	$s.push("canvas.geom.Rectangle::equals");
	var $spos = $s.length;
	{
		var $tmp = this.x == toCompare.x && this.y == toCompare.y && this.width == toCompare.width && this.height == toCompare.height;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.extendBounds = function(r) {
	$s.push("canvas.geom.Rectangle::extendBounds");
	var $spos = $s.length;
	var dx = this.x - r.x;
	if(dx > 0) {
		this.x -= dx;
		this.width += dx;
	}
	var dy = this.y - r.y;
	if(dy > 0) {
		this.y -= dy;
		this.height += dy;
	}
	if(r.get_right() > this.get_right()) this.set_right(r.get_right());
	if(r.get_bottom() > this.get_bottom()) this.set_bottom(r.get_bottom());
	$s.pop();
}
canvas.geom.Rectangle.prototype.get_bottom = function() {
	$s.push("canvas.geom.Rectangle::get_bottom");
	var $spos = $s.length;
	{
		var $tmp = this.y + this.height;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.get_bottomRight = function() {
	$s.push("canvas.geom.Rectangle::get_bottomRight");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(this.x + this.width,this.y + this.height);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.get_left = function() {
	$s.push("canvas.geom.Rectangle::get_left");
	var $spos = $s.length;
	{
		var $tmp = this.x;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.get_right = function() {
	$s.push("canvas.geom.Rectangle::get_right");
	var $spos = $s.length;
	{
		var $tmp = this.x + this.width;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.get_size = function() {
	$s.push("canvas.geom.Rectangle::get_size");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(this.width,this.height);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.get_top = function() {
	$s.push("canvas.geom.Rectangle::get_top");
	var $spos = $s.length;
	{
		var $tmp = this.y;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.get_topLeft = function() {
	$s.push("canvas.geom.Rectangle::get_topLeft");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(this.x,this.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.height = null;
canvas.geom.Rectangle.prototype.inflate = function(dx,dy) {
	$s.push("canvas.geom.Rectangle::inflate");
	var $spos = $s.length;
	this.x -= dx;
	this.width += dx * 2;
	this.y -= dy;
	this.height += dy * 2;
	$s.pop();
}
canvas.geom.Rectangle.prototype.inflatePoint = function(point) {
	$s.push("canvas.geom.Rectangle::inflatePoint");
	var $spos = $s.length;
	this.inflate(point.x,point.y);
	$s.pop();
}
canvas.geom.Rectangle.prototype.intersection = function(toIntersect) {
	$s.push("canvas.geom.Rectangle::intersection");
	var $spos = $s.length;
	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) {
		var $tmp = new canvas.geom.Rectangle();
		$s.pop();
		return $tmp;
	}
	var y0 = (this.y < toIntersect.y?toIntersect.x:this.y);
	var y1 = (this.get_bottom() > toIntersect.get_bottom()?toIntersect.get_bottom():this.get_bottom());
	if(y1 <= y0) {
		var $tmp = new canvas.geom.Rectangle();
		$s.pop();
		return $tmp;
	}
	{
		var $tmp = new canvas.geom.Rectangle(x0,y0,x1 - x0,y1 - y0);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.intersects = function(toIntersect) {
	$s.push("canvas.geom.Rectangle::intersects");
	var $spos = $s.length;
	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) {
		$s.pop();
		return false;
	}
	var y0 = (this.y < toIntersect.y?toIntersect.x:this.y);
	var y1 = (this.get_bottom() > toIntersect.get_bottom()?toIntersect.get_bottom():this.get_bottom());
	{
		var $tmp = y1 > y0;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.isEmpty = function() {
	$s.push("canvas.geom.Rectangle::isEmpty");
	var $spos = $s.length;
	{
		var $tmp = this.width == 0 && this.height == 0;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.left = null;
canvas.geom.Rectangle.prototype.offset = function(dx,dy) {
	$s.push("canvas.geom.Rectangle::offset");
	var $spos = $s.length;
	this.x += dx;
	this.y += dy;
	$s.pop();
}
canvas.geom.Rectangle.prototype.offsetPoint = function(point) {
	$s.push("canvas.geom.Rectangle::offsetPoint");
	var $spos = $s.length;
	this.x += point.x;
	this.y += point.y;
	$s.pop();
}
canvas.geom.Rectangle.prototype.right = null;
canvas.geom.Rectangle.prototype.setEmpty = function() {
	$s.push("canvas.geom.Rectangle::setEmpty");
	var $spos = $s.length;
	this.x = this.y = this.width = this.height = 0;
	$s.pop();
}
canvas.geom.Rectangle.prototype.set_bottom = function(b) {
	$s.push("canvas.geom.Rectangle::set_bottom");
	var $spos = $s.length;
	this.height = b - this.y;
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.set_bottomRight = function(p) {
	$s.push("canvas.geom.Rectangle::set_bottomRight");
	var $spos = $s.length;
	this.width = p.x - this.x;
	this.height = p.y - this.y;
	{
		var $tmp = p.clone();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.set_left = function(l) {
	$s.push("canvas.geom.Rectangle::set_left");
	var $spos = $s.length;
	this.x = l;
	{
		$s.pop();
		return l;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.set_right = function(r) {
	$s.push("canvas.geom.Rectangle::set_right");
	var $spos = $s.length;
	this.width = r - this.x;
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.set_size = function(p) {
	$s.push("canvas.geom.Rectangle::set_size");
	var $spos = $s.length;
	this.width = p.x;
	this.height = p.y;
	{
		var $tmp = p.clone();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.set_top = function(t) {
	$s.push("canvas.geom.Rectangle::set_top");
	var $spos = $s.length;
	this.y = t;
	{
		$s.pop();
		return t;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.set_topLeft = function(p) {
	$s.push("canvas.geom.Rectangle::set_topLeft");
	var $spos = $s.length;
	this.x = p.x;
	this.y = p.y;
	{
		var $tmp = p.clone();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.size = null;
canvas.geom.Rectangle.prototype.top = null;
canvas.geom.Rectangle.prototype.topLeft = null;
canvas.geom.Rectangle.prototype.transform = function(m) {
	$s.push("canvas.geom.Rectangle::transform");
	var $spos = $s.length;
	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 = tx0;
	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;
	{
		var $tmp = new canvas.geom.Rectangle(tx0 + m.tx,ty0 + m.ty,tx1 - tx0,ty1 - ty0);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.union = function(toUnion) {
	$s.push("canvas.geom.Rectangle::union");
	var $spos = $s.length;
	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.x:this.y);
	var y1 = (this.get_bottom() < toUnion.get_bottom()?toUnion.get_bottom():this.get_bottom());
	{
		var $tmp = new canvas.geom.Rectangle(x0,y0,x1 - x0,y1 - y0);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Rectangle.prototype.width = null;
canvas.geom.Rectangle.prototype.x = null;
canvas.geom.Rectangle.prototype.y = null;
canvas.geom.Rectangle.prototype.__class__ = canvas.geom.Rectangle;
neash.text.TextFormatAlign = function() { }
neash.text.TextFormatAlign.__name__ = ["neash","text","TextFormatAlign"];
neash.text.TextFormatAlign.prototype.__class__ = neash.text.TextFormatAlign;
xpath.parser.ParseError = function(message) { if( message === $_ ) return; {
	$s.push("xpath.parser.ParseError::new");
	var $spos = $s.length;
	xpath.XPathError.apply(this,[message]);
	$s.pop();
}}
xpath.parser.ParseError.__name__ = ["xpath","parser","ParseError"];
xpath.parser.ParseError.__super__ = xpath.XPathError;
for(var k in xpath.XPathError.prototype ) xpath.parser.ParseError.prototype[k] = xpath.XPathError.prototype[k];
xpath.parser.ParseError.prototype.toString = function() {
	$s.push("xpath.parser.ParseError::toString");
	var $spos = $s.length;
	var string;
	if(this.message != null) string = this.message;
	else string = "ParseError";
	{
		$s.pop();
		return string;
	}
	$s.pop();
}
xpath.parser.ParseError.prototype.__class__ = xpath.parser.ParseError;
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.Custom = function(e) { var $x = ["Custom",3,e]; $x.__enum__ = haxe.io.Error; $x.toString = $estr; return $x; }
haxe.io.Error.OutsideBounds = ["OutsideBounds",2];
haxe.io.Error.OutsideBounds.toString = $estr;
haxe.io.Error.OutsideBounds.__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.Eof = function(p) { if( p === $_ ) return; {
	$s.push("haxe.io.Eof::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
haxe.io.Eof.__name__ = ["haxe","io","Eof"];
haxe.io.Eof.prototype.toString = function() {
	$s.push("haxe.io.Eof::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "Eof";
	}
	$s.pop();
}
haxe.io.Eof.prototype.__class__ = haxe.io.Eof;
xpath.tokenizer.token.BeginXPathTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.BeginXPathTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.BeginXPathTokenizer.__name__ = ["xpath","tokenizer","token","BeginXPathTokenizer"];
xpath.tokenizer.token.BeginXPathTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.BeginXPathTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.BeginXPathTokenizer.instance = null;
xpath.tokenizer.token.BeginXPathTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.BeginXPathTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.BeginXPathTokenizer.instance == null) xpath.tokenizer.token.BeginXPathTokenizer.instance = new xpath.tokenizer.token.BeginXPathTokenizer();
	{
		var $tmp = xpath.tokenizer.token.BeginXPathTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.BeginXPathTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.BeginXPathTokenizer::tokenize");
	var $spos = $s.length;
	if(input.position == 0) {
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.BeginXPathToken();
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		var characterLength = this.countWhitespace(input.query,0);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "BeginXPath", position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.BeginXPathTokenizer.prototype.__class__ = xpath.tokenizer.token.BeginXPathTokenizer;
xpath.library.NumberLibrary = function() { }
xpath.library.NumberLibrary.__name__ = ["xpath","library","NumberLibrary"];
xpath.library.NumberLibrary.number = function(context,parameters) {
	$s.push("xpath.library.NumberLibrary::number");
	var $spos = $s.length;
	if(parameters.length > 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	if(parameters[0] == null) {
		var $tmp = new xpath.value.XPathNumber(Std.parseFloat(context.node.getStringValue()));
		$s.pop();
		return $tmp;
	}
	else {
		var $tmp = parameters[0].getXPathNumber();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NumberLibrary.sum = function(context,parameters) {
	$s.push("xpath.library.NumberLibrary::sum");
	var $spos = $s.length;
	if(parameters.length != 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	if(!Std["is"](parameters[0],xpath.value.XPathNodeSet)) {
		throw new xpath.EvaluationException("Parameter was a " + parameters[0].typeName + ", but a node set was expected");
	}
	var result = 0.0;
	var nodes = function($this) {
		var $r;
		var tmp = parameters[0];
		$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this).getNodes();
	{ var $it53 = nodes.iterator();
	while( $it53.hasNext() ) { var node = $it53.next();
	{
		result += Std.parseFloat(node.getStringValue());
	}
	}}
	{
		var $tmp = new xpath.value.XPathNumber(result);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NumberLibrary.floor = function(context,parameters) {
	$s.push("xpath.library.NumberLibrary::floor");
	var $spos = $s.length;
	if(parameters.length != 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var number = parameters[0].getFloat();
	{
		var $tmp = new xpath.value.XPathNumber(Math.floor(number));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NumberLibrary.ceiling = function(context,parameters) {
	$s.push("xpath.library.NumberLibrary::ceiling");
	var $spos = $s.length;
	if(parameters.length != 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var number = parameters[0].getFloat();
	{
		var $tmp = new xpath.value.XPathNumber(Math.ceil(number));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NumberLibrary.round = function(context,parameters) {
	$s.push("xpath.library.NumberLibrary::round");
	var $spos = $s.length;
	if(parameters.length != 1) {
		throw new xpath.EvaluationException("Incorrect parameter count");
	}
	var number = parameters[0].getFloat();
	{
		var $tmp = new xpath.value.XPathNumber(Math.round(number));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.library.NumberLibrary.prototype.__class__ = xpath.library.NumberLibrary;
nme.filters = {}
nme.filters.BitmapFilter = function(inType) { if( inType === $_ ) return; {
	$s.push("nme.filters.BitmapFilter::new");
	var $spos = $s.length;
	this.mType = inType;
	$s.pop();
}}
nme.filters.BitmapFilter.__name__ = ["nme","filters","BitmapFilter"];
nme.filters.BitmapFilter.prototype.clone = function() {
	$s.push("nme.filters.BitmapFilter::clone");
	var $spos = $s.length;
	throw ("clone not implemented");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
nme.filters.BitmapFilter.prototype.mType = null;
nme.filters.BitmapFilter.prototype.__class__ = nme.filters.BitmapFilter;
canvas.filters = {}
canvas.filters.BlurFilter = function(inBlurX,inBlurY,inQuality) { if( inBlurX === $_ ) return; {
	$s.push("canvas.filters.BlurFilter::new");
	var $spos = $s.length;
	nme.filters.BitmapFilter.apply(this,["BlurFilter"]);
	this.blurX = (inBlurX == null?4.0:inBlurX);
	this.blurY = (inBlurY == null?4.0:inBlurY);
	this.quality = (inQuality == null?1:inQuality);
	$s.pop();
}}
canvas.filters.BlurFilter.__name__ = ["canvas","filters","BlurFilter"];
canvas.filters.BlurFilter.__super__ = nme.filters.BitmapFilter;
for(var k in nme.filters.BitmapFilter.prototype ) canvas.filters.BlurFilter.prototype[k] = nme.filters.BitmapFilter.prototype[k];
canvas.filters.BlurFilter.prototype.blurX = null;
canvas.filters.BlurFilter.prototype.blurY = null;
canvas.filters.BlurFilter.prototype.clone = function() {
	$s.push("canvas.filters.BlurFilter::clone");
	var $spos = $s.length;
	{
		var $tmp = new canvas.filters.BlurFilter(this.blurX,this.blurY,this.quality);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.filters.BlurFilter.prototype.quality = null;
canvas.filters.BlurFilter.prototype.__class__ = canvas.filters.BlurFilter;
haxe.io.Input = function() { }
haxe.io.Input.__name__ = ["haxe","io","Input"];
haxe.io.Input.prototype.bigEndian = null;
haxe.io.Input.prototype.close = function() {
	$s.push("haxe.io.Input::close");
	var $spos = $s.length;
	null;
	$s.pop();
}
haxe.io.Input.prototype.read = function(nbytes) {
	$s.push("haxe.io.Input::read");
	var $spos = $s.length;
	var s = haxe.io.Bytes.alloc(nbytes);
	var p = 0;
	while(nbytes > 0) {
		var k = this.readBytes(s,p,nbytes);
		if(k == 0) throw haxe.io.Error.Blocked;
		p += k;
		nbytes -= k;
	}
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
haxe.io.Input.prototype.readAll = function(bufsize) {
	$s.push("haxe.io.Input::readAll");
	var $spos = $s.length;
	if(bufsize == null) bufsize = (1 << 14);
	var buf = haxe.io.Bytes.alloc(bufsize);
	var total = new haxe.io.BytesBuffer();
	try {
		while(true) {
			var len = this.readBytes(buf,0,bufsize);
			if(len == 0) throw haxe.io.Error.Blocked;
			total.addBytes(buf,0,len);
		}
	}
	catch( $e54 ) {
		if( js.Boot.__instanceof($e54,haxe.io.Eof) ) {
			var e = $e54;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				null;
			}
		} else throw($e54);
	}
	{
		var $tmp = total.getBytes();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readByte = function() {
	$s.push("haxe.io.Input::readByte");
	var $spos = $s.length;
	{
		var $tmp = function($this) {
			var $r;
			throw "Not implemented";
			return $r;
		}(this);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readBytes = function(s,pos,len) {
	$s.push("haxe.io.Input::readBytes");
	var $spos = $s.length;
	var k = len;
	var b = s.b;
	if(pos < 0 || len < 0 || pos + len > s.length) throw haxe.io.Error.OutsideBounds;
	while(k > 0) {
		b[pos] = this.readByte();
		pos++;
		k--;
	}
	{
		$s.pop();
		return len;
	}
	$s.pop();
}
haxe.io.Input.prototype.readDouble = function() {
	$s.push("haxe.io.Input::readDouble");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
haxe.io.Input.prototype.readFloat = function() {
	$s.push("haxe.io.Input::readFloat");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
haxe.io.Input.prototype.readFullBytes = function(s,pos,len) {
	$s.push("haxe.io.Input::readFullBytes");
	var $spos = $s.length;
	while(len > 0) {
		var k = this.readBytes(s,pos,len);
		pos += k;
		len -= k;
	}
	$s.pop();
}
haxe.io.Input.prototype.readInt16 = function() {
	$s.push("haxe.io.Input::readInt16");
	var $spos = $s.length;
	var ch1 = this.readByte();
	var ch2 = this.readByte();
	var n = (this.bigEndian?ch2 | (ch1 << 8):ch1 | (ch2 << 8));
	if((n & 32768) != 0) {
		var $tmp = n - 65536;
		$s.pop();
		return $tmp;
	}
	{
		$s.pop();
		return n;
	}
	$s.pop();
}
haxe.io.Input.prototype.readInt24 = function() {
	$s.push("haxe.io.Input::readInt24");
	var $spos = $s.length;
	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) {
		var $tmp = n - 16777216;
		$s.pop();
		return $tmp;
	}
	{
		$s.pop();
		return n;
	}
	$s.pop();
}
haxe.io.Input.prototype.readInt31 = function() {
	$s.push("haxe.io.Input::readInt31");
	var $spos = $s.length;
	var ch1, ch2, ch3, ch4;
	if(this.bigEndian) {
		ch4 = this.readByte();
		ch3 = this.readByte();
		ch2 = this.readByte();
		ch1 = this.readByte();
	}
	else {
		ch1 = this.readByte();
		ch2 = this.readByte();
		ch3 = this.readByte();
		ch4 = this.readByte();
	}
	if(((ch4 & 128) == 0) != ((ch4 & 64) == 0)) throw haxe.io.Error.Overflow;
	{
		var $tmp = ((ch1 | (ch2 << 8)) | (ch3 << 16)) | (ch4 << 24);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readInt32 = function() {
	$s.push("haxe.io.Input::readInt32");
	var $spos = $s.length;
	var ch1 = this.readByte();
	var ch2 = this.readByte();
	var ch3 = this.readByte();
	var ch4 = this.readByte();
	{
		var $tmp = (this.bigEndian?(((ch1 << 8) | ch2) << 16) | ((ch3 << 8) | ch4):(((ch4 << 8) | ch3) << 16) | ((ch2 << 8) | ch1));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readInt8 = function() {
	$s.push("haxe.io.Input::readInt8");
	var $spos = $s.length;
	var n = this.readByte();
	if(n >= 128) {
		var $tmp = n - 256;
		$s.pop();
		return $tmp;
	}
	{
		$s.pop();
		return n;
	}
	$s.pop();
}
haxe.io.Input.prototype.readLine = function() {
	$s.push("haxe.io.Input::readLine");
	var $spos = $s.length;
	var buf = new StringBuf();
	var last;
	var s;
	try {
		while((last = this.readByte()) != 10) buf.b += String.fromCharCode(last);
		s = buf.b;
		if(s.charCodeAt(s.length - 1) == 13) s = s.substr(0,-1);
	}
	catch( $e55 ) {
		if( js.Boot.__instanceof($e55,haxe.io.Eof) ) {
			var e = $e55;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				s = buf.b;
				if(s.length == 0) throw (e);
			}
		} else throw($e55);
	}
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
haxe.io.Input.prototype.readString = function(len) {
	$s.push("haxe.io.Input::readString");
	var $spos = $s.length;
	var b = haxe.io.Bytes.alloc(len);
	this.readFullBytes(b,0,len);
	{
		var $tmp = b.toString();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readUInt16 = function() {
	$s.push("haxe.io.Input::readUInt16");
	var $spos = $s.length;
	var ch1 = this.readByte();
	var ch2 = this.readByte();
	{
		var $tmp = (this.bigEndian?ch2 | (ch1 << 8):ch1 | (ch2 << 8));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readUInt24 = function() {
	$s.push("haxe.io.Input::readUInt24");
	var $spos = $s.length;
	var ch1 = this.readByte();
	var ch2 = this.readByte();
	var ch3 = this.readByte();
	{
		var $tmp = (this.bigEndian?(ch3 | (ch2 << 8)) | (ch1 << 16):(ch1 | (ch2 << 8)) | (ch3 << 16));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readUInt30 = function() {
	$s.push("haxe.io.Input::readUInt30");
	var $spos = $s.length;
	var ch1 = this.readByte();
	var ch2 = this.readByte();
	var ch3 = this.readByte();
	var ch4 = this.readByte();
	if(((this.bigEndian?ch1:ch4)) >= 64) throw haxe.io.Error.Overflow;
	{
		var $tmp = (this.bigEndian?((ch4 | (ch3 << 8)) | (ch2 << 16)) | (ch1 << 24):((ch1 | (ch2 << 8)) | (ch3 << 16)) | (ch4 << 24));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.readUntil = function(end) {
	$s.push("haxe.io.Input::readUntil");
	var $spos = $s.length;
	var buf = new StringBuf();
	var last;
	while((last = this.readByte()) != end) buf.b += String.fromCharCode(last);
	{
		var $tmp = buf.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.Input.prototype.setEndian = function(b) {
	$s.push("haxe.io.Input::setEndian");
	var $spos = $s.length;
	this.bigEndian = b;
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
haxe.io.Input.prototype.__class__ = haxe.io.Input;
haxe.io.BytesInput = function(b,pos,len) { if( b === $_ ) return; {
	$s.push("haxe.io.BytesInput::new");
	var $spos = $s.length;
	if(pos == null) pos = 0;
	if(len == null) len = b.length - pos;
	if(pos < 0 || len < 0 || pos + len > b.length) throw haxe.io.Error.OutsideBounds;
	this.b = b.b;
	this.pos = pos;
	this.len = len;
	$s.pop();
}}
haxe.io.BytesInput.__name__ = ["haxe","io","BytesInput"];
haxe.io.BytesInput.__super__ = haxe.io.Input;
for(var k in haxe.io.Input.prototype ) haxe.io.BytesInput.prototype[k] = haxe.io.Input.prototype[k];
haxe.io.BytesInput.prototype.b = null;
haxe.io.BytesInput.prototype.len = null;
haxe.io.BytesInput.prototype.pos = null;
haxe.io.BytesInput.prototype.readByte = function() {
	$s.push("haxe.io.BytesInput::readByte");
	var $spos = $s.length;
	if(this.len == 0) throw new haxe.io.Eof();
	this.len--;
	{
		var $tmp = this.b[this.pos++];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.io.BytesInput.prototype.readBytes = function(buf,pos,len) {
	$s.push("haxe.io.BytesInput::readBytes");
	var $spos = $s.length;
	if(pos < 0 || len < 0 || pos + len > this.b.length) throw haxe.io.Error.OutsideBounds;
	if(this.len == 0 && len > 0) throw new haxe.io.Eof();
	if(this.len < len) len = this.len;
	var b1 = this.b;
	var b2 = buf.b;
	{
		var _g = 0;
		while(_g < len) {
			var i = _g++;
			b2[pos + i] = b1[this.pos + i];
		}
	}
	this.pos += len;
	this.len -= len;
	{
		$s.pop();
		return len;
	}
	$s.pop();
}
haxe.io.BytesInput.prototype.__class__ = haxe.io.BytesInput;
xpath.tokenizer.token.EndPredicateTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.EndPredicateTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.EndPredicateToken(),"]","EndPredicate"]);
	$s.pop();
}}
xpath.tokenizer.token.EndPredicateTokenizer.__name__ = ["xpath","tokenizer","token","EndPredicateTokenizer"];
xpath.tokenizer.token.EndPredicateTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.EndPredicateTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.EndPredicateTokenizer.instance = null;
xpath.tokenizer.token.EndPredicateTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.EndPredicateTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.EndPredicateTokenizer.instance == null) xpath.tokenizer.token.EndPredicateTokenizer.instance = new xpath.tokenizer.token.EndPredicateTokenizer();
	{
		var $tmp = xpath.tokenizer.token.EndPredicateTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.EndPredicateTokenizer.prototype.__class__ = xpath.tokenizer.token.EndPredicateTokenizer;
neash.display.StageAlign = { __ename__ : ["neash","display","StageAlign"], __constructs__ : ["TOP_RIGHT","TOP_LEFT","TOP","RIGHT","LEFT","BOTTOM_RIGHT","BOTTOM_LEFT","BOTTOM"] }
neash.display.StageAlign.BOTTOM = ["BOTTOM",7];
neash.display.StageAlign.BOTTOM.toString = $estr;
neash.display.StageAlign.BOTTOM.__enum__ = neash.display.StageAlign;
neash.display.StageAlign.BOTTOM_LEFT = ["BOTTOM_LEFT",6];
neash.display.StageAlign.BOTTOM_LEFT.toString = $estr;
neash.display.StageAlign.BOTTOM_LEFT.__enum__ = neash.display.StageAlign;
neash.display.StageAlign.BOTTOM_RIGHT = ["BOTTOM_RIGHT",5];
neash.display.StageAlign.BOTTOM_RIGHT.toString = $estr;
neash.display.StageAlign.BOTTOM_RIGHT.__enum__ = neash.display.StageAlign;
neash.display.StageAlign.LEFT = ["LEFT",4];
neash.display.StageAlign.LEFT.toString = $estr;
neash.display.StageAlign.LEFT.__enum__ = neash.display.StageAlign;
neash.display.StageAlign.RIGHT = ["RIGHT",3];
neash.display.StageAlign.RIGHT.toString = $estr;
neash.display.StageAlign.RIGHT.__enum__ = neash.display.StageAlign;
neash.display.StageAlign.TOP = ["TOP",2];
neash.display.StageAlign.TOP.toString = $estr;
neash.display.StageAlign.TOP.__enum__ = neash.display.StageAlign;
neash.display.StageAlign.TOP_LEFT = ["TOP_LEFT",1];
neash.display.StageAlign.TOP_LEFT.toString = $estr;
neash.display.StageAlign.TOP_LEFT.__enum__ = neash.display.StageAlign;
neash.display.StageAlign.TOP_RIGHT = ["TOP_RIGHT",0];
neash.display.StageAlign.TOP_RIGHT.toString = $estr;
neash.display.StageAlign.TOP_RIGHT.__enum__ = neash.display.StageAlign;
neash.events.KeyboardEvent = function(type,bubbles,cancelable,inCharCode,inKeyCode,inKeyLocation,inCtrlKey,inAltKey,inShiftKey) { if( type === $_ ) return; {
	$s.push("neash.events.KeyboardEvent::new");
	var $spos = $s.length;
	neash.events.Event.apply(this,[type,bubbles,cancelable]);
	this.keyCode = inKeyCode;
	this.keyLocation = (inKeyLocation == null?0:inKeyLocation);
	this.charCode = (inCharCode == null?0:inCharCode);
	this.shiftKey = (inShiftKey == null?false:inShiftKey);
	this.altKey = (inAltKey == null?false:inAltKey);
	this.ctrlKey = (inCtrlKey == null?false:inCtrlKey);
	$s.pop();
}}
neash.events.KeyboardEvent.__name__ = ["neash","events","KeyboardEvent"];
neash.events.KeyboardEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) neash.events.KeyboardEvent.prototype[k] = neash.events.Event.prototype[k];
neash.events.KeyboardEvent.prototype.altKey = null;
neash.events.KeyboardEvent.prototype.charCode = null;
neash.events.KeyboardEvent.prototype.ctrlKey = null;
neash.events.KeyboardEvent.prototype.keyCode = null;
neash.events.KeyboardEvent.prototype.keyLocation = null;
neash.events.KeyboardEvent.prototype.shiftKey = null;
neash.events.KeyboardEvent.prototype.__class__ = neash.events.KeyboardEvent;
sandy.view.Frustum = function(p) { if( p === $_ ) return; {
	$s.push("sandy.view.Frustum::new");
	var $spos = $s.length;
	this.aPlanes = new Array();
	this.aPoints = new Array();
	this.aNormals = new Array();
	this.aConstants = new Array();
	$s.pop();
}}
sandy.view.Frustum.__name__ = ["sandy","view","Frustum"];
sandy.view.Frustum.prototype.aConstants = null;
sandy.view.Frustum.prototype.aNormals = null;
sandy.view.Frustum.prototype.aPlanes = null;
sandy.view.Frustum.prototype.aPoints = null;
sandy.view.Frustum.prototype.boxInFrustum = function(box) {
	$s.push("sandy.view.Frustum::boxInFrustum");
	var $spos = $s.length;
	var result = sandy.view.Frustum.INSIDE;
	var out, iin, lDist;
	{
		var _g = 0, _g1 = this.aPlanes;
		while(_g < _g1.length) {
			var plane = _g1[_g];
			++_g;
			out = 0;
			iin = 0;
			{
				var _g2 = 0, _g3 = box.aTCorners;
				while(_g2 < _g3.length) {
					var v = _g3[_g2];
					++_g2;
					lDist = plane.a * v.x + plane.b * v.y + plane.c * v.z + plane.d;
					if(lDist < 0) {
						out++;
					}
					else {
						iin++;
					}
					if(iin > 0 && out > 0) {
						break;
					}
				}
			}
			if(iin == 0) {
				{
					var $tmp = sandy.view.Frustum.OUTSIDE;
					$s.pop();
					return $tmp;
				}
			}
			else if(out > 0) {
				{
					var $tmp = sandy.view.Frustum.INTERSECT;
					$s.pop();
					return $tmp;
				}
			}
		}
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
sandy.view.Frustum.prototype.clipFrontPlane = function(p_aCvert,p_aUVCoords) {
	$s.push("sandy.view.Frustum::clipFrontPlane");
	var $spos = $s.length;
	if(p_aCvert.length <= 2) {
		$s.pop();
		return;
	}
	this.clipPolygon(this.aPlanes[0],p_aCvert,p_aUVCoords);
	$s.pop();
}
sandy.view.Frustum.prototype.clipFrustum = function(p_aCvert,p_aUVCoords) {
	$s.push("sandy.view.Frustum::clipFrustum");
	var $spos = $s.length;
	if(p_aCvert.length <= 2) {
		$s.pop();
		return;
	}
	this.clipPolygon(this.aPlanes[0],p_aCvert,p_aUVCoords);
	if(p_aCvert.length <= 2) {
		$s.pop();
		return;
	}
	this.clipPolygon(this.aPlanes[3],p_aCvert,p_aUVCoords);
	if(p_aCvert.length <= 2) {
		$s.pop();
		return;
	}
	this.clipPolygon(this.aPlanes[2],p_aCvert,p_aUVCoords);
	if(p_aCvert.length <= 2) {
		$s.pop();
		return;
	}
	this.clipPolygon(this.aPlanes[5],p_aCvert,p_aUVCoords);
	if(p_aCvert.length <= 2) {
		$s.pop();
		return;
	}
	this.clipPolygon(this.aPlanes[4],p_aCvert,p_aUVCoords);
	$s.pop();
}
sandy.view.Frustum.prototype.clipLineFrontPlane = function(p_aCvert) {
	$s.push("sandy.view.Frustum::clipLineFrontPlane");
	var $spos = $s.length;
	var l_oPlane = this.aPlanes[0];
	var tmp = p_aCvert.splice(0,p_aCvert.length);
	var v0 = tmp[0];
	var v1 = tmp[1];
	var l_nDist0 = l_oPlane.a * v0.wx + l_oPlane.b * v0.wy + l_oPlane.c * v0.wz + l_oPlane.d;
	var l_nDist1 = l_oPlane.a * v1.wx + l_oPlane.b * v1.wy + l_oPlane.c * v1.wz + l_oPlane.d;
	var d = 0;
	var t = new sandy.core.data.Vertex();
	if(l_nDist0 < 0 && l_nDist1 >= 0) {
		d = l_nDist0 / (l_nDist0 - l_nDist1);
		t.wx = (v0.wx + (v1.wx - v0.wx) * d);
		t.wy = (v0.wy + (v1.wy - v0.wy) * d);
		t.wz = (v0.wz + (v1.wz - v0.wz) * d);
		p_aCvert.push(t);
		p_aCvert.push(v1);
	}
	else if(l_nDist1 < 0 && l_nDist0 >= 0) {
		d = l_nDist0 / (l_nDist0 - l_nDist1);
		t.wx = (v0.wx + (v1.wx - v0.wx) * d);
		t.wy = (v0.wy + (v1.wy - v0.wy) * d);
		t.wz = (v0.wz + (v1.wz - v0.wz) * d);
		p_aCvert.push(v0);
		p_aCvert.push(t);
	}
	else if(l_nDist1 < 0 && l_nDist0 < 0) {
		p_aCvert = null;
	}
	else if(l_nDist1 > 0 && l_nDist0 > 0) {
		p_aCvert.push(v0);
		p_aCvert.push(v1);
	}
	$s.pop();
}
sandy.view.Frustum.prototype.clipPolygon = function(p_oPlane,p_aCvert,p_aUVCoords) {
	$s.push("sandy.view.Frustum::clipPolygon");
	var $spos = $s.length;
	var allin = true, allout = true;
	var v;
	var i, l = p_aCvert.length, lDist;
	var aDist = new Array();
	{
		var _g = 0;
		while(_g < p_aCvert.length) {
			var v1 = p_aCvert[_g];
			++_g;
			lDist = p_oPlane.a * v1.wx + p_oPlane.b * v1.wy + p_oPlane.c * v1.wz + p_oPlane.d;
			if(lDist < 0) allin = false;
			if(lDist >= 0) allout = false;
			aDist.push(lDist);
		}
	}
	if(allin) {
		{
			$s.pop();
			return;
		}
	}
	else if(allout) {
		p_aCvert.splice(0,p_aCvert.length);
		p_aUVCoords.splice(0,p_aUVCoords.length);
		{
			$s.pop();
			return;
		}
	}
	var tmp = p_aCvert.splice(0,p_aCvert.length);
	var l_aTmpUv = p_aUVCoords.splice(0,p_aUVCoords.length);
	var l_oUV1 = l_aTmpUv[0], l_oUV2 = null, l_oUVTmp = null;
	var v1 = tmp[0], v2 = null, t = null;
	var d, dist2, dist1 = aDist[0];
	var clipped = false, inside = (dist1 >= 0);
	var curv = 0;
	{
		var _g1 = 1, _g = (l + 1);
		while(_g1 < _g) {
			var i1 = _g1++;
			v2 = tmp[i1 % l];
			l_oUV2 = l_aTmpUv[i1 % l];
			dist2 = aDist[i1 % l];
			if(inside && (dist2 >= 0)) {
				p_aCvert.push(v2);
				p_aUVCoords.push(l_oUV2);
			}
			else if((!inside) && (dist2 >= 0)) {
				clipped = inside = true;
				t = new sandy.core.data.Vertex();
				d = dist1 / (dist1 - dist2);
				t.wx = (v1.wx + (v2.wx - v1.wx) * d);
				t.wy = (v1.wy + (v2.wy - v1.wy) * d);
				t.wz = (v1.wz + (v2.wz - v1.wz) * d);
				p_aCvert.push(t);
				p_aCvert.push(v2);
				l_oUVTmp = new sandy.core.data.UVCoord();
				l_oUVTmp.u = (l_oUV1.u + (l_oUV2.u - l_oUV1.u) * d);
				l_oUVTmp.v = (l_oUV1.v + (l_oUV2.v - l_oUV1.v) * d);
				p_aUVCoords.push(l_oUVTmp);
				p_aUVCoords.push(l_oUV2);
			}
			else if(inside && (dist2 < 0)) {
				clipped = true;
				inside = false;
				t = new sandy.core.data.Vertex();
				d = dist1 / (dist1 - dist2);
				t.wx = (v1.wx + (v2.wx - v1.wx) * d);
				t.wy = (v1.wy + (v2.wy - v1.wy) * d);
				t.wz = (v1.wz + (v2.wz - v1.wz) * d);
				l_oUVTmp = new sandy.core.data.UVCoord();
				l_oUVTmp.u = (l_oUV1.u + (l_oUV2.u - l_oUV1.u) * d);
				l_oUVTmp.v = (l_oUV1.v + (l_oUV2.v - l_oUV1.v) * d);
				p_aUVCoords.push(l_oUVTmp);
				p_aCvert.push(t);
			}
			else {
				clipped = true;
			}
			v1 = v2;
			dist1 = dist2;
			l_oUV1 = l_oUV2;
		}
	}
	aDist = null;
	$s.pop();
}
sandy.view.Frustum.prototype.computePlanes = function(p_nAspect,p_nNear,p_nFar,p_nFov) {
	$s.push("sandy.view.Frustum::computePlanes");
	var $spos = $s.length;
	var lRadAngle = sandy.util.NumberUtil.toRadian(p_nFov);
	var tang = Math.tan(lRadAngle * 0.5);
	var yNear = -tang * p_nNear;
	var xNear = yNear * p_nAspect;
	var yFar = yNear * p_nFar / p_nNear;
	var xFar = xNear * p_nFar / p_nNear;
	p_nNear = -p_nNear;
	p_nFar = -p_nFar;
	var p = this.aPoints;
	p[0] = new sandy.core.data.Vector(xNear,yNear,p_nNear);
	p[1] = new sandy.core.data.Vector(xNear,-yNear,p_nNear);
	p[2] = new sandy.core.data.Vector(-xNear,-yNear,p_nNear);
	p[3] = new sandy.core.data.Vector(-xNear,yNear,p_nNear);
	p[4] = new sandy.core.data.Vector(xFar,yFar,p_nFar);
	p[5] = new sandy.core.data.Vector(xFar,-yFar,p_nFar);
	p[6] = new sandy.core.data.Vector(-xFar,-yFar,p_nFar);
	p[7] = new sandy.core.data.Vector(-xFar,yFar,p_nFar);
	this.aPlanes[3] = sandy.math.PlaneMath.computePlaneFromPoints(p[2],p[3],p[6]);
	this.aPlanes[2] = sandy.math.PlaneMath.computePlaneFromPoints(p[0],p[1],p[4]);
	this.aPlanes[4] = sandy.math.PlaneMath.computePlaneFromPoints(p[0],p[7],p[3]);
	this.aPlanes[5] = sandy.math.PlaneMath.computePlaneFromPoints(p[1],p[2],p[5]);
	this.aPlanes[0] = sandy.math.PlaneMath.computePlaneFromPoints(p[0],p[2],p[1]);
	this.aPlanes[1] = sandy.math.PlaneMath.computePlaneFromPoints(p[4],p[5],p[6]);
	{
		var _g = 0;
		while(_g < 6) {
			var i = _g++;
			sandy.math.PlaneMath.normalizePlane(this.aPlanes[i]);
		}
	}
	$s.pop();
}
sandy.view.Frustum.prototype.extractPlanes = function(comboMatrix,normalize) {
	$s.push("sandy.view.Frustum::extractPlanes");
	var $spos = $s.length;
	this.aPlanes[0].a = comboMatrix.n14 + comboMatrix.n11;
	this.aPlanes[0].b = comboMatrix.n24 + comboMatrix.n21;
	this.aPlanes[0].c = comboMatrix.n34 + comboMatrix.n31;
	this.aPlanes[0].d = comboMatrix.n44 + comboMatrix.n41;
	this.aPlanes[1].a = comboMatrix.n14 - comboMatrix.n11;
	this.aPlanes[1].b = comboMatrix.n24 - comboMatrix.n21;
	this.aPlanes[1].c = comboMatrix.n34 - comboMatrix.n31;
	this.aPlanes[1].d = comboMatrix.n44 - comboMatrix.n41;
	this.aPlanes[2].a = comboMatrix.n14 - comboMatrix.n12;
	this.aPlanes[2].b = comboMatrix.n24 - comboMatrix.n22;
	this.aPlanes[2].c = comboMatrix.n34 - comboMatrix.n32;
	this.aPlanes[2].d = comboMatrix.n44 - comboMatrix.n42;
	this.aPlanes[3].a = comboMatrix.n14 + comboMatrix.n12;
	this.aPlanes[3].b = comboMatrix.n24 + comboMatrix.n22;
	this.aPlanes[3].c = comboMatrix.n34 + comboMatrix.n32;
	this.aPlanes[3].d = comboMatrix.n44 + comboMatrix.n42;
	this.aPlanes[4].a = comboMatrix.n13;
	this.aPlanes[4].b = comboMatrix.n23;
	this.aPlanes[4].c = comboMatrix.n33;
	this.aPlanes[4].d = comboMatrix.n43;
	this.aPlanes[5].a = comboMatrix.n14 - comboMatrix.n13;
	this.aPlanes[5].b = comboMatrix.n24 - comboMatrix.n23;
	this.aPlanes[5].c = comboMatrix.n34 - comboMatrix.n33;
	this.aPlanes[5].d = comboMatrix.n44 - comboMatrix.n43;
	if(normalize == true) {
		sandy.math.PlaneMath.normalizePlane(this.aPlanes[0]);
		sandy.math.PlaneMath.normalizePlane(this.aPlanes[1]);
		sandy.math.PlaneMath.normalizePlane(this.aPlanes[2]);
		sandy.math.PlaneMath.normalizePlane(this.aPlanes[3]);
		sandy.math.PlaneMath.normalizePlane(this.aPlanes[4]);
		sandy.math.PlaneMath.normalizePlane(this.aPlanes[5]);
	}
	$s.pop();
}
sandy.view.Frustum.prototype.pointInFrustum = function(p_oPoint) {
	$s.push("sandy.view.Frustum::pointInFrustum");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.aPlanes;
		while(_g < _g1.length) {
			var plane = _g1[_g];
			++_g;
			if(sandy.math.PlaneMath.classifyPoint(plane,p_oPoint) == sandy.math.PlaneMath.NEGATIVE) {
				{
					var $tmp = sandy.view.Frustum.OUTSIDE;
					$s.pop();
					return $tmp;
				}
			}
		}
	}
	{
		var $tmp = sandy.view.Frustum.INSIDE;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.view.Frustum.prototype.sphereInFrustum = function(p_oS) {
	$s.push("sandy.view.Frustum::sphereInFrustum");
	var $spos = $s.length;
	var d = 0, c = 0;
	var x = p_oS.position.x, y = p_oS.position.y, z = p_oS.position.z, radius = p_oS.radius;
	{
		var _g = 0, _g1 = this.aPlanes;
		while(_g < _g1.length) {
			var plane = _g1[_g];
			++_g;
			d = plane.a * x + plane.b * y + plane.c * z + plane.d;
			if(d <= -radius) {
				{
					var $tmp = sandy.view.Frustum.OUTSIDE;
					$s.pop();
					return $tmp;
				}
			}
			if(d > radius) {
				c++;
			}
		}
	}
	{
		var $tmp = ((c == 6)?sandy.view.Frustum.INSIDE:sandy.view.Frustum.INTERSECT);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.view.Frustum.prototype.__class__ = sandy.view.Frustum;
nme.display.SpreadMethod = { __ename__ : ["nme","display","SpreadMethod"], __constructs__ : ["REPEAT","REFLECT","PAD"] }
nme.display.SpreadMethod.PAD = ["PAD",2];
nme.display.SpreadMethod.PAD.toString = $estr;
nme.display.SpreadMethod.PAD.__enum__ = nme.display.SpreadMethod;
nme.display.SpreadMethod.REFLECT = ["REFLECT",1];
nme.display.SpreadMethod.REFLECT.toString = $estr;
nme.display.SpreadMethod.REFLECT.__enum__ = nme.display.SpreadMethod;
nme.display.SpreadMethod.REPEAT = ["REPEAT",0];
nme.display.SpreadMethod.REPEAT.toString = $estr;
nme.display.SpreadMethod.REPEAT.__enum__ = nme.display.SpreadMethod;
sandy.core.data.Matrix4 = function(pn11,pn12,pn13,pn14,pn21,pn22,pn23,pn24,pn31,pn32,pn33,pn34,pn41,pn42,pn43,pn44) { if( pn11 === $_ ) return; {
	$s.push("sandy.core.data.Matrix4::new");
	var $spos = $s.length;
	sandy.core.data.Matrix4.USE_FAST_MATH = false;
	this._fastMathInitialized = sandy.math.FastMath.initialized();
	if(pn11 == null) pn11 = 1;
	if(pn12 == null) pn12 = 0;
	if(pn13 == null) pn13 = 0;
	if(pn14 == null) pn14 = 0;
	if(pn21 == null) pn21 = 0;
	if(pn22 == null) pn22 = 1;
	if(pn23 == null) pn23 = 0;
	if(pn24 == null) pn24 = 0;
	if(pn31 == null) pn31 = 0;
	if(pn32 == null) pn32 = 0;
	if(pn33 == null) pn33 = 1;
	if(pn34 == null) pn34 = 0;
	if(pn41 == null) pn41 = 0;
	if(pn42 == null) pn42 = 0;
	if(pn43 == null) pn43 = 0;
	if(pn44 == null) pn44 = 1;
	this.n11 = pn11;
	this.n12 = pn12;
	this.n13 = pn13;
	this.n14 = pn14;
	this.n21 = pn21;
	this.n22 = pn22;
	this.n23 = pn23;
	this.n24 = pn24;
	this.n31 = pn31;
	this.n32 = pn32;
	this.n33 = pn33;
	this.n34 = pn34;
	this.n41 = pn41;
	this.n42 = pn42;
	this.n43 = pn43;
	this.n44 = pn44;
	$s.pop();
}}
sandy.core.data.Matrix4.__name__ = ["sandy","core","data","Matrix4"];
sandy.core.data.Matrix4.getEulerAngles = function(t) {
	$s.push("sandy.core.data.Matrix4::getEulerAngles");
	var $spos = $s.length;
	var lAngleY = Math.asin(t.n13);
	var lCos = Math.cos(lAngleY);
	var lTrx, lTry, lAngleX, lAngleZ;
	if(Math.abs(lCos) > 0.005) {
		lTrx = t.n33 / lCos;
		lTry = -t.n22 / lCos;
		lAngleX = Math.atan2(lTry,lTrx);
		lTrx = t.n11 / lCos;
		lTry = -t.n12 / lCos;
		lAngleZ = Math.atan2(lTry,lTrx);
	}
	else {
		lAngleX = 0;
		lTrx = t.n22;
		lTry = t.n21;
		lAngleZ = Math.atan2(lTry,lTrx);
	}
	if(lAngleX < 0) lAngleX += 360;
	if(lAngleY < 0) lAngleY += 360;
	if(lAngleZ < 0) lAngleZ += 360;
	{
		var $tmp = new sandy.core.data.Vector(lAngleX,lAngleY,lAngleZ);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype._fastMathInitialized = null;
sandy.core.data.Matrix4.prototype.addMatrix = function(m2) {
	$s.push("sandy.core.data.Matrix4::addMatrix");
	var $spos = $s.length;
	this.n11 += m2.n11;
	this.n12 += m2.n12;
	this.n13 += m2.n13;
	this.n14 += m2.n14;
	this.n21 += m2.n21;
	this.n22 += m2.n22;
	this.n23 += m2.n23;
	this.n24 += m2.n24;
	this.n31 += m2.n31;
	this.n32 += m2.n32;
	this.n33 += m2.n33;
	this.n34 += m2.n34;
	this.n41 += m2.n41;
	this.n42 += m2.n42;
	this.n43 += m2.n43;
	this.n44 += m2.n44;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.axisRotation = function(u,v,w,angle) {
	$s.push("sandy.core.data.Matrix4::axisRotation");
	var $spos = $s.length;
	this.identity();
	angle = sandy.util.NumberUtil.toRadian(angle);
	var c = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.cos(angle):sandy.math.FastMath.cos(angle));
	var s = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.sin(angle):sandy.math.FastMath.sin(angle));
	var scos = 1 - c;
	var suv = u * v * scos;
	var svw = v * w * scos;
	var suw = u * w * scos;
	var sw = s * w;
	var sv = s * v;
	var su = s * u;
	this.n11 = c + u * u * scos;
	this.n12 = -sw + suv;
	this.n13 = sv + suw;
	this.n21 = sw + suv;
	this.n22 = c + v * v * scos;
	this.n23 = -su + svw;
	this.n31 = -sv + suw;
	this.n32 = su + svw;
	this.n33 = c + w * w * scos;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.axisRotationVector = function(v,angle) {
	$s.push("sandy.core.data.Matrix4::axisRotationVector");
	var $spos = $s.length;
	this.axisRotation(v.x,v.y,v.z,angle);
	$s.pop();
}
sandy.core.data.Matrix4.prototype.axisRotationWithReference = function(axis,ref,pAngle) {
	$s.push("sandy.core.data.Matrix4::axisRotationWithReference");
	var $spos = $s.length;
	var tmp = new sandy.core.data.Matrix4();
	var angle = (pAngle + 360) % 360;
	this.translation(ref.x,ref.y,ref.z);
	tmp.axisRotation(axis.x,axis.y,axis.z,angle);
	this.multiply(tmp);
	tmp.translation(-ref.x,-ref.y,-ref.z);
	this.multiply(tmp);
	tmp = null;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.clone = function() {
	$s.push("sandy.core.data.Matrix4::clone");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Matrix4(this.n11,this.n12,this.n13,this.n14,this.n21,this.n22,this.n23,this.n24,this.n31,this.n32,this.n33,this.n34,this.n41,this.n42,this.n43,this.n44);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype.copy = function(m) {
	$s.push("sandy.core.data.Matrix4::copy");
	var $spos = $s.length;
	this.n11 = m.n11;
	this.n12 = m.n12;
	this.n13 = m.n13;
	this.n14 = m.n14;
	this.n21 = m.n21;
	this.n22 = m.n22;
	this.n23 = m.n23;
	this.n24 = m.n24;
	this.n31 = m.n31;
	this.n32 = m.n32;
	this.n33 = m.n33;
	this.n34 = m.n34;
	this.n41 = m.n41;
	this.n42 = m.n42;
	this.n43 = m.n43;
	this.n44 = m.n44;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.det = function() {
	$s.push("sandy.core.data.Matrix4::det");
	var $spos = $s.length;
	{
		var $tmp = (this.n11 * this.n22 - this.n21 * this.n12) * (this.n33 * this.n44 - this.n43 * this.n34) - (this.n11 * this.n32 - this.n31 * this.n12) * (this.n23 * this.n44 - this.n43 * this.n24) + (this.n11 * this.n42 - this.n41 * this.n12) * (this.n23 * this.n34 - this.n33 * this.n24) + (this.n21 * this.n32 - this.n31 * this.n22) * (this.n13 * this.n44 - this.n43 * this.n14) - (this.n21 * this.n42 - this.n41 * this.n22) * (this.n13 * this.n34 - this.n33 * this.n14) + (this.n31 * this.n42 - this.n41 * this.n32) * (this.n13 * this.n24 - this.n23 * this.n14);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype.det3x3 = function() {
	$s.push("sandy.core.data.Matrix4::det3x3");
	var $spos = $s.length;
	{
		var $tmp = this.n11 * (this.n22 * this.n33 - this.n23 * this.n32) + this.n21 * (this.n32 * this.n13 - this.n12 * this.n33) + this.n31 * (this.n12 * this.n23 - this.n22 * this.n13);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype.eulerRotation = function(ax,ay,az) {
	$s.push("sandy.core.data.Matrix4::eulerRotation");
	var $spos = $s.length;
	this.identity();
	ax = sandy.util.NumberUtil.toRadian(ax);
	ay = sandy.util.NumberUtil.toRadian(ay);
	az = sandy.util.NumberUtil.toRadian(az);
	var a = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.cos(ax):sandy.math.FastMath.cos(ax));
	var b = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.sin(ax):sandy.math.FastMath.sin(ax));
	var c = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.cos(ay):sandy.math.FastMath.cos(ay));
	var d = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.sin(ay):sandy.math.FastMath.sin(ay));
	var e = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.cos(az):sandy.math.FastMath.cos(az));
	var f = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.sin(az):sandy.math.FastMath.sin(az));
	var ad = a * d;
	var bd = b * d;
	this.n11 = c * e;
	this.n12 = -c * f;
	this.n13 = -d;
	this.n21 = -bd * e + a * f;
	this.n22 = -bd * f + a * e;
	this.n23 = -b * c;
	this.n31 = ad * e + b * f;
	this.n32 = -ad * f + b * e;
	this.n33 = a * c;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.getTrace = function() {
	$s.push("sandy.core.data.Matrix4::getTrace");
	var $spos = $s.length;
	{
		var $tmp = this.n11 + this.n22 + this.n33 + this.n44;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype.getTranslation = function() {
	$s.push("sandy.core.data.Matrix4::getTranslation");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(this.n14,this.n24,this.n34);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype.identity = function() {
	$s.push("sandy.core.data.Matrix4::identity");
	var $spos = $s.length;
	this.n11 = 1;
	this.n12 = 0;
	this.n13 = 0;
	this.n14 = 0;
	this.n21 = 0;
	this.n22 = 1;
	this.n23 = 0;
	this.n24 = 0;
	this.n31 = 0;
	this.n32 = 0;
	this.n33 = 1;
	this.n34 = 0;
	this.n41 = 0;
	this.n42 = 0;
	this.n43 = 0;
	this.n44 = 1;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.inverse = function() {
	$s.push("sandy.core.data.Matrix4::inverse");
	var $spos = $s.length;
	var d = this.det();
	if(Math.abs(d) >= 0.001) {
		d = 1 / d;
		var m11 = this.n11, m21 = this.n21, m31 = this.n31, m41 = this.n41, m12 = this.n12, m22 = this.n22, m32 = this.n32, m42 = this.n42, m13 = this.n13, m23 = this.n23, m33 = this.n33, m43 = this.n43, m14 = this.n14, m24 = this.n24, m34 = this.n34, m44 = this.n44;
		this.n11 = d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24));
		this.n12 = -d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14));
		this.n13 = d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14));
		this.n14 = -d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14));
		this.n21 = -d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24));
		this.n22 = d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14));
		this.n23 = -d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14));
		this.n24 = d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14));
		this.n31 = d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24));
		this.n32 = -d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14));
		this.n33 = d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14));
		this.n34 = -d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14));
		this.n41 = -d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23));
		this.n42 = d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13));
		this.n43 = -d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13));
		this.n44 = d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13));
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype.multiply = function(m2) {
	$s.push("sandy.core.data.Matrix4::multiply");
	var $spos = $s.length;
	var m111 = this.n11, m121 = this.n21, m131 = this.n31, m141 = this.n41, m112 = this.n12, m122 = this.n22, m132 = this.n32, m142 = this.n42, m113 = this.n13, m123 = this.n23, m133 = this.n33, m143 = this.n43, m114 = this.n14, m124 = this.n24, m134 = this.n34, m144 = this.n44, m211 = m2.n11, m221 = m2.n21, m231 = m2.n31, m241 = m2.n41, m212 = m2.n12, m222 = m2.n22, m232 = m2.n32, m242 = m2.n42, m213 = m2.n13, m223 = m2.n23, m233 = m2.n33, m243 = m2.n43, m214 = m2.n14, m224 = m2.n24, m234 = m2.n34, m244 = m2.n44;
	this.n11 = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
	this.n12 = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
	this.n13 = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
	this.n14 = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
	this.n21 = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
	this.n22 = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
	this.n23 = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
	this.n24 = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
	this.n31 = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
	this.n32 = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
	this.n33 = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
	this.n34 = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
	this.n41 = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
	this.n42 = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
	this.n43 = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
	this.n44 = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.multiply3x3 = function(m2) {
	$s.push("sandy.core.data.Matrix4::multiply3x3");
	var $spos = $s.length;
	var m111 = this.n11, m211 = m2.n11, m121 = this.n21, m221 = m2.n21, m131 = this.n31, m231 = m2.n31, m112 = this.n12, m212 = m2.n12, m122 = this.n22, m222 = m2.n22, m132 = this.n32, m232 = m2.n32, m113 = this.n13, m213 = m2.n13, m123 = this.n23, m223 = m2.n23, m133 = this.n33, m233 = m2.n33;
	this.n11 = m111 * m211 + m112 * m221 + m113 * m231;
	this.n12 = m111 * m212 + m112 * m222 + m113 * m232;
	this.n13 = m111 * m213 + m112 * m223 + m113 * m233;
	this.n21 = m121 * m211 + m122 * m221 + m123 * m231;
	this.n22 = m121 * m212 + m122 * m222 + m123 * m232;
	this.n23 = m121 * m213 + m122 * m223 + m123 * m233;
	this.n31 = m131 * m211 + m132 * m221 + m133 * m231;
	this.n32 = m131 * m212 + m132 * m222 + m133 * m232;
	this.n33 = m131 * m213 + m132 * m223 + m133 * m233;
	this.n14 = this.n24 = this.n34 = this.n41 = this.n42 = this.n43 = 0;
	this.n44 = 1;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.multiply4x3 = function(m2) {
	$s.push("sandy.core.data.Matrix4::multiply4x3");
	var $spos = $s.length;
	var m111 = this.n11, m211 = m2.n11, m121 = this.n21, m221 = m2.n21, m131 = this.n31, m231 = m2.n31, m112 = this.n12, m212 = m2.n12, m122 = this.n22, m222 = m2.n22, m132 = this.n32, m232 = m2.n32, m113 = this.n13, m213 = m2.n13, m123 = this.n23, m223 = m2.n23, m133 = this.n33, m233 = m2.n33, m214 = m2.n14, m224 = m2.n24, m234 = m2.n34;
	this.n11 = m111 * m211 + m112 * m221 + m113 * m231;
	this.n12 = m111 * m212 + m112 * m222 + m113 * m232;
	this.n13 = m111 * m213 + m112 * m223 + m113 * m233;
	this.n14 = m214 * m111 + m224 * m112 + m234 * m113 + this.n14;
	this.n21 = m121 * m211 + m122 * m221 + m123 * m231;
	this.n22 = m121 * m212 + m122 * m222 + m123 * m232;
	this.n23 = m121 * m213 + m122 * m223 + m123 * m233;
	this.n24 = m214 * m121 + m224 * m122 + m234 * m123 + this.n24;
	this.n31 = m131 * m211 + m132 * m221 + m133 * m231;
	this.n32 = m131 * m212 + m132 * m222 + m133 * m232;
	this.n33 = m131 * m213 + m132 * m223 + m133 * m233;
	this.n34 = m214 * m131 + m224 * m132 + m234 * m133 + this.n34;
	this.n41 = this.n42 = this.n43 = 0;
	this.n44 = 1;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.n11 = null;
sandy.core.data.Matrix4.prototype.n12 = null;
sandy.core.data.Matrix4.prototype.n13 = null;
sandy.core.data.Matrix4.prototype.n14 = null;
sandy.core.data.Matrix4.prototype.n21 = null;
sandy.core.data.Matrix4.prototype.n22 = null;
sandy.core.data.Matrix4.prototype.n23 = null;
sandy.core.data.Matrix4.prototype.n24 = null;
sandy.core.data.Matrix4.prototype.n31 = null;
sandy.core.data.Matrix4.prototype.n32 = null;
sandy.core.data.Matrix4.prototype.n33 = null;
sandy.core.data.Matrix4.prototype.n34 = null;
sandy.core.data.Matrix4.prototype.n41 = null;
sandy.core.data.Matrix4.prototype.n42 = null;
sandy.core.data.Matrix4.prototype.n43 = null;
sandy.core.data.Matrix4.prototype.n44 = null;
sandy.core.data.Matrix4.prototype.rotationX = function(angle) {
	$s.push("sandy.core.data.Matrix4::rotationX");
	var $spos = $s.length;
	this.identity();
	angle = sandy.util.NumberUtil.toRadian(angle);
	var c = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.cos(angle):sandy.math.FastMath.cos(angle));
	var s = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.sin(angle):sandy.math.FastMath.sin(angle));
	this.n22 = c;
	this.n23 = -s;
	this.n32 = s;
	this.n33 = c;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.rotationY = function(angle) {
	$s.push("sandy.core.data.Matrix4::rotationY");
	var $spos = $s.length;
	this.identity();
	angle = sandy.util.NumberUtil.toRadian(angle);
	var c = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.cos(angle):sandy.math.FastMath.cos(angle));
	var s = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.sin(angle):sandy.math.FastMath.sin(angle));
	this.n11 = c;
	this.n13 = -s;
	this.n31 = s;
	this.n33 = c;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.rotationZ = function(angle) {
	$s.push("sandy.core.data.Matrix4::rotationZ");
	var $spos = $s.length;
	this.identity();
	angle = sandy.util.NumberUtil.toRadian(angle);
	var c = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.cos(angle):sandy.math.FastMath.cos(angle));
	var s = ((sandy.core.data.Matrix4.USE_FAST_MATH == false)?Math.sin(angle):sandy.math.FastMath.sin(angle));
	this.n11 = c;
	this.n12 = -s;
	this.n21 = s;
	this.n22 = c;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.scale = function(nXScale,nYScale,nZScale) {
	$s.push("sandy.core.data.Matrix4::scale");
	var $spos = $s.length;
	this.identity();
	this.n11 = nXScale;
	this.n22 = nYScale;
	this.n33 = nZScale;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.scaleVector = function(v) {
	$s.push("sandy.core.data.Matrix4::scaleVector");
	var $spos = $s.length;
	this.identity();
	this.n11 = v.x;
	this.n22 = v.y;
	this.n33 = v.z;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.toString = function() {
	$s.push("sandy.core.data.Matrix4::toString");
	var $spos = $s.length;
	var s = "sandy.core.data.Matrix4" + "\n (";
	s += this.n11 + "\t" + this.n12 + "\t" + this.n13 + "\t" + this.n14 + "\n";
	s += this.n21 + "\t" + this.n22 + "\t" + this.n23 + "\t" + this.n24 + "\n";
	s += this.n31 + "\t" + this.n32 + "\t" + this.n33 + "\t" + this.n34 + "\n";
	s += this.n41 + "\t" + this.n42 + "\t" + this.n43 + "\t" + this.n44 + "\n)";
	{
		$s.pop();
		return s;
	}
	$s.pop();
}
sandy.core.data.Matrix4.prototype.translation = function(nTx,nTy,nTz) {
	$s.push("sandy.core.data.Matrix4::translation");
	var $spos = $s.length;
	this.identity();
	this.n14 = nTx;
	this.n24 = nTy;
	this.n34 = nTz;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.translationVector = function(v) {
	$s.push("sandy.core.data.Matrix4::translationVector");
	var $spos = $s.length;
	this.identity();
	this.n14 = v.x;
	this.n24 = v.y;
	this.n34 = v.z;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.vectorMult = function(pv) {
	$s.push("sandy.core.data.Matrix4::vectorMult");
	var $spos = $s.length;
	var x = pv.x, y = pv.y, z = pv.z;
	pv.x = (x * this.n11 + y * this.n12 + z * this.n13 + this.n14);
	pv.y = (x * this.n21 + y * this.n22 + z * this.n23 + this.n24);
	pv.z = (x * this.n31 + y * this.n32 + z * this.n33 + this.n34);
	$s.pop();
}
sandy.core.data.Matrix4.prototype.vectorMult3x3 = function(pv) {
	$s.push("sandy.core.data.Matrix4::vectorMult3x3");
	var $spos = $s.length;
	var x = pv.x, y = pv.y, z = pv.z;
	pv.x = (x * this.n11 + y * this.n12 + z * this.n13);
	pv.y = (x * this.n21 + y * this.n22 + z * this.n23);
	pv.z = (x * this.n31 + y * this.n32 + z * this.n33);
	$s.pop();
}
sandy.core.data.Matrix4.prototype.zero = function() {
	$s.push("sandy.core.data.Matrix4::zero");
	var $spos = $s.length;
	this.n11 = 0;
	this.n12 = 0;
	this.n13 = 0;
	this.n14 = 0;
	this.n21 = 0;
	this.n22 = 0;
	this.n23 = 0;
	this.n24 = 0;
	this.n31 = 0;
	this.n32 = 0;
	this.n33 = 0;
	this.n34 = 0;
	this.n41 = 0;
	this.n42 = 0;
	this.n43 = 0;
	this.n44 = 0;
	$s.pop();
}
sandy.core.data.Matrix4.prototype.__class__ = sandy.core.data.Matrix4;
sandy.core.scenegraph.Sound3D = function(p_sName,p_oSoundSource,p_nVolume,p_nMaxPan,p_nRadius,p_bStereo) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.Sound3D::new");
	var $spos = $s.length;
	this._isFlipped = false;
	this._isPlaying = false;
	this.soundCulled = false;
	this.m_oSoundTransform = new neash.media.SoundTransform(1,0);
	this.sMode = "";
	this.lastPosition = 0;
	this.lastStopTime = 0;
	this.cPlaying = false;
	this.duration = 0;
	this.cLoop = 0;
	if(p_sName == null) p_sName = "";
	if(p_nVolume == null) p_nVolume = 1;
	if(p_nMaxPan == null) p_nMaxPan = 0;
	if(p_nRadius == null) p_nRadius = 1;
	if(p_bStereo == null) p_bStereo = false;
	this.soundPan = true;
	this.maxPan = 1;
	this.stereo = false;
	this.flipPan = true;
	this.type = sandy.core.scenegraph.Sound3D.SPEECH;
	this.startTime = 0;
	this.loops = 16777215;
	this.loopStartTime = 0;
	sandy.core.scenegraph.ATransformable.apply(this,[p_sName]);
	this.soundVolume = p_nVolume;
	this.soundRadius = p_nRadius;
	this.__setSoundSource(p_oSoundSource);
	this.stereo = p_bStereo;
	if(p_nMaxPan == 0) {
		this.soundPan = false;
	}
	else {
		this.soundPan = true;
		this.maxPan = p_nMaxPan;
	}
	$s.pop();
}}
sandy.core.scenegraph.Sound3D.__name__ = ["sandy","core","scenegraph","Sound3D"];
sandy.core.scenegraph.Sound3D.__super__ = sandy.core.scenegraph.ATransformable;
for(var k in sandy.core.scenegraph.ATransformable.prototype ) sandy.core.scenegraph.Sound3D.prototype[k] = sandy.core.scenegraph.ATransformable.prototype[k];
sandy.core.scenegraph.Sound3D.prototype.__getCurrentLoop = function() {
	$s.push("sandy.core.scenegraph.Sound3D::__getCurrentLoop");
	var $spos = $s.length;
	{
		var $tmp = this.cLoop;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.__getIsFlipped = function() {
	$s.push("sandy.core.scenegraph.Sound3D::__getIsFlipped");
	var $spos = $s.length;
	{
		var $tmp = this._isFlipped;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.__getSoundChannel = function() {
	$s.push("sandy.core.scenegraph.Sound3D::__getSoundChannel");
	var $spos = $s.length;
	{
		var $tmp = this.channelRef;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.__getSoundMode = function() {
	$s.push("sandy.core.scenegraph.Sound3D::__getSoundMode");
	var $spos = $s.length;
	{
		var $tmp = this.sMode;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.__getSoundSource = function() {
	$s.push("sandy.core.scenegraph.Sound3D::__getSoundSource");
	var $spos = $s.length;
	switch(this.sMode) {
	case "sound":{
		{
			var $tmp = this.soundRef;
			$s.pop();
			return $tmp;
		}
	}break;
	case "channel":{
		{
			var $tmp = this.channelRef;
			$s.pop();
			return $tmp;
		}
	}break;
	case "url":{
		{
			var $tmp = this.urlReq;
			$s.pop();
			return $tmp;
		}
	}break;
	default:{
		{
			$s.pop();
			return null;
		}
	}break;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.__setSoundSource = function(s) {
	$s.push("sandy.core.scenegraph.Sound3D::__setSoundSource");
	var $spos = $s.length;
	if(Std["is"](s,neash.media.Sound)) {
		this.sMode = "sound";
		this.soundRef = s;
		if(this.soundRef.length > 0) this.duration = this.soundRef.length;
	}
	else if(Std["is"](s,neash.media.SoundChannel)) {
		this.sMode = "channel";
		this._isPlaying = true;
		this.channelRef = s;
	}
	else if(Std["is"](s,String)) {
		this.sMode = "url";
		this.urlReq = new neash.net.URLRequest(s);
	}
	else {
		this.sMode = "url";
		this.urlReq = s;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype._isFlipped = null;
sandy.core.scenegraph.Sound3D.prototype._isPlaying = null;
sandy.core.scenegraph.Sound3D.prototype.cLoop = null;
sandy.core.scenegraph.Sound3D.prototype.cPlay = function(isUrl) {
	$s.push("sandy.core.scenegraph.Sound3D::cPlay");
	var $spos = $s.length;
	if(isUrl == null) isUrl = false;
	if(!this.cPlaying) {
		this.cPlaying = true;
		if(this.channelRef != null) this.channelRef.stop();
		if(isUrl) {
			this.soundRef = new neash.media.Sound();
			this.soundRef.addEventListener(neash.events.Event.COMPLETE,$closure(this,"completeHandler"));
			this.soundRef.load(this.urlReq);
		}
		if(this.type == sandy.core.scenegraph.Sound3D.SPEECH) {
			var len = this.duration;
			var time = this.startTime;
			if(len > 0) {
				time = this.lastPosition + (neash.Lib.getTimer() - this.lastStopTime);
				if(time > len) {
					var fn = time / len;
					var f = Std["int"](fn);
					this.cLoop += f;
					if(this.cLoop > this.loops) {
						this.stop();
						{
							$s.pop();
							return;
						}
					}
					time = (fn - f == 0?len:time - (len * f));
				}
			}
			this.channelRef = this.soundRef.play(time,0);
		}
		else {
			this.channelRef = this.soundRef.play(this.startTime,0);
		}
		if(!this.channelRef.hasEventListener(neash.events.Event.SOUND_COMPLETE)) this.channelRef.addEventListener(neash.events.Event.SOUND_COMPLETE,$closure(this,"soundCompleteHandler"),false,0,true);
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.cPlaying = null;
sandy.core.scenegraph.Sound3D.prototype.cStop = function(isUrl) {
	$s.push("sandy.core.scenegraph.Sound3D::cStop");
	var $spos = $s.length;
	if(isUrl == null) isUrl = false;
	if(this.cPlaying) {
		this.cPlaying = false;
		if(this.channelRef != null) {
			this.lastPosition = this.channelRef.position;
			this.lastStopTime = neash.Lib.getTimer();
			this.channelRef.stop();
			this.channelRef.removeEventListener(neash.events.Event.SOUND_COMPLETE,$closure(this,"soundCompleteHandler"));
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.channelRef = null;
sandy.core.scenegraph.Sound3D.prototype.completeHandler = function(e) {
	$s.push("sandy.core.scenegraph.Sound3D::completeHandler");
	var $spos = $s.length;
	this.duration = this.soundRef.length;
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.cull = function(p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Sound3D::cull");
	var $spos = $s.length;
	if(this._isPlaying) {
		this.updateSoundTransform(p_oScene);
		var isUrl = this.sMode == "url";
		if(isUrl || this.sMode == "sound") {
			if(!this.soundCulled) {
				if(!this.cPlaying) {
					this.cPlay(isUrl);
					this.m_oEB.broadcastEvent(new sandy.events.BubbleEvent(sandy.core.scenegraph.Sound3D.CULL_PLAY,this));
				}
			}
			else {
				if(this.cPlaying) {
					this.cStop(isUrl);
					this.m_oEB.broadcastEvent(new sandy.events.BubbleEvent(sandy.core.scenegraph.Sound3D.CULL_STOP,this));
				}
			}
		}
		this.updateChannelRef(p_oScene);
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.currentLoop = null;
sandy.core.scenegraph.Sound3D.prototype.duration = null;
sandy.core.scenegraph.Sound3D.prototype.flipPan = null;
sandy.core.scenegraph.Sound3D.prototype.isFlipped = null;
sandy.core.scenegraph.Sound3D.prototype.lastPosition = null;
sandy.core.scenegraph.Sound3D.prototype.lastStopTime = null;
sandy.core.scenegraph.Sound3D.prototype.loopStartTime = null;
sandy.core.scenegraph.Sound3D.prototype.loops = null;
sandy.core.scenegraph.Sound3D.prototype.m_oSoundTransform = null;
sandy.core.scenegraph.Sound3D.prototype.maxPan = null;
sandy.core.scenegraph.Sound3D.prototype.play = function(p_nStartTime,p_iLoops,p_nLoopStartTime,p_bResume) {
	$s.push("sandy.core.scenegraph.Sound3D::play");
	var $spos = $s.length;
	if(p_nStartTime == null) p_nStartTime = -1;
	if(p_iLoops == null) p_iLoops = -1;
	if(p_nLoopStartTime == null) p_nLoopStartTime = -1;
	if(p_bResume == null) p_bResume = false;
	if(!this._isPlaying && this.sMode != "channel") {
		if(p_nStartTime != -1) this.lastPosition = p_nStartTime;
		if(p_iLoops != -1) this.loops = p_iLoops;
		if(p_nLoopStartTime != -1) this.loopStartTime = p_nLoopStartTime;
		if(!p_bResume) {
			this.lastPosition = this.startTime;
			this.lastStopTime = neash.Lib.getTimer();
		}
		this.cLoop = 0;
		this._isPlaying = true;
		this.cPlaying = false;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.sMode = null;
sandy.core.scenegraph.Sound3D.prototype.soundChannel = null;
sandy.core.scenegraph.Sound3D.prototype.soundCompleteHandler = function(e) {
	$s.push("sandy.core.scenegraph.Sound3D::soundCompleteHandler");
	var $spos = $s.length;
	if(this.cLoop < this.loops) {
		this.cLoop++;
		this.cPlaying = false;
		this.lastPosition = this.loopStartTime;
		this.lastStopTime = neash.Lib.getTimer();
		this.cPlay();
		this.m_oEB.broadcastEvent(new sandy.events.BubbleEvent(sandy.core.scenegraph.Sound3D.LOOP,this));
	}
	else {
		if(this.sMode != "channel") {
			this._isPlaying = false;
			this.cStop();
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.soundCulled = null;
sandy.core.scenegraph.Sound3D.prototype.soundMode = null;
sandy.core.scenegraph.Sound3D.prototype.soundPan = null;
sandy.core.scenegraph.Sound3D.prototype.soundRadius = null;
sandy.core.scenegraph.Sound3D.prototype.soundRef = null;
sandy.core.scenegraph.Sound3D.prototype.soundSource = null;
sandy.core.scenegraph.Sound3D.prototype.soundVolume = null;
sandy.core.scenegraph.Sound3D.prototype.startTime = null;
sandy.core.scenegraph.Sound3D.prototype.stereo = null;
sandy.core.scenegraph.Sound3D.prototype.stop = function() {
	$s.push("sandy.core.scenegraph.Sound3D::stop");
	var $spos = $s.length;
	if(this._isPlaying && this.sMode != "channel") {
		if(this.cPlaying) this.cStop();
		this._isPlaying = false;
		this.cPlaying = false;
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.toString = function() {
	$s.push("sandy.core.scenegraph.Sound3D::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.core.scenegraph.Sound3D";
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.type = null;
sandy.core.scenegraph.Sound3D.prototype.updateChannelRef = function(p_oScene) {
	$s.push("sandy.core.scenegraph.Sound3D::updateChannelRef");
	var $spos = $s.length;
	if(this.stereo) {
		var span = this.m_oSoundTransform.pan;
		var pa;
		if(span < 0) {
			pa = ((span < -1)?1:-span);
			this.m_oSoundTransform.leftToLeft = 1;
			this.m_oSoundTransform.leftToRight = 0;
			this.m_oSoundTransform.rightToLeft = pa;
			this.m_oSoundTransform.rightToRight = 1 - pa;
		}
		else {
			pa = ((span > 1?1:span));
			this.m_oSoundTransform.leftToLeft = 1 - pa;
			this.m_oSoundTransform.leftToRight = pa;
			this.m_oSoundTransform.rightToLeft = 0;
			this.m_oSoundTransform.rightToRight = 1;
		}
		if(this.flipPan) {
			var x2 = this.modelMatrix.n11;
			var y2 = this.modelMatrix.n21;
			var z2 = this.modelMatrix.n31;
			var gv = p_oScene.camera.modelMatrix;
			var mz = -(x2 * gv.n11 + y2 * gv.n21 + z2 * gv.n31);
			if(mz > 0) {
				var l2l = this.m_oSoundTransform.leftToLeft;
				var l2r = this.m_oSoundTransform.leftToRight;
				var r2l = this.m_oSoundTransform.rightToLeft;
				var r2r = this.m_oSoundTransform.rightToRight;
				this.m_oSoundTransform.leftToLeft = l2l + (l2r - l2l) * mz;
				this.m_oSoundTransform.leftToRight = l2r + (l2l - l2r) * mz;
				this.m_oSoundTransform.rightToLeft = r2l + (r2r - r2l) * mz;
				this.m_oSoundTransform.rightToRight = r2r + (r2l - r2r) * mz;
				this._isFlipped = true;
			}
			else {
				this._isFlipped = false;
			}
		}
	}
	this.channelRef.soundTransform = this.m_oSoundTransform;
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.updateSoundTransform = function(p_oScene) {
	$s.push("sandy.core.scenegraph.Sound3D::updateSoundTransform");
	var $spos = $s.length;
	var gv = this.modelMatrix;
	var rv = p_oScene.camera.modelMatrix;
	var dx = gv.n14 - rv.n14;
	var dy = gv.n24 - rv.n24;
	var dz = gv.n34 - rv.n34;
	var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
	if(dist <= 0.001) {
		this.m_oSoundTransform.volume = this.soundVolume;
		this.m_oSoundTransform.pan = 0;
		this.soundCulled = false;
	}
	else if(dist <= this.soundRadius) {
		var pa = 0;
		if(this.soundPan) {
			var d = dx * rv.n11 + dy * rv.n21 + dz * rv.n31;
			var ang = Math.acos(d / dist) - Math.PI / 2;
			pa = -(ang / 100 * (100 / (Math.PI / 2))) * this.maxPan;
			if(pa < -1) pa = -1;
			else if(pa > 1) pa = 1;
		}
		this.m_oSoundTransform.volume = (this.soundVolume / this.soundRadius) * (this.soundRadius - dist);
		this.m_oSoundTransform.pan = pa;
		this.soundCulled = false;
	}
	else {
		if(!this.soundCulled) {
			this.m_oSoundTransform.volume = 0;
			this.m_oSoundTransform.pan = 0;
			this.soundCulled = true;
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Sound3D.prototype.urlReq = null;
sandy.core.scenegraph.Sound3D.prototype.__class__ = sandy.core.scenegraph.Sound3D;
sandy.util = {}
sandy.util.NumberUtil = function() { }
sandy.util.NumberUtil.__name__ = ["sandy","util","NumberUtil"];
sandy.util.NumberUtil.TWO_PI = null;
sandy.util.NumberUtil.__getTWO_PI = function() {
	$s.push("sandy.util.NumberUtil::__getTWO_PI");
	var $spos = $s.length;
	{
		var $tmp = sandy.util.NumberUtil.__TWO_PI;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.PI = null;
sandy.util.NumberUtil.__getPI = function() {
	$s.push("sandy.util.NumberUtil::__getPI");
	var $spos = $s.length;
	{
		var $tmp = sandy.util.NumberUtil.__PI;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.HALF_PI = null;
sandy.util.NumberUtil.__getHALF_PI = function() {
	$s.push("sandy.util.NumberUtil::__getHALF_PI");
	var $spos = $s.length;
	{
		var $tmp = sandy.util.NumberUtil.__HALF_PI;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.TO_DEGREE = null;
sandy.util.NumberUtil.__getTO_DEGREE = function() {
	$s.push("sandy.util.NumberUtil::__getTO_DEGREE");
	var $spos = $s.length;
	{
		var $tmp = sandy.util.NumberUtil.__TO_DREGREE;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.TO_RADIAN = null;
sandy.util.NumberUtil.__getTO_RADIAN = function() {
	$s.push("sandy.util.NumberUtil::__getTO_RADIAN");
	var $spos = $s.length;
	{
		var $tmp = sandy.util.NumberUtil.__TO_RADIAN;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.isZero = function(p_nN) {
	$s.push("sandy.util.NumberUtil::isZero");
	var $spos = $s.length;
	{
		var $tmp = Math.abs(p_nN) < sandy.util.NumberUtil.TOL;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.areEqual = function(p_nN,p_nM) {
	$s.push("sandy.util.NumberUtil::areEqual");
	var $spos = $s.length;
	{
		var $tmp = Math.abs(p_nN - p_nM) < sandy.util.NumberUtil.TOL;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.toDegree = function(p_nRad) {
	$s.push("sandy.util.NumberUtil::toDegree");
	var $spos = $s.length;
	{
		var $tmp = p_nRad * sandy.util.NumberUtil.__getTO_DEGREE();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.toRadian = function(p_nDeg) {
	$s.push("sandy.util.NumberUtil::toRadian");
	var $spos = $s.length;
	{
		var $tmp = p_nDeg * sandy.util.NumberUtil.__getTO_RADIAN();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.constrain = function(p_nN,p_nMin,p_nMax) {
	$s.push("sandy.util.NumberUtil::constrain");
	var $spos = $s.length;
	{
		var $tmp = Math.max(Math.min(p_nN,p_nMax),p_nMin);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.roundTo = function(p_nN,p_nRoundToInterval) {
	$s.push("sandy.util.NumberUtil::roundTo");
	var $spos = $s.length;
	if(p_nRoundToInterval == 0) {
		p_nRoundToInterval = 1;
	}
	{
		var $tmp = Math.round(p_nN / p_nRoundToInterval) * p_nRoundToInterval;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.NumberUtil.prototype.__class__ = sandy.util.NumberUtil;
sandy.core.scenegraph.Group = function(p_sName) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.Group::new");
	var $spos = $s.length;
	if(p_sName == null) p_sName = "";
	sandy.core.scenegraph.Node.apply(this,[p_sName]);
	$s.pop();
}}
sandy.core.scenegraph.Group.__name__ = ["sandy","core","scenegraph","Group"];
sandy.core.scenegraph.Group.__super__ = sandy.core.scenegraph.Node;
for(var k in sandy.core.scenegraph.Node.prototype ) sandy.core.scenegraph.Group.prototype[k] = sandy.core.scenegraph.Node.prototype[k];
sandy.core.scenegraph.Group.prototype.clone = function(p_sName) {
	$s.push("sandy.core.scenegraph.Group::clone");
	var $spos = $s.length;
	var l_oGroup = new sandy.core.scenegraph.Group(p_sName);
	{
		var _g = 0, _g1 = this.children;
		while(_g < _g1.length) {
			var l_oNode = _g1[_g];
			++_g;
			if(Std["is"](l_oNode,sandy.core.scenegraph.Shape3D) || Std["is"](l_oNode,sandy.core.scenegraph.Group) || Std["is"](l_oNode,sandy.core.scenegraph.TransformGroup)) {
				l_oGroup.addChild("clone".apply(l_oNode,[p_sName + "_" + l_oNode.name]));
			}
		}
	}
	{
		$s.pop();
		return l_oGroup;
	}
	$s.pop();
}
sandy.core.scenegraph.Group.prototype.cull = function(p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Group::cull");
	var $spos = $s.length;
	if(this.visible == false) {
		this.culled = sandy.view.CullingState.OUTSIDE;
	}
	else {
		var lChanged = p_bChanged || this.changed;
		{
			var _g = 0, _g1 = this.children;
			while(_g < _g1.length) {
				var l_oNode = _g1[_g];
				++_g;
				l_oNode.cull(p_oScene,p_oFrustum,p_oViewMatrix,lChanged);
			}
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Group.prototype.render = function(p_oScene,p_oCamera) {
	$s.push("sandy.core.scenegraph.Group::render");
	var $spos = $s.length;
	var _g = 0, _g1 = this.children;
	while(_g < _g1.length) {
		var l_oNode = _g1[_g];
		++_g;
		if(l_oNode.culled != sandy.view.CullingState.OUTSIDE) l_oNode.render(p_oScene,p_oCamera);
		l_oNode.changed = false;
		l_oNode.culled = sandy.view.CullingState.INSIDE;
	}
	$s.pop();
}
sandy.core.scenegraph.Group.prototype.__class__ = sandy.core.scenegraph.Group;
xpath.xml.XPathXml = function() { }
xpath.xml.XPathXml.__name__ = ["xpath","xml","XPathXml"];
xpath.xml.XPathXml.prototype.getAncestorIterator = function() {
	$s.push("xpath.xml.XPathXml::getAncestorIterator");
	var $spos = $s.length;
	var nextNode = this.getParent();
	{
		var $tmp = { hasNext : function() {
			$s.push("xpath.xml.XPathXml::getAncestorIterator@134");
			var $spos = $s.length;
			{
				var $tmp = nextNode != null;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("xpath.xml.XPathXml::getAncestorIterator@137");
			var $spos = $s.length;
			var result = nextNode;
			nextNode = nextNode.getParent();
			{
				$s.pop();
				return result;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getAncestorOrSelfIterator = function() {
	$s.push("xpath.xml.XPathXml::getAncestorOrSelfIterator");
	var $spos = $s.length;
	var nextNode = this;
	{
		var $tmp = { hasNext : function() {
			$s.push("xpath.xml.XPathXml::getAncestorOrSelfIterator@149");
			var $spos = $s.length;
			{
				var $tmp = nextNode != null;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("xpath.xml.XPathXml::getAncestorOrSelfIterator@152");
			var $spos = $s.length;
			var result = nextNode;
			nextNode = nextNode.getParent();
			{
				$s.pop();
				return result;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getAttributeIterator = function() {
	$s.push("xpath.xml.XPathXml::getAttributeIterator");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getAttributeIterator must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getAxisIterable = function(axis) {
	$s.push("xpath.xml.XPathXml::getAxisIterable");
	var $spos = $s.length;
	var me = this;
	{
		var $tmp = { iterator : function() {
			$s.push("xpath.xml.XPathXml::getAxisIterable@124");
			var $spos = $s.length;
			{
				var $tmp = me.getAxisIterator(axis);
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getAxisIterator = function(axis) {
	$s.push("xpath.xml.XPathXml::getAxisIterator");
	var $spos = $s.length;
	{
		var $tmp = function($this) {
			var $r;
			var $e = (axis);
			switch( $e[1] ) {
			case 0:
			{
				$r = $this.getAncestorIterator();
			}break;
			case 1:
			{
				$r = $this.getAncestorOrSelfIterator();
			}break;
			case 2:
			{
				$r = $this.getAttributeIterator();
			}break;
			case 3:
			{
				$r = $this.getChildIterator();
			}break;
			case 4:
			{
				$r = $this.getDescendantIterator();
			}break;
			case 5:
			{
				$r = $this.getDescendantOrSelfIterator();
			}break;
			case 6:
			{
				$r = $this.getFollowingIterator();
			}break;
			case 7:
			{
				$r = $this.getFollowingSiblingIterator();
			}break;
			case 8:
			{
				$r = $this.getNamespaceIterator();
			}break;
			case 9:
			{
				$r = $this.getParentIterator();
			}break;
			case 10:
			{
				$r = $this.getPrecedingIterator();
			}break;
			case 11:
			{
				$r = $this.getPrecedingSiblingIterator();
			}break;
			case 12:
			{
				$r = $this.getSelfIterator();
			}break;
			default:{
				$r = null;
			}break;
			}
			return $r;
		}(this);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getChildIterator = function() {
	$s.push("xpath.xml.XPathXml::getChildIterator");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getChildIterator must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getDescendantIterator = function() {
	$s.push("xpath.xml.XPathXml::getDescendantIterator");
	var $spos = $s.length;
	var iterators = new List();
	iterators.push(this.getChildIterator());
	var hasNext = function() {
		$s.push("xpath.xml.XPathXml::getDescendantIterator@181");
		var $spos = $s.length;
		while(iterators.length > 0) {
			if(iterators.first().hasNext()) {
				$s.pop();
				return true;
			}
			else iterators.pop();
		}
		{
			$s.pop();
			return false;
		}
		$s.pop();
	}
	var next = function() {
		$s.push("xpath.xml.XPathXml::getDescendantIterator@188");
		var $spos = $s.length;
		if(hasNext()) {
			var result = iterators.first().next();
			iterators.push(result.getChildIterator());
			{
				$s.pop();
				return result;
			}
		}
		else {
			{
				$s.pop();
				return null;
			}
		}
		$s.pop();
	}
	{
		var $tmp = { hasNext : hasNext, next : next}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getDescendantOrSelfIterator = function() {
	$s.push("xpath.xml.XPathXml::getDescendantOrSelfIterator");
	var $spos = $s.length;
	var iterators = new List();
	iterators.push(this.getSelfIterator());
	var hasNext = function() {
		$s.push("xpath.xml.XPathXml::getDescendantOrSelfIterator@209");
		var $spos = $s.length;
		while(iterators.length > 0) {
			if(iterators.first().hasNext()) {
				$s.pop();
				return true;
			}
			else iterators.pop();
		}
		{
			$s.pop();
			return false;
		}
		$s.pop();
	}
	var next = function() {
		$s.push("xpath.xml.XPathXml::getDescendantOrSelfIterator@216");
		var $spos = $s.length;
		if(hasNext()) {
			var result = iterators.first().next();
			iterators.push(result.getChildIterator());
			{
				$s.pop();
				return result;
			}
		}
		else {
			{
				$s.pop();
				return null;
			}
		}
		$s.pop();
	}
	{
		var $tmp = { hasNext : hasNext, next : next}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getDocumentIterator = function() {
	$s.push("xpath.xml.XPathXml::getDocumentIterator");
	var $spos = $s.length;
	var document = this;
	while(document.getParent() != null) document = document.getParent();
	var nodes = document.getDescendantOrSelfIterator();
	var attributes = { hasNext : function() {
		$s.push("xpath.xml.XPathXml::getDocumentIterator@315");
		var $spos = $s.length;
		{
			$s.pop();
			return false;
		}
		$s.pop();
	}, next : function() {
		$s.push("xpath.xml.XPathXml::getDocumentIterator@316");
		var $spos = $s.length;
		{
			$s.pop();
			return null;
		}
		$s.pop();
	}}
	{
		var $tmp = { hasNext : function() {
			$s.push("xpath.xml.XPathXml::getDocumentIterator@320");
			var $spos = $s.length;
			{
				var $tmp = attributes.hasNext() || nodes.hasNext();
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("xpath.xml.XPathXml::getDocumentIterator@323");
			var $spos = $s.length;
			if(attributes.hasNext()) {
				var $tmp = attributes.next();
				$s.pop();
				return $tmp;
			}
			else if(nodes.hasNext()) {
				var result = nodes.next();
				attributes = result.getAttributeIterator();
				{
					$s.pop();
					return result;
				}
			}
			else {
				$s.pop();
				return null;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getFollowingIterator = function() {
	$s.push("xpath.xml.XPathXml::getFollowingIterator");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getFollowingIterator must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getFollowingSiblingIterator = function() {
	$s.push("xpath.xml.XPathXml::getFollowingSiblingIterator");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getFollowingSiblingIterator must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getName = function() {
	$s.push("xpath.xml.XPathXml::getName");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getName must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getNamespaceIterator = function() {
	$s.push("xpath.xml.XPathXml::getNamespaceIterator");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getNamespaceIterator must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getParent = function() {
	$s.push("xpath.xml.XPathXml::getParent");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getParent must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getParentIterator = function() {
	$s.push("xpath.xml.XPathXml::getParentIterator");
	var $spos = $s.length;
	var node = this.getParent();
	{
		var $tmp = { hasNext : function() {
			$s.push("xpath.xml.XPathXml::getParentIterator@263");
			var $spos = $s.length;
			{
				var $tmp = node != null;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("xpath.xml.XPathXml::getParentIterator@266");
			var $spos = $s.length;
			var result = node;
			node = null;
			{
				$s.pop();
				return result;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getPrecedingIterator = function() {
	$s.push("xpath.xml.XPathXml::getPrecedingIterator");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getPrecedingIterator must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getPrecedingSiblingIterator = function() {
	$s.push("xpath.xml.XPathXml::getPrecedingSiblingIterator");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getPrecedingSiblingIterator must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getSelfIterator = function() {
	$s.push("xpath.xml.XPathXml::getSelfIterator");
	var $spos = $s.length;
	var node = this;
	{
		var $tmp = { hasNext : function() {
			$s.push("xpath.xml.XPathXml::getSelfIterator@296");
			var $spos = $s.length;
			{
				var $tmp = node != null;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("xpath.xml.XPathXml::getSelfIterator@299");
			var $spos = $s.length;
			var result = node;
			node = null;
			{
				$s.pop();
				return result;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getStringValue = function() {
	$s.push("xpath.xml.XPathXml::getStringValue");
	var $spos = $s.length;
	var type = this.getType();
	if(type == xpath.xml.XmlNodeType.Root || type == xpath.xml.XmlNodeType.Element) {
		var result = "";
		{ var $it56 = this.getDescendantIterator();
		while( $it56.hasNext() ) { var descendant = $it56.next();
		{
			if(descendant.getType() == xpath.xml.XmlNodeType.Text) {
				result += descendant.getValue();
			}
		}
		}}
		{
			$s.pop();
			return result;
		}
	}
	else if(type == xpath.xml.XmlNodeType.ProcessingInstruction || type == xpath.xml.XmlNodeType.Text || type == xpath.xml.XmlNodeType.Attribute) {
		{
			var $tmp = this.getValue();
			$s.pop();
			return $tmp;
		}
	}
	else {
		$s.pop();
		return "";
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getType = function() {
	$s.push("xpath.xml.XPathXml::getType");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getType must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.getValue = function() {
	$s.push("xpath.xml.XPathXml::getValue");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.getValue must be overridden");
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype["is"] = function(operand) {
	$s.push("xpath.xml.XPathXml::is");
	var $spos = $s.length;
	throw new xpath.XPathError("xpath.xml.XPathXml.is must be overridden");
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
xpath.xml.XPathXml.prototype.__class__ = xpath.xml.XPathXml;
xpath.xml.XPathHxXml = function(p) { if( p === $_ ) return; {
	$s.push("xpath.xml.XPathHxXml::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.xml.XPathHxXml.__name__ = ["xpath","xml","XPathHxXml"];
xpath.xml.XPathHxXml.__super__ = xpath.xml.XPathXml;
for(var k in xpath.xml.XPathXml.prototype ) xpath.xml.XPathHxXml.prototype[k] = xpath.xml.XPathXml.prototype[k];
xpath.xml.XPathHxXml.wrapNode = function(hxXml) {
	$s.push("xpath.xml.XPathHxXml::wrapNode");
	var $spos = $s.length;
	if(hxXml == null) throw new xpath.XPathException("Can't wrap null for XPath");
	else if(hxXml.nodeType == Xml.DocType) throw new xpath.XPathException("Can't wrap XML document type declaration for XPath");
	else {
		if(xpath.xml.XPathHxXml.isTextNode(hxXml)) {
			if(hxXml.getParent() != null) {
				var textStart = null;
				{ var $it57 = hxXml.getParent().iterator();
				while( $it57.hasNext() ) { var sibling = $it57.next();
				{
					if(xpath.xml.XPathHxXml.isTextNode(sibling)) {
						if(textStart == null) textStart = sibling;
						if(sibling == hxXml) break;
					}
					else {
						textStart = null;
					}
				}
				}}
				if(textStart != null) hxXml = textStart;
			}
		}
		var node = new xpath.xml.XPathHxXml();
		node.hxXml = hxXml;
		{
			$s.pop();
			return node;
		}
	}
	$s.pop();
}
xpath.xml.XPathHxXml.wrapAttribute = function(attributeParent,attributeName) {
	$s.push("xpath.xml.XPathHxXml::wrapAttribute");
	var $spos = $s.length;
	if(attributeParent != null && attributeParent.nodeType == Xml.Element && attributeParent.exists(attributeName)) {
		var node = new xpath.xml.XPathHxXml();
		node.attributeParent = attributeParent;
		node.attributeName = attributeName;
		{
			$s.pop();
			return node;
		}
	}
	else throw new xpath.XPathException("Can't wrap attribute that doesn't exist");
	$s.pop();
}
xpath.xml.XPathHxXml.fastWrapNode = function(hxXml) {
	$s.push("xpath.xml.XPathHxXml::fastWrapNode");
	var $spos = $s.length;
	var node = new xpath.xml.XPathHxXml();
	node.hxXml = hxXml;
	{
		$s.pop();
		return node;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.pcDecode = function(pcData) {
	$s.push("xpath.xml.XPathHxXml::pcDecode");
	var $spos = $s.length;
	var i = 0, j = 0;
	var result = "";
	while(j < pcData.length) {
		if(pcData.charAt(j) == "&") {
			result += pcData.substr(i,j - i);
			i = ++j;
			while(j < pcData.length && pcData.charAt(j) != ";") ++j;
			if(j == pcData.length) break;
			result += xpath.xml.XPathHxXml.refDecode(pcData.substr(i,j - i));
			i = j + 1;
		}
		++j;
	}
	result += pcData.substr(i);
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.refDecode = function(ref) {
	$s.push("xpath.xml.XPathHxXml::refDecode");
	var $spos = $s.length;
	if(ref.charAt(0) == "#") {
		if(ref.charAt(1) == "x") {
			{
				var $tmp = String.fromCharCode(Std.parseInt("0" + ref.substr(1)));
				$s.pop();
				return $tmp;
			}
		}
		else {
			{
				var $tmp = String.fromCharCode(Std.parseInt(ref.substr(1)));
				$s.pop();
				return $tmp;
			}
		}
	}
	else {
		switch(ref) {
		case "lt":{
			{
				$s.pop();
				return "<";
			}
		}break;
		case "gt":{
			{
				$s.pop();
				return ">";
			}
		}break;
		case "amp":{
			{
				$s.pop();
				return "&";
			}
		}break;
		case "apos":{
			{
				$s.pop();
				return "'";
			}
		}break;
		case "quot":{
			{
				$s.pop();
				return "\"";
			}
		}break;
		default:{
			{
				var $tmp = "&" + ref + ";";
				$s.pop();
				return $tmp;
			}
		}break;
		}
	}
	$s.pop();
}
xpath.xml.XPathHxXml.isTextNode = function(hxXml) {
	$s.push("xpath.xml.XPathHxXml::isTextNode");
	var $spos = $s.length;
	{
		var $tmp = (hxXml.nodeType == Xml.CData || hxXml.nodeType == Xml.PCData);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.isContainerNode = function(hxXml) {
	$s.push("xpath.xml.XPathHxXml::isContainerNode");
	var $spos = $s.length;
	{
		var $tmp = (hxXml.nodeType == Xml.Element || hxXml.nodeType == Xml.Document);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.hasChildNodes = function(hxXml) {
	$s.push("xpath.xml.XPathHxXml::hasChildNodes");
	var $spos = $s.length;
	{
		var $tmp = (hxXml.nodeType == Xml.Element || hxXml.nodeType == Xml.Document) && hxXml.firstChild() != null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.attributeName = null;
xpath.xml.XPathHxXml.prototype.attributeParent = null;
xpath.xml.XPathHxXml.prototype.getAttributeIterator = function() {
	$s.push("xpath.xml.XPathHxXml::getAttributeIterator");
	var $spos = $s.length;
	if(this.hxXml == null || this.hxXml.nodeType != Xml.Element) {
		{
			var $tmp = new List().iterator();
			$s.pop();
			return $tmp;
		}
	}
	var iterator = this.hxXml.attributes();
	var me = this;
	{
		var $tmp = { hasNext : function() {
			$s.push("xpath.xml.XPathHxXml::getAttributeIterator@166");
			var $spos = $s.length;
			{
				var $tmp = iterator.hasNext();
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("xpath.xml.XPathHxXml::getAttributeIterator@169");
			var $spos = $s.length;
			if(iterator.hasNext()) {
				{
					var $tmp = xpath.xml.XPathHxXml.wrapAttribute(me.hxXml,iterator.next());
					$s.pop();
					return $tmp;
				}
			}
			else {
				{
					$s.pop();
					return null;
				}
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getChildIterator = function() {
	$s.push("xpath.xml.XPathHxXml::getChildIterator");
	var $spos = $s.length;
	if(this.hxXml == null) {
		var $tmp = new List().iterator();
		$s.pop();
		return $tmp;
	}
	if(!xpath.xml.XPathHxXml.isContainerNode(this.hxXml)) {
		{
			var $tmp = new List().iterator();
			$s.pop();
			return $tmp;
		}
	}
	var iterator = this.hxXml.iterator();
	var nextNode = null;
	var inText = false;
	var hasNext = function() {
		$s.push("xpath.xml.XPathHxXml::getChildIterator@190");
		var $spos = $s.length;
		{
			var $tmp = nextNode != null;
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	var next = function() {
		$s.push("xpath.xml.XPathHxXml::getChildIterator@193");
		var $spos = $s.length;
		var result = (nextNode == null?null:xpath.xml.XPathHxXml.fastWrapNode(nextNode));
		if(inText) {
			inText = false;
			while(xpath.xml.XPathHxXml.isTextNode(nextNode)) {
				if(iterator.hasNext()) {
					nextNode = iterator.next();
				}
				else {
					nextNode = null;
					break;
				}
			}
		}
		else {
			if(iterator.hasNext()) {
				nextNode = iterator.next();
				inText = xpath.xml.XPathHxXml.isTextNode(nextNode);
			}
			else nextNode = null;
		}
		{
			$s.pop();
			return result;
		}
		$s.pop();
	}
	next();
	{
		var $tmp = { hasNext : hasNext, next : next}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getFollowingIterator = function() {
	$s.push("xpath.xml.XPathHxXml::getFollowingIterator");
	var $spos = $s.length;
	if(this.hxXml == null) {
		var $tmp = new List().iterator();
		$s.pop();
		return $tmp;
	}
	var nextNode = this.hxXml;
	var inText = false;
	var iterators = new List();
	if(xpath.xml.XPathHxXml.isContainerNode(this.hxXml)) iterators.add(this.hxXml.iterator());
	while(nextNode.getParent() != null) {
		var iterator = nextNode.getParent().iterator();
		while(iterator.next() != nextNode) null;
		iterators.add(iterator);
		nextNode = nextNode.getParent();
	}
	var hasNext = function() {
		$s.push("xpath.xml.XPathHxXml::getFollowingIterator@246");
		var $spos = $s.length;
		{
			var $tmp = nextNode != null;
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	var next = function() {
		$s.push("xpath.xml.XPathHxXml::getFollowingIterator@249");
		var $spos = $s.length;
		var result = (nextNode == null?null:xpath.xml.XPathHxXml.fastWrapNode(nextNode));
		if(inText) {
			while(xpath.xml.XPathHxXml.isTextNode(nextNode)) {
				if(iterators.first().hasNext()) {
					nextNode = iterators.first().next();
				}
				else {
					nextNode = null;
					break;
				}
			}
			inText = false;
		}
		else {
			if(iterators.length > 0 && iterators.first().hasNext()) {
				nextNode = iterators.first().next();
				inText = xpath.xml.XPathHxXml.isTextNode(nextNode);
			}
			else nextNode = null;
		}
		if(nextNode == null) {
			while(iterators.length > 0 && !iterators.first().hasNext()) {
				iterators.pop();
			}
			if(iterators.length > 0) {
				nextNode = iterators.first().next();
				inText = xpath.xml.XPathHxXml.isTextNode(nextNode);
			}
		}
		if(nextNode != null && nextNode.nodeType == Xml.Element) {
			iterators.push(nextNode.iterator());
		}
		{
			$s.pop();
			return result;
		}
		$s.pop();
	}
	next();
	{
		var $tmp = { hasNext : hasNext, next : next}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getFollowingSiblingIterator = function() {
	$s.push("xpath.xml.XPathHxXml::getFollowingSiblingIterator");
	var $spos = $s.length;
	if(this.hxXml == null) {
		var $tmp = new List().iterator();
		$s.pop();
		return $tmp;
	}
	if(this.hxXml.getParent() == null) {
		var $tmp = new List().iterator();
		$s.pop();
		return $tmp;
	}
	var nextNode = this.hxXml;
	var inText = false;
	var iterator = this.hxXml.getParent().iterator();
	while(iterator.next() != this.hxXml) null;
	var hasNext = function() {
		$s.push("xpath.xml.XPathHxXml::getFollowingSiblingIterator@352");
		var $spos = $s.length;
		{
			var $tmp = nextNode != null;
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	var next = function() {
		$s.push("xpath.xml.XPathHxXml::getFollowingSiblingIterator@355");
		var $spos = $s.length;
		var result = xpath.xml.XPathHxXml.fastWrapNode(nextNode);
		if(inText) {
			do {
				if(iterator.hasNext()) {
					nextNode = iterator.next();
					inText = xpath.xml.XPathHxXml.isTextNode(nextNode);
				}
				else {
					nextNode = null;
					inText = false;
				}
			} while(inText);
		}
		else {
			if(iterator.hasNext()) {
				nextNode = iterator.next();
				inText = xpath.xml.XPathHxXml.isTextNode(nextNode);
			}
			else {
				nextNode = null;
			}
		}
		{
			$s.pop();
			return result;
		}
		$s.pop();
	}
	next();
	{
		var $tmp = { hasNext : hasNext, next : next}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getName = function() {
	$s.push("xpath.xml.XPathHxXml::getName");
	var $spos = $s.length;
	{
		var $tmp = (this.attributeName == null?(this.hxXml.nodeType == Xml.Element?this.hxXml.getNodeName():null):this.attributeName);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getNamespaceIterator = function() {
	$s.push("xpath.xml.XPathHxXml::getNamespaceIterator");
	var $spos = $s.length;
	{
		var $tmp = new List().iterator();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getParent = function() {
	$s.push("xpath.xml.XPathHxXml::getParent");
	var $spos = $s.length;
	{
		var $tmp = (this.attributeName == null?(this.hxXml.getParent() == null?null:xpath.xml.XPathHxXml.fastWrapNode(this.hxXml.getParent())):xpath.xml.XPathHxXml.fastWrapNode(this.attributeParent));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getPrecedingIterator = function() {
	$s.push("xpath.xml.XPathHxXml::getPrecedingIterator");
	var $spos = $s.length;
	var stack = new List();
	if(this.hxXml == null) {
		var $tmp = stack.iterator();
		$s.pop();
		return $tmp;
	}
	var parent = this.hxXml;
	var hasNext = function() {
		$s.push("xpath.xml.XPathHxXml::getPrecedingIterator@455");
		var $spos = $s.length;
		do {
			if(stack.length > 0) {
				$s.pop();
				return true;
			}
			var pivot = parent;
			parent = parent.getParent();
			if(parent != null) {
				stack.push(xpath.xml.XPathHxXml.fastWrapNode(parent));
				var inText = false;
				{ var $it58 = parent.iterator();
				while( $it58.hasNext() ) { var sibling = $it58.next();
				{
					if(sibling == pivot) break;
					if(xpath.xml.XPathHxXml.isContainerNode(sibling)) {
						var wrappedContainer = xpath.xml.XPathHxXml.fastWrapNode(sibling);
						stack.push(wrappedContainer);
						{ var $it59 = wrappedContainer.getDescendantIterator();
						while( $it59.hasNext() ) { var wrappedDescendant = $it59.next();
						stack.push(wrappedDescendant);
						}}
						inText = false;
					}
					else if(!inText || !xpath.xml.XPathHxXml.isTextNode(sibling)) {
						stack.push(xpath.xml.XPathHxXml.fastWrapNode(sibling));
						inText = xpath.xml.XPathHxXml.isTextNode(sibling);
					}
				}
				}}
			}
		} while(parent != null);
		{
			$s.pop();
			return false;
		}
		$s.pop();
	}
	var next = function() {
		$s.push("xpath.xml.XPathHxXml::getPrecedingIterator@482");
		var $spos = $s.length;
		if(hasNext()) {
			var $tmp = stack.pop();
			$s.pop();
			return $tmp;
		}
		else {
			$s.pop();
			return null;
		}
		$s.pop();
	}
	{
		var $tmp = { hasNext : hasNext, next : next}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getPrecedingSiblingIterator = function() {
	$s.push("xpath.xml.XPathHxXml::getPrecedingSiblingIterator");
	var $spos = $s.length;
	var stack = new List();
	if(this.hxXml != null && this.hxXml.getParent() != null) {
		var inText = false;
		{ var $it60 = this.hxXml.getParent().iterator();
		while( $it60.hasNext() ) { var sibling = $it60.next();
		{
			if(sibling == this.hxXml) break;
			else if(!inText || !xpath.xml.XPathHxXml.isTextNode(sibling)) {
				stack.push(xpath.xml.XPathHxXml.fastWrapNode(sibling));
				inText = xpath.xml.XPathHxXml.isTextNode(sibling);
			}
		}
		}}
	}
	{
		var $tmp = stack.iterator();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getTextNodeValue = function() {
	$s.push("xpath.xml.XPathHxXml::getTextNodeValue");
	var $spos = $s.length;
	var result = "";
	var siblings;
	var parentHxXml = this.hxXml.getParent();
	if(parentHxXml == null) siblings = [this.hxXml].iterator();
	else siblings = parentHxXml.iterator();
	var sibling = siblings.next();
	while(sibling != this.hxXml) sibling = siblings.next();
	while(sibling != null) {
		if(sibling.nodeType == Xml.CData) {
			result += sibling.getNodeValue();
		}
		else if(sibling.nodeType == Xml.PCData) {
			result += xpath.xml.XPathHxXml.pcDecode(sibling.getNodeValue());
		}
		else break;
		if(siblings.hasNext()) sibling = siblings.next();
		else sibling = null;
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getType = function() {
	$s.push("xpath.xml.XPathHxXml::getType");
	var $spos = $s.length;
	{
		var $tmp = (this.attributeName == null?function($this) {
			var $r;
			switch($this.hxXml.nodeType) {
			case Xml.CData:{
				$r = xpath.xml.XmlNodeType.Text;
			}break;
			case Xml.Comment:{
				$r = xpath.xml.XmlNodeType.Comment;
			}break;
			case Xml.Document:{
				$r = xpath.xml.XmlNodeType.Root;
			}break;
			case Xml.Element:{
				$r = xpath.xml.XmlNodeType.Element;
			}break;
			case Xml.PCData:{
				$r = xpath.xml.XmlNodeType.Text;
			}break;
			case Xml.Prolog:{
				$r = xpath.xml.XmlNodeType.ProcessingInstruction;
			}break;
			default:{
				$r = function($this) {
					var $r;
					throw new xpath.XPathError();
					return $r;
				}($this);
			}break;
			}
			return $r;
		}(this):xpath.xml.XmlNodeType.Attribute);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getValue = function() {
	$s.push("xpath.xml.XPathHxXml::getValue");
	var $spos = $s.length;
	{
		var $tmp = (this.attributeName == null?function($this) {
			var $r;
			switch($this.hxXml.nodeType) {
			case Xml.CData:{
				$r = $this.getTextNodeValue();
			}break;
			case Xml.PCData:{
				$r = $this.getTextNodeValue();
			}break;
			case Xml.Prolog:{
				$r = $this.hxXml.getNodeValue();
			}break;
			default:{
				$r = null;
			}break;
			}
			return $r;
		}(this):xpath.xml.XPathHxXml.pcDecode(this.attributeParent.get(this.attributeName)));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.getWrappedXml = function() {
	$s.push("xpath.xml.XPathHxXml::getWrappedXml");
	var $spos = $s.length;
	if(this.hxXml == null) throw new xpath.XPathException("Can't unwrap attribute node into haXe Xml");
	else {
		var $tmp = this.hxXml;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.hxXml = null;
xpath.xml.XPathHxXml.prototype["is"] = function(operand) {
	$s.push("xpath.xml.XPathHxXml::is");
	var $spos = $s.length;
	{
		var $tmp = (Std["is"](operand,xpath.xml.XPathHxXml) && this.hxXml == function($this) {
			var $r;
			var tmp = operand;
			$r = (Std["is"](tmp,xpath.xml.XPathHxXml)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).hxXml && this.attributeName == function($this) {
			var $r;
			var tmp = operand;
			$r = (Std["is"](tmp,xpath.xml.XPathHxXml)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).attributeName);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.xml.XPathHxXml.prototype.__class__ = xpath.xml.XPathHxXml;
List = function(p) { if( p === $_ ) return; {
	$s.push("List::new");
	var $spos = $s.length;
	this.length = 0;
	$s.pop();
}}
List.__name__ = ["List"];
List.prototype.add = function(item) {
	$s.push("List::add");
	var $spos = $s.length;
	var x = [item];
	if(this.h == null) this.h = x;
	else this.q[1] = x;
	this.q = x;
	this.length++;
	$s.pop();
}
List.prototype.clear = function() {
	$s.push("List::clear");
	var $spos = $s.length;
	this.h = null;
	this.q = null;
	this.length = 0;
	$s.pop();
}
List.prototype.filter = function(f) {
	$s.push("List::filter");
	var $spos = $s.length;
	var l2 = new List();
	var l = this.h;
	while(l != null) {
		var v = l[0];
		l = l[1];
		if(f(v)) l2.add(v);
	}
	{
		$s.pop();
		return l2;
	}
	$s.pop();
}
List.prototype.first = function() {
	$s.push("List::first");
	var $spos = $s.length;
	{
		var $tmp = (this.h == null?null:this.h[0]);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
List.prototype.h = null;
List.prototype.isEmpty = function() {
	$s.push("List::isEmpty");
	var $spos = $s.length;
	{
		var $tmp = (this.h == null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
List.prototype.iterator = function() {
	$s.push("List::iterator");
	var $spos = $s.length;
	{
		var $tmp = { h : this.h, hasNext : function() {
			$s.push("List::iterator@210");
			var $spos = $s.length;
			{
				var $tmp = (this.h != null);
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("List::iterator@213");
			var $spos = $s.length;
			if(this.h == null) {
				$s.pop();
				return null;
			}
			var x = this.h[0];
			this.h = this.h[1];
			{
				$s.pop();
				return x;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
List.prototype.join = function(sep) {
	$s.push("List::join");
	var $spos = $s.length;
	var s = new StringBuf();
	var first = true;
	var l = this.h;
	while(l != null) {
		if(first) first = false;
		else s.b += sep;
		s.b += l[0];
		l = l[1];
	}
	{
		var $tmp = s.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
List.prototype.last = function() {
	$s.push("List::last");
	var $spos = $s.length;
	{
		var $tmp = (this.q == null?null:this.q[0]);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
List.prototype.length = null;
List.prototype.map = function(f) {
	$s.push("List::map");
	var $spos = $s.length;
	var b = new List();
	var l = this.h;
	while(l != null) {
		var v = l[0];
		l = l[1];
		b.add(f(v));
	}
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
List.prototype.pop = function() {
	$s.push("List::pop");
	var $spos = $s.length;
	if(this.h == null) {
		$s.pop();
		return null;
	}
	var x = this.h[0];
	this.h = this.h[1];
	if(this.h == null) this.q = null;
	this.length--;
	{
		$s.pop();
		return x;
	}
	$s.pop();
}
List.prototype.push = function(item) {
	$s.push("List::push");
	var $spos = $s.length;
	var x = [item,this.h];
	this.h = x;
	if(this.q == null) this.q = x;
	this.length++;
	$s.pop();
}
List.prototype.q = null;
List.prototype.remove = function(v) {
	$s.push("List::remove");
	var $spos = $s.length;
	var prev = null;
	var l = this.h;
	while(l != null) {
		if(l[0] == v) {
			if(prev == null) this.h = l[1];
			else prev[1] = l[1];
			if(this.q == l) this.q = prev;
			this.length--;
			{
				$s.pop();
				return true;
			}
		}
		prev = l;
		l = l[1];
	}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
List.prototype.toString = function() {
	$s.push("List::toString");
	var $spos = $s.length;
	var s = new StringBuf();
	var first = true;
	var l = this.h;
	s.b += "{";
	while(l != null) {
		if(first) first = false;
		else s.b += ", ";
		s.b += l[0];
		l = l[1];
	}
	s.b += "}";
	{
		var $tmp = s.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
List.prototype.__class__ = List;
xpath.parser.FunctionCallParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.FunctionCallParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.FunctionCallParser.__name__ = ["xpath","parser","FunctionCallParser"];
xpath.parser.FunctionCallParser.instance = null;
xpath.parser.FunctionCallParser.getInstance = function() {
	$s.push("xpath.parser.FunctionCallParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.FunctionCallParser.instance == null) xpath.parser.FunctionCallParser.instance = new xpath.parser.FunctionCallParser();
	{
		var $tmp = xpath.parser.FunctionCallParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.FunctionCallParser.prototype.parse = function(input) {
	$s.push("xpath.parser.FunctionCallParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(!Std["is"](token,xpath.tokenizer.BeginFunctionCallToken)) {
		$s.pop();
		return null;
	}
	var beginFunctionCallToken = function($this) {
		var $r;
		var tmp = token;
		$r = (Std["is"](tmp,xpath.tokenizer.BeginFunctionCallToken)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this);
	var name = beginFunctionCallToken.name;
	var arguments = new List();
	var output = xpath.parser.ExpressionParser.getInstance().parse(input.descend());
	var hasNext;
	if(output != null) {
		arguments.add(output.result);
		input = output.getNextInput();
		hasNext = input.hasNext();
		if(hasNext) token = input.next();
		while(hasNext && Std["is"](token,xpath.tokenizer.ArgumentDelimiterToken)) {
			output = xpath.parser.ExpressionParser.getInstance().parse(input.descend());
			arguments.add(output.result);
			input = output.getNextInput();
			hasNext = input.hasNext();
			if(hasNext) token = input.next();
		}
		if(!hasNext) input.back();
	}
	if(!input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
	token = input.next();
	if(!Std["is"](token,xpath.tokenizer.EndFunctionCallToken)) {
		throw new xpath.parser.ParseError("Invalid token stream");
	}
	var result = new xpath.expression.FunctionCall(name,arguments);
	{
		var $tmp = input.getOutput(input.count,result);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.FunctionCallParser.prototype.__class__ = xpath.parser.FunctionCallParser;
xpath.parser.FunctionCallParser.__interfaces__ = [xpath.parser.Parser];
neash.text.TextFormat = function(in_font,in_size,in_color,in_bold,in_italic,in_underline,in_url,in_target,in_align,in_leftMargin,in_rightMargin,in_indent,in_leading) { if( in_font === $_ ) return; {
	$s.push("neash.text.TextFormat::new");
	var $spos = $s.length;
	this.font = in_font;
	this.size = in_size;
	this.color = in_color;
	this.bold = in_bold;
	this.italic = in_italic;
	this.underline = in_underline;
	this.url = in_url;
	this.target = in_target;
	this.align = in_align;
	this.leftMargin = in_leftMargin;
	this.rightMargin = in_rightMargin;
	this.indent = in_indent;
	this.leading = in_leading;
	$s.pop();
}}
neash.text.TextFormat.__name__ = ["neash","text","TextFormat"];
neash.text.TextFormat.prototype.align = null;
neash.text.TextFormat.prototype.blockIndent = null;
neash.text.TextFormat.prototype.bold = null;
neash.text.TextFormat.prototype.bullet = null;
neash.text.TextFormat.prototype.color = null;
neash.text.TextFormat.prototype.display = null;
neash.text.TextFormat.prototype.font = null;
neash.text.TextFormat.prototype.indent = null;
neash.text.TextFormat.prototype.italic = null;
neash.text.TextFormat.prototype.kerning = null;
neash.text.TextFormat.prototype.leading = null;
neash.text.TextFormat.prototype.leftMargin = null;
neash.text.TextFormat.prototype.letterSpacing = null;
neash.text.TextFormat.prototype.rightMargin = null;
neash.text.TextFormat.prototype.size = null;
neash.text.TextFormat.prototype.tabStops = null;
neash.text.TextFormat.prototype.target = null;
neash.text.TextFormat.prototype.underline = null;
neash.text.TextFormat.prototype.url = null;
neash.text.TextFormat.prototype.__class__ = neash.text.TextFormat;
sandy.materials.MaterialManager = function(p) { if( p === $_ ) return; {
	$s.push("sandy.materials.MaterialManager::new");
	var $spos = $s.length;
	this.m_aList = new Array();
	$s.pop();
}}
sandy.materials.MaterialManager.__name__ = ["sandy","materials","MaterialManager"];
sandy.materials.MaterialManager.prototype.begin = function(p_oScene) {
	$s.push("sandy.materials.MaterialManager::begin");
	var $spos = $s.length;
	var _g = 0, _g1 = this.m_aList;
	while(_g < _g1.length) {
		var l_oMaterial = _g1[_g];
		++_g;
		l_oMaterial.begin(p_oScene);
	}
	$s.pop();
}
sandy.materials.MaterialManager.prototype.finish = function(p_oScene) {
	$s.push("sandy.materials.MaterialManager::finish");
	var $spos = $s.length;
	var _g = 0, _g1 = this.m_aList;
	while(_g < _g1.length) {
		var l_oMaterial = _g1[_g];
		++_g;
		l_oMaterial.finish(p_oScene);
	}
	$s.pop();
}
sandy.materials.MaterialManager.prototype.isRegistered = function(p_oMaterial) {
	$s.push("sandy.materials.MaterialManager::isRegistered");
	var $spos = $s.length;
	{
		var _g1 = 0, _g = this.m_aList.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(this.m_aList[i] == p_oMaterial) {
				{
					$s.pop();
					return true;
				}
			}
		}
	}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
sandy.materials.MaterialManager.prototype.m_aList = null;
sandy.materials.MaterialManager.prototype.register = function(p_oMaterial) {
	$s.push("sandy.materials.MaterialManager::register");
	var $spos = $s.length;
	this.m_aList.push(p_oMaterial);
	$s.pop();
}
sandy.materials.MaterialManager.prototype.unregister = function(p_oMaterial) {
	$s.push("sandy.materials.MaterialManager::unregister");
	var $spos = $s.length;
	var _g1 = 0, _g = this.m_aList.length;
	while(_g1 < _g) {
		var i = _g1++;
		if(this.m_aList[i] == p_oMaterial) {
			this.m_aList.splice(i,1);
			{
				$s.pop();
				return;
			}
		}
	}
	$s.pop();
}
sandy.materials.MaterialManager.prototype.__class__ = sandy.materials.MaterialManager;
neash.events.IOErrorEvent = function(type,bubbles,cancelable,inText) { if( type === $_ ) return; {
	$s.push("neash.events.IOErrorEvent::new");
	var $spos = $s.length;
	if(inText == null) inText = "";
	neash.events.Event.apply(this,[type,bubbles,cancelable]);
	this.text = inText;
	$s.pop();
}}
neash.events.IOErrorEvent.__name__ = ["neash","events","IOErrorEvent"];
neash.events.IOErrorEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) neash.events.IOErrorEvent.prototype[k] = neash.events.Event.prototype[k];
neash.events.IOErrorEvent.prototype.text = null;
neash.events.IOErrorEvent.prototype.__class__ = neash.events.IOErrorEvent;
xpath.XPath = function(xpathStr,environment) { if( xpathStr === $_ ) return; {
	$s.push("xpath.XPath::new");
	var $spos = $s.length;
	if(environment == null) {
		this.environment = xpath.context.CoreEnvironment.getInstance();
	}
	else {
		this.environment = new xpath.context.UnionEnvironment(environment,xpath.context.CoreEnvironment.getInstance());
	}
	var tokenizerInput = new xpath.tokenizer.TokenizerInput(xpathStr);
	var tokenizerOutput = xpath.tokenizer.container.XPathTokenizer.getInstance().tokenize(tokenizerInput);
	if(tokenizerOutput.result == null) {
		throw new xpath.XPathError("Unknown tokenization failure");
	}
	var parserInput = new xpath.parser.ParserInput(tokenizerOutput.result);
	var parserOutput = xpath.parser.XPathParser.getInstance().parse(parserInput);
	if(parserOutput.result == null) {
		throw new xpath.XPathError("Unknown parser failure");
	}
	this.expression = parserOutput.result;
	$s.pop();
}}
xpath.XPath.__name__ = ["xpath","XPath"];
xpath.XPath.prototype.environment = null;
xpath.XPath.prototype.evaluate = function(contextNode,environment) {
	$s.push("xpath.XPath::evaluate");
	var $spos = $s.length;
	if(environment == null) environment = this.environment;
	else environment = new xpath.context.UnionEnvironment(environment,this.environment);
	{
		var $tmp = this.expression.evaluate(new xpath.context.Context(contextNode,1,1,environment));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.XPath.prototype.evaluateAsBool = function(contextNode,environment) {
	$s.push("xpath.XPath::evaluateAsBool");
	var $spos = $s.length;
	{
		var $tmp = this.evaluate(contextNode,environment).getBool();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.XPath.prototype.evaluateAsFloat = function(contextNode,environment) {
	$s.push("xpath.XPath::evaluateAsFloat");
	var $spos = $s.length;
	{
		var $tmp = this.evaluate(contextNode,environment).getFloat();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.XPath.prototype.evaluateAsString = function(contextNode,environment) {
	$s.push("xpath.XPath::evaluateAsString");
	var $spos = $s.length;
	{
		var $tmp = this.evaluate(contextNode,environment).getString();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.XPath.prototype.expression = null;
xpath.XPath.prototype.selectNode = function(contextNode,environment) {
	$s.push("xpath.XPath::selectNode");
	var $spos = $s.length;
	var result = this.evaluate(contextNode,environment);
	if(Std["is"](result,xpath.value.XPathNodeSet)) {
		var nodes = function($this) {
			var $r;
			var tmp = result;
			$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).getNodes();
		{ var $it61 = nodes.iterator();
		while( $it61.hasNext() ) { var node = $it61.next();
		{
			$s.pop();
			return node;
		}
		}}
		{
			$s.pop();
			return null;
		}
	}
	else {
		throw new xpath.EvaluationException("Query evaluated to a " + result.typeName + ", but " + "a node set was expected");
		{
			$s.pop();
			return null;
		}
	}
	$s.pop();
}
xpath.XPath.prototype.selectNodes = function(contextNode,environment) {
	$s.push("xpath.XPath::selectNodes");
	var $spos = $s.length;
	var result = this.evaluate(contextNode,environment);
	if(Std["is"](result,xpath.value.XPathNodeSet)) {
		{
			var $tmp = function($this) {
				var $r;
				var tmp = result;
				$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).getNodes();
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.EvaluationException("Query evaluated to a " + result.typeName + ", but " + "a node set was expected");
		{
			$s.pop();
			return null;
		}
	}
	$s.pop();
}
xpath.XPath.prototype.selectSingleNode = function(contextNode,environment) {
	$s.push("xpath.XPath::selectSingleNode");
	var $spos = $s.length;
	{
		var $tmp = this.selectNode(contextNode,environment);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.XPath.prototype.__class__ = xpath.XPath;
IntIter = function(min,max) { if( min === $_ ) return; {
	$s.push("IntIter::new");
	var $spos = $s.length;
	this.min = min;
	this.max = max;
	$s.pop();
}}
IntIter.__name__ = ["IntIter"];
IntIter.prototype.hasNext = function() {
	$s.push("IntIter::hasNext");
	var $spos = $s.length;
	{
		var $tmp = this.min < this.max;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
IntIter.prototype.max = null;
IntIter.prototype.min = null;
IntIter.prototype.next = function() {
	$s.push("IntIter::next");
	var $spos = $s.length;
	{
		var $tmp = this.min++;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
IntIter.prototype.__class__ = IntIter;
sandy.core.data.PrimitiveFace = function(p_iPrimitive) { if( p_iPrimitive === $_ ) return; {
	$s.push("sandy.core.data.PrimitiveFace::new");
	var $spos = $s.length;
	this.aPolygons = new Array();
	this.m_iPrimitive = p_iPrimitive;
	$s.pop();
}}
sandy.core.data.PrimitiveFace.__name__ = ["sandy","core","data","PrimitiveFace"];
sandy.core.data.PrimitiveFace.prototype.__getAppearance = function() {
	$s.push("sandy.core.data.PrimitiveFace::__getAppearance");
	var $spos = $s.length;
	{
		var $tmp = this.m_oAppearance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.PrimitiveFace.prototype.__getPrimitive = function() {
	$s.push("sandy.core.data.PrimitiveFace::__getPrimitive");
	var $spos = $s.length;
	{
		var $tmp = this.m_iPrimitive;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.PrimitiveFace.prototype.__setAppearance = function(p_oApp) {
	$s.push("sandy.core.data.PrimitiveFace::__setAppearance");
	var $spos = $s.length;
	this.m_oAppearance = p_oApp;
	if(this.m_iPrimitive.__getGeometry() != null) {
		{
			var _g = 0, _g1 = this.aPolygons;
			while(_g < _g1.length) {
				var v = _g1[_g];
				++_g;
				v.__setAppearance(this.m_oAppearance);
			}
		}
	}
	{
		$s.pop();
		return p_oApp;
	}
	$s.pop();
}
sandy.core.data.PrimitiveFace.prototype.aPolygons = null;
sandy.core.data.PrimitiveFace.prototype.addPolygon = function(p_oPolyId) {
	$s.push("sandy.core.data.PrimitiveFace::addPolygon");
	var $spos = $s.length;
	this.aPolygons.push(this.m_iPrimitive.aPolygons[p_oPolyId]);
	$s.pop();
}
sandy.core.data.PrimitiveFace.prototype.appearance = null;
sandy.core.data.PrimitiveFace.prototype.m_iPrimitive = null;
sandy.core.data.PrimitiveFace.prototype.m_oAppearance = null;
sandy.core.data.PrimitiveFace.prototype.primitive = null;
sandy.core.data.PrimitiveFace.prototype.__class__ = sandy.core.data.PrimitiveFace;
xpath.tokenizer.token.StepDelimiterTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.StepDelimiterTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.StepDelimiterToken(),"/","StepDelimiter"]);
	$s.pop();
}}
xpath.tokenizer.token.StepDelimiterTokenizer.__name__ = ["xpath","tokenizer","token","StepDelimiterTokenizer"];
xpath.tokenizer.token.StepDelimiterTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.StepDelimiterTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.StepDelimiterTokenizer.instance = null;
xpath.tokenizer.token.StepDelimiterTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.StepDelimiterTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.StepDelimiterTokenizer.instance == null) xpath.tokenizer.token.StepDelimiterTokenizer.instance = new xpath.tokenizer.token.StepDelimiterTokenizer();
	{
		var $tmp = xpath.tokenizer.token.StepDelimiterTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.StepDelimiterTokenizer.prototype.__class__ = xpath.tokenizer.token.StepDelimiterTokenizer;
xpath.tokenizer.token.DeepStepDelimiterTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.DeepStepDelimiterTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.DeepStepDelimiterTokenizer.__name__ = ["xpath","tokenizer","token","DeepStepDelimiterTokenizer"];
xpath.tokenizer.token.DeepStepDelimiterTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.DeepStepDelimiterTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.DeepStepDelimiterTokenizer.instance = null;
xpath.tokenizer.token.DeepStepDelimiterTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.DeepStepDelimiterTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.DeepStepDelimiterTokenizer.instance == null) xpath.tokenizer.token.DeepStepDelimiterTokenizer.instance = new xpath.tokenizer.token.DeepStepDelimiterTokenizer();
	{
		var $tmp = xpath.tokenizer.token.DeepStepDelimiterTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.DeepStepDelimiterTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.DeepStepDelimiterTokenizer::tokenize");
	var $spos = $s.length;
	if(input.query.substr(input.position,2) == "//") {
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.StepDelimiterToken();
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this),new xpath.tokenizer.AxisToken(xpath.Axis.DescendantOrSelf),new xpath.tokenizer.TypeTestToken(xpath.NodeCategory.Node),new xpath.tokenizer.StepDelimiterToken()];
		var characterLength = 2 + this.countWhitespace(input.query,input.position + 2);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "DeepStepDelimiter", position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.DeepStepDelimiterTokenizer.prototype.__class__ = xpath.tokenizer.token.DeepStepDelimiterTokenizer;
canvas.display.BitmapData = function(inWidth,inHeight,inTransparent,inFillColour,inAlpha) { if( inWidth === $_ ) return; {
	$s.push("canvas.display.BitmapData::new");
	var $spos = $s.length;
	if(inWidth < 1 || inHeight < 1) this.mTextureBuffer = null;
	else {
		var flags = canvas.display.BitmapData.HARDWARE;
		if(inTransparent == null || inTransparent) flags |= canvas.display.BitmapData.TRANSPARENT;
		var alpha = (inAlpha == null?255:inAlpha);
		var colour = (inFillColour == null?0:inFillColour);
		if(inAlpha == null && (inFillColour == 65793)) alpha = 0;
		this.mTextureBuffer = new Image();
		this.mTextureBuffer.setAttribute("width",inWidth);
		this.mTextureBuffer.setAttribute("height",inHeight);
	}
	$s.pop();
}}
canvas.display.BitmapData.__name__ = ["canvas","display","BitmapData"];
canvas.display.BitmapData.CreateFromHandle = function(inHandle) {
	$s.push("canvas.display.BitmapData::CreateFromHandle");
	var $spos = $s.length;
	var result = new canvas.display.BitmapData(0,0);
	result.mTextureBuffer = inHandle;
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
canvas.display.BitmapData.prototype.LoadFromFile = function(inFilename,inLoader) {
	$s.push("canvas.display.BitmapData::LoadFromFile");
	var $spos = $s.length;
	this.mTextureBuffer = new Image();
	if(inLoader != null) {
		this.mTextureBuffer.onload = function() {
			$s.push("canvas.display.BitmapData::LoadFromFile@112");
			var $spos = $s.length;
			var e = new neash.events.Event(neash.events.Event.COMPLETE);
			e.target = inLoader;
			inLoader.dispatchEvent(e);
			$s.pop();
		}
	}
	this.mTextureBuffer.src = inFilename;
	$s.pop();
}
canvas.display.BitmapData.prototype.clone = function() {
	$s.push("canvas.display.BitmapData::clone");
	var $spos = $s.length;
	{
		$s.pop();
		return this;
	}
	$s.pop();
}
canvas.display.BitmapData.prototype.destroy = function() {
	$s.push("canvas.display.BitmapData::destroy");
	var $spos = $s.length;
	this.mTextureBuffer = null;
	$s.pop();
}
canvas.display.BitmapData.prototype.dispose = function() {
	$s.push("canvas.display.BitmapData::dispose");
	var $spos = $s.length;
	null;
	$s.pop();
}
canvas.display.BitmapData.prototype.draw = function(source,b,c,d,e,f) {
	$s.push("canvas.display.BitmapData::draw");
	var $spos = $s.length;
	var w = this.mTextureBuffer.getAttribute("width");
	var h = this.mTextureBuffer.getAttribute("height");
	this.mTextureBuffer = source.mTextureBuffer;
	this.mTextureBuffer.setAttribute("width",w);
	this.mTextureBuffer.setAttribute("height",h);
	$s.pop();
}
canvas.display.BitmapData.prototype.fillRect = function(Rectangle,Int) {
	$s.push("canvas.display.BitmapData::fillRect");
	var $spos = $s.length;
	null;
	$s.pop();
}
canvas.display.BitmapData.prototype.flushGraphics = function() {
	$s.push("canvas.display.BitmapData::flushGraphics");
	var $spos = $s.length;
	if(this.getGraphics() != null) this.getGraphics().flush();
	$s.pop();
}
canvas.display.BitmapData.prototype.getColorBoundsRect = function(a,b,c) {
	$s.push("canvas.display.BitmapData::getColorBoundsRect");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Rectangle();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.display.BitmapData.prototype.getGraphics = function() {
	$s.push("canvas.display.BitmapData::getGraphics");
	var $spos = $s.length;
	if(this.graphics == null) this.graphics = new canvas.display.Graphics(this.mTextureBuffer);
	{
		var $tmp = this.graphics;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.display.BitmapData.prototype.getHeight = function() {
	$s.push("canvas.display.BitmapData::getHeight");
	var $spos = $s.length;
	{
		var $tmp = this.mTextureBuffer.height;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.display.BitmapData.prototype.getWidth = function() {
	$s.push("canvas.display.BitmapData::getWidth");
	var $spos = $s.length;
	{
		var $tmp = this.mTextureBuffer.width;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.display.BitmapData.prototype.graphics = null;
canvas.display.BitmapData.prototype.handle = function() {
	$s.push("canvas.display.BitmapData::handle");
	var $spos = $s.length;
	{
		var $tmp = this.mTextureBuffer;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.display.BitmapData.prototype.height = null;
canvas.display.BitmapData.prototype.mTextureBuffer = null;
canvas.display.BitmapData.prototype.rect = null;
canvas.display.BitmapData.prototype.width = null;
canvas.display.BitmapData.prototype.__class__ = canvas.display.BitmapData;
canvas.display.BitmapData.__interfaces__ = [neash.display.IBitmapDrawable];
nme.KeyCode = function() { }
nme.KeyCode.__name__ = ["nme","KeyCode"];
nme.KeyCode.prototype.__class__ = nme.KeyCode;
sandy.errors = {}
sandy.errors.SingletonError = function(p) { if( p === $_ ) return; {
	$s.push("sandy.errors.SingletonError::new");
	var $spos = $s.length;
	throw ("Class cannot be instantiated");
	$s.pop();
}}
sandy.errors.SingletonError.__name__ = ["sandy","errors","SingletonError"];
sandy.errors.SingletonError.prototype.__class__ = sandy.errors.SingletonError;
xpath.parser.ParserInput = function(tokens) { if( tokens === $_ ) return; {
	$s.push("xpath.parser.ParserInput::new");
	var $spos = $s.length;
	this.tokens = tokens;
	this.count = 0;
	$s.pop();
}}
xpath.parser.ParserInput.__name__ = ["xpath","parser","ParserInput"];
xpath.parser.ParserInput.prototype.back = function() {
	$s.push("xpath.parser.ParserInput::back");
	var $spos = $s.length;
	if(this.count > 0) --this.count;
	else throw new xpath.parser.ParseError();
	$s.pop();
}
xpath.parser.ParserInput.prototype.count = null;
xpath.parser.ParserInput.prototype.descend = function() {
	$s.push("xpath.parser.ParserInput::descend");
	var $spos = $s.length;
	{
		var $tmp = new xpath.parser.ParserInput(this.tokens.slice(this.count));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.ParserInput.prototype.getOutput = function(count,result) {
	$s.push("xpath.parser.ParserInput::getOutput");
	var $spos = $s.length;
	var nextTokens = this.tokens.slice(count);
	if(nextTokens.length > 0) {
		var getNextInput = function() {
			$s.push("xpath.parser.ParserInput::getOutput@73");
			var $spos = $s.length;
			{
				var $tmp = new xpath.parser.ParserInput(nextTokens);
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}
		{
			var $tmp = new xpath.parser.ParserOutput(result,getNextInput);
			$s.pop();
			return $tmp;
		}
	}
	else {
		{
			var $tmp = new xpath.parser.ParserOutput(result);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
xpath.parser.ParserInput.prototype.hasNext = function() {
	$s.push("xpath.parser.ParserInput::hasNext");
	var $spos = $s.length;
	{
		var $tmp = (this.count < this.tokens.length);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.ParserInput.prototype.next = function() {
	$s.push("xpath.parser.ParserInput::next");
	var $spos = $s.length;
	{
		var $tmp = this.tokens[this.count++];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.ParserInput.prototype.restart = function() {
	$s.push("xpath.parser.ParserInput::restart");
	var $spos = $s.length;
	this.count = 0;
	$s.pop();
}
xpath.parser.ParserInput.prototype.tokens = null;
xpath.parser.ParserInput.prototype.__class__ = xpath.parser.ParserInput;
xpath.tokenizer.token.EndGroupTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.EndGroupTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.EndGroupToken(),")","EndGroup"]);
	$s.pop();
}}
xpath.tokenizer.token.EndGroupTokenizer.__name__ = ["xpath","tokenizer","token","EndGroupTokenizer"];
xpath.tokenizer.token.EndGroupTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.EndGroupTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.EndGroupTokenizer.instance = null;
xpath.tokenizer.token.EndGroupTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.EndGroupTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.EndGroupTokenizer.instance == null) xpath.tokenizer.token.EndGroupTokenizer.instance = new xpath.tokenizer.token.EndGroupTokenizer();
	{
		var $tmp = xpath.tokenizer.token.EndGroupTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.EndGroupTokenizer.prototype.__class__ = xpath.tokenizer.token.EndGroupTokenizer;
sandy.materials.MaterialType = { __ename__ : ["sandy","materials","MaterialType"], __constructs__ : ["NONE","COLOR","WIREFRAME","BITMAP","MOVIE","VIDEO","OUTLINE"] }
sandy.materials.MaterialType.BITMAP = ["BITMAP",3];
sandy.materials.MaterialType.BITMAP.toString = $estr;
sandy.materials.MaterialType.BITMAP.__enum__ = sandy.materials.MaterialType;
sandy.materials.MaterialType.COLOR = ["COLOR",1];
sandy.materials.MaterialType.COLOR.toString = $estr;
sandy.materials.MaterialType.COLOR.__enum__ = sandy.materials.MaterialType;
sandy.materials.MaterialType.MOVIE = ["MOVIE",4];
sandy.materials.MaterialType.MOVIE.toString = $estr;
sandy.materials.MaterialType.MOVIE.__enum__ = sandy.materials.MaterialType;
sandy.materials.MaterialType.NONE = ["NONE",0];
sandy.materials.MaterialType.NONE.toString = $estr;
sandy.materials.MaterialType.NONE.__enum__ = sandy.materials.MaterialType;
sandy.materials.MaterialType.OUTLINE = ["OUTLINE",6];
sandy.materials.MaterialType.OUTLINE.toString = $estr;
sandy.materials.MaterialType.OUTLINE.__enum__ = sandy.materials.MaterialType;
sandy.materials.MaterialType.VIDEO = ["VIDEO",5];
sandy.materials.MaterialType.VIDEO.toString = $estr;
sandy.materials.MaterialType.VIDEO.__enum__ = sandy.materials.MaterialType;
sandy.materials.MaterialType.WIREFRAME = ["WIREFRAME",2];
sandy.materials.MaterialType.WIREFRAME.toString = $estr;
sandy.materials.MaterialType.WIREFRAME.__enum__ = sandy.materials.MaterialType;
sandy.materials.ColorMaterial = function(p_nColor,p_nAlpha,p_oAttr) { if( p_nColor === $_ ) return; {
	$s.push("sandy.materials.ColorMaterial::new");
	var $spos = $s.length;
	if(p_nAlpha == null) p_nAlpha = 1.0;
	if(p_nColor == null) p_nColor = 0;
	sandy.materials.Material.apply(this,[p_oAttr]);
	this.m_oType = sandy.materials.MaterialType.COLOR;
	this.m_nColor = p_nColor;
	this.m_nAlpha = p_nAlpha;
	$s.pop();
}}
sandy.materials.ColorMaterial.__name__ = ["sandy","materials","ColorMaterial"];
sandy.materials.ColorMaterial.__super__ = sandy.materials.Material;
for(var k in sandy.materials.Material.prototype ) sandy.materials.ColorMaterial.prototype[k] = sandy.materials.Material.prototype[k];
sandy.materials.ColorMaterial.prototype.__getAlpha = function() {
	$s.push("sandy.materials.ColorMaterial::__getAlpha");
	var $spos = $s.length;
	{
		var $tmp = this.m_nAlpha;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.ColorMaterial.prototype.__getColor = function() {
	$s.push("sandy.materials.ColorMaterial::__getColor");
	var $spos = $s.length;
	{
		var $tmp = this.m_nColor;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.ColorMaterial.prototype.__setAlpha = function(p_nValue) {
	$s.push("sandy.materials.ColorMaterial::__setAlpha");
	var $spos = $s.length;
	this.m_nAlpha = p_nValue;
	this.m_bModified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.ColorMaterial.prototype.__setColor = function(p_nValue) {
	$s.push("sandy.materials.ColorMaterial::__setColor");
	var $spos = $s.length;
	this.m_nColor = p_nValue;
	this.m_bModified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.ColorMaterial.prototype.alpha = null;
sandy.materials.ColorMaterial.prototype.color = null;
sandy.materials.ColorMaterial.prototype.m_nAlpha = null;
sandy.materials.ColorMaterial.prototype.m_nColor = null;
sandy.materials.ColorMaterial.prototype.renderPolygon = function(p_oScene,p_oPolygon,p_mcContainer) {
	$s.push("sandy.materials.ColorMaterial::renderPolygon");
	var $spos = $s.length;
	var l_points = ((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices);
	if(l_points.length == 0) {
		$s.pop();
		return;
	}
	var l_oVertex;
	var lId = l_points.length;
	var l_graphics = p_mcContainer.GetGraphics();
	l_graphics.lineStyle();
	l_graphics.beginFill(this.m_nColor,this.m_nAlpha);
	l_graphics.moveTo(l_points[0].sx,l_points[0].sy);
	while((l_oVertex = l_points[--lId]) != null) l_graphics.lineTo(l_oVertex.sx,l_oVertex.sy);
	l_graphics.endFill();
	if(this.attributes != null) this.attributes.draw(l_graphics,p_oPolygon,this,p_oScene);
	$s.pop();
}
sandy.materials.ColorMaterial.prototype.__class__ = sandy.materials.ColorMaterial;
sandy.materials.ColorMaterial.__interfaces__ = [sandy.materials.IAlphaMaterial];
xpath.expression.PredicateStep = function(expression,nextStep) { if( expression === $_ ) return; {
	$s.push("xpath.expression.PredicateStep::new");
	var $spos = $s.length;
	xpath.expression.PathStep.apply(this,[$closure(this,"predicateStep"),nextStep]);
	this.expression = expression;
	$s.pop();
}}
xpath.expression.PredicateStep.__name__ = ["xpath","expression","PredicateStep"];
xpath.expression.PredicateStep.__super__ = xpath.expression.PathStep;
for(var k in xpath.expression.PathStep.prototype ) xpath.expression.PredicateStep.prototype[k] = xpath.expression.PathStep.prototype[k];
xpath.expression.PredicateStep.prototype.expression = null;
xpath.expression.PredicateStep.prototype.predicateStep = function(context) {
	$s.push("xpath.expression.PredicateStep::predicateStep");
	var $spos = $s.length;
	var result = this.expression.evaluate(context);
	if(Std["is"](result,xpath.value.XPathNumber)) {
		if(result.getFloat() == context.position) {
			{
				var $tmp = [context.node];
				$s.pop();
				return $tmp;
			}
		}
		else {
			{
				var $tmp = [];
				$s.pop();
				return $tmp;
			}
		}
	}
	else {
		if(result.getBool()) {
			{
				var $tmp = [context.node];
				$s.pop();
				return $tmp;
			}
		}
		else {
			{
				var $tmp = [];
				$s.pop();
				return $tmp;
			}
		}
	}
	$s.pop();
}
xpath.expression.PredicateStep.prototype.__class__ = xpath.expression.PredicateStep;
sandy.core.data.Vector = function(p_nX,p_nY,p_nZ) { if( p_nX === $_ ) return; {
	$s.push("sandy.core.data.Vector::new");
	var $spos = $s.length;
	if(p_nX == null) p_nX = 0;
	if(p_nY == null) p_nY = 0;
	if(p_nZ == null) p_nZ = 0;
	this.x = p_nX;
	this.y = p_nY;
	this.z = p_nZ;
	$s.pop();
}}
sandy.core.data.Vector.__name__ = ["sandy","core","data","Vector"];
sandy.core.data.Vector.prototype.add = function(v) {
	$s.push("sandy.core.data.Vector::add");
	var $spos = $s.length;
	this.x += v.x;
	this.y += v.y;
	this.z += v.z;
	$s.pop();
}
sandy.core.data.Vector.prototype.clone = function() {
	$s.push("sandy.core.data.Vector::clone");
	var $spos = $s.length;
	var l_oV = new sandy.core.data.Vector(this.x,this.y,this.z);
	{
		$s.pop();
		return l_oV;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.copy = function(p_oVector) {
	$s.push("sandy.core.data.Vector::copy");
	var $spos = $s.length;
	this.x = p_oVector.x;
	this.y = p_oVector.y;
	this.z = p_oVector.z;
	$s.pop();
}
sandy.core.data.Vector.prototype.cross = function(v) {
	$s.push("sandy.core.data.Vector::cross");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector((this.y * v.z) - (this.z * v.y),(this.z * v.x) - (this.x * v.z),(this.x * v.y) - (this.y * v.x));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.crossWith = function(v) {
	$s.push("sandy.core.data.Vector::crossWith");
	var $spos = $s.length;
	var cx = (this.y * v.z) - (this.z * v.y);
	var cy = (this.z * v.x) - (this.x * v.z);
	var cz = (this.x * v.y) - (this.y * v.x);
	this.x = cx;
	this.y = cy;
	this.z = cz;
	$s.pop();
}
sandy.core.data.Vector.prototype.deserialize = function(convertFrom) {
	$s.push("sandy.core.data.Vector::deserialize");
	var $spos = $s.length;
	var tmp = convertFrom.split(",");
	if(tmp.length != 3) {
		haxe.Log.trace("Unexpected length of string to deserialize into a vector " + convertFrom,{ fileName : "Vector.hx", lineNumber : 369, className : "sandy.core.data.Vector", methodName : "deserialize"});
	}
	this.x = Std.parseFloat(tmp[0]);
	this.y = Std.parseFloat(tmp[1]);
	this.z = Std.parseFloat(tmp[2]);
	$s.pop();
}
sandy.core.data.Vector.prototype.dot = function(w) {
	$s.push("sandy.core.data.Vector::dot");
	var $spos = $s.length;
	{
		var $tmp = (this.x * w.x + this.y * w.y + this.z * w.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.equals = function(p_vector) {
	$s.push("sandy.core.data.Vector::equals");
	var $spos = $s.length;
	{
		var $tmp = (p_vector.x == this.x && p_vector.y == this.y && p_vector.z == this.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.getAngle = function(w) {
	$s.push("sandy.core.data.Vector::getAngle");
	var $spos = $s.length;
	var n1 = this.getNorm();
	var n2 = w.getNorm();
	var denom = n1 * n2;
	if(denom == 0) {
		{
			$s.pop();
			return 0;
		}
	}
	else {
		var ncos = this.dot(w) / (denom);
		var sin2 = 1 - (ncos * ncos);
		if(sin2 < 0) {
			haxe.Log.trace(" wrong " + ncos,{ fileName : "Vector.hx", lineNumber : 292, className : "sandy.core.data.Vector", methodName : "getAngle"});
			sin2 = 0;
		}
		{
			var $tmp = Math.atan2(Math.sqrt(sin2),ncos);
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.getMaxComponent = function() {
	$s.push("sandy.core.data.Vector::getMaxComponent");
	var $spos = $s.length;
	{
		var $tmp = Math.max(this.x,Math.max(this.y,this.z));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.getMinComponent = function() {
	$s.push("sandy.core.data.Vector::getMinComponent");
	var $spos = $s.length;
	{
		var $tmp = Math.min(this.x,Math.min(this.y,this.z));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.getNorm = function() {
	$s.push("sandy.core.data.Vector::getNorm");
	var $spos = $s.length;
	{
		var $tmp = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.negate = function() {
	$s.push("sandy.core.data.Vector::negate");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(-this.x,-this.y,-this.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.normalize = function() {
	$s.push("sandy.core.data.Vector::normalize");
	var $spos = $s.length;
	var norm = this.getNorm();
	if(norm == 0 || norm == 1) {
		$s.pop();
		return;
	}
	this.x = this.x / norm;
	this.y = this.y / norm;
	this.z = this.z / norm;
	$s.pop();
}
sandy.core.data.Vector.prototype.pow = function(pow) {
	$s.push("sandy.core.data.Vector::pow");
	var $spos = $s.length;
	this.x = Math.pow(this.x,pow);
	this.y = Math.pow(this.y,pow);
	this.z = Math.pow(this.z,pow);
	$s.pop();
}
sandy.core.data.Vector.prototype.reset = function(px,py,pz) {
	$s.push("sandy.core.data.Vector::reset");
	var $spos = $s.length;
	if(px == null) px = 0;
	if(py == null) py = 0;
	if(pz == null) pz = 0;
	this.x = px;
	this.y = py;
	this.z = pz;
	$s.pop();
}
sandy.core.data.Vector.prototype.resetToNegativeInfinity = function() {
	$s.push("sandy.core.data.Vector::resetToNegativeInfinity");
	var $spos = $s.length;
	this.x = this.y = this.z = Math.NEGATIVE_INFINITY;
	$s.pop();
}
sandy.core.data.Vector.prototype.resetToPositiveInfinity = function() {
	$s.push("sandy.core.data.Vector::resetToPositiveInfinity");
	var $spos = $s.length;
	this.x = this.y = this.z = Math.POSITIVE_INFINITY;
	$s.pop();
}
sandy.core.data.Vector.prototype.scale = function(n) {
	$s.push("sandy.core.data.Vector::scale");
	var $spos = $s.length;
	this.x *= n;
	this.y *= n;
	this.z *= n;
	$s.pop();
}
sandy.core.data.Vector.prototype.serialize = function(decPlaces) {
	$s.push("sandy.core.data.Vector::serialize");
	var $spos = $s.length;
	if(decPlaces == 0) {
		decPlaces = .01;
	}
	{
		var $tmp = (sandy.util.NumberUtil.roundTo(this.x,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.y,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.z,decPlaces));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.sub = function(v) {
	$s.push("sandy.core.data.Vector::sub");
	var $spos = $s.length;
	this.x -= v.x;
	this.y -= v.y;
	this.z -= v.z;
	$s.pop();
}
sandy.core.data.Vector.prototype.toString = function(decPlaces) {
	$s.push("sandy.core.data.Vector::toString");
	var $spos = $s.length;
	if(decPlaces == 0 || decPlaces == null) {
		decPlaces = 0.01;
	}
	{
		var $tmp = "{" + sandy.util.NumberUtil.roundTo(this.x,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.y,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.z,decPlaces) + "}";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vector.prototype.x = null;
sandy.core.data.Vector.prototype.y = null;
sandy.core.data.Vector.prototype.z = null;
sandy.core.data.Vector.prototype.__class__ = sandy.core.data.Vector;
sandy.materials.attributes.PhongAttributesLightMap = function(p) { if( p === $_ ) return; {
	$s.push("sandy.materials.attributes.PhongAttributesLightMap::new");
	var $spos = $s.length;
	this.alphas = [[],[]];
	this.colors = [[],[]];
	this.ratios = [[],[]];
	$s.pop();
}}
sandy.materials.attributes.PhongAttributesLightMap.__name__ = ["sandy","materials","attributes","PhongAttributesLightMap"];
sandy.materials.attributes.PhongAttributesLightMap.prototype.alphas = null;
sandy.materials.attributes.PhongAttributesLightMap.prototype.colors = null;
sandy.materials.attributes.PhongAttributesLightMap.prototype.ratios = null;
sandy.materials.attributes.PhongAttributesLightMap.prototype.__class__ = sandy.materials.attributes.PhongAttributesLightMap;
js.JsXml__ = function(p) { if( p === $_ ) return; {
	$s.push("js.JsXml__::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
js.JsXml__.__name__ = ["js","JsXml__"];
js.JsXml__.parse = function(str) {
	$s.push("js.JsXml__::parse");
	var $spos = $s.length;
	var rules = [js.JsXml__.enode,js.JsXml__.epcdata,js.JsXml__.eend,js.JsXml__.ecdata,js.JsXml__.edoctype,js.JsXml__.ecomment,js.JsXml__.eprolog];
	var nrules = rules.length;
	var current = Xml.createDocument();
	var stack = new List();
	while(str.length > 0) {
		var i = 0;
		try {
			while(i < nrules) {
				var r = rules[i];
				if(r.match(str)) {
					switch(i) {
					case 0:{
						var x = Xml.createElement(r.matched(1));
						current.addChild(x);
						str = r.matchedRight();
						while(js.JsXml__.eattribute.match(str)) {
							x.set(js.JsXml__.eattribute.matched(1),js.JsXml__.eattribute.matched(3));
							str = js.JsXml__.eattribute.matchedRight();
						}
						if(!js.JsXml__.eclose.match(str)) {
							i = nrules;
							throw "__break__";
						}
						if(js.JsXml__.eclose.matched(1) == ">") {
							stack.push(current);
							current = x;
						}
						str = js.JsXml__.eclose.matchedRight();
					}break;
					case 1:{
						var x = Xml.createPCData(r.matched(0));
						current.addChild(x);
						str = r.matchedRight();
					}break;
					case 2:{
						if(current._children != null && current._children.length == 0) {
							var e = Xml.createPCData("");
							current.addChild(e);
						}
						else null;
						if(r.matched(1) != current._nodeName || stack.isEmpty()) {
							i = nrules;
							throw "__break__";
						}
						else null;
						current = stack.pop();
						str = r.matchedRight();
					}break;
					case 3:{
						str = r.matchedRight();
						if(!js.JsXml__.ecdata_end.match(str)) throw "End of CDATA section not found";
						var x = Xml.createCData(js.JsXml__.ecdata_end.matchedLeft());
						current.addChild(x);
						str = js.JsXml__.ecdata_end.matchedRight();
					}break;
					case 4:{
						var pos = 0;
						var count = 0;
						var old = str;
						try {
							while(true) {
								if(!js.JsXml__.edoctype_elt.match(str)) throw "End of DOCTYPE section not found";
								var p = js.JsXml__.edoctype_elt.matchedPos();
								pos += p.pos + p.len;
								str = js.JsXml__.edoctype_elt.matchedRight();
								switch(js.JsXml__.edoctype_elt.matched(0)) {
								case "[":{
									count++;
								}break;
								case "]":{
									count--;
									if(count < 0) throw "Invalid ] found in DOCTYPE declaration";
								}break;
								default:{
									if(count == 0) throw "__break__";
								}break;
								}
							}
						} catch( e ) { if( e != "__break__" ) throw e; }
						var x = Xml.createDocType(old.substr(0,pos));
						current.addChild(x);
					}break;
					case 5:{
						if(!js.JsXml__.ecomment_end.match(str)) throw "Unclosed Comment";
						var p = js.JsXml__.ecomment_end.matchedPos();
						var x = Xml.createComment(str.substr(0,p.pos + p.len));
						current.addChild(x);
						str = js.JsXml__.ecomment_end.matchedRight();
					}break;
					case 6:{
						var x = Xml.createProlog(r.matched(0));
						current.addChild(x);
						str = r.matchedRight();
					}break;
					}
					throw "__break__";
				}
				i += 1;
			}
		} catch( e ) { if( e != "__break__" ) throw e; }
		if(i == nrules) {
			if(str.length > 10) throw ("Xml parse error : Unexpected " + str.substr(0,10) + "...");
			else throw ("Xml parse error : Unexpected " + str);
		}
	}
	{
		$s.pop();
		return current;
	}
	$s.pop();
}
js.JsXml__.createElement = function(name) {
	$s.push("js.JsXml__::createElement");
	var $spos = $s.length;
	var r = new js.JsXml__();
	r.nodeType = Xml.Element;
	r._children = new Array();
	r._attributes = new Hash();
	r.setNodeName(name);
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
js.JsXml__.createPCData = function(data) {
	$s.push("js.JsXml__::createPCData");
	var $spos = $s.length;
	var r = new js.JsXml__();
	r.nodeType = Xml.PCData;
	r.setNodeValue(data);
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
js.JsXml__.createCData = function(data) {
	$s.push("js.JsXml__::createCData");
	var $spos = $s.length;
	var r = new js.JsXml__();
	r.nodeType = Xml.CData;
	r.setNodeValue(data);
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
js.JsXml__.createComment = function(data) {
	$s.push("js.JsXml__::createComment");
	var $spos = $s.length;
	var r = new js.JsXml__();
	r.nodeType = Xml.Comment;
	r.setNodeValue(data);
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
js.JsXml__.createDocType = function(data) {
	$s.push("js.JsXml__::createDocType");
	var $spos = $s.length;
	var r = new js.JsXml__();
	r.nodeType = Xml.DocType;
	r.setNodeValue(data);
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
js.JsXml__.createProlog = function(data) {
	$s.push("js.JsXml__::createProlog");
	var $spos = $s.length;
	var r = new js.JsXml__();
	r.nodeType = Xml.Prolog;
	r.setNodeValue(data);
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
js.JsXml__.createDocument = function() {
	$s.push("js.JsXml__::createDocument");
	var $spos = $s.length;
	var r = new js.JsXml__();
	r.nodeType = Xml.Document;
	r._children = new Array();
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
js.JsXml__.prototype._attributes = null;
js.JsXml__.prototype._children = null;
js.JsXml__.prototype._nodeName = null;
js.JsXml__.prototype._nodeValue = null;
js.JsXml__.prototype._parent = null;
js.JsXml__.prototype.addChild = function(x) {
	$s.push("js.JsXml__::addChild");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	if(x._parent != null) x._parent._children.remove(x);
	x._parent = this;
	this._children.push(x);
	$s.pop();
}
js.JsXml__.prototype.attributes = function() {
	$s.push("js.JsXml__::attributes");
	var $spos = $s.length;
	if(this.nodeType != Xml.Element) throw "bad nodeType";
	{
		var $tmp = this._attributes.keys();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.elements = function() {
	$s.push("js.JsXml__::elements");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	{
		var $tmp = { cur : 0, x : this._children, hasNext : function() {
			$s.push("js.JsXml__::elements@283");
			var $spos = $s.length;
			var k = this.cur;
			var l = this.x.length;
			while(k < l) {
				if(this.x[k].nodeType == Xml.Element) break;
				k += 1;
			}
			this.cur = k;
			{
				var $tmp = k < l;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("js.JsXml__::elements@294");
			var $spos = $s.length;
			var k = this.cur;
			var l = this.x.length;
			while(k < l) {
				var n = this.x[k];
				k += 1;
				if(n.nodeType == Xml.Element) {
					this.cur = k;
					{
						$s.pop();
						return n;
					}
				}
			}
			{
				$s.pop();
				return null;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.elementsNamed = function(name) {
	$s.push("js.JsXml__::elementsNamed");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	{
		var $tmp = { cur : 0, x : this._children, hasNext : function() {
			$s.push("js.JsXml__::elementsNamed@315");
			var $spos = $s.length;
			var k = this.cur;
			var l = this.x.length;
			while(k < l) {
				var n = this.x[k];
				if(n.nodeType == Xml.Element && n._nodeName == name) break;
				k++;
			}
			this.cur = k;
			{
				var $tmp = k < l;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("js.JsXml__::elementsNamed@327");
			var $spos = $s.length;
			var k = this.cur;
			var l = this.x.length;
			while(k < l) {
				var n = this.x[k];
				k++;
				if(n.nodeType == Xml.Element && n._nodeName == name) {
					this.cur = k;
					{
						$s.pop();
						return n;
					}
				}
			}
			{
				$s.pop();
				return null;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.exists = function(att) {
	$s.push("js.JsXml__::exists");
	var $spos = $s.length;
	if(this.nodeType != Xml.Element) throw "bad nodeType";
	{
		var $tmp = this._attributes.exists(att);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.firstChild = function() {
	$s.push("js.JsXml__::firstChild");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	{
		var $tmp = this._children[0];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.firstElement = function() {
	$s.push("js.JsXml__::firstElement");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	var cur = 0;
	var l = this._children.length;
	while(cur < l) {
		var n = this._children[cur];
		if(n.nodeType == Xml.Element) {
			$s.pop();
			return n;
		}
		cur++;
	}
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
js.JsXml__.prototype.get = function(att) {
	$s.push("js.JsXml__::get");
	var $spos = $s.length;
	if(this.nodeType != Xml.Element) throw "bad nodeType";
	{
		var $tmp = this._attributes.get(att);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.getNodeName = function() {
	$s.push("js.JsXml__::getNodeName");
	var $spos = $s.length;
	if(this.nodeType != Xml.Element) throw "bad nodeType";
	{
		var $tmp = this._nodeName;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.getNodeValue = function() {
	$s.push("js.JsXml__::getNodeValue");
	var $spos = $s.length;
	if(this.nodeType == Xml.Element || this.nodeType == Xml.Document) throw "bad nodeType";
	{
		var $tmp = this._nodeValue;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.getParent = function() {
	$s.push("js.JsXml__::getParent");
	var $spos = $s.length;
	{
		var $tmp = this._parent;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.insertChild = function(x,pos) {
	$s.push("js.JsXml__::insertChild");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	if(x._parent != null) x._parent._children.remove(x);
	x._parent = this;
	this._children.insert(pos,x);
	$s.pop();
}
js.JsXml__.prototype.iterator = function() {
	$s.push("js.JsXml__::iterator");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	{
		var $tmp = { cur : 0, x : this._children, hasNext : function() {
			$s.push("js.JsXml__::iterator@269");
			var $spos = $s.length;
			{
				var $tmp = this.cur < this.x.length;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("js.JsXml__::iterator@272");
			var $spos = $s.length;
			{
				var $tmp = this.x[this.cur++];
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.nodeName = null;
js.JsXml__.prototype.nodeType = null;
js.JsXml__.prototype.nodeValue = null;
js.JsXml__.prototype.parent = null;
js.JsXml__.prototype.remove = function(att) {
	$s.push("js.JsXml__::remove");
	var $spos = $s.length;
	if(this.nodeType != Xml.Element) throw "bad nodeType";
	this._attributes.remove(att);
	$s.pop();
}
js.JsXml__.prototype.removeChild = function(x) {
	$s.push("js.JsXml__::removeChild");
	var $spos = $s.length;
	if(this._children == null) throw "bad nodetype";
	var b = this._children.remove(x);
	if(b) x._parent = null;
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
js.JsXml__.prototype.set = function(att,value) {
	$s.push("js.JsXml__::set");
	var $spos = $s.length;
	if(this.nodeType != Xml.Element) throw "bad nodeType";
	this._attributes.set(att,value);
	$s.pop();
}
js.JsXml__.prototype.setNodeName = function(n) {
	$s.push("js.JsXml__::setNodeName");
	var $spos = $s.length;
	if(this.nodeType != Xml.Element) throw "bad nodeType";
	{
		var $tmp = this._nodeName = n;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.setNodeValue = function(v) {
	$s.push("js.JsXml__::setNodeValue");
	var $spos = $s.length;
	if(this.nodeType == Xml.Element || this.nodeType == Xml.Document) throw "bad nodeType";
	{
		var $tmp = this._nodeValue = v;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.toString = function() {
	$s.push("js.JsXml__::toString");
	var $spos = $s.length;
	if(this.nodeType == Xml.PCData) {
		var $tmp = this._nodeValue;
		$s.pop();
		return $tmp;
	}
	if(this.nodeType == Xml.CData) {
		var $tmp = "<![CDATA[" + this._nodeValue + "]]>";
		$s.pop();
		return $tmp;
	}
	if(this.nodeType == Xml.Comment || this.nodeType == Xml.DocType || this.nodeType == Xml.Prolog) {
		var $tmp = this._nodeValue;
		$s.pop();
		return $tmp;
	}
	var s = new StringBuf();
	if(this.nodeType == Xml.Element) {
		s.b += "<";
		s.b += this._nodeName;
		{ var $it62 = this._attributes.keys();
		while( $it62.hasNext() ) { var k = $it62.next();
		{
			s.b += " ";
			s.b += k;
			s.b += "=\"";
			s.b += this._attributes.get(k);
			s.b += "\"";
		}
		}}
		if(this._children.length == 0) {
			s.b += "/>";
			{
				var $tmp = s.b;
				$s.pop();
				return $tmp;
			}
		}
		s.b += ">";
	}
	{ var $it63 = this.iterator();
	while( $it63.hasNext() ) { var x = $it63.next();
	s.b += x.toString();
	}}
	if(this.nodeType == Xml.Element) {
		s.b += "</";
		s.b += this._nodeName;
		s.b += ">";
	}
	{
		var $tmp = s.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.JsXml__.prototype.__class__ = js.JsXml__;
neash.media = {}
neash.media.SoundChannel = function(p) { if( p === $_ ) return; {
	$s.push("neash.media.SoundChannel::new");
	var $spos = $s.length;
	neash.events.EventDispatcher.apply(this,[this]);
	$s.pop();
}}
neash.media.SoundChannel.__name__ = ["neash","media","SoundChannel"];
neash.media.SoundChannel.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) neash.media.SoundChannel.prototype[k] = neash.events.EventDispatcher.prototype[k];
neash.media.SoundChannel.prototype.leftPeak = null;
neash.media.SoundChannel.prototype.position = null;
neash.media.SoundChannel.prototype.rightPeak = null;
neash.media.SoundChannel.prototype.soundTransform = null;
neash.media.SoundChannel.prototype.stop = function() {
	$s.push("neash.media.SoundChannel::stop");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.media.SoundChannel.prototype.__class__ = neash.media.SoundChannel;
sandy.materials.attributes.LineAttributes = function(p_nThickness,p_nColor,p_nAlpha) { if( p_nThickness === $_ ) return; {
	$s.push("sandy.materials.attributes.LineAttributes::new");
	var $spos = $s.length;
	if(p_nAlpha == null) p_nAlpha = 1.0;
	if(p_nColor == null) p_nColor = 1;
	if(p_nThickness == null) p_nThickness = 1.0;
	this.m_nThickness = p_nThickness;
	this.m_nAlpha = p_nAlpha;
	this.m_nColor = p_nColor;
	this.modified = true;
	sandy.materials.attributes.AAttributes.apply(this,[]);
	$s.pop();
}}
sandy.materials.attributes.LineAttributes.__name__ = ["sandy","materials","attributes","LineAttributes"];
sandy.materials.attributes.LineAttributes.__super__ = sandy.materials.attributes.AAttributes;
for(var k in sandy.materials.attributes.AAttributes.prototype ) sandy.materials.attributes.LineAttributes.prototype[k] = sandy.materials.attributes.AAttributes.prototype[k];
sandy.materials.attributes.LineAttributes.prototype.__getAlpha = function() {
	$s.push("sandy.materials.attributes.LineAttributes::__getAlpha");
	var $spos = $s.length;
	{
		var $tmp = this.m_nAlpha;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.LineAttributes.prototype.__getColor = function() {
	$s.push("sandy.materials.attributes.LineAttributes::__getColor");
	var $spos = $s.length;
	{
		var $tmp = this.m_nColor;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.LineAttributes.prototype.__getThickness = function() {
	$s.push("sandy.materials.attributes.LineAttributes::__getThickness");
	var $spos = $s.length;
	{
		var $tmp = this.m_nThickness;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.LineAttributes.prototype.__setAlpha = function(p_nValue) {
	$s.push("sandy.materials.attributes.LineAttributes::__setAlpha");
	var $spos = $s.length;
	this.m_nAlpha = p_nValue;
	this.modified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.LineAttributes.prototype.__setColor = function(p_nValue) {
	$s.push("sandy.materials.attributes.LineAttributes::__setColor");
	var $spos = $s.length;
	this.m_nColor = p_nValue;
	this.modified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.LineAttributes.prototype.__setThickness = function(p_nValue) {
	$s.push("sandy.materials.attributes.LineAttributes::__setThickness");
	var $spos = $s.length;
	this.m_nThickness = p_nValue;
	this.modified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.LineAttributes.prototype.alpha = null;
sandy.materials.attributes.LineAttributes.prototype.color = null;
sandy.materials.attributes.LineAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.LineAttributes::draw");
	var $spos = $s.length;
	var l_aPoints = ((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices);
	var l_oVertex;
	p_oGraphics.lineStyle(this.m_nThickness,this.m_nColor,this.m_nAlpha);
	p_oGraphics.moveTo(l_aPoints[0].sx,l_aPoints[0].sy);
	var lId = l_aPoints.length;
	while((l_oVertex = l_aPoints[--lId]) != null) {
		p_oGraphics.lineTo(l_oVertex.sx,l_oVertex.sy);
	}
	$s.pop();
}
sandy.materials.attributes.LineAttributes.prototype.m_nAlpha = null;
sandy.materials.attributes.LineAttributes.prototype.m_nColor = null;
sandy.materials.attributes.LineAttributes.prototype.m_nThickness = null;
sandy.materials.attributes.LineAttributes.prototype.modified = null;
sandy.materials.attributes.LineAttributes.prototype.thickness = null;
sandy.materials.attributes.LineAttributes.prototype.__class__ = sandy.materials.attributes.LineAttributes;
sandy.materials.attributes.LineAttributes.__interfaces__ = [sandy.materials.attributes.IAttributes];
xpath.tokenizer.container.UnaryStepTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.UnaryStepTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.UnaryStepTokenizer.__name__ = ["xpath","tokenizer","container","UnaryStepTokenizer"];
xpath.tokenizer.container.UnaryStepTokenizer.instance = null;
xpath.tokenizer.container.UnaryStepTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.UnaryStepTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.UnaryStepTokenizer.instance == null) {
		xpath.tokenizer.container.UnaryStepTokenizer.instance = new xpath.tokenizer.container.UnaryStepTokenizer();
		xpath.tokenizer.container.UnaryStepTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.UnaryStepTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.UnaryStepTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.UnaryStepTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = new xpath.tokenizer.util.Sequence([function($this) {
			var $r;
			var tmp = xpath.tokenizer.token.AxisTokenizer.getInstance();
			$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}($this),xpath.tokenizer.container.NodeTestTokenizer.getInstance(),new xpath.tokenizer.util.Repetition([function($this) {
			var $r;
			var tmp = xpath.tokenizer.container.PredicateTokenizer.getInstance();
			$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}($this)])]);
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.token.AbbreviatedStepTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.UnaryStepTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.UnaryStepTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.UnaryStepTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.UnaryStepTokenizer.prototype.__class__ = xpath.tokenizer.container.UnaryStepTokenizer;
xpath.tokenizer.container.UnaryStepTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
canvas.display.LineScaleMode = { __ename__ : ["canvas","display","LineScaleMode"], __constructs__ : ["HORIZONTAL","NONE","NORMAL","VERTICAL"] }
canvas.display.LineScaleMode.HORIZONTAL = ["HORIZONTAL",0];
canvas.display.LineScaleMode.HORIZONTAL.toString = $estr;
canvas.display.LineScaleMode.HORIZONTAL.__enum__ = canvas.display.LineScaleMode;
canvas.display.LineScaleMode.NONE = ["NONE",1];
canvas.display.LineScaleMode.NONE.toString = $estr;
canvas.display.LineScaleMode.NONE.__enum__ = canvas.display.LineScaleMode;
canvas.display.LineScaleMode.NORMAL = ["NORMAL",2];
canvas.display.LineScaleMode.NORMAL.toString = $estr;
canvas.display.LineScaleMode.NORMAL.__enum__ = canvas.display.LineScaleMode;
canvas.display.LineScaleMode.VERTICAL = ["VERTICAL",3];
canvas.display.LineScaleMode.VERTICAL.toString = $estr;
canvas.display.LineScaleMode.VERTICAL.__enum__ = canvas.display.LineScaleMode;
neash.text.KeyCode = function() { }
neash.text.KeyCode.__name__ = ["neash","text","KeyCode"];
neash.text.KeyCode.ConvertCode = function(inNME) {
	$s.push("neash.text.KeyCode::ConvertCode");
	var $spos = $s.length;
	if(inNME <= 32 || (inNME >= neash.text.KeyCode.KEY_0 && inNME <= neash.text.KeyCode.KEY_9)) {
		$s.pop();
		return inNME;
	}
	if(inNME >= 97 && inNME <= 122) {
		var $tmp = inNME - 97 + 65;
		$s.pop();
		return $tmp;
	}
	if(inNME >= nme.KeyCode.F1 && inNME <= nme.KeyCode.F15) {
		var $tmp = inNME - nme.KeyCode.F1 + neash.text.KeyCode.F1;
		$s.pop();
		return $tmp;
	}
	if(inNME >= nme.KeyCode.KP0 && inNME <= nme.KeyCode.KP9) {
		var $tmp = inNME - nme.KeyCode.KP0 + neash.text.KeyCode.KP0;
		$s.pop();
		return $tmp;
	}
	switch(inNME) {
	case nme.KeyCode.KP_PERIOD:{
		{
			var $tmp = neash.text.KeyCode.KP_PERIOD;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.KP_DIVIDE:{
		{
			var $tmp = neash.text.KeyCode.KP_DIVIDE;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.KP_MULTIPLY:{
		{
			var $tmp = neash.text.KeyCode.KP_MULTIPLY;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.KP_MINUS:{
		{
			var $tmp = neash.text.KeyCode.KP_SUBTRACT;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.KP_PLUS:{
		{
			var $tmp = neash.text.KeyCode.KP_ADD;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.KP_ENTER:{
		{
			var $tmp = neash.text.KeyCode.KP_ENTER;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.UP:{
		{
			var $tmp = neash.text.KeyCode.UP;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.DOWN:{
		{
			var $tmp = neash.text.KeyCode.DOWN;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.RIGHT:{
		{
			var $tmp = neash.text.KeyCode.RIGHT;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.LEFT:{
		{
			var $tmp = neash.text.KeyCode.LEFT;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.INSERT:{
		{
			var $tmp = neash.text.KeyCode.INSERT;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.DELETE:{
		{
			var $tmp = neash.text.KeyCode.DELETE;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.HOME:{
		{
			var $tmp = neash.text.KeyCode.HOME;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.END:{
		{
			var $tmp = neash.text.KeyCode.END;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.PAGEUP:{
		{
			var $tmp = neash.text.KeyCode.PAGEUP;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.PAGEDOWN:{
		{
			var $tmp = neash.text.KeyCode.PAGEDOWN;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.NUMLOCK:{
		{
			var $tmp = neash.text.KeyCode.NUMLOCK;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.CAPSLOCK:{
		{
			var $tmp = neash.text.KeyCode.CAPSLOCK;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.RSHIFT:{
		{
			var $tmp = neash.text.KeyCode.SHIFT;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.LSHIFT:{
		{
			var $tmp = neash.text.KeyCode.SHIFT;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.RCTRL:{
		{
			var $tmp = neash.text.KeyCode.CONTROL;
			$s.pop();
			return $tmp;
		}
	}break;
	case nme.KeyCode.LCTRL:{
		{
			var $tmp = neash.text.KeyCode.CONTROL;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
neash.text.KeyCode.ConvertASCII = function(inNME,inShift,inControl) {
	$s.push("neash.text.KeyCode::ConvertASCII");
	var $spos = $s.length;
	if(inNME >= 97 && inNME <= 122 && inShift) {
		var $tmp = inNME - 97 + 65;
		$s.pop();
		return $tmp;
	}
	else if(inNME >= 97 && inNME <= 122 && inControl) {
		var $tmp = inNME - 97 + 1;
		$s.pop();
		return $tmp;
	}
	if(inNME < 128) {
		$s.pop();
		return inNME;
	}
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
neash.text.KeyCode.ConvertLocation = function(inNME) {
	$s.push("neash.text.KeyCode::ConvertLocation");
	var $spos = $s.length;
	if(inNME == nme.KeyCode.RCTRL || inNME == nme.KeyCode.RSHIFT) {
		$s.pop();
		return 1;
	}
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
neash.text.KeyCode.prototype.__class__ = neash.text.KeyCode;
xpath.tokenizer.token.EndPathTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.EndPathTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.EndPathToken(),"","EndPath"]);
	$s.pop();
}}
xpath.tokenizer.token.EndPathTokenizer.__name__ = ["xpath","tokenizer","token","EndPathTokenizer"];
xpath.tokenizer.token.EndPathTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.EndPathTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.EndPathTokenizer.instance = null;
xpath.tokenizer.token.EndPathTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.EndPathTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.EndPathTokenizer.instance == null) xpath.tokenizer.token.EndPathTokenizer.instance = new xpath.tokenizer.token.EndPathTokenizer();
	{
		var $tmp = xpath.tokenizer.token.EndPathTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.EndPathTokenizer.prototype.__class__ = xpath.tokenizer.token.EndPathTokenizer;
sandy.materials.attributes.CelShadeAttributes = function(p_oLightMap) { if( p_oLightMap === $_ ) return; {
	$s.push("sandy.materials.attributes.CelShadeAttributes::new");
	var $spos = $s.length;
	this.spherize = 0;
	this.aN = [new sandy.core.data.Vector(),new sandy.core.data.Vector(),new sandy.core.data.Vector()];
	this.aNP = [new canvas.geom.Point(),new canvas.geom.Point(),new canvas.geom.Point()];
	this.matrix = new canvas.geom.Matrix();
	this.matrix2 = new canvas.geom.Matrix();
	this.dv = new sandy.core.data.Vector();
	this.e1 = new sandy.core.data.Vector();
	this.e2 = new sandy.core.data.Vector();
	sandy.materials.attributes.ALightAttributes.apply(this,[]);
	if(p_oLightMap != null) {
		this.lightmap = p_oLightMap;
	}
	else {
		this.lightmap = new sandy.materials.attributes.PhongAttributesLightMap();
		this.lightmap.alphas[0] = [0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5];
		this.lightmap.colors[0] = [16777215,16777215,8947848,8947848,6710886,6710886,4473924,4473924];
		this.lightmap.ratios[0] = [0,40,40,80,80,120,120,180];
	}
	$s.pop();
}}
sandy.materials.attributes.CelShadeAttributes.__name__ = ["sandy","materials","attributes","CelShadeAttributes"];
sandy.materials.attributes.CelShadeAttributes.__super__ = sandy.materials.attributes.ALightAttributes;
for(var k in sandy.materials.attributes.ALightAttributes.prototype ) sandy.materials.attributes.CelShadeAttributes.prototype[k] = sandy.materials.attributes.ALightAttributes.prototype[k];
sandy.materials.attributes.CelShadeAttributes.prototype.aN = null;
sandy.materials.attributes.CelShadeAttributes.prototype.aNP = null;
sandy.materials.attributes.CelShadeAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.CelShadeAttributes::draw");
	var $spos = $s.length;
	sandy.materials.attributes.ALightAttributes.prototype.draw.apply(this,[p_oGraphics,p_oPolygon,p_oMaterial,p_oScene]);
	var i, l_oVertex, v = null, p = new canvas.geom.Point(), p1, p2, m2a, m2b, m2c, m2d, a;
	if(!p_oMaterial.lightingEnable) {
		{
			$s.pop();
			return;
		}
	}
	var l_aPoints = ((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices);
	l_oVertex = l_aPoints[0];
	this.matrix2.tx = l_oVertex.sx;
	m2a = m2c = -l_oVertex.sx;
	this.matrix2.ty = l_oVertex.sy;
	m2b = m2d = -l_oVertex.sy;
	l_oVertex = l_aPoints[1];
	m2a += l_oVertex.sx;
	this.matrix2.a = m2a;
	m2b += l_oVertex.sy;
	this.matrix2.b = m2b;
	l_oVertex = l_aPoints[2];
	m2c += l_oVertex.sx;
	this.matrix2.c = m2c;
	m2d += l_oVertex.sy;
	this.matrix2.d = m2d;
	var backside = true;
	{
		var _g = 0;
		while(_g < 3) {
			var i1 = _g++;
			v = this.aN[i1];
			v.copy(p_oPolygon.vertexNormals[i1].getVector());
			if(this.spherize > 0) {
				l_oVertex = l_aPoints[i1];
				this.dv.copy(l_oVertex.getVector());
				this.dv.sub(p_oPolygon.shape.__getGeometryCenter());
				this.dv.normalize();
				this.dv.scale(this.spherize);
				v.add(this.dv);
				v.normalize();
			}
			if(!p_oPolygon.visible) v.scale(-1);
			a = this.m_oCurrentL.dot(v);
			if(a < 0) backside = false;
			v.scale(1 / (1 - a));
		}
	}
	if(backside) {
		var l = this.lightmap.colors[0].length;
		var c = this.lightmap.colors[0][l - 1];
		a = this.lightmap.alphas[0][l - 1];
		p_oGraphics.beginFill(c,a);
	}
	else {
		if((this.m_oL.x != 0) || (this.m_oL.y != 0)) {
			this.e1.x = this.m_oCurrentL.y;
			this.e1.y = -this.m_oCurrentL.x;
			this.e1.z = 0;
		}
		else {
			this.e1.x = this.m_oCurrentL.z;
			this.e1.y = 0;
			this.e1.z = -this.m_oCurrentL.x;
		}
		this.e2.copy(this.m_oCurrentL);
		this.e2.crossWith(this.e1);
		this.e1.normalize();
		this.e2.normalize();
		{
			var _g = 0;
			while(_g < 3) {
				var i1 = _g++;
				p = this.aNP[i1];
				v = this.aN[i1];
				p.x = this.e1.dot(v);
				p.y = this.e2.dot(v);
				p.x = (16384 - 1) * 0.05 * p.x;
				p.y = (16384 - 1) * 0.05 * p.y;
			}
		}
		p = this.aNP[0];
		p1 = this.aNP[1];
		p2 = this.aNP[2];
		a = (p.x - p1.x) * (p.y - p2.y) - (p.y - p1.y) * (p.x - p2.x);
		while((-20 < a) && (a < 20)) {
			p.x--;
			p1.y++;
			p2.x++;
			a = (p.x - p1.x) * (p.y - p2.y) - (p.y - p1.y) * (p.x - p2.x);
		}
		this.matrix.a = p1.x - p.x;
		this.matrix.b = p1.y - p.y;
		this.matrix.c = p2.x - p.x;
		this.matrix.d = p2.y - p.y;
		this.matrix.tx = p.x;
		this.matrix.ty = p.y;
		this.matrix.invert();
		this.matrix.concat(this.matrix2);
		p_oGraphics.beginGradientFill(canvas.display.GradientType.RADIAL,this.lightmap.colors[0],this.lightmap.alphas[0],this.lightmap.ratios[0],this.matrix);
	}
	p_oGraphics.moveTo(l_aPoints[0].sx,l_aPoints[0].sy);
	{
		var _g = 0;
		while(_g < l_aPoints.length) {
			var l_oVertex1 = l_aPoints[_g];
			++_g;
			p_oGraphics.lineTo(l_oVertex1.sx,l_oVertex1.sy);
		}
	}
	p_oGraphics.endFill();
	l_aPoints = null;
	$s.pop();
}
sandy.materials.attributes.CelShadeAttributes.prototype.dv = null;
sandy.materials.attributes.CelShadeAttributes.prototype.e1 = null;
sandy.materials.attributes.CelShadeAttributes.prototype.e2 = null;
sandy.materials.attributes.CelShadeAttributes.prototype.lightmap = null;
sandy.materials.attributes.CelShadeAttributes.prototype.matrix = null;
sandy.materials.attributes.CelShadeAttributes.prototype.matrix2 = null;
sandy.materials.attributes.CelShadeAttributes.prototype.spherize = null;
sandy.materials.attributes.CelShadeAttributes.prototype.__class__ = sandy.materials.attributes.CelShadeAttributes;
canvas.display.JointStyle = { __ename__ : ["canvas","display","JointStyle"], __constructs__ : ["MITER","ROUND","BEVEL"] }
canvas.display.JointStyle.BEVEL = ["BEVEL",2];
canvas.display.JointStyle.BEVEL.toString = $estr;
canvas.display.JointStyle.BEVEL.__enum__ = canvas.display.JointStyle;
canvas.display.JointStyle.MITER = ["MITER",0];
canvas.display.JointStyle.MITER.toString = $estr;
canvas.display.JointStyle.MITER.__enum__ = canvas.display.JointStyle;
canvas.display.JointStyle.ROUND = ["ROUND",1];
canvas.display.JointStyle.ROUND.toString = $estr;
canvas.display.JointStyle.ROUND.__enum__ = canvas.display.JointStyle;
xpath.expression.AxisStep = function(axis,nextStep) { if( axis === $_ ) return; {
	$s.push("xpath.expression.AxisStep::new");
	var $spos = $s.length;
	xpath.expression.PathStep.apply(this,[$closure(this,"axisStep"),nextStep]);
	this.axis = axis;
	$s.pop();
}}
xpath.expression.AxisStep.__name__ = ["xpath","expression","AxisStep"];
xpath.expression.AxisStep.__super__ = xpath.expression.PathStep;
for(var k in xpath.expression.PathStep.prototype ) xpath.expression.AxisStep.prototype[k] = xpath.expression.PathStep.prototype[k];
xpath.expression.AxisStep.prototype.axis = null;
xpath.expression.AxisStep.prototype.axisStep = function(context) {
	$s.push("xpath.expression.AxisStep::axisStep");
	var $spos = $s.length;
	var me = this;
	{
		var $tmp = { iterator : function() {
			$s.push("xpath.expression.AxisStep::axisStep@39");
			var $spos = $s.length;
			{
				var $tmp = context.node.getAxisIterator(me.axis);
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.AxisStep.prototype.__class__ = xpath.expression.AxisStep;
xpath.tokenizer.token.LiteralTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.LiteralTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.LiteralTokenizer.__name__ = ["xpath","tokenizer","token","LiteralTokenizer"];
xpath.tokenizer.token.LiteralTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.LiteralTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.LiteralTokenizer.instance = null;
xpath.tokenizer.token.LiteralTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.LiteralTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.LiteralTokenizer.instance == null) xpath.tokenizer.token.LiteralTokenizer.instance = new xpath.tokenizer.token.LiteralTokenizer();
	{
		var $tmp = xpath.tokenizer.token.LiteralTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.LiteralTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.LiteralTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	var quote = input.query.charAt(pos);
	if(quote != "'" && quote != "\"") throw new xpath.tokenizer.ExpectedException([{ tokenName : "Literal", position : input.position}]);
	var valueStartPos = pos + 1;
	var $char;
	do {
		$char = input.query.charAt(++pos);
	} while($char != quote && pos < input.query.length - 1);
	if($char == quote) {
		var value = input.query.substr(valueStartPos,pos - valueStartPos);
		++pos;
		pos += this.countWhitespace(input.query,pos);
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.LiteralToken(value);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		var characterLength = pos - input.position;
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "Literal", position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.LiteralTokenizer.prototype.__class__ = xpath.tokenizer.token.LiteralTokenizer;
neash.display.StageQuality = function() { }
neash.display.StageQuality.__name__ = ["neash","display","StageQuality"];
neash.display.StageQuality.prototype.__class__ = neash.display.StageQuality;
xpath.tokenizer.token.BeginFunctionCallTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.BeginFunctionCallTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.BeginFunctionCallTokenizer.__name__ = ["xpath","tokenizer","token","BeginFunctionCallTokenizer"];
xpath.tokenizer.token.BeginFunctionCallTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.BeginFunctionCallTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.BeginFunctionCallTokenizer.instance = null;
xpath.tokenizer.token.BeginFunctionCallTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.BeginFunctionCallTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.BeginFunctionCallTokenizer.instance == null) xpath.tokenizer.token.BeginFunctionCallTokenizer.instance = new xpath.tokenizer.token.BeginFunctionCallTokenizer();
	{
		var $tmp = xpath.tokenizer.token.BeginFunctionCallTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.BeginFunctionCallTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.BeginFunctionCallTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	var charCode = input.query.charCodeAt(pos);
	if((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) && charCode < 128 && charCode != 95) {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "BeginFunctionCall", position : input.position}]);
	}
	do {
		charCode = input.query.charCodeAt(++pos);
	} while((charCode > 47 && charCode < 58) || (charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode > 127 || charCode == 46 || charCode == 45 || charCode == 95);
	if(charCode == 58) {
		charCode = input.query.charCodeAt(++pos);
		if((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) && charCode < 128 && charCode != 95) {
			throw new xpath.tokenizer.ExpectedException([{ tokenName : "BeginFunctionCall", position : input.position}]);
		}
		do {
			charCode = input.query.charCodeAt(++pos);
		} while((charCode > 47 && charCode < 58) || (charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode > 127 || charCode == 46 || charCode == 45 || charCode == 95);
	}
	var name = input.query.substr(input.position,pos - input.position);
	pos += this.countWhitespace(input.query,pos);
	switch(name) {
	case "comment":case "text":case "node":case "processing-instruction":{
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "BeginFunctionCall", position : input.position}]);
	}break;
	default:{
		null;
	}break;
	}
	if(input.query.charAt(pos) != "(") {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "BeginFunctionCall", position : input.position}]);
	}
	++pos;
	pos += this.countWhitespace(input.query,pos);
	var result = [function($this) {
		var $r;
		var tmp = new xpath.tokenizer.BeginFunctionCallToken(name);
		$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this)];
	var characterLength = pos - input.position;
	{
		var $tmp = input.getOutput(result,characterLength);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.BeginFunctionCallTokenizer.prototype.__class__ = xpath.tokenizer.token.BeginFunctionCallTokenizer;
neash.display.Sprite = function(p) { if( p === $_ ) return; {
	$s.push("neash.display.Sprite::new");
	var $spos = $s.length;
	neash.display.DisplayObjectContainer.apply(this,[]);
	this.mGraphics = new canvas.display.Graphics();
	this.buttonMode = false;
	this.name = "Sprite";
	$s.pop();
}}
neash.display.Sprite.__name__ = ["neash","display","Sprite"];
neash.display.Sprite.__super__ = neash.display.DisplayObjectContainer;
for(var k in neash.display.DisplayObjectContainer.prototype ) neash.display.Sprite.prototype[k] = neash.display.DisplayObjectContainer.prototype[k];
neash.display.Sprite.prototype.GetGraphics = function() {
	$s.push("neash.display.Sprite::GetGraphics");
	var $spos = $s.length;
	{
		var $tmp = this.mGraphics;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Sprite.prototype.buttonMode = null;
neash.display.Sprite.prototype.getObjectsUnderPoint = function(pPoint) {
	$s.push("neash.display.Sprite::getObjectsUnderPoint");
	var $spos = $s.length;
	throw "Not Implemented";
	{
		var $tmp = [];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Sprite.prototype.graphics = null;
neash.display.Sprite.prototype.localToGlobal = function(pPoint) {
	$s.push("neash.display.Sprite::localToGlobal");
	var $spos = $s.length;
	throw "Not Implemented";
	{
		$s.pop();
		return pPoint;
	}
	$s.pop();
}
neash.display.Sprite.prototype.mGraphics = null;
neash.display.Sprite.prototype.startDrag = function(lockCenter,bounds) {
	$s.push("neash.display.Sprite::startDrag");
	var $spos = $s.length;
	neash.Lib.SetDragged(this,lockCenter,bounds);
	$s.pop();
}
neash.display.Sprite.prototype.stopDrag = function() {
	$s.push("neash.display.Sprite::stopDrag");
	var $spos = $s.length;
	neash.Lib.SetDragged(null);
	$s.pop();
}
neash.display.Sprite.prototype.__class__ = neash.display.Sprite;
Dice = function(p) { if( p === $_ ) return; {
	$s.push("Dice::new");
	var $spos = $s.length;
	neash.display.Sprite.apply(this,[]);
	this.loadCollada();
	$s.pop();
}}
Dice.__name__ = ["Dice"];
Dice.__super__ = neash.display.Sprite;
for(var k in neash.display.Sprite.prototype ) Dice.prototype[k] = neash.display.Sprite.prototype[k];
Dice.main = function() {
	$s.push("Dice::main");
	var $spos = $s.length;
	neash.Lib.Init("Container",800,800);
	neash.Lib.Run();
	haxe.Firebug.redirectTraces();
	new Dice();
	$s.pop();
}
Dice.prototype.camera = null;
Dice.prototype.create3d = function(pEvt) {
	$s.push("Dice::create3d");
	var $spos = $s.length;
	this.camera = new sandy.core.scenegraph.Camera3D(0,0,-8);
	this.camera.viewport = new sandy.view.ViewPort(400,300);
	this.camera.lookAt(0,160,0);
	this.camera.__setY(-160);
	var root = pEvt.group;
	this.cube = function($this) {
		var $r;
		var tmp = root.children[0];
		$r = (Std["is"](tmp,sandy.core.scenegraph.Shape3D)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this);
	this.cube.__setRotateX(180);
	this.cube.__setEnableBackFaceCulling(true);
	this.scene = new sandy.core.Scene3D("scene",this,this.camera,root);
	neash.Lib.GetCurrent().GetStage().addEventListener(neash.events.Event.ENTER_FRAME,$closure(this,"enterFrameHandler"));
	neash.Lib.GetCurrent().GetStage().addChild(this);
	$s.pop();
}
Dice.prototype.cube = null;
Dice.prototype.enterFrameHandler = function(event) {
	$s.push("Dice::enterFrameHandler");
	var $spos = $s.length;
	this.scene.render();
	{
		var _g = this.cube;
		_g.__setRotateY(_g.__getRotateY() + 0.4);
	}
	$s.pop();
}
Dice.prototype.loadCollada = function() {
	$s.push("Dice::loadCollada");
	var $spos = $s.length;
	var parser = sandy.parser.Parser.create("http://cyanescent.co.uk/dice_demo/dice.dae",sandy.parser.Parser.COLLADA);
	(parser.addEventListener(sandy.parser.ParserEvent.FAIL,$closure(this,"onError")));
	(parser.addEventListener(sandy.parser.ParserEvent.INIT,$closure(this,"create3d")));
	try {
		parser.parse();
	}
	catch( $e64 ) {
		{
			var e = $e64;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				haxe.Log.trace(e,{ fileName : "Dice.hx", lineNumber : 51, className : "Dice", methodName : "loadCollada"});
			}
		}
	}
	$s.pop();
}
Dice.prototype.onError = function(pEvt) {
	$s.push("Dice::onError");
	var $spos = $s.length;
	haxe.Log.trace("|!! loading error !!!",{ fileName : "Dice.hx", lineNumber : 60, className : "Dice", methodName : "onError"});
	haxe.Log.trace("check you have the dice.jpg, dice.dae and dice.swf all in the same directory",{ fileName : "Dice.hx", lineNumber : 61, className : "Dice", methodName : "onError"});
	$s.pop();
}
Dice.prototype.scene = null;
Dice.prototype.__class__ = Dice;
xpath.tokenizer.container.GroupTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.GroupTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.GroupTokenizer.__name__ = ["xpath","tokenizer","container","GroupTokenizer"];
xpath.tokenizer.container.GroupTokenizer.instance = null;
xpath.tokenizer.container.GroupTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.GroupTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.GroupTokenizer.instance == null) {
		xpath.tokenizer.container.GroupTokenizer.instance = new xpath.tokenizer.container.GroupTokenizer();
		xpath.tokenizer.container.GroupTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.GroupTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.GroupTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.GroupTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginGroupTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.ExpressionTokenizer.getInstance(),xpath.tokenizer.token.EndGroupTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.GroupTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.GroupTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.GroupTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.GroupTokenizer.prototype.__class__ = xpath.tokenizer.container.GroupTokenizer;
xpath.tokenizer.container.GroupTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
sandy.materials.BitmapMaterial = function(p_oTexture,p_oAttr,p_nPrecision) { if( p_oTexture === $_ ) return; {
	$s.push("sandy.materials.BitmapMaterial::new");
	var $spos = $s.length;
	if(p_nPrecision == null) p_nPrecision = 0;
	this.smooth = false;
	this.precision = 0;
	this.maxRecurssionDepth = 5;
	this.map = new canvas.geom.Matrix();
	this.m_nRecLevel = 0;
	this.m_oPoint = new canvas.geom.Point();
	this.matrix = new canvas.geom.Matrix();
	this.m_oTiling = new canvas.geom.Point(1,1);
	this.m_oOffset = new canvas.geom.Point(0,0);
	this.forceUpdate = false;
	this.m_nAlpha = 1.0;
	sandy.materials.Material.apply(this,[p_oAttr]);
	this.m_oType = sandy.materials.MaterialType.BITMAP;
	var temp = new canvas.display.BitmapData(p_oTexture.getWidth(),p_oTexture.getHeight(),true,0);
	temp.draw(p_oTexture);
	this.__setTexture(temp);
	this.m_oPolygonMatrixMap = new Array();
	this.precision = p_nPrecision;
	$s.pop();
}}
sandy.materials.BitmapMaterial.__name__ = ["sandy","materials","BitmapMaterial"];
sandy.materials.BitmapMaterial.__super__ = sandy.materials.Material;
for(var k in sandy.materials.Material.prototype ) sandy.materials.BitmapMaterial.prototype[k] = sandy.materials.Material.prototype[k];
sandy.materials.BitmapMaterial.prototype.__getAlpha = function() {
	$s.push("sandy.materials.BitmapMaterial::__getAlpha");
	var $spos = $s.length;
	{
		var $tmp = this.m_nAlpha;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.__getTexture = function() {
	$s.push("sandy.materials.BitmapMaterial::__getTexture");
	var $spos = $s.length;
	{
		var $tmp = this.m_oTexture;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.__setAlpha = function(p_nValue) {
	$s.push("sandy.materials.BitmapMaterial::__setAlpha");
	var $spos = $s.length;
	this.setTransparency(p_nValue);
	this.m_nAlpha = p_nValue;
	this.m_bModified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.__setTexture = function(p_oTexture) {
	$s.push("sandy.materials.BitmapMaterial::__setTexture");
	var $spos = $s.length;
	if(p_oTexture == this.m_oTexture) {
		{
			$s.pop();
			return null;
		}
	}
	else {
		if(this.m_oTexture != null) this.m_oTexture.dispose();
		if(this.m_orgTexture != null) this.m_orgTexture.dispose();
	}
	var l_bReWrap = false;
	if(this.m_nHeight != p_oTexture.getHeight()) l_bReWrap = true;
	else if(this.m_nWidth != p_oTexture.getWidth()) l_bReWrap = true;
	this.m_oTexture = p_oTexture;
	this.m_orgTexture = p_oTexture.clone();
	this.m_nHeight = this.m_oTexture.getHeight();
	this.m_nWidth = this.m_oTexture.getWidth();
	this.m_nInvHeight = 1 / this.m_nHeight;
	this.m_nInvWidth = 1 / this.m_nWidth;
	if(l_bReWrap && this.m_oPolygonMatrixMap != null) {
		{
			var _g = 0, _g1 = this.m_oPolygonMatrixMap;
			while(_g < _g1.length) {
				var l_sID = _g1[_g];
				++_g;
			}
		}
	}
	{
		$s.pop();
		return p_oTexture;
	}
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype._createTextureMatrix = function(p_aUv) {
	$s.push("sandy.materials.BitmapMaterial::_createTextureMatrix");
	var $spos = $s.length;
	var u0 = (Std.parseFloat(p_aUv[0].u) * this.m_oTiling.x + this.m_oOffset.x) * this.m_nWidth, v0 = (Std.parseFloat(p_aUv[0].v) * this.m_oTiling.y + this.m_oOffset.y) * this.m_nHeight, u1 = (Std.parseFloat(p_aUv[1].u) * this.m_oTiling.x + this.m_oOffset.x) * this.m_nWidth, v1 = (Std.parseFloat(p_aUv[1].v) * this.m_oTiling.y + this.m_oOffset.y) * this.m_nHeight, u2 = (Std.parseFloat(p_aUv[2].u) * this.m_oTiling.x + this.m_oOffset.x) * this.m_nWidth, v2 = (Std.parseFloat(p_aUv[2].v) * this.m_oTiling.y + this.m_oOffset.y) * this.m_nHeight;
	if((u0 == u1 && v0 == v1) || (u0 == u2 && v0 == v2)) {
		u0 -= ((u0 > 0.05)?0.05:-0.05);
		v0 -= ((v0 > 0.07)?0.07:-0.07);
	}
	if(u2 == u1 && v2 == v1) {
		u2 -= ((u2 > 0.05)?0.04:-0.04);
		v2 -= ((v2 > 0.06)?0.06:-0.06);
	}
	var m = new canvas.geom.Matrix((u1 - u0),(v1 - v0),(u2 - u0),(v2 - v0),u0,v0);
	m.invert();
	{
		$s.pop();
		return m;
	}
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype._tesselatePolygon = function(p_aPoints,p_aUv) {
	$s.push("sandy.materials.BitmapMaterial::_tesselatePolygon");
	var $spos = $s.length;
	var l_points = p_aPoints.slice(0);
	var l_uv = p_aUv.slice(0);
	if(l_points.length > 3) {
		l_points = l_points.slice(0,3);
		l_uv = l_uv.slice(0,3);
		p_aPoints.splice(1,1);
		p_aUv.splice(1,1);
		this._tesselatePolygon(p_aPoints,p_aUv);
	}
	this.map = this._createTextureMatrix(l_uv);
	var v0 = l_points[0];
	var v1 = l_points[1];
	var v2 = l_points[2];
	if(this.precision == 0) {
		this.renderTriangle(this.map.a,this.map.b,this.map.c,this.map.d,this.map.tx,this.map.ty,v0.sx,v0.sy,v1.sx,v1.sy,v2.sx,v2.sy);
	}
	else {
		this.renderRec(this.map.a,this.map.b,this.map.c,this.map.d,this.map.tx,this.map.ty,v0.sx,v0.sy,v0.wz,v1.sx,v1.sy,v1.wz,v2.sx,v2.sy,v2.wz);
	}
	l_points = null;
	l_uv = null;
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.alpha = null;
sandy.materials.BitmapMaterial.prototype.forceUpdate = null;
sandy.materials.BitmapMaterial.prototype.graphics = null;
sandy.materials.BitmapMaterial.prototype.init = function(p_oPolygon) {
	$s.push("sandy.materials.BitmapMaterial::init");
	var $spos = $s.length;
	if(p_oPolygon.vertices.length >= 3) {
		var m = null;
		if(this.m_nWidth > 0 && this.m_nHeight > 0) {
			var l_aUV = p_oPolygon.aUVCoord;
			if(l_aUV != null) {
				m = this._createTextureMatrix(l_aUV);
			}
		}
		this.m_oPolygonMatrixMap[p_oPolygon.id] = m;
	}
	sandy.materials.Material.prototype.init.apply(this,[p_oPolygon]);
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.m_nAlpha = null;
sandy.materials.BitmapMaterial.prototype.m_nHeight = null;
sandy.materials.BitmapMaterial.prototype.m_nInvHeight = null;
sandy.materials.BitmapMaterial.prototype.m_nInvWidth = null;
sandy.materials.BitmapMaterial.prototype.m_nRecLevel = null;
sandy.materials.BitmapMaterial.prototype.m_nWidth = null;
sandy.materials.BitmapMaterial.prototype.m_oCmf = null;
sandy.materials.BitmapMaterial.prototype.m_oOffset = null;
sandy.materials.BitmapMaterial.prototype.m_oPoint = null;
sandy.materials.BitmapMaterial.prototype.m_oPolygonMatrixMap = null;
sandy.materials.BitmapMaterial.prototype.m_oTexture = null;
sandy.materials.BitmapMaterial.prototype.m_oTiling = null;
sandy.materials.BitmapMaterial.prototype.m_orgTexture = null;
sandy.materials.BitmapMaterial.prototype.map = null;
sandy.materials.BitmapMaterial.prototype.matrix = null;
sandy.materials.BitmapMaterial.prototype.maxRecurssionDepth = null;
sandy.materials.BitmapMaterial.prototype.polygon = null;
sandy.materials.BitmapMaterial.prototype.precision = null;
sandy.materials.BitmapMaterial.prototype.renderPolygon = function(p_oScene,p_oPolygon,p_mcContainer) {
	$s.push("sandy.materials.BitmapMaterial::renderPolygon");
	var $spos = $s.length;
	if(this.m_oTexture == null) {
		$s.pop();
		return;
	}
	var l_points, l_uv;
	this.polygon = p_oPolygon;
	this.graphics = p_mcContainer.GetGraphics();
	this.m_nRecLevel = 0;
	if(this.polygon.isClipped) {
		l_points = p_oPolygon.cvertices.slice(0);
		l_uv = p_oPolygon.caUVCoord.slice(0);
		this._tesselatePolygon(l_points,l_uv);
	}
	else if(this.polygon.vertices.length > 3) {
		l_points = p_oPolygon.vertices.slice(0);
		l_uv = p_oPolygon.aUVCoord.slice(0);
		this._tesselatePolygon(l_points,l_uv);
	}
	else {
		l_points = p_oPolygon.vertices;
		l_uv = p_oPolygon.aUVCoord;
		this.map = this.m_oPolygonMatrixMap[this.polygon.id];
		var v0 = l_points[0];
		var v1 = l_points[1];
		var v2 = l_points[2];
		if(this.precision == 0) {
			this.renderTriangle(this.map.a,this.map.b,this.map.c,this.map.d,this.map.tx,this.map.ty,v0.sx,v0.sy,v1.sx,v1.sy,v2.sx,v2.sy);
		}
		else {
			this.renderRec(this.map.a,this.map.b,this.map.c,this.map.d,this.map.tx,this.map.ty,v0.sx,v0.sy,v0.wz,v1.sx,v1.sy,v1.wz,v2.sx,v2.sy,v2.wz);
		}
	}
	if(this.attributes != null) this.attributes.draw(this.graphics,this.polygon,this,p_oScene);
	l_points = null;
	l_uv = null;
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.renderRec = function(ta,tb,tc,td,tx,ty,ax,ay,az,bx,by,bz,cx,cy,cz) {
	$s.push("sandy.materials.BitmapMaterial::renderRec");
	var $spos = $s.length;
	this.m_nRecLevel++;
	var ta2 = ta + ta;
	var tb2 = tb + tb;
	var tc2 = tc + tc;
	var td2 = td + td;
	var tx2 = tx + tx;
	var ty2 = ty + ty;
	var mabz = 2 / (az + bz);
	var mbcz = 2 / (bz + cz);
	var mcaz = 2 / (cz + az);
	var mabx = (ax * az + bx * bz) * mabz;
	var maby = (ay * az + by * bz) * mabz;
	var mbcx = (bx * bz + cx * cz) * mbcz;
	var mbcy = (by * bz + cy * cz) * mbcz;
	var mcax = (cx * cz + ax * az) * mcaz;
	var mcay = (cy * cz + ay * az) * mcaz;
	var dabx = ax + bx - mabx;
	var daby = ay + by - maby;
	var dbcx = bx + cx - mbcx;
	var dbcy = by + cy - mbcy;
	var dcax = cx + ax - mcax;
	var dcay = cy + ay - mcay;
	var dsab = (dabx * dabx + daby * daby);
	var dsbc = (dbcx * dbcx + dbcy * dbcy);
	var dsca = (dcax * dcax + dcay * dcay);
	var mabxHalf = mabx * 0.5;
	var mabyHalf = maby * 0.5;
	var azbzHalf = (az + bz) * 0.5;
	var mcaxHalf = mcax * 0.5;
	var mcayHalf = mcay * 0.5;
	var czazHalf = (cz + az) * 0.5;
	var mbcxHalf = mbcx * 0.5;
	var mbcyHalf = mbcy * 0.5;
	var bzczHalf = (bz + cz) * 0.5;
	if((this.m_nRecLevel > this.maxRecurssionDepth) || ((dsab <= this.precision) && (dsca <= this.precision) && (dsbc <= this.precision))) {
		this.renderTriangle(ta,tb,tc,td,tx,ty,ax,ay,bx,by,cx,cy);
		this.m_nRecLevel--;
		{
			$s.pop();
			return;
		}
	}
	if((dsab > this.precision) && (dsca > this.precision) && (dsbc > this.precision)) {
		this.renderRec(ta2,tb2,tc2,td2,tx2,ty2,ax,ay,az,mabxHalf,mabyHalf,azbzHalf,mcaxHalf,mcayHalf,czazHalf);
		this.renderRec(ta2,tb2,tc2,td2,tx2 - 1,ty2,mabxHalf,mabyHalf,azbzHalf,bx,by,bz,mbcxHalf,mbcyHalf,bzczHalf);
		this.renderRec(ta2,tb2,tc2,td2,tx2,ty2 - 1,mcaxHalf,mcayHalf,czazHalf,mbcxHalf,mbcyHalf,bzczHalf,cx,cy,cz);
		this.renderRec(-ta2,-tb2,-tc2,-td2,-tx2 + 1,-ty2 + 1,mbcxHalf,mbcyHalf,bzczHalf,mcaxHalf,mcayHalf,czazHalf,mabxHalf,mabyHalf,azbzHalf);
		this.m_nRecLevel--;
		{
			$s.pop();
			return;
		}
	}
	var dmax = Math.max(dsab,Math.max(dsca,dsbc));
	if(dsab == dmax) {
		this.renderRec(ta2,tb,tc2,td,tx2,ty,ax,ay,az,mabxHalf,mabyHalf,azbzHalf,cx,cy,cz);
		this.renderRec(ta2 + tb,tb,tc2 + td,td,tx2 + ty - 1,ty,mabxHalf,mabyHalf,azbzHalf,bx,by,bz,cx,cy,cz);
		this.m_nRecLevel--;
		{
			$s.pop();
			return;
		}
	}
	if(dsca == dmax) {
		this.renderRec(ta,tb2,tc,td2,tx,ty2,ax,ay,az,bx,by,bz,mcaxHalf,mcayHalf,czazHalf);
		this.renderRec(ta,tb2 + ta,tc,td2 + tc,tx,ty2 + tx - 1,mcaxHalf,mcayHalf,czazHalf,bx,by,bz,cx,cy,cz);
		this.m_nRecLevel--;
		{
			$s.pop();
			return;
		}
	}
	this.renderRec(ta - tb,tb2,tc - td,td2,tx - ty,ty2,ax,ay,az,bx,by,bz,mbcxHalf,mbcyHalf,bzczHalf);
	this.renderRec(ta2,tb - ta,tc2,td - tc,tx2,ty - tx,ax,ay,az,mbcxHalf,mbcyHalf,bzczHalf,cx,cy,cz);
	this.m_nRecLevel--;
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.renderTriangle = function(a,b,c,d,tx,ty,v0x,v0y,v1x,v1y,v2x,v2y) {
	$s.push("sandy.materials.BitmapMaterial::renderTriangle");
	var $spos = $s.length;
	var a2 = v1x - v0x;
	var b2 = v1y - v0y;
	var c2 = v2x - v0x;
	var d2 = v2y - v0y;
	this.matrix.a = a * a2 + b * c2;
	this.matrix.b = a * b2 + b * d2;
	this.matrix.c = c * a2 + d * c2;
	this.matrix.d = c * b2 + d * d2;
	this.matrix.tx = tx * a2 + ty * c2 + v0x;
	this.matrix.ty = tx * b2 + ty * d2 + v0y;
	this.graphics.lineStyle();
	this.graphics.beginBitmapFill(this.m_oTexture,this.matrix,this.repeat,this.smooth);
	this.graphics.moveTo(v0x,v0y);
	this.graphics.lineTo(v1x,v1y);
	this.graphics.lineTo(v2x,v2y);
	this.graphics.endFill();
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.setTiling = function(p_nW,p_nH,p_nU,p_nV) {
	$s.push("sandy.materials.BitmapMaterial::setTiling");
	var $spos = $s.length;
	if(p_nV == null) p_nV = 0.0;
	if(p_nU == null) p_nU = 0.0;
	this.m_oTiling.x = p_nW;
	this.m_oTiling.y = p_nH;
	this.m_oOffset.x = p_nU - Math.floor(p_nU);
	this.m_oOffset.y = p_nV - Math.floor(p_nV);
	{
		var _g = 0, _g1 = this.m_oPolygonMatrixMap;
		while(_g < _g1.length) {
			var l_sID = _g1[_g];
			++_g;
		}
	}
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.setTransparency = function(p_nValue) {
	$s.push("sandy.materials.BitmapMaterial::setTransparency");
	var $spos = $s.length;
	p_nValue = sandy.util.NumberUtil.constrain(p_nValue,0,1);
	if(this.m_oCmf != null) this.m_oCmf = null;
	var matrix = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,p_nValue,0];
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.smooth = null;
sandy.materials.BitmapMaterial.prototype.texture = null;
sandy.materials.BitmapMaterial.prototype.toString = function() {
	$s.push("sandy.materials.BitmapMaterial::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.materials.BitmapMaterial";
	}
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.unlink = function(p_oPolygon) {
	$s.push("sandy.materials.BitmapMaterial::unlink");
	var $spos = $s.length;
	if(this.m_oPolygonMatrixMap[p_oPolygon.id] != null) this.m_oPolygonMatrixMap[p_oPolygon.id] = null;
	sandy.materials.Material.prototype.unlink.apply(this,[p_oPolygon]);
	$s.pop();
}
sandy.materials.BitmapMaterial.prototype.__class__ = sandy.materials.BitmapMaterial;
sandy.materials.BitmapMaterial.__interfaces__ = [sandy.materials.IAlphaMaterial];
sandy.materials.VideoMaterial = function(p_oVideo,p_nUpdateMS,p_oAttr) { if( p_oVideo === $_ ) return; {
	$s.push("sandy.materials.VideoMaterial::new");
	var $spos = $s.length;
	if(p_nUpdateMS == null) p_nUpdateMS = 40;
	sandy.materials.BitmapMaterial.apply(this,[new canvas.display.BitmapData(Std["int"](p_oVideo.GetWidth()),Std["int"](p_oVideo.GetHeight()),true,0),p_oAttr]);
	this.m_oAlpha = new neash.geom.ColorTransform();
	this.m_oVideo = p_oVideo;
	this.m_oType = sandy.materials.MaterialType.VIDEO;
	this.m_oTimer = new neash.utils.Timer(p_nUpdateMS);
	this.m_oTimer.addEventListener(neash.events.TimerEvent.TIMER,$closure(this,"_update"));
	this.start();
	$s.pop();
}}
sandy.materials.VideoMaterial.__name__ = ["sandy","materials","VideoMaterial"];
sandy.materials.VideoMaterial.__super__ = sandy.materials.BitmapMaterial;
for(var k in sandy.materials.BitmapMaterial.prototype ) sandy.materials.VideoMaterial.prototype[k] = sandy.materials.BitmapMaterial.prototype[k];
sandy.materials.VideoMaterial.prototype._update = function(p_eEvent) {
	$s.push("sandy.materials.VideoMaterial::_update");
	var $spos = $s.length;
	if(this.m_bUpdate || this.forceUpdate) {
		this.m_oTexture.fillRect(this.m_oTexture.rect,sandy.math.ColorMath.applyAlpha(0,this.m_oAlpha.alphaMultiplier));
		this.m_oTexture.draw(this.m_oVideo,null,this.m_oAlpha,null,null,this.smooth);
	}
	this.m_bUpdate = false;
	$s.pop();
}
sandy.materials.VideoMaterial.prototype.m_bUpdate = null;
sandy.materials.VideoMaterial.prototype.m_oAlpha = null;
sandy.materials.VideoMaterial.prototype.m_oTimer = null;
sandy.materials.VideoMaterial.prototype.m_oVideo = null;
sandy.materials.VideoMaterial.prototype.renderPolygon = function(p_oScene,p_oPolygon,p_mcContainer) {
	$s.push("sandy.materials.VideoMaterial::renderPolygon");
	var $spos = $s.length;
	this.m_bUpdate = true;
	sandy.materials.BitmapMaterial.prototype.renderPolygon.apply(this,[p_oScene,p_oPolygon,p_mcContainer]);
	$s.pop();
}
sandy.materials.VideoMaterial.prototype.setTransparency = function(p_nValue) {
	$s.push("sandy.materials.VideoMaterial::setTransparency");
	var $spos = $s.length;
	this.m_oAlpha.alphaMultiplier = sandy.util.NumberUtil.constrain(p_nValue,0,1);
	$s.pop();
}
sandy.materials.VideoMaterial.prototype.start = function() {
	$s.push("sandy.materials.VideoMaterial::start");
	var $spos = $s.length;
	this.m_oTimer.start();
	$s.pop();
}
sandy.materials.VideoMaterial.prototype.stop = function() {
	$s.push("sandy.materials.VideoMaterial::stop");
	var $spos = $s.length;
	this.m_oTimer.stop();
	$s.pop();
}
sandy.materials.VideoMaterial.prototype.__class__ = sandy.materials.VideoMaterial;
sandy.core.interaction.VirtualMouse = function(access) { if( access === $_ ) return; {
	$s.push("sandy.core.interaction.VirtualMouse::new");
	var $spos = $s.length;
	this.lastWithinStage = true;
	neash.events.EventDispatcher.apply(this,[]);
	this.location = new canvas.geom.Point(0,0);
	this.lastLocation = this.location.clone();
	$s.pop();
}}
sandy.core.interaction.VirtualMouse.__name__ = ["sandy","core","interaction","VirtualMouse"];
sandy.core.interaction.VirtualMouse.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) sandy.core.interaction.VirtualMouse.prototype[k] = neash.events.EventDispatcher.prototype[k];
sandy.core.interaction.VirtualMouse._oI = null;
sandy.core.interaction.VirtualMouse.getInstance = function() {
	$s.push("sandy.core.interaction.VirtualMouse::getInstance");
	var $spos = $s.length;
	if(sandy.core.interaction.VirtualMouse._oI == null) sandy.core.interaction.VirtualMouse._oI = new sandy.core.interaction.VirtualMouse(new sandy.core.interaction.PrivateConstructorAccess());
	{
		var $tmp = sandy.core.interaction.VirtualMouse._oI;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.interaction.VirtualMouse.prototype._checkLinks = function(tf) {
	$s.push("sandy.core.interaction.VirtualMouse::_checkLinks");
	var $spos = $s.length;
	var currentTargetLocal = tf.globalToLocal(this.location);
	var a = sandy.core.interaction.TextLink.getTextLinks(tf);
	var l = a.length;
	{
		var _g = 0;
		while(_g < l) {
			var i = _g++;
			if(function($this) {
				var $r;
				var tmp = (function($this) {
					var $r;
					var tmp = a[i];
					$r = (Std["is"](tmp,sandy.core.interaction.TextLink)?tmp:function($this) {
						var $r;
						throw "Class cast error";
						return $r;
					}($this));
					return $r;
				}($this)).getBounds();
				$r = (Std["is"](tmp,canvas.geom.Rectangle)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).containsPoint(currentTargetLocal)) 1 + 1;
		}
	}
	$s.pop();
}
sandy.core.interaction.VirtualMouse.prototype._lastEvent = null;
sandy.core.interaction.VirtualMouse.prototype.interactWithTexture = function(p_oPoly,p_uvTexture,p_event) {
	$s.push("sandy.core.interaction.VirtualMouse::interactWithTexture");
	var $spos = $s.length;
	var l_oMaterial = (p_oPoly.visible?p_oPoly.__getAppearance().__getFrontMaterial():p_oPoly.__getAppearance().__getBackMaterial());
	if(l_oMaterial == null) {
		$s.pop();
		return;
	}
	this.m_ioTarget = l_oMaterial.__getMovie();
	this.location = new canvas.geom.Point(p_uvTexture.u * l_oMaterial.__getTexture().getWidth(),p_uvTexture.v * l_oMaterial.__getTexture().getHeight());
	var objectsUnderPoint = this.m_ioTarget.getObjectsUnderPoint(this.m_ioTarget.localToGlobal(this.location));
	var currentTarget = null;
	var currentParent;
	var i = objectsUnderPoint.length;
	while(--i > -1) {
		currentParent = objectsUnderPoint[i];
		while(currentParent != null) {
			if(currentTarget != null && Std["is"](currentParent,neash.display.DisplayObjectContainer) && !function($this) {
				var $r;
				var tmp = currentParent;
				$r = (Std["is"](tmp,neash.display.DisplayObjectContainer)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).mouseChildren) {
				currentTarget = null;
			}
			if(currentTarget == null && Std["is"](currentParent,neash.display.DisplayObjectContainer) && function($this) {
				var $r;
				var tmp = currentParent;
				$r = (Std["is"](tmp,neash.display.DisplayObjectContainer)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).mouseEnabled) {
				currentTarget = function($this) {
					var $r;
					var tmp = currentParent;
					$r = (Std["is"](tmp,neash.display.Sprite)?tmp:function($this) {
						var $r;
						throw "Class cast error";
						return $r;
					}($this));
					return $r;
				}(this);
			}
			currentParent = currentParent.GetParent();
		}
	}
	if(currentTarget == null) {
		currentTarget = this.m_ioTarget;
	}
	if(this.m_ioOldTarget == null) currentTarget.GetStage();
	var targetLocal = p_oPoly.__getContainer().globalToLocal(this.location);
	var currentTargetLocal = currentTarget.globalToLocal(this.location);
	if(this.lastLocation.x != this.location.x || this.lastLocation.y != this.location.y) {
		var withinStage = (this.location.x >= 0 && this.location.y >= 0 && this.location.x <= p_oPoly.__getContainer().GetStage().GetStageWidth() && this.location.y <= p_oPoly.__getContainer().GetStage().GetStageHeight());
		if(!withinStage && this.lastWithinStage) {
			this._lastEvent = new neash.events.MouseEvent(neash.events.Event.MOUSE_LEAVE,false,false);
			p_oPoly.__getContainer().GetStage().dispatchEvent(this._lastEvent);
			this.dispatchEvent(this._lastEvent);
		}
		if(withinStage) {
			this._lastEvent = new neash.events.MouseEvent(neash.events.Event.MOUSE_LEAVE,false,false);
			currentTarget.dispatchEvent(this._lastEvent);
			this.dispatchEvent(this._lastEvent);
		}
		this.lastWithinStage = withinStage;
	}
	if(currentTarget != this.m_ioOldTarget) {
		this._lastEvent = new neash.events.MouseEvent(neash.events.MouseEvent.MOUSE_OUT,true,false,targetLocal.x,targetLocal.y,currentTarget,(p_event.ctrlKey),(p_event.altKey),(p_event.shiftKey),(p_event.buttonDown),(p_event.delta));
		this.m_ioTarget.dispatchEvent(this._lastEvent);
		this.dispatchEvent(this._lastEvent);
		this._lastEvent = new neash.events.MouseEvent(neash.events.MouseEvent.ROLL_OUT,false,false,targetLocal.x,targetLocal.y,currentTarget,(p_event.ctrlKey),(p_event.altKey),(p_event.shiftKey),(p_event.buttonDown),(p_event.delta));
		this.m_ioTarget.dispatchEvent(this._lastEvent);
		this.dispatchEvent(this._lastEvent);
		this._lastEvent = new neash.events.MouseEvent(neash.events.MouseEvent.MOUSE_OVER,true,false,currentTargetLocal.x,currentTargetLocal.y,this.m_ioOldTarget,(p_event.ctrlKey),(p_event.altKey),(p_event.shiftKey),(p_event.buttonDown),(p_event.delta));
		currentTarget.dispatchEvent(this._lastEvent);
		this.dispatchEvent(this._lastEvent);
		this._lastEvent = new neash.events.MouseEvent(neash.events.MouseEvent.ROLL_OVER,false,false,currentTargetLocal.x,currentTargetLocal.y,this.m_ioOldTarget,(p_event.ctrlKey),(p_event.altKey),(p_event.shiftKey),(p_event.buttonDown),(p_event.delta));
		currentTarget.dispatchEvent(this._lastEvent);
		this.dispatchEvent(this._lastEvent);
	}
	if(p_event.type == neash.events.MouseEvent.MOUSE_DOWN) {
		this._lastEvent = new neash.events.MouseEvent(neash.events.MouseEvent.MOUSE_DOWN,true,false,currentTargetLocal.x,currentTargetLocal.y,currentTarget,(p_event.ctrlKey),(p_event.altKey),(p_event.shiftKey),(p_event.buttonDown),(p_event.delta));
		currentTarget.dispatchEvent(this._lastEvent);
		this.dispatchEvent(this._lastEvent);
		this.lastDownTarget = currentTarget;
	}
	else if(p_event.type == neash.events.MouseEvent.MOUSE_UP) {
		this._lastEvent = new neash.events.MouseEvent(neash.events.MouseEvent.MOUSE_UP,true,false,currentTargetLocal.x,currentTargetLocal.y,currentTarget,(p_event.ctrlKey),(p_event.altKey),(p_event.shiftKey),(p_event.buttonDown),(p_event.delta));
		currentTarget.dispatchEvent(this._lastEvent);
		this.dispatchEvent(this._lastEvent);
	}
	else if(p_event.type == neash.events.MouseEvent.CLICK) {
		this._lastEvent = new neash.events.MouseEvent(neash.events.MouseEvent.CLICK,true,false,currentTargetLocal.x,currentTargetLocal.y,currentTarget,(p_event.ctrlKey),(p_event.altKey),(p_event.shiftKey),(p_event.buttonDown),(p_event.delta));
		currentTarget.dispatchEvent(this._lastEvent);
		this.dispatchEvent(this._lastEvent);
		this.lastDownTarget = null;
	}
	this.lastLocation = this.location.clone();
	this.m_ioOldTarget = currentTarget;
	$s.pop();
}
sandy.core.interaction.VirtualMouse.prototype.lastDownTarget = null;
sandy.core.interaction.VirtualMouse.prototype.lastLocation = null;
sandy.core.interaction.VirtualMouse.prototype.lastWithinStage = null;
sandy.core.interaction.VirtualMouse.prototype.location = null;
sandy.core.interaction.VirtualMouse.prototype.m_ioOldTarget = null;
sandy.core.interaction.VirtualMouse.prototype.m_ioTarget = null;
sandy.core.interaction.VirtualMouse.prototype.__class__ = sandy.core.interaction.VirtualMouse;
sandy.core.interaction.PrivateConstructorAccess = function(p) { if( p === $_ ) return; {
	$s.push("sandy.core.interaction.PrivateConstructorAccess::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
sandy.core.interaction.PrivateConstructorAccess.__name__ = ["sandy","core","interaction","PrivateConstructorAccess"];
sandy.core.interaction.PrivateConstructorAccess.prototype.__class__ = sandy.core.interaction.PrivateConstructorAccess;
neash.media.Video = function(p) { if( p === $_ ) return; {
	$s.push("neash.media.Video::new");
	var $spos = $s.length;
	neash.display.DisplayObject.apply(this,[]);
	$s.pop();
}}
neash.media.Video.__name__ = ["neash","media","Video"];
neash.media.Video.__super__ = neash.display.DisplayObject;
for(var k in neash.display.DisplayObject.prototype ) neash.media.Video.prototype[k] = neash.display.DisplayObject.prototype[k];
neash.media.Video.prototype.__class__ = neash.media.Video;
neash.display.LoaderInfo = function(target) { if( target === $_ ) return; {
	$s.push("neash.display.LoaderInfo::new");
	var $spos = $s.length;
	neash.events.EventDispatcher.apply(this,[target]);
	$s.pop();
}}
neash.display.LoaderInfo.__name__ = ["neash","display","LoaderInfo"];
neash.display.LoaderInfo.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) neash.display.LoaderInfo.prototype[k] = neash.events.EventDispatcher.prototype[k];
neash.display.LoaderInfo.prototype.bytes = null;
neash.display.LoaderInfo.prototype.bytesLoaded = null;
neash.display.LoaderInfo.prototype.bytesTotal = null;
neash.display.LoaderInfo.prototype.childAllowsParent = null;
neash.display.LoaderInfo.prototype.content = null;
neash.display.LoaderInfo.prototype.contentType = null;
neash.display.LoaderInfo.prototype.frameRate = null;
neash.display.LoaderInfo.prototype.height = null;
neash.display.LoaderInfo.prototype.loader = null;
neash.display.LoaderInfo.prototype.loaderURL = null;
neash.display.LoaderInfo.prototype.parameters = null;
neash.display.LoaderInfo.prototype.parentAllowsChild = null;
neash.display.LoaderInfo.prototype.sameDomain = null;
neash.display.LoaderInfo.prototype.sharedEvents = null;
neash.display.LoaderInfo.prototype.url = null;
neash.display.LoaderInfo.prototype.width = null;
neash.display.LoaderInfo.prototype.__class__ = neash.display.LoaderInfo;
xpath.expression.Operation = function(leftOperand,operator,rightOperand) { if( leftOperand === $_ ) return; {
	$s.push("xpath.expression.Operation::new");
	var $spos = $s.length;
	this.leftOperand = leftOperand;
	this.operator = operator;
	this.rightOperand = rightOperand;
	$s.pop();
}}
xpath.expression.Operation.__name__ = ["xpath","expression","Operation"];
xpath.expression.Operation.prototype.evaluate = function(context) {
	$s.push("xpath.expression.Operation::evaluate");
	var $spos = $s.length;
	var leftValue = this.leftOperand.evaluate(context);
	if(this.operator == xpath.Operator.And) {
		if(!leftValue.getBool()) {
			$s.pop();
			return leftValue;
		}
		else {
			var $tmp = this.rightOperand.evaluate(context);
			$s.pop();
			return $tmp;
		}
	}
	else if(this.operator == xpath.Operator.Or) {
		if(leftValue.getBool()) {
			$s.pop();
			return leftValue;
		}
		else {
			var $tmp = this.rightOperand.evaluate(context);
			$s.pop();
			return $tmp;
		}
	}
	else {
		var rightValue = this.rightOperand.evaluate(context);
		if(this.operator == xpath.Operator.Equal) {
			{
				var $tmp = leftValue.equals(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.NotEqual) {
			{
				var $tmp = leftValue.notEqual(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.LessThanOrEqual) {
			{
				var $tmp = leftValue.lessThanOrEqual(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.GreaterThanOrEqual) {
			{
				var $tmp = leftValue.greaterThanOrEqual(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.LessThan) {
			{
				var $tmp = leftValue.lessThan(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.GreaterThan) {
			{
				var $tmp = leftValue.greaterThan(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.Plus) {
			{
				var $tmp = leftValue.plus(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.Minus) {
			{
				var $tmp = leftValue.minus(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.Multiply) {
			{
				var $tmp = leftValue.multiply(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.Divide) {
			{
				var $tmp = leftValue.divide(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.Modulo) {
			{
				var $tmp = leftValue.modulo(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else if(this.operator == xpath.Operator.Union) {
			{
				var $tmp = leftValue.union(rightValue);
				$s.pop();
				return $tmp;
			}
		}
		else {
			throw new xpath.XPathError();
		}
	}
	$s.pop();
}
xpath.expression.Operation.prototype.leftOperand = null;
xpath.expression.Operation.prototype.operator = null;
xpath.expression.Operation.prototype.rightOperand = null;
xpath.expression.Operation.prototype.__class__ = xpath.expression.Operation;
xpath.expression.Operation.__interfaces__ = [xpath.expression.Expression];
xpath.tokenizer.container.UnaryPathTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.UnaryPathTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.UnaryPathTokenizer.__name__ = ["xpath","tokenizer","container","UnaryPathTokenizer"];
xpath.tokenizer.container.UnaryPathTokenizer.instance = null;
xpath.tokenizer.container.UnaryPathTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.UnaryPathTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.UnaryPathTokenizer.instance == null) {
		xpath.tokenizer.container.UnaryPathTokenizer.instance = new xpath.tokenizer.container.UnaryPathTokenizer();
		xpath.tokenizer.container.UnaryPathTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.UnaryPathTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.UnaryPathTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.UnaryPathTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginPathTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.StepDelimitersTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = new xpath.tokenizer.util.Optional([function($this) {
			var $r;
			var tmp = xpath.tokenizer.container.StepDelimitersTokenizer.getInstance();
			$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}($this)]);
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.UnaryStepTokenizer.getInstance(),new xpath.tokenizer.util.Repetition([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.StepDelimitersTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.UnaryStepTokenizer.getInstance()])])]),xpath.tokenizer.token.EndPathTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.UnaryPathTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.UnaryPathTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.UnaryPathTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.UnaryPathTokenizer.prototype.__class__ = xpath.tokenizer.container.UnaryPathTokenizer;
xpath.tokenizer.container.UnaryPathTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
canvas.EventType = { __ename__ : ["canvas","EventType"], __constructs__ : ["et_noevent","et_active","et_keydown","et_keyup","et_mousemove","et_mousebutton_down","et_mousebutton_up","et_joystickmove","et_joystickball","et_joystickhat","et_joystickbutton","et_resize","et_quit","et_user","et_syswm"] }
canvas.EventType.et_active = ["et_active",1];
canvas.EventType.et_active.toString = $estr;
canvas.EventType.et_active.__enum__ = canvas.EventType;
canvas.EventType.et_joystickball = ["et_joystickball",8];
canvas.EventType.et_joystickball.toString = $estr;
canvas.EventType.et_joystickball.__enum__ = canvas.EventType;
canvas.EventType.et_joystickbutton = ["et_joystickbutton",10];
canvas.EventType.et_joystickbutton.toString = $estr;
canvas.EventType.et_joystickbutton.__enum__ = canvas.EventType;
canvas.EventType.et_joystickhat = ["et_joystickhat",9];
canvas.EventType.et_joystickhat.toString = $estr;
canvas.EventType.et_joystickhat.__enum__ = canvas.EventType;
canvas.EventType.et_joystickmove = ["et_joystickmove",7];
canvas.EventType.et_joystickmove.toString = $estr;
canvas.EventType.et_joystickmove.__enum__ = canvas.EventType;
canvas.EventType.et_keydown = ["et_keydown",2];
canvas.EventType.et_keydown.toString = $estr;
canvas.EventType.et_keydown.__enum__ = canvas.EventType;
canvas.EventType.et_keyup = ["et_keyup",3];
canvas.EventType.et_keyup.toString = $estr;
canvas.EventType.et_keyup.__enum__ = canvas.EventType;
canvas.EventType.et_mousebutton_down = ["et_mousebutton_down",5];
canvas.EventType.et_mousebutton_down.toString = $estr;
canvas.EventType.et_mousebutton_down.__enum__ = canvas.EventType;
canvas.EventType.et_mousebutton_up = ["et_mousebutton_up",6];
canvas.EventType.et_mousebutton_up.toString = $estr;
canvas.EventType.et_mousebutton_up.__enum__ = canvas.EventType;
canvas.EventType.et_mousemove = ["et_mousemove",4];
canvas.EventType.et_mousemove.toString = $estr;
canvas.EventType.et_mousemove.__enum__ = canvas.EventType;
canvas.EventType.et_noevent = ["et_noevent",0];
canvas.EventType.et_noevent.toString = $estr;
canvas.EventType.et_noevent.__enum__ = canvas.EventType;
canvas.EventType.et_quit = ["et_quit",12];
canvas.EventType.et_quit.toString = $estr;
canvas.EventType.et_quit.__enum__ = canvas.EventType;
canvas.EventType.et_resize = ["et_resize",11];
canvas.EventType.et_resize.toString = $estr;
canvas.EventType.et_resize.__enum__ = canvas.EventType;
canvas.EventType.et_syswm = ["et_syswm",14];
canvas.EventType.et_syswm.toString = $estr;
canvas.EventType.et_syswm.__enum__ = canvas.EventType;
canvas.EventType.et_user = ["et_user",13];
canvas.EventType.et_user.toString = $estr;
canvas.EventType.et_user.__enum__ = canvas.EventType;
canvas.MouseEventType = { __ename__ : ["canvas","MouseEventType"], __constructs__ : ["met_Move","met_LeftUp","met_LeftDown","met_MiddleUp","met_MiddleDown","met_RightUp","met_RightDown","met_MouseWheelUp","met_MouseWheelDown"] }
canvas.MouseEventType.met_LeftDown = ["met_LeftDown",2];
canvas.MouseEventType.met_LeftDown.toString = $estr;
canvas.MouseEventType.met_LeftDown.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_LeftUp = ["met_LeftUp",1];
canvas.MouseEventType.met_LeftUp.toString = $estr;
canvas.MouseEventType.met_LeftUp.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_MiddleDown = ["met_MiddleDown",4];
canvas.MouseEventType.met_MiddleDown.toString = $estr;
canvas.MouseEventType.met_MiddleDown.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_MiddleUp = ["met_MiddleUp",3];
canvas.MouseEventType.met_MiddleUp.toString = $estr;
canvas.MouseEventType.met_MiddleUp.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_MouseWheelDown = ["met_MouseWheelDown",8];
canvas.MouseEventType.met_MouseWheelDown.toString = $estr;
canvas.MouseEventType.met_MouseWheelDown.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_MouseWheelUp = ["met_MouseWheelUp",7];
canvas.MouseEventType.met_MouseWheelUp.toString = $estr;
canvas.MouseEventType.met_MouseWheelUp.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_Move = ["met_Move",0];
canvas.MouseEventType.met_Move.toString = $estr;
canvas.MouseEventType.met_Move.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_RightDown = ["met_RightDown",6];
canvas.MouseEventType.met_RightDown.toString = $estr;
canvas.MouseEventType.met_RightDown.__enum__ = canvas.MouseEventType;
canvas.MouseEventType.met_RightUp = ["met_RightUp",5];
canvas.MouseEventType.met_RightUp.toString = $estr;
canvas.MouseEventType.met_RightUp.__enum__ = canvas.MouseEventType;
canvas.Manager = function(width,height,title,fullscreen,icon,opengl,resizable) { if( width === $_ ) return; {
	$s.push("canvas.Manager::new");
	var $spos = $s.length;
	canvas.Manager.__scr = js.Lib.window.document.getElementById(title);
	if(canvas.Manager.__scr == null) throw "Element with id '" + title + "' not found";
	canvas.Manager.__scr.setAttribute("width",Std.string(width));
	canvas.Manager.__scr.setAttribute("height",Std.string(height));
	$s.pop();
}}
canvas.Manager.__name__ = ["canvas","Manager"];
canvas.Manager.__scr = null;
canvas.Manager.__evt = null;
canvas.Manager.graphics = null;
canvas.Manager.draw_quality = null;
canvas.Manager.SetCursor = function(inCursor) {
	$s.push("canvas.Manager::SetCursor");
	var $spos = $s.length;
	throw ("Not implemented");
	$s.pop();
}
canvas.Manager.GetMouse = function() {
	$s.push("canvas.Manager::GetMouse");
	var $spos = $s.length;
	throw "Not implemented";
	{
		var $tmp = new canvas.geom.Point(0,0);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.mouseEvent = function(inType) {
	$s.push("canvas.Manager::mouseEvent");
	var $spos = $s.length;
	{
		var $tmp = { type : inType, x : canvas.Manager.SmouseX(), y : canvas.Manager.SmouseY(), shift : false, ctrl : false, alt : false, leftIsDown : canvas.Manager.mouseButtonState() != 0, middleIsDown : false, rightIsDown : false}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.getScreen = function() {
	$s.push("canvas.Manager::getScreen");
	var $spos = $s.length;
	{
		var $tmp = canvas.Manager.__scr.getContext("2d");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.timer = null;
canvas.Manager.setTimer = function() {
	$s.push("canvas.Manager::setTimer");
	var $spos = $s.length;
	if(canvas.Manager.timer != null) canvas.Manager.timer.stop();
	canvas.Manager.timer = new haxe.Timer(1);
	canvas.Manager.timer.run = $closure(canvas.Manager,"step");
	$s.pop();
}
canvas.Manager.step = function() {
	$s.push("canvas.Manager::step");
	var $spos = $s.length;
	var ctx = canvas.Manager.getScreen();
	var stage = neash.Lib.GetCurrent().GetStage();
	ctx.clearRect(0,0,400,400);
	ctx.save();
	var e = new neash.events.Event(neash.events.Event.ENTER_FRAME);
	stage.dispatchEvent(e);
	ctx.restore();
	canvas.Manager.setTimer();
	$s.pop();
}
canvas.Manager.createCanvasTag = function() {
	$s.push("canvas.Manager::createCanvasTag");
	var $spos = $s.length;
	var surface = js.Lib.window.document.createElement("canvas");
	surface.setAttribute("width",canvas.Manager.__scr.getAttribute("width"));
	surface.setAttribute("height",canvas.Manager.__scr.getAttribute("height"));
	canvas.Manager.__scr.appendChild(surface);
	var context = Void;
	context = surface.getContext("2d");
	{
		$s.pop();
		return context;
	}
	$s.pop();
}
canvas.Manager.stack = null;
canvas.Manager.addToBitmapStack = function(bitmap) {
	$s.push("canvas.Manager::addToBitmapStack");
	var $spos = $s.length;
	if(canvas.Manager.stack == null) canvas.Manager.stack = new Array();
	if(bitmap != null) canvas.Manager.stack.push(bitmap);
	$s.pop();
}
canvas.Manager.paintBitmapStack = function() {
	$s.push("canvas.Manager::paintBitmapStack");
	var $spos = $s.length;
	if(canvas.Manager.stack != null) {
		var ctx = canvas.Manager.getScreen();
		var lowX = null;
		var lowY = null;
		var highX = null;
		var highY = null;
		{
			var _g = 0, _g1 = canvas.Manager.stack;
			while(_g < _g1.length) {
				var bmp = _g1[_g];
				++_g;
				var img = bmp.texture_buffer;
				var matrix = bmp.matrix;
				var s = 1;
				var p = 1.00;
				lowX = (lowX == null || matrix.tx < lowX?matrix.tx:lowX);
				lowY = (lowY == null || matrix.ty < lowY?matrix.ty:lowY);
				highX = (highX == null || matrix.tx > highX?matrix.tx:highX);
				highY = (highY == null || matrix.ty > highY?matrix.ty:highY);
			}
		}
		{
			var _g = 0, _g1 = canvas.Manager.stack;
			while(_g < _g1.length) {
				var bmp = _g1[_g];
				++_g;
				var img = bmp.texture_buffer;
				var matrix = bmp.matrix;
				var s = 1;
				var p = 1.00;
				ctx.setTransform(s * matrix.a,s * matrix.b,s * matrix.c,s * matrix.d,p * matrix.tx,p * matrix.ty);
				ctx.drawImage(img,0,0);
			}
		}
		canvas.Manager.stack = null;
	}
	$s.pop();
}
canvas.Manager.lineStack = null;
canvas.Manager.addToLineStack = function(points) {
	$s.push("canvas.Manager::addToLineStack");
	var $spos = $s.length;
	if(canvas.Manager.lineStack == null) canvas.Manager.lineStack = new haxe.FastList();
	canvas.Manager.lineStack.add(points);
	$s.pop();
}
canvas.Manager.clipLineStack = function() {
	$s.push("canvas.Manager::clipLineStack");
	var $spos = $s.length;
	if(canvas.Manager.lineStack != null) {
		var ctx = canvas.Manager.getScreen();
		ctx.beginPath();
		{ var $it65 = canvas.Manager.lineStack.iterator();
		while( $it65.hasNext() ) { var lPoints = $it65.next();
		{
			{
				var _g = 0;
				while(_g < lPoints.length) {
					var p = lPoints[_g];
					++_g;
					if(p.type == canvas.Manager.MOVE) {
						ctx.moveTo(p.x,p.y);
					}
					else {
						ctx.lineTo(p.x,p.y);
					}
				}
			}
		}
		}}
		ctx.closePath();
		ctx.clip();
	}
	$s.pop();
}
canvas.Manager.mouseButtonState = function() {
	$s.push("canvas.Manager::mouseButtonState");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"state");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.SmouseX = function() {
	$s.push("canvas.Manager::SmouseX");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"x");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.SmouseY = function() {
	$s.push("canvas.Manager::SmouseY");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"y");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.set_draw_quality = function(inQuality) {
	$s.push("canvas.Manager::set_draw_quality");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
canvas.Manager.get_draw_quality = function() {
	$s.push("canvas.Manager::get_draw_quality");
	var $spos = $s.length;
	throw "Not implemented";
	{
		$s.pop();
		return 0;
	}
	$s.pop();
}
canvas.Manager.setClipboardString = function(inString) {
	$s.push("canvas.Manager::setClipboardString");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
canvas.Manager.prototype.OnResize = function(inW,inH) {
	$s.push("canvas.Manager::OnResize");
	var $spos = $s.length;
	throw "Not implemented";
	canvas.Manager.graphics.SetSurface(canvas.Manager.__scr);
	$s.pop();
}
canvas.Manager.prototype.clear = function(color) {
	$s.push("canvas.Manager::clear");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
canvas.Manager.prototype.getEventType = function() {
	$s.push("canvas.Manager::getEventType");
	var $spos = $s.length;
	var returnType = canvas.EventType.et_noevent;
	switch(Reflect.field(canvas.Manager.__evt,"type")) {
	case -1:{
		returnType = canvas.EventType.et_noevent;
	}break;
	case 0:{
		returnType = canvas.EventType.et_active;
	}break;
	case 1:{
		returnType = canvas.EventType.et_keydown;
	}break;
	case 2:{
		returnType = canvas.EventType.et_keyup;
	}break;
	case 3:{
		returnType = canvas.EventType.et_mousemove;
	}break;
	case 4:{
		returnType = canvas.EventType.et_mousebutton_down;
	}break;
	case 5:{
		returnType = canvas.EventType.et_mousebutton_up;
	}break;
	case 6:{
		returnType = canvas.EventType.et_joystickmove;
	}break;
	case 7:{
		returnType = canvas.EventType.et_joystickball;
	}break;
	case 8:{
		returnType = canvas.EventType.et_joystickhat;
	}break;
	case 9:{
		returnType = canvas.EventType.et_joystickbutton;
	}break;
	case 10:{
		returnType = canvas.EventType.et_resize;
	}break;
	case 11:{
		returnType = canvas.EventType.et_quit;
	}break;
	case 12:{
		returnType = canvas.EventType.et_user;
	}break;
	case 13:{
		returnType = canvas.EventType.et_syswm;
	}break;
	}
	{
		$s.pop();
		return returnType;
	}
	$s.pop();
}
canvas.Manager.prototype.getNextEvent = function() {
	$s.push("canvas.Manager::getNextEvent");
	var $spos = $s.length;
	throw "Not implemented";
	{
		var $tmp = canvas.Manager.__evt;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.prototype.keyEventCallbacks = null;
canvas.Manager.prototype.lastChar = function() {
	$s.push("canvas.Manager::lastChar");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"char");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.prototype.lastKey = function() {
	$s.push("canvas.Manager::lastKey");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"key");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.prototype.lastKeyAlt = function() {
	$s.push("canvas.Manager::lastKeyAlt");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"alt");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.prototype.lastKeyCtrl = function() {
	$s.push("canvas.Manager::lastKeyCtrl");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"ctrl");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.prototype.lastKeyShift = function() {
	$s.push("canvas.Manager::lastKeyShift");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"shift");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.prototype.mFrameCount = null;
canvas.Manager.prototype.mPaused = null;
canvas.Manager.prototype.mT0 = null;
canvas.Manager.prototype.mainLoopRunning = null;
canvas.Manager.prototype.mouseButton = function() {
	$s.push("canvas.Manager::mouseButton");
	var $spos = $s.length;
	{
		var $tmp = Reflect.field(canvas.Manager.__evt,"button");
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.Manager.prototype.mouseClickCallbacks = null;
canvas.Manager.prototype.mouseEventCallbacks = null;
canvas.Manager.prototype.renderCallbacks = null;
canvas.Manager.prototype.timerStack = null;
canvas.Manager.prototype.tryQuitFunction = null;
canvas.Manager.prototype.updateCallbacks = null;
canvas.Manager.prototype.__class__ = canvas.Manager;
canvas.filters.FilterSet = function(inFilters) { if( inFilters === $_ ) return; {
	$s.push("canvas.filters.FilterSet::new");
	var $spos = $s.length;
	this.mOffset = new nme.geom.Point();
	$s.pop();
}}
canvas.filters.FilterSet.__name__ = ["canvas","filters","FilterSet"];
canvas.filters.FilterSet.prototype.FilterImage = function(inImage) {
	$s.push("canvas.filters.FilterSet::FilterImage");
	var $spos = $s.length;
	throw "Not implemented";
	{
		var $tmp = new canvas.display.BitmapData(0,0);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.filters.FilterSet.prototype.GetOffsetX = function() {
	$s.push("canvas.filters.FilterSet::GetOffsetX");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mOffset.x);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.filters.FilterSet.prototype.GetOffsetY = function() {
	$s.push("canvas.filters.FilterSet::GetOffsetY");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mOffset.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.filters.FilterSet.prototype.mHandle = null;
canvas.filters.FilterSet.prototype.mOffset = null;
canvas.filters.FilterSet.prototype.__class__ = canvas.filters.FilterSet;
neash.media.SoundLoaderContext = function(bufferTime,checkPolicyFile) { if( bufferTime === $_ ) return; {
	$s.push("neash.media.SoundLoaderContext::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
neash.media.SoundLoaderContext.__name__ = ["neash","media","SoundLoaderContext"];
neash.media.SoundLoaderContext.prototype.bufferTime = null;
neash.media.SoundLoaderContext.prototype.checkPolicyFile = null;
neash.media.SoundLoaderContext.prototype.__class__ = neash.media.SoundLoaderContext;
neash.events.TimerEvent = function(type,bubbles,cancelable) { if( type === $_ ) return; {
	$s.push("neash.events.TimerEvent::new");
	var $spos = $s.length;
	neash.events.Event.apply(this,[type,bubbles,cancelable]);
	$s.pop();
}}
neash.events.TimerEvent.__name__ = ["neash","events","TimerEvent"];
neash.events.TimerEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) neash.events.TimerEvent.prototype[k] = neash.events.Event.prototype[k];
neash.events.TimerEvent.TIMER = null;
neash.events.TimerEvent.TIMER_COMPLETE = null;
neash.events.TimerEvent.prototype.updateAfterEvent = function() {
	$s.push("neash.events.TimerEvent::updateAfterEvent");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.events.TimerEvent.prototype.__class__ = neash.events.TimerEvent;
canvas.geom.Point = function(inX,inY) { if( inX === $_ ) return; {
	$s.push("canvas.geom.Point::new");
	var $spos = $s.length;
	this.x = (inX == null?0.0:inX);
	this.y = (inY == null?0.0:inY);
	$s.pop();
}}
canvas.geom.Point.__name__ = ["canvas","geom","Point"];
canvas.geom.Point.distance = function(pt1,pt2) {
	$s.push("canvas.geom.Point::distance");
	var $spos = $s.length;
	var dx = pt1.x - pt2.x;
	var dy = pt1.y - pt2.y;
	{
		var $tmp = Math.sqrt(dx * dy + dy * dy);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.interpolate = function(pt1,pt2,f) {
	$s.push("canvas.geom.Point::interpolate");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(pt2.x + f * (pt1.x - pt2.x),pt2.y + f * (pt1.y - pt2.y));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.polar = function(len,angle) {
	$s.push("canvas.geom.Point::polar");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(len * Math.cos(angle),len * Math.sin(angle));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.prototype.add = function(v) {
	$s.push("canvas.geom.Point::add");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(v.x + this.x,v.y + this.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.prototype.clone = function() {
	$s.push("canvas.geom.Point::clone");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(this.x,this.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.prototype.equals = function(toCompare) {
	$s.push("canvas.geom.Point::equals");
	var $spos = $s.length;
	{
		var $tmp = toCompare.x == this.x && toCompare.y == this.y;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.prototype.get_length = function() {
	$s.push("canvas.geom.Point::get_length");
	var $spos = $s.length;
	{
		var $tmp = Math.sqrt(this.x * this.x + this.y * this.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.prototype.length = null;
canvas.geom.Point.prototype.normalize = function(thickness) {
	$s.push("canvas.geom.Point::normalize");
	var $spos = $s.length;
	if(this.x == 0 && this.y == 0) this.x = thickness;
	else {
		var norm = thickness / Math.sqrt(this.x * this.x + this.y * this.y);
		this.x *= norm;
		this.y *= norm;
	}
	$s.pop();
}
canvas.geom.Point.prototype.offset = function(dx,dy) {
	$s.push("canvas.geom.Point::offset");
	var $spos = $s.length;
	this.x += dx;
	this.y += dy;
	$s.pop();
}
canvas.geom.Point.prototype.subtract = function(v) {
	$s.push("canvas.geom.Point::subtract");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(this.x - v.x,this.y - v.y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Point.prototype.x = null;
canvas.geom.Point.prototype.y = null;
canvas.geom.Point.prototype.__class__ = canvas.geom.Point;
neash.Lib = function(inName,inWidth,inHeight,inFullScreen,inResizable) { if( inName === $_ ) return; {
	$s.push("neash.Lib::new");
	var $spos = $s.length;
	this.mKilled = false;
	this.mManager = new canvas.Manager(inWidth,inHeight,inName);
	neash.Lib.mStage = new neash.display.Stage(inWidth,inHeight,this.mManager);
	neash.Lib.mStage.frameRate = 100;
	neash.Lib.mMainClassRoot = new neash.display.MovieClip();
	neash.Lib.mStage.addChild(neash.Lib.mMainClassRoot);
	neash.Lib.mCurrent = neash.Lib.mMainClassRoot;
	neash.Lib.mCurrent.name = "Root MovieClip";
	var ctx = canvas.Manager.getScreen();
	canvas.Manager.setTimer();
	$s.pop();
}}
neash.Lib.__name__ = ["neash","Lib"];
neash.Lib.mMe = null;
neash.Lib.current = null;
neash.Lib.parameters = null;
neash.Lib.mStage = null;
neash.Lib.mMainClassRoot = null;
neash.Lib.mCurrent = null;
neash.Lib.mRolling = null;
neash.Lib.mDownObj = null;
neash.Lib.ShowCursor = function(inShow) {
	$s.push("neash.Lib::ShowCursor");
	var $spos = $s.length;
	neash.Lib.mShowCursor = inShow;
	canvas.Manager.SetCursor((inShow?1:0));
	$s.pop();
}
neash.Lib.SetFrameRate = function(inRate) {
	$s.push("neash.Lib::SetFrameRate");
	var $spos = $s.length;
	neash.Lib.mStage.frameRate = inRate;
	$s.pop();
}
neash.Lib.GetParameters = function() {
	$s.push("neash.Lib::GetParameters");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
neash.Lib.GetCurrent = function() {
	$s.push("neash.Lib::GetCurrent");
	var $spos = $s.length;
	{
		var $tmp = neash.Lib.mMainClassRoot;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.Lib.ShowFPS = function(inShow) {
	$s.push("neash.Lib::ShowFPS");
	var $spos = $s.length;
	neash.Lib.mShowFPS = inShow == null || inShow;
	$s.pop();
}
neash.Lib.SetBackgroundColour = function(inColour) {
	$s.push("neash.Lib::SetBackgroundColour");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.Lib.getTimer = function() {
	$s.push("neash.Lib::getTimer");
	var $spos = $s.length;
	{
		var $tmp = neash.Lib.getTimer();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.Lib.GetStage = function() {
	$s.push("neash.Lib::GetStage");
	var $spos = $s.length;
	{
		var $tmp = neash.Lib.mStage;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.Lib.FireEvents = function(inEvt,inList) {
	$s.push("neash.Lib::FireEvents");
	var $spos = $s.length;
	var l = inList.length;
	if(l == 0) {
		$s.pop();
		return;
	}
	inEvt.SetPhase(neash.events.EventPhase.CAPTURING_PHASE);
	{
		var _g1 = 0, _g = l - 1;
		while(_g1 < _g) {
			var i = _g1++;
			var obj = inList[i];
			inEvt.currentTarget = obj;
			obj.dispatchEvent(inEvt);
			if(inEvt.IsCancelled()) {
				$s.pop();
				return;
			}
		}
	}
	inEvt.SetPhase(neash.events.EventPhase.AT_TARGET);
	inEvt.currentTarget = inList[l - 1];
	inList[l - 1].dispatchEvent(inEvt);
	if(inEvt.IsCancelled()) {
		$s.pop();
		return;
	}
	if(inEvt.bubbles) {
		inEvt.SetPhase(neash.events.EventPhase.BUBBLING_PHASE);
		var i = l - 2;
		while(i >= 0) {
			var obj = inList[i];
			inEvt.currentTarget = obj;
			obj.dispatchEvent(inEvt);
			if(inEvt.IsCancelled()) {
				$s.pop();
				return;
			}
			--i;
		}
	}
	$s.pop();
}
neash.Lib.SendEventToObject = function(inEvent,inObj) {
	$s.push("neash.Lib::SendEventToObject");
	var $spos = $s.length;
	var objs = neash.Lib.GetAnscestors(inObj);
	objs.reverse();
	neash.Lib.FireEvents(inEvent,objs);
	$s.pop();
}
neash.Lib.GetAnscestors = function(inObj) {
	$s.push("neash.Lib::GetAnscestors");
	var $spos = $s.length;
	var result = [];
	while(inObj != null) {
		var interactive = inObj.AsInteractiveObject();
		if(interactive != null) result.push(interactive);
		inObj = inObj.GetParent();
	}
	result.reverse();
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.Lib.SetDragged = function(inObj,inCentre,inRect) {
	$s.push("neash.Lib::SetDragged");
	var $spos = $s.length;
	neash.Lib.mDragObject = inObj;
	neash.Lib.mDragRect = inRect;
	if(neash.Lib.mDragObject != null) {
		if(inCentre != null && inCentre) {
			neash.Lib.mDragOffsetX = -inObj.GetWidth() / 2;
			neash.Lib.mDragOffsetY = -inObj.GetHeight() / 2;
		}
		else {
			var mouse = canvas.Manager.GetMouse();
			var p = neash.Lib.mDragObject.GetParent();
			if(p != null) mouse = p.globalToLocal(mouse);
			neash.Lib.mDragOffsetX = inObj.GetX() - mouse.x;
			neash.Lib.mDragOffsetY = inObj.GetY() - mouse.y;
		}
	}
	$s.pop();
}
neash.Lib.Run = function() {
	$s.push("neash.Lib::Run");
	var $spos = $s.length;
	neash.Lib.mMe.MyRun();
	$s.pop();
}
neash.Lib.Init = function(inName,inWidth,inHeight,inFullScreen,inResizable) {
	$s.push("neash.Lib::Init");
	var $spos = $s.length;
	neash.Lib.mMe = new neash.Lib(inName,inWidth,inHeight,inFullScreen,inResizable);
	$s.pop();
}
neash.Lib.prototype.CreateMouseEvent = function(inObj,inRelatedObj,inMouse,inType) {
	$s.push("neash.Lib::CreateMouseEvent");
	var $spos = $s.length;
	var bubble = inType != neash.events.MouseEvent.ROLL_OUT && inType != neash.events.MouseEvent.ROLL_OVER;
	var pos = new canvas.geom.Point(inMouse.localX,inMouse.localY);
	if(inObj != null) pos = inObj.globalToLocal(pos);
	var result = new neash.events.MouseEvent(inType,bubble,false,inMouse.localX,inMouse.localY,inRelatedObj,inMouse.ctrlKey,inMouse.altKey,inMouse.shiftKey,inMouse.buttonDown,2);
	result.target = inObj;
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.Lib.prototype.DoMouse = function(inEvent) {
	$s.push("neash.Lib::DoMouse");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
neash.Lib.prototype.DragObject = function(inX,inY) {
	$s.push("neash.Lib::DragObject");
	var $spos = $s.length;
	var pos = new canvas.geom.Point(inX,inY);
	var p = neash.Lib.mDragObject.GetParent();
	if(p != null) pos = p.globalToLocal(pos);
	if(neash.Lib.mDragRect != null) {
		if(pos.x < neash.Lib.mDragRect.x) pos.x = neash.Lib.mDragRect.x;
		else if(pos.x > neash.Lib.mDragRect.get_right()) pos.x = neash.Lib.mDragRect.get_right();
		if(pos.y < neash.Lib.mDragRect.y) pos.y = neash.Lib.mDragRect.y;
		else if(pos.y > neash.Lib.mDragRect.get_bottom()) pos.y = neash.Lib.mDragRect.get_bottom();
	}
	neash.Lib.mDragObject.SetX(pos.x + neash.Lib.mDragOffsetX);
	neash.Lib.mDragObject.SetY(pos.y + neash.Lib.mDragOffsetY);
	$s.pop();
}
neash.Lib.prototype.GetInteractiveObjectAtPos = function(inX,inY) {
	$s.push("neash.Lib::GetInteractiveObjectAtPos");
	var $spos = $s.length;
	{
		var $tmp = neash.Lib.mStage.GetInteractiveObjectAtPos(inX,inY);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.Lib.prototype.MyRun = function() {
	$s.push("neash.Lib::MyRun");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.Lib.prototype.OnResize = function(inW,inH) {
	$s.push("neash.Lib::OnResize");
	var $spos = $s.length;
	this.mManager.OnResize(inW,inH);
	neash.Lib.mStage.OnResize(inW,inH);
	$s.pop();
}
neash.Lib.prototype.ProcessKeys = function(code,pressed,inChar,ctrl,alt,shift) {
	$s.push("neash.Lib::ProcessKeys");
	var $spos = $s.length;
	switch(code) {
	case neash.text.KeyCode.ESCAPE:{
		this.mKilled = true;
	}break;
	case neash.text.KeyCode.TAB:{
		neash.Lib.mStage.TabChange((shift?-1:1),code);
	}break;
	default:{
		var event = new neash.events.KeyboardEvent((pressed?neash.events.KeyboardEvent.KEY_DOWN:neash.events.KeyboardEvent.KEY_UP),true,false,inChar,neash.text.KeyCode.ConvertCode(code),neash.text.KeyCode.ConvertLocation(code),ctrl,alt,shift);
		neash.Lib.mStage.HandleKey(event);
	}break;
	}
	$s.pop();
}
neash.Lib.prototype.mArgs = null;
neash.Lib.prototype.mKilled = null;
neash.Lib.prototype.mManager = null;
neash.Lib.prototype.__class__ = neash.Lib;
sandy.core.data.Vertex = function(p_nx,p_ny,p_nz,restx,resty,restz) { if( p_nx === $_ ) return; {
	$s.push("sandy.core.data.Vertex::new");
	var $spos = $s.length;
	sandy.core.data.Vertex.ID = 0;
	this.id = sandy.core.data.Vertex.ID++;
	this.nbFaces = 0;
	this.aFaces = new Array();
	this.m_oWorld = new sandy.core.data.Vector();
	p_nx = ((p_nx != null)?p_nx:0);
	p_ny = ((p_ny != null)?p_ny:0);
	p_nz = ((p_nz != null)?p_nz:0);
	this.x = p_nx;
	this.y = p_ny;
	this.z = p_nz;
	this.wx = ((restx != null)?restx:this.x);
	this.wy = ((resty != null)?resty:this.y);
	this.wz = ((restz != null)?restz:this.z);
	this.sy = this.sx = 0;
	$s.pop();
}}
sandy.core.data.Vertex.__name__ = ["sandy","core","data","Vertex"];
sandy.core.data.Vertex.ID = null;
sandy.core.data.Vertex.createFromVector = function(p_v) {
	$s.push("sandy.core.data.Vertex::createFromVector");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex(p_v.x,p_v.y,p_v.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.aFaces = null;
sandy.core.data.Vertex.prototype.add = function(v) {
	$s.push("sandy.core.data.Vertex::add");
	var $spos = $s.length;
	this.x += v.x;
	this.y += v.y;
	this.z += v.z;
	this.wx += v.wx;
	this.wy += v.wy;
	this.wz += v.wz;
	$s.pop();
}
sandy.core.data.Vertex.prototype.clone = function() {
	$s.push("sandy.core.data.Vertex::clone");
	var $spos = $s.length;
	var l_oV = new sandy.core.data.Vertex(this.x,this.y,this.z);
	l_oV.wx = this.wx;
	l_oV.sx = this.sx;
	l_oV.wy = this.wy;
	l_oV.sy = this.sy;
	l_oV.wz = this.wz;
	l_oV.nbFaces = this.nbFaces;
	l_oV.aFaces = this.aFaces.concat([]);
	{
		$s.pop();
		return l_oV;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.clone2 = function() {
	$s.push("sandy.core.data.Vertex::clone2");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex(this.wx,this.wy,this.wz);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.copy = function(p_oVector) {
	$s.push("sandy.core.data.Vertex::copy");
	var $spos = $s.length;
	this.x = p_oVector.x;
	this.y = p_oVector.y;
	this.z = p_oVector.z;
	this.wx = p_oVector.wx;
	this.wy = p_oVector.wy;
	this.wz = p_oVector.wz;
	this.sx = p_oVector.sx;
	this.sy = p_oVector.sy;
	$s.pop();
}
sandy.core.data.Vertex.prototype.cross = function(v) {
	$s.push("sandy.core.data.Vertex::cross");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vertex((this.y * v.z) - (this.z * v.y),(this.z * v.x) - (this.x * v.z),(this.x * v.y) - (this.y * v.x));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.deserialize = function(convertFrom) {
	$s.push("sandy.core.data.Vertex::deserialize");
	var $spos = $s.length;
	var tmp = convertFrom.split(",");
	if(tmp.length != 9) {
		haxe.Log.trace("Unexpected length of string to deserialize into a vector " + convertFrom,{ fileName : "Vertex.hx", lineNumber : 448, className : "sandy.core.data.Vertex", methodName : "deserialize"});
	}
	this.x = Std.parseFloat(tmp[0]);
	this.y = Std.parseFloat(tmp[1]);
	this.z = Std.parseFloat(tmp[2]);
	this.wx = Std.parseFloat(tmp[3]);
	this.wy = Std.parseFloat(tmp[4]);
	this.wz = Std.parseFloat(tmp[5]);
	this.sx = Std.parseFloat(tmp[6]);
	this.sy = Std.parseFloat(tmp[7]);
	$s.pop();
}
sandy.core.data.Vertex.prototype.dot = function(w) {
	$s.push("sandy.core.data.Vertex::dot");
	var $spos = $s.length;
	{
		var $tmp = (this.x * w.x + this.y * w.y + this.z * w.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.equals = function(p_vertex) {
	$s.push("sandy.core.data.Vertex::equals");
	var $spos = $s.length;
	{
		var $tmp = (p_vertex.x == this.x && p_vertex.y == this.y && p_vertex.z == this.z && p_vertex.wx == this.wx && p_vertex.wy == this.wy && p_vertex.wz == this.wz && p_vertex.sx == this.wx && p_vertex.sy == this.sy);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.getAngle = function(w) {
	$s.push("sandy.core.data.Vertex::getAngle");
	var $spos = $s.length;
	var ncos = this.dot(w) / (this.getNorm() * w.getNorm());
	var sin2 = 1 - ncos * ncos;
	if(sin2 < 0) {
		haxe.Log.trace(" wrong " + ncos,{ fileName : "Vertex.hx", lineNumber : 371, className : "sandy.core.data.Vertex", methodName : "getAngle"});
		sin2 = 0;
	}
	{
		var $tmp = Math.atan2(Math.sqrt(sin2),ncos);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.getNorm = function() {
	$s.push("sandy.core.data.Vertex::getNorm");
	var $spos = $s.length;
	{
		var $tmp = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.getScreenPoint = function() {
	$s.push("sandy.core.data.Vertex::getScreenPoint");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(this.sx,this.sy,this.wz);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.getVector = function() {
	$s.push("sandy.core.data.Vertex::getVector");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector(this.x,this.y,this.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.getWorldVector = function() {
	$s.push("sandy.core.data.Vertex::getWorldVector");
	var $spos = $s.length;
	this.m_oWorld.x = this.wx;
	this.m_oWorld.y = this.wy;
	this.m_oWorld.z = this.wz;
	{
		var $tmp = this.m_oWorld;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.id = null;
sandy.core.data.Vertex.prototype.m_oWorld = null;
sandy.core.data.Vertex.prototype.nbFaces = null;
sandy.core.data.Vertex.prototype.negate = function() {
	$s.push("sandy.core.data.Vertex::negate");
	var $spos = $s.length;
	this.x = -this.x;
	this.y = -this.y;
	this.z = -this.z;
	this.wx = -this.wx;
	this.wy = -this.wy;
	this.wz = -this.wz;
	$s.pop();
}
sandy.core.data.Vertex.prototype.normalize = function() {
	$s.push("sandy.core.data.Vertex::normalize");
	var $spos = $s.length;
	var norm = this.getNorm();
	if(norm == 0 || norm == 1) {
		$s.pop();
		return;
	}
	this.x /= norm;
	this.y /= norm;
	this.z /= norm;
	this.wx /= norm;
	this.wy /= norm;
	this.wz /= norm;
	$s.pop();
}
sandy.core.data.Vertex.prototype.pow = function(pow) {
	$s.push("sandy.core.data.Vertex::pow");
	var $spos = $s.length;
	this.x = Math.pow(this.x,pow);
	this.y = Math.pow(this.y,pow);
	this.z = Math.pow(this.z,pow);
	this.wx = Math.pow(this.wx,pow);
	this.wy = Math.pow(this.wy,pow);
	this.wz = Math.pow(this.wz,pow);
	$s.pop();
}
sandy.core.data.Vertex.prototype.projected = null;
sandy.core.data.Vertex.prototype.scale = function(n) {
	$s.push("sandy.core.data.Vertex::scale");
	var $spos = $s.length;
	this.x *= n;
	this.y *= n;
	this.z *= n;
	this.wx *= n;
	this.wy *= n;
	this.wz *= n;
	$s.pop();
}
sandy.core.data.Vertex.prototype.serialize = function(decPlaces) {
	$s.push("sandy.core.data.Vertex::serialize");
	var $spos = $s.length;
	decPlaces = ((decPlaces != null)?decPlaces:0);
	if(decPlaces == 0) {
		decPlaces = .01;
	}
	{
		var $tmp = (sandy.util.NumberUtil.roundTo(this.x,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.y,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.z,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.wx,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.wy,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.wz,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.sx,decPlaces) + "," + sandy.util.NumberUtil.roundTo(this.sy,decPlaces));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.sub = function(v) {
	$s.push("sandy.core.data.Vertex::sub");
	var $spos = $s.length;
	this.x -= v.x;
	this.y -= v.y;
	this.z -= v.z;
	this.wx -= v.wx;
	this.wy -= v.wy;
	this.wz -= v.wz;
	$s.pop();
}
sandy.core.data.Vertex.prototype.sx = null;
sandy.core.data.Vertex.prototype.sy = null;
sandy.core.data.Vertex.prototype.toString = function(decPlaces) {
	$s.push("sandy.core.data.Vertex::toString");
	var $spos = $s.length;
	decPlaces = ((decPlaces != null)?decPlaces:0);
	if(decPlaces == 0) {
		decPlaces = 0.01;
	}
	{
		var $tmp = "{" + sandy.util.NumberUtil.roundTo(this.x,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.y,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.z,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.wx,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.wy,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.wz,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.sx,decPlaces) + ", " + sandy.util.NumberUtil.roundTo(this.sy,decPlaces) + "}";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Vertex.prototype.wx = null;
sandy.core.data.Vertex.prototype.wy = null;
sandy.core.data.Vertex.prototype.wz = null;
sandy.core.data.Vertex.prototype.x = null;
sandy.core.data.Vertex.prototype.y = null;
sandy.core.data.Vertex.prototype.z = null;
sandy.core.data.Vertex.prototype.__class__ = sandy.core.data.Vertex;
neash.text.TextFieldAutoSize = function(p) { if( p === $_ ) return; {
	$s.push("neash.text.TextFieldAutoSize::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
neash.text.TextFieldAutoSize.__name__ = ["neash","text","TextFieldAutoSize"];
neash.text.TextFieldAutoSize.prototype.__class__ = neash.text.TextFieldAutoSize;
xpath.tokenizer.TokenizerException = function(position,message) { if( position === $_ ) return; {
	$s.push("xpath.tokenizer.TokenizerException::new");
	var $spos = $s.length;
	xpath.XPathException.apply(this,[message]);
	this.position = position;
	$s.pop();
}}
xpath.tokenizer.TokenizerException.__name__ = ["xpath","tokenizer","TokenizerException"];
xpath.tokenizer.TokenizerException.__super__ = xpath.XPathException;
for(var k in xpath.XPathException.prototype ) xpath.tokenizer.TokenizerException.prototype[k] = xpath.XPathException.prototype[k];
xpath.tokenizer.TokenizerException.prototype.position = null;
xpath.tokenizer.TokenizerException.prototype.toString = function() {
	$s.push("xpath.tokenizer.TokenizerException::toString");
	var $spos = $s.length;
	var string = "";
	if(this.position != null) {
		string = "character " + Std.string(this.position) + ": ";
	}
	if(this.message != null && this.message != "") string += this.message;
	else string += "TokenizerException";
	{
		$s.pop();
		return string;
	}
	$s.pop();
}
xpath.tokenizer.TokenizerException.prototype.__class__ = xpath.tokenizer.TokenizerException;
neash.utils = {}
neash.utils.IDataInput = function(inInput) { if( inInput === $_ ) return; {
	$s.push("neash.utils.IDataInput::new");
	var $spos = $s.length;
	this.mInput = inInput;
	$s.pop();
}}
neash.utils.IDataInput.__name__ = ["neash","utils","IDataInput"];
neash.utils.IDataInput.prototype.close = function() {
	$s.push("neash.utils.IDataInput::close");
	var $spos = $s.length;
	this.mInput.close();
	$s.pop();
}
neash.utils.IDataInput.prototype.mInput = null;
neash.utils.IDataInput.prototype.readAll = function(bufsize) {
	$s.push("neash.utils.IDataInput::readAll");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readAll(bufsize);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readBoolean = function() {
	$s.push("neash.utils.IDataInput::readBoolean");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readInt8() != 0;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readByte = function() {
	$s.push("neash.utils.IDataInput::readByte");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readByte();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readBytes = function(inLen) {
	$s.push("neash.utils.IDataInput::readBytes");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.read(inLen);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readDouble = function() {
	$s.push("neash.utils.IDataInput::readDouble");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readDouble();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readFloat = function() {
	$s.push("neash.utils.IDataInput::readFloat");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readFloat();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readInt = function() {
	$s.push("neash.utils.IDataInput::readInt");
	var $spos = $s.length;
	{
		var $tmp = haxe.Int32.toInt(this.mInput.readInt32());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readShort = function() {
	$s.push("neash.utils.IDataInput::readShort");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readInt16();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readUTFBytes = function(length) {
	$s.push("neash.utils.IDataInput::readUTFBytes");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.read(length);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readUnsignedByte = function() {
	$s.push("neash.utils.IDataInput::readUnsignedByte");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readByte();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readUnsignedInt = function() {
	$s.push("neash.utils.IDataInput::readUnsignedInt");
	var $spos = $s.length;
	{
		var $tmp = haxe.Int32.toInt(this.mInput.readInt32());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.readUnsignedShort = function() {
	$s.push("neash.utils.IDataInput::readUnsignedShort");
	var $spos = $s.length;
	{
		var $tmp = this.mInput.readUInt16();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.IDataInput.prototype.__class__ = neash.utils.IDataInput;
sandy.parser.Parser3DS = function(p_sUrl,p_nScale) { if( p_sUrl === $_ ) return; {
	$s.push("sandy.parser.Parser3DS::new");
	var $spos = $s.length;
	sandy.parser.AParser.apply(this,[p_sUrl,p_nScale]);
	this.m_sDataFormat = neash.net.URLLoaderDataFormat.BINARY;
	$s.pop();
}}
sandy.parser.Parser3DS.__name__ = ["sandy","parser","Parser3DS"];
sandy.parser.Parser3DS.__super__ = sandy.parser.AParser;
for(var k in sandy.parser.AParser.prototype ) sandy.parser.Parser3DS.prototype[k] = sandy.parser.AParser.prototype[k];
sandy.parser.Parser3DS.prototype._applyMatrixToShape = function(p_oShape,p_oMatrix) {
	$s.push("sandy.parser.Parser3DS::_applyMatrixToShape");
	var $spos = $s.length;
	p_oShape.__setMatrix(p_oMatrix);
	$s.pop();
}
sandy.parser.Parser3DS.prototype._rot_m = null;
sandy.parser.Parser3DS.prototype.currentObjectName = null;
sandy.parser.Parser3DS.prototype.data = null;
sandy.parser.Parser3DS.prototype.endFrame = null;
sandy.parser.Parser3DS.prototype.lastRotation = null;
sandy.parser.Parser3DS.prototype.parseData = function(e) {
	$s.push("sandy.parser.Parser3DS::parseData");
	var $spos = $s.length;
	sandy.parser.AParser.prototype.parseData.apply(this,[e]);
	this.data = this.m_oFileLoader.data;
	this.data.endian = canvas.utils.Endian.LITTLE_ENDIAN;
	var currentObjectName = null;
	var _rot_m = new Array();
	var pi180 = 180 / Math.PI;
	var l_oAppearance = this.m_oStandardAppearance;
	var l_oGeometry = null;
	var l_oShape = null;
	var l_oMatrix = null;
	var x, y, z;
	var l_qty;
	while(this.data.bytesAvailable > 0) {
		var id = this.data.readUnsignedShort();
		var l_chunk_length = this.data.readUnsignedInt();
		switch(id) {
		case sandy.parser.Parser3DSChunkTypes.MAIN3DS:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.EDIT3DS:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.KEYF3DS:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.EDIT_OBJECT:{
			if(l_oGeometry != null) {
				l_oShape = new sandy.core.scenegraph.Shape3D(currentObjectName,l_oGeometry,l_oAppearance);
				if(l_oMatrix != null) this._applyMatrixToShape(l_oShape,l_oMatrix);
				this.m_oGroup.addChild(l_oShape);
			}
			var str = this.readString();
			currentObjectName = str;
			l_oGeometry = new sandy.core.scenegraph.Geometry3D();
		}break;
		case sandy.parser.Parser3DSChunkTypes.OBJ_TRIMESH:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.TRI_VERTEXL:{
			l_qty = this.data.readUnsignedShort();
			{
				var _g = 0;
				while(_g < l_qty) {
					var i = _g++;
					x = this.data.readFloat();
					z = this.data.readFloat();
					y = this.data.readFloat();
					l_oGeometry.setVertex(i,x * this.m_nScale,y * this.m_nScale,z * this.m_nScale);
				}
			}
		}break;
		case sandy.parser.Parser3DSChunkTypes.TRI_TEXCOORD:{
			l_qty = this.data.readUnsignedShort();
			{
				var _g = 0;
				while(_g < l_qty) {
					var i = _g++;
					var u = this.data.readFloat();
					var v = this.data.readFloat();
					l_oGeometry.setUVCoords(i,u,1 - v);
				}
			}
		}break;
		case sandy.parser.Parser3DSChunkTypes.TRI_FACEL1:{
			l_qty = this.data.readUnsignedShort();
			{
				var _g = 0;
				while(_g < l_qty) {
					var i = _g++;
					var vertex_a = this.data.readUnsignedShort();
					var vertex_b = this.data.readUnsignedShort();
					var vertex_c = this.data.readUnsignedShort();
					var faceId = this.data.readUnsignedShort();
					l_oGeometry.setFaceVertexIds(i,[vertex_a,vertex_b,vertex_c]);
					l_oGeometry.setFaceUVCoordsIds(i,[vertex_a,vertex_b,vertex_c]);
				}
			}
		}break;
		case sandy.parser.Parser3DSChunkTypes.TRI_LOCAL:{
			var localX = this.readVector();
			var localZ = this.readVector();
			var localY = this.readVector();
			var origin = this.readVector();
			l_oMatrix = new sandy.core.data.Matrix4(localX.x,localX.y,localX.z,origin.x,localY.x,localY.y,localY.z,origin.y,localZ.x,localZ.y,localZ.z,origin.z,0,0,0,1);
		}break;
		case sandy.parser.Parser3DSChunkTypes.OBJ_LIGHT:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.LIT_SPOT:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.COL_TRU:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.COL_RGB:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.OBJ_CAMERA:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.KEYF_FRAMES:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.KEYF_OBJDES:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.NODE_ID:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.NODE_HDR:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.PIVOT:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.POS_TRACK_TAG:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.ROT_TRACK_TAG:{
			null;
		}break;
		case sandy.parser.Parser3DSChunkTypes.SCL_TRACK_TAG:{
			null;
		}break;
		default:{
			this.data.position += l_chunk_length - 6;
		}break;
		}
	}
	l_oShape = new sandy.core.scenegraph.Shape3D(currentObjectName,l_oGeometry,l_oAppearance);
	this.m_oGroup.addChild(l_oShape);
	var l_eOnInit = new sandy.parser.ParserEvent(sandy.parser.ParserEvent.INIT);
	l_eOnInit.group = this.m_oGroup;
	this.dispatchEvent(l_eOnInit);
	$s.pop();
}
sandy.parser.Parser3DS.prototype.readByte = function() {
	$s.push("sandy.parser.Parser3DS::readByte");
	var $spos = $s.length;
	{
		var $tmp = this.data.readByte();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.parser.Parser3DS.prototype.readChar = function() {
	$s.push("sandy.parser.Parser3DS::readChar");
	var $spos = $s.length;
	{
		var $tmp = this.data.readUnsignedByte();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.parser.Parser3DS.prototype.readInt = function() {
	$s.push("sandy.parser.Parser3DS::readInt");
	var $spos = $s.length;
	var temp = this.readChar();
	{
		var $tmp = (temp | (this.readChar() << 8));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.parser.Parser3DS.prototype.readString = function() {
	$s.push("sandy.parser.Parser3DS::readString");
	var $spos = $s.length;
	var name = "";
	var ch;
	while((ch = this.readChar()) != 0) {
		if(ch == 0) {
			break;
		}
		name += String.fromCharCode(ch);
	}
	{
		$s.pop();
		return name;
	}
	$s.pop();
}
sandy.parser.Parser3DS.prototype.readVector = function() {
	$s.push("sandy.parser.Parser3DS::readVector");
	var $spos = $s.length;
	var x = this.data.readFloat();
	var y = this.data.readFloat();
	var z = this.data.readFloat();
	{
		var $tmp = new sandy.core.data.Vector(x,z,y);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.parser.Parser3DS.prototype.startFrame = null;
sandy.parser.Parser3DS.prototype.__class__ = sandy.parser.Parser3DS;
sandy.parser.Parser3DS.__interfaces__ = [sandy.parser.IParser];
xpath.expression.Number = function(value) { if( value === $_ ) return; {
	$s.push("xpath.expression.Number::new");
	var $spos = $s.length;
	this.value = value;
	$s.pop();
}}
xpath.expression.Number.__name__ = ["xpath","expression","Number"];
xpath.expression.Number.prototype.evaluate = function(context) {
	$s.push("xpath.expression.Number::evaluate");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathNumber(this.value);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.Number.prototype.value = null;
xpath.expression.Number.prototype.__class__ = xpath.expression.Number;
xpath.expression.Number.__interfaces__ = [xpath.expression.Expression];
xpath.tokenizer.token.BeginPathTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.BeginPathTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.BeginPathToken(),"","BeginPath"]);
	$s.pop();
}}
xpath.tokenizer.token.BeginPathTokenizer.__name__ = ["xpath","tokenizer","token","BeginPathTokenizer"];
xpath.tokenizer.token.BeginPathTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.BeginPathTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.BeginPathTokenizer.instance = null;
xpath.tokenizer.token.BeginPathTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.BeginPathTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.BeginPathTokenizer.instance == null) xpath.tokenizer.token.BeginPathTokenizer.instance = new xpath.tokenizer.token.BeginPathTokenizer();
	{
		var $tmp = xpath.tokenizer.token.BeginPathTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.BeginPathTokenizer.prototype.__class__ = xpath.tokenizer.token.BeginPathTokenizer;
xpath.tokenizer.token.EndFunctionCallTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.EndFunctionCallTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.EndFunctionCallToken(),")","EndFunctionCall"]);
	$s.pop();
}}
xpath.tokenizer.token.EndFunctionCallTokenizer.__name__ = ["xpath","tokenizer","token","EndFunctionCallTokenizer"];
xpath.tokenizer.token.EndFunctionCallTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.EndFunctionCallTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.EndFunctionCallTokenizer.instance = null;
xpath.tokenizer.token.EndFunctionCallTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.EndFunctionCallTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.EndFunctionCallTokenizer.instance == null) xpath.tokenizer.token.EndFunctionCallTokenizer.instance = new xpath.tokenizer.token.EndFunctionCallTokenizer();
	{
		var $tmp = xpath.tokenizer.token.EndFunctionCallTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.EndFunctionCallTokenizer.prototype.__class__ = xpath.tokenizer.token.EndFunctionCallTokenizer;
neash.swf.SWFStream = function(inStream) { if( inStream === $_ ) return; {
	$s.push("neash.swf.SWFStream::new");
	var $spos = $s.length;
	this.mStream = inStream;
	var sig = String.fromCharCode(this.mStream.readUnsignedByte()) + String.fromCharCode(this.mStream.readUnsignedByte()) + String.fromCharCode(this.mStream.readUnsignedByte());
	var ver = this.mStream.readUnsignedByte();
	if(sig != "FWS" && sig != "CWS") throw "Invalid signature";
	if(ver > 9) throw ("unknown swf version");
	this.mVersion = ver;
	var length = inStream.readInt();
	if(sig == "CWS") {
		this.mStream = neash.utils.Uncompress.ConvertStream(this.mStream);
	}
	this.mBitPos = 0;
	this.mByteBuf = 0;
	this.mTagRead = 0;
	$s.pop();
}}
neash.swf.SWFStream.__name__ = ["neash","swf","SWFStream"];
neash.swf.SWFStream.prototype.AlignBits = function() {
	$s.push("neash.swf.SWFStream::AlignBits");
	var $spos = $s.length;
	this.mBitPos = 0;
	$s.pop();
}
neash.swf.SWFStream.prototype.BeginTag = function() {
	$s.push("neash.swf.SWFStream::BeginTag");
	var $spos = $s.length;
	var data = this.mStream.readUnsignedShort();
	var tag = data >> 6;
	var length = data & 63;
	if(tag >= neash.swf.Tags.LAST) {
		$s.pop();
		return 0;
	}
	if(length == 63) length = this.mStream.readUnsignedInt();
	this.mTagSize = length;
	this.mTagRead = 0;
	{
		$s.pop();
		return tag;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.Bits = function(inBits,inSigned) {
	$s.push("neash.swf.SWFStream::Bits");
	var $spos = $s.length;
	var sign_bit = inBits - 1;
	var result = 0;
	var left = inBits;
	while(left != 0) {
		if(this.mBitPos == 0) {
			this.mByteBuf = this.mStream.readUnsignedByte();
			this.mTagRead++;
			this.mBitPos = 8;
		}
		while(this.mBitPos > 0 && left > 0) {
			result = ((result << 1) | ((this.mByteBuf >> 7) & 1));
			this.mBitPos--;
			left--;
			this.mByteBuf <<= 1;
		}
	}
	if(inSigned != null && inSigned) {
		var mask = (1 << sign_bit);
		if((result & mask) != 0) result -= (1 << inBits);
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.BytesLeft = function() {
	$s.push("neash.swf.SWFStream::BytesLeft");
	var $spos = $s.length;
	{
		var $tmp = this.mTagSize - this.mTagRead;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.EndTag = function() {
	$s.push("neash.swf.SWFStream::EndTag");
	var $spos = $s.length;
	var read = this.mTagRead;
	var size = this.mTagSize;
	if(read > size) throw "tag read overflow";
	while(read < size) {
		this.mStream.readUnsignedByte();
		read++;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.Fixed = function(inBits) {
	$s.push("neash.swf.SWFStream::Fixed");
	var $spos = $s.length;
	{
		var $tmp = this.Bits(inBits,true) / 65536.0;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.FrameRate = function() {
	$s.push("neash.swf.SWFStream::FrameRate");
	var $spos = $s.length;
	{
		var $tmp = this.mStream.readUnsignedShort() / 256.0;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.Frames = function() {
	$s.push("neash.swf.SWFStream::Frames");
	var $spos = $s.length;
	{
		var $tmp = this.mStream.readUnsignedShort();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.GetVersion = function() {
	$s.push("neash.swf.SWFStream::GetVersion");
	var $spos = $s.length;
	{
		var $tmp = this.mVersion;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.PopTag = function() {
	$s.push("neash.swf.SWFStream::PopTag");
	var $spos = $s.length;
	this.mTagRead = this.mPushTagSize;
	this.mTagSize = this.mPushTagSize;
	$s.pop();
}
neash.swf.SWFStream.prototype.PushTag = function() {
	$s.push("neash.swf.SWFStream::PushTag");
	var $spos = $s.length;
	this.mPushTagRead = this.mTagRead;
	this.mPushTagSize = this.mTagSize;
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadAlign = function() {
	$s.push("neash.swf.SWFStream::ReadAlign");
	var $spos = $s.length;
	var a = this.ReadByte();
	switch(a) {
	case 0:{
		{
			var $tmp = neash.text.TextFormatAlign.LEFT;
			$s.pop();
			return $tmp;
		}
	}break;
	case 1:{
		{
			var $tmp = neash.text.TextFormatAlign.RIGHT;
			$s.pop();
			return $tmp;
		}
	}break;
	case 2:{
		{
			var $tmp = neash.text.TextFormatAlign.CENTER;
			$s.pop();
			return $tmp;
		}
	}break;
	case 3:{
		{
			var $tmp = neash.text.TextFormatAlign.JUSTIFY;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		var $tmp = neash.text.TextFormatAlign.LEFT;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadArraySize = function(inExtended) {
	$s.push("neash.swf.SWFStream::ReadArraySize");
	var $spos = $s.length;
	this.mTagRead++;
	var result = this.mStream.readUnsignedByte();
	if(inExtended && result == 255) {
		this.mTagRead += 2;
		result = this.mStream.readUnsignedShort();
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadBool = function() {
	$s.push("neash.swf.SWFStream::ReadBool");
	var $spos = $s.length;
	{
		var $tmp = this.Bits(1) == 1;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadByte = function() {
	$s.push("neash.swf.SWFStream::ReadByte");
	var $spos = $s.length;
	this.mTagRead++;
	{
		var $tmp = this.mStream.readUnsignedByte();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadBytes = function(inSize) {
	$s.push("neash.swf.SWFStream::ReadBytes");
	var $spos = $s.length;
	var buffer = this.mStream.readBytes(inSize);
	this.mTagRead += inSize;
	{
		$s.pop();
		return buffer;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadCapsStyle = function() {
	$s.push("neash.swf.SWFStream::ReadCapsStyle");
	var $spos = $s.length;
	switch(this.Bits(2)) {
	case 0:{
		{
			var $tmp = nme.display.CapsStyle.ROUND;
			$s.pop();
			return $tmp;
		}
	}break;
	case 1:{
		{
			var $tmp = nme.display.CapsStyle.NONE;
			$s.pop();
			return $tmp;
		}
	}break;
	case 2:{
		{
			var $tmp = nme.display.CapsStyle.SQUARE;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		var $tmp = nme.display.CapsStyle.ROUND;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadColorTransform = function() {
	$s.push("neash.swf.SWFStream::ReadColorTransform");
	var $spos = $s.length;
	var result = new neash.geom.ColorTransform();
	var has_add = this.ReadBool();
	var has_mult = this.ReadBool();
	var bits = this.Bits(4);
	if(has_mult) {
		result.redMultiplier = this.Bits(bits,true);
		result.greenMultiplier = this.Bits(bits,true);
		result.blueMultiplier = this.Bits(bits,true);
	}
	if(has_add) {
		result.redOffset = this.Bits(bits,true);
		result.greenOffset = this.Bits(bits,true);
		result.blueOffset = this.Bits(bits,true);
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadDepth = function() {
	$s.push("neash.swf.SWFStream::ReadDepth");
	var $spos = $s.length;
	this.mTagRead += 2;
	{
		var $tmp = this.mStream.readUnsignedShort();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadID = function() {
	$s.push("neash.swf.SWFStream::ReadID");
	var $spos = $s.length;
	this.mTagRead += 2;
	{
		var $tmp = this.mStream.readUnsignedShort();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadInt = function() {
	$s.push("neash.swf.SWFStream::ReadInt");
	var $spos = $s.length;
	this.mTagRead += 4;
	{
		var $tmp = this.mStream.readInt();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadInterpolationMethod = function() {
	$s.push("neash.swf.SWFStream::ReadInterpolationMethod");
	var $spos = $s.length;
	switch(this.Bits(2)) {
	case 0:{
		{
			var $tmp = nme.display.InterpolationMethod.RGB;
			$s.pop();
			return $tmp;
		}
	}break;
	case 1:{
		{
			var $tmp = nme.display.InterpolationMethod.LINEAR_RGB;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		var $tmp = nme.display.InterpolationMethod.RGB;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadJoinStyle = function() {
	$s.push("neash.swf.SWFStream::ReadJoinStyle");
	var $spos = $s.length;
	switch(this.Bits(2)) {
	case 0:{
		{
			var $tmp = nme.display.JointStyle.ROUND;
			$s.pop();
			return $tmp;
		}
	}break;
	case 1:{
		{
			var $tmp = nme.display.JointStyle.BEVEL;
			$s.pop();
			return $tmp;
		}
	}break;
	case 2:{
		{
			var $tmp = nme.display.JointStyle.MITER;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		var $tmp = nme.display.JointStyle.ROUND;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadMatrix = function() {
	$s.push("neash.swf.SWFStream::ReadMatrix");
	var $spos = $s.length;
	var result = new canvas.geom.Matrix();
	this.AlignBits();
	var has_scale = this.ReadBool();
	var scale_bits = (has_scale?this.Bits(5):0);
	result.a = (has_scale?this.Fixed(scale_bits):1.0);
	result.d = (has_scale?this.Fixed(scale_bits):1.0);
	var has_rotate = this.ReadBool();
	var rotate_bits = (has_rotate?this.Bits(5):0);
	result.b = (has_rotate?this.Fixed(rotate_bits):0.0);
	result.c = (has_rotate?this.Fixed(rotate_bits):0.0);
	var trans_bits = this.Bits(5);
	result.tx = this.Twips(trans_bits);
	result.ty = this.Twips(trans_bits);
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadPascalString = function() {
	$s.push("neash.swf.SWFStream::ReadPascalString");
	var $spos = $s.length;
	var len = this.ReadByte();
	var result = "";
	{
		var _g = 0;
		while(_g < len) {
			var i = _g++;
			var c = this.ReadByte();
			if(c > 0) result += String.fromCharCode(c);
		}
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadRGB = function() {
	$s.push("neash.swf.SWFStream::ReadRGB");
	var $spos = $s.length;
	this.mTagRead += 3;
	var r = this.mStream.readUnsignedByte();
	var g = this.mStream.readUnsignedByte();
	var b = this.mStream.readUnsignedByte();
	{
		var $tmp = ((r << 16) | (g << 8)) | b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadRect = function() {
	$s.push("neash.swf.SWFStream::ReadRect");
	var $spos = $s.length;
	this.AlignBits();
	var bits = this.Bits(5);
	var x0 = this.Twips(bits);
	var x1 = this.Twips(bits);
	var y0 = this.Twips(bits);
	var y1 = this.Twips(bits);
	{
		var $tmp = new canvas.geom.Rectangle(x0,y0,(x1 - x0),(y1 - y0));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadSI16 = function() {
	$s.push("neash.swf.SWFStream::ReadSI16");
	var $spos = $s.length;
	this.mTagRead += 2;
	{
		var $tmp = this.mStream.readShort();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadSTwips = function() {
	$s.push("neash.swf.SWFStream::ReadSTwips");
	var $spos = $s.length;
	{
		var $tmp = this.ReadSI16() * 0.05;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadScaleMode = function() {
	$s.push("neash.swf.SWFStream::ReadScaleMode");
	var $spos = $s.length;
	switch(this.Bits(2)) {
	case 0:{
		{
			var $tmp = nme.display.LineScaleMode.NORMAL;
			$s.pop();
			return $tmp;
		}
	}break;
	case 1:{
		{
			var $tmp = nme.display.LineScaleMode.HORIZONTAL;
			$s.pop();
			return $tmp;
		}
	}break;
	case 2:{
		{
			var $tmp = nme.display.LineScaleMode.VERTICAL;
			$s.pop();
			return $tmp;
		}
	}break;
	case 3:{
		{
			var $tmp = nme.display.LineScaleMode.NONE;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		var $tmp = nme.display.LineScaleMode.NORMAL;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadSpreadMethod = function() {
	$s.push("neash.swf.SWFStream::ReadSpreadMethod");
	var $spos = $s.length;
	switch(this.Bits(2)) {
	case 0:{
		{
			var $tmp = nme.display.SpreadMethod.PAD;
			$s.pop();
			return $tmp;
		}
	}break;
	case 1:{
		{
			var $tmp = nme.display.SpreadMethod.REFLECT;
			$s.pop();
			return $tmp;
		}
	}break;
	case 2:{
		{
			var $tmp = nme.display.SpreadMethod.REPEAT;
			$s.pop();
			return $tmp;
		}
	}break;
	case 3:{
		{
			var $tmp = nme.display.SpreadMethod.PAD;
			$s.pop();
			return $tmp;
		}
	}break;
	}
	{
		var $tmp = nme.display.SpreadMethod.REPEAT;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadString = function() {
	$s.push("neash.swf.SWFStream::ReadString");
	var $spos = $s.length;
	var result = "";
	while(true) {
		var r = this.ReadByte();
		if(r == 0) {
			$s.pop();
			return result;
		}
		result += String.fromCharCode(r);
	}
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadUI16 = function() {
	$s.push("neash.swf.SWFStream::ReadUI16");
	var $spos = $s.length;
	this.mTagRead += 2;
	{
		var $tmp = this.mStream.readUnsignedShort();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.ReadUTwips = function() {
	$s.push("neash.swf.SWFStream::ReadUTwips");
	var $spos = $s.length;
	{
		var $tmp = this.ReadUI16() * 0.05;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.Twips = function(inBits) {
	$s.push("neash.swf.SWFStream::Twips");
	var $spos = $s.length;
	var val = this.Bits(inBits,true);
	{
		var $tmp = val * 0.05;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.SWFStream.prototype.close = function() {
	$s.push("neash.swf.SWFStream::close");
	var $spos = $s.length;
	this.mStream = null;
	$s.pop();
}
neash.swf.SWFStream.prototype.mBitPos = null;
neash.swf.SWFStream.prototype.mByteBuf = null;
neash.swf.SWFStream.prototype.mPushTagRead = null;
neash.swf.SWFStream.prototype.mPushTagSize = null;
neash.swf.SWFStream.prototype.mStream = null;
neash.swf.SWFStream.prototype.mTagRead = null;
neash.swf.SWFStream.prototype.mTagSize = null;
neash.swf.SWFStream.prototype.mVersion = null;
neash.swf.SWFStream.prototype.__class__ = neash.swf.SWFStream;
neash.display.Shape = function(p) { if( p === $_ ) return; {
	$s.push("neash.display.Shape::new");
	var $spos = $s.length;
	neash.display.DisplayObject.apply(this,[]);
	this.mGraphics = new canvas.display.Graphics();
	$s.pop();
}}
neash.display.Shape.__name__ = ["neash","display","Shape"];
neash.display.Shape.__super__ = neash.display.DisplayObject;
for(var k in neash.display.DisplayObject.prototype ) neash.display.Shape.prototype[k] = neash.display.DisplayObject.prototype[k];
neash.display.Shape.prototype.GetGraphics = function() {
	$s.push("neash.display.Shape::GetGraphics");
	var $spos = $s.length;
	{
		var $tmp = this.mGraphics;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.Shape.prototype.graphics = null;
neash.display.Shape.prototype.mGraphics = null;
neash.display.Shape.prototype.__class__ = neash.display.Shape;
sandy.util.BezierUtil = function() { }
sandy.util.BezierUtil.__name__ = ["sandy","util","BezierUtil"];
sandy.util.BezierUtil.getPointsOnQuadCurve = function(p,p1,p2,p3) {
	$s.push("sandy.util.BezierUtil::getPointsOnQuadCurve");
	var $spos = $s.length;
	var ip2 = 2 * (1 - p);
	{
		var $tmp = new sandy.core.data.Vector(p1.x + p * (ip2 * (p2.x - p1.x) + p * (p3.x - p1.x)),p1.y + p * (ip2 * (p2.y - p1.y) + p * (p3.y - p1.y)),p1.z + p * (ip2 * (p2.z - p1.z) + p * (p3.z - p1.z)));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.BezierUtil.getPointsOnCubicCurve = function(p,p1,p2,p3,p4) {
	$s.push("sandy.util.BezierUtil::getPointsOnCubicCurve");
	var $spos = $s.length;
	var a, b, c, d, e;
	d = p * p;
	a = 1 - p;
	e = a * a;
	b = e * a;
	c = d * p;
	{
		var $tmp = new sandy.core.data.Vector(b * p1.x + 3 * p * e * p2.x + 3 * d * a * p3.x + c * p4.x,b * p1.y + 3 * p * e * p2.y + 3 * d * a * p3.y + c * p4.y,b * p1.z + 3 * p * e * p2.z + 3 * d * a * p3.z + c * p4.z);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.BezierUtil.getQuadControlPoints = function(start,middle,end) {
	$s.push("sandy.util.BezierUtil::getQuadControlPoints");
	var $spos = $s.length;
	{
		var $tmp = new sandy.core.data.Vector((2 * middle.x) - .5 * (start.x + end.x),(2 * middle.y) - .5 * (start.y + end.y),(2 * middle.z) - .5 * (start.z + end.z));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.BezierUtil.getCubicControlPoints = function(start,through1,through2,end) {
	$s.push("sandy.util.BezierUtil::getCubicControlPoints");
	var $spos = $s.length;
	{
		var $tmp = [new sandy.core.data.Vector(-(10 * start.x - 3 * end.x - 8 * (3 * through1.x - through2.x)) / 9,-(10 * start.y - 3 * end.y - 8 * (3 * through1.y - through2.y)) / 9,-(10 * start.z - 3 * end.y - 8 * (3 * through1.z - through2.z)) / 9),new sandy.core.data.Vector((3 * start.x - 10 * end.x - 8 * through1.x + 24 * through2.x) / 9,(3 * start.y - 10 * end.y - 8 * through1.y + 24 * through2.y) / 9,(3 * start.z - 10 * end.z - 8 * through1.z + 24 * through2.z) / 9)];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.BezierUtil.casteljau = function(p,plist) {
	$s.push("sandy.util.BezierUtil::casteljau");
	var $spos = $s.length;
	var list = plist.slice(0);
	var aNewList = [];
	var i = 0;
	do {
		{
			var _g1 = 0, _g = (list.length - 1);
			while(_g1 < _g) {
				var i1 = _g1++;
				var v1 = sandy.math.VectorMath.scale(sandy.math.VectorMath.clone(list[i1]),1.0 - p);
				var v2 = sandy.math.VectorMath.scale(sandy.math.VectorMath.clone(list[i1 + 1]),p);
				aNewList.push(sandy.math.VectorMath.addVector(v1,v2));
			}
		}
		list = aNewList;
		aNewList = [];
	} while(list.length > 1);
	if(list.length != 1) {
		haxe.Log.trace("sandy.util.BezierUtil::casteljau > Error, size of array must be equal to 1",{ fileName : "BezierUtil.hx", lineNumber : 161, className : "sandy.util.BezierUtil", methodName : "casteljau"});
	}
	{
		var $tmp = list[0];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.BezierUtil.casteljau_interval = function(p,plist,pdeb,pfin) {
	$s.push("sandy.util.BezierUtil::casteljau_interval");
	var $spos = $s.length;
	var aNewList = plist.slice(0);
	{
		var _g = pdeb;
		while(_g < pfin) {
			var i = _g++;
			var loc_p = i % (plist.length);
			if(p < 0) loc_p += plist.length;
			aNewList.push(plist[loc_p]);
		}
	}
	{
		var $tmp = sandy.util.BezierUtil.casteljau(p,aNewList);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.util.BezierUtil.prototype.__class__ = sandy.util.BezierUtil;
sandy.events.SandyEvent = function(type,bubbles,cancelable) { if( type === $_ ) return; {
	$s.push("sandy.events.SandyEvent::new");
	var $spos = $s.length;
	if(bubbles == null) bubbles = false;
	if(cancelable == null) cancelable = false;
	neash.events.Event.apply(this,[type,bubbles,cancelable]);
	$s.pop();
}}
sandy.events.SandyEvent.__name__ = ["sandy","events","SandyEvent"];
sandy.events.SandyEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) sandy.events.SandyEvent.prototype[k] = neash.events.Event.prototype[k];
sandy.events.SandyEvent.prototype.clone = function() {
	$s.push("sandy.events.SandyEvent::clone");
	var $spos = $s.length;
	{
		var $tmp = new sandy.events.SandyEvent(this.type,this.bubbles,this.cancelable);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.events.SandyEvent.prototype.__class__ = sandy.events.SandyEvent;
neash.net.URLRequest = function(inURL) { if( inURL === $_ ) return; {
	$s.push("neash.net.URLRequest::new");
	var $spos = $s.length;
	if(inURL != null) this.url = inURL;
	$s.pop();
}}
neash.net.URLRequest.__name__ = ["neash","net","URLRequest"];
neash.net.URLRequest.prototype.url = null;
neash.net.URLRequest.prototype.__class__ = neash.net.URLRequest;
xpath.tokenizer.token.NumberTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.NumberTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.NumberTokenizer.__name__ = ["xpath","tokenizer","token","NumberTokenizer"];
xpath.tokenizer.token.NumberTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.NumberTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.NumberTokenizer.instance = null;
xpath.tokenizer.token.NumberTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.NumberTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.NumberTokenizer.instance == null) xpath.tokenizer.token.NumberTokenizer.instance = new xpath.tokenizer.token.NumberTokenizer();
	{
		var $tmp = xpath.tokenizer.token.NumberTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.NumberTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.NumberTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position - 1;
	var charCode;
	do {
		charCode = input.query.charCodeAt(++pos);
	} while(charCode > 47 && charCode < 58);
	if(charCode != 46) {
		if(pos > input.position) {
			var value = Std.parseFloat(input.query.substr(input.position,pos - input.position));
			var result = [function($this) {
				var $r;
				var tmp = new xpath.tokenizer.NumberToken(value);
				$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this)];
			var characterLength = pos - input.position;
			characterLength += this.countWhitespace(input.query,pos);
			{
				var $tmp = input.getOutput(result,characterLength);
				$s.pop();
				return $tmp;
			}
		}
		else {
			throw new xpath.tokenizer.ExpectedException([{ tokenName : "Number", position : input.position}]);
		}
	}
	do {
		charCode = input.query.charCodeAt(++pos);
	} while(charCode > 47 && charCode < 58);
	if(pos > input.position + 1) {
		var value = Std.parseFloat(input.query.substr(input.position,pos - input.position));
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.NumberToken(value);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		var characterLength = pos - input.position;
		characterLength += this.countWhitespace(input.query,pos);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "Number", position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.NumberTokenizer.prototype.__class__ = xpath.tokenizer.token.NumberTokenizer;
neash.media.Sound = function(stream,context) { if( stream === $_ ) return; {
	$s.push("neash.media.Sound::new");
	var $spos = $s.length;
	throw "Not implemented";
	neash.events.EventDispatcher.apply(this,[this]);
	$s.pop();
}}
neash.media.Sound.__name__ = ["neash","media","Sound"];
neash.media.Sound.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) neash.media.Sound.prototype[k] = neash.events.EventDispatcher.prototype[k];
neash.media.Sound.prototype.bytesLoaded = null;
neash.media.Sound.prototype.bytesTotal = null;
neash.media.Sound.prototype.close = function() {
	$s.push("neash.media.Sound::close");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.media.Sound.prototype.id3 = null;
neash.media.Sound.prototype.isBuffering = null;
neash.media.Sound.prototype.length = null;
neash.media.Sound.prototype.load = function(stream,context) {
	$s.push("neash.media.Sound::load");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.media.Sound.prototype.play = function(startTime,loops,sndTransform) {
	$s.push("neash.media.Sound::play");
	var $spos = $s.length;
	{
		var $tmp = new neash.media.SoundChannel();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.media.Sound.prototype.url = null;
neash.media.Sound.prototype.__class__ = neash.media.Sound;
sandy.materials.MovieMaterial = function(p_oMovie,p_nUpdateMS,p_oAttr,p_bRemoveTransparentBorder,p_nHeight,p_nWidth) { if( p_oMovie === $_ ) return; {
	$s.push("sandy.materials.MovieMaterial::new");
	var $spos = $s.length;
	if(p_nWidth == null) p_nWidth = 0.0;
	if(p_nHeight == null) p_nHeight = 0.0;
	if(p_bRemoveTransparentBorder == null) p_bRemoveTransparentBorder = false;
	if(p_nUpdateMS == null) p_nUpdateMS = 40;
	var w;
	var h;
	this.m_oAlpha = new neash.geom.ColorTransform();
	var tmpBmp = null;
	var rect;
	if(p_bRemoveTransparentBorder) {
		tmpBmp = new canvas.display.BitmapData(Std["int"](p_oMovie.GetWidth()),Std["int"](p_oMovie.GetHeight()),true,0);
		tmpBmp.draw(p_oMovie);
		rect = tmpBmp.getColorBoundsRect(-16777216,0,false);
		w = rect.width;
		h = rect.height;
	}
	else {
		w = (p_nWidth != 0?p_nWidth:p_oMovie.GetWidth());
		h = (p_nHeight != 0?p_nHeight:p_oMovie.GetHeight());
	}
	sandy.materials.BitmapMaterial.apply(this,[new canvas.display.BitmapData(Std["int"](w),Std["int"](h),true,0),p_oAttr]);
	this.m_oMovie = p_oMovie;
	this.m_oType = sandy.materials.MaterialType.MOVIE;
	this.m_bUpdate = true;
	this.m_oTimer = new haxe.Timer(p_nUpdateMS);
	this.m_oTimer.run();
	if(tmpBmp != null) {
		tmpBmp.dispose();
		tmpBmp = null;
	}
	rect = null;
	$s.pop();
}}
sandy.materials.MovieMaterial.__name__ = ["sandy","materials","MovieMaterial"];
sandy.materials.MovieMaterial.__super__ = sandy.materials.BitmapMaterial;
for(var k in sandy.materials.BitmapMaterial.prototype ) sandy.materials.MovieMaterial.prototype[k] = sandy.materials.BitmapMaterial.prototype[k];
sandy.materials.MovieMaterial.prototype.__getMovie = function() {
	$s.push("sandy.materials.MovieMaterial::__getMovie");
	var $spos = $s.length;
	{
		var $tmp = this.m_oMovie;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.MovieMaterial.prototype._update = function(p_eEvent) {
	$s.push("sandy.materials.MovieMaterial::_update");
	var $spos = $s.length;
	if(this.m_bUpdate || this.forceUpdate) {
		this.m_oTexture.fillRect(this.m_oTexture.rect,sandy.math.ColorMath.applyAlpha(0,this.m_oAlpha.alphaMultiplier));
		this.m_oTexture.draw(this.m_oMovie,null,this.m_oAlpha,null,null,this.smooth);
	}
	this.m_bUpdate = false;
	$s.pop();
}
sandy.materials.MovieMaterial.prototype.m_bUpdate = null;
sandy.materials.MovieMaterial.prototype.m_oAlpha = null;
sandy.materials.MovieMaterial.prototype.m_oMovie = null;
sandy.materials.MovieMaterial.prototype.m_oTimer = null;
sandy.materials.MovieMaterial.prototype.movie = null;
sandy.materials.MovieMaterial.prototype.renderPolygon = function(p_oScene,p_oPolygon,p_mcContainer) {
	$s.push("sandy.materials.MovieMaterial::renderPolygon");
	var $spos = $s.length;
	this.m_bUpdate = true;
	sandy.materials.BitmapMaterial.prototype.renderPolygon.apply(this,[p_oScene,p_oPolygon,p_mcContainer]);
	$s.pop();
}
sandy.materials.MovieMaterial.prototype.setTransparency = function(p_nValue) {
	$s.push("sandy.materials.MovieMaterial::setTransparency");
	var $spos = $s.length;
	this.m_oAlpha.alphaMultiplier = sandy.util.NumberUtil.constrain(p_nValue,0,1);
	$s.pop();
}
sandy.materials.MovieMaterial.prototype.start = function() {
	$s.push("sandy.materials.MovieMaterial::start");
	var $spos = $s.length;
	this.m_oTimer.run();
	$s.pop();
}
sandy.materials.MovieMaterial.prototype.stop = function() {
	$s.push("sandy.materials.MovieMaterial::stop");
	var $spos = $s.length;
	this.m_oTimer.stop();
	$s.pop();
}
sandy.materials.MovieMaterial.prototype.__class__ = sandy.materials.MovieMaterial;
neash.utils.Uncompress = function() { }
neash.utils.Uncompress.__name__ = ["neash","utils","Uncompress"];
neash.utils.Uncompress.ConvertStream = function(inStream,inSize) {
	$s.push("neash.utils.Uncompress::ConvertStream");
	var $spos = $s.length;
	throw "Not implemented";
	var bytes = (inSize == null?inStream.readAll():inStream.readBytes(inSize));
	{
		var $tmp = new neash.utils.IDataInput(new haxe.io.BytesInput(bytes));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.utils.Uncompress.Run = function(inBytes) {
	$s.push("neash.utils.Uncompress::Run");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
neash.utils.Uncompress.prototype.__class__ = neash.utils.Uncompress;
xpath.tokenizer.container.NodeTestTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.NodeTestTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.NodeTestTokenizer.__name__ = ["xpath","tokenizer","container","NodeTestTokenizer"];
xpath.tokenizer.container.NodeTestTokenizer.instance = null;
xpath.tokenizer.container.NodeTestTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.NodeTestTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.NodeTestTokenizer.instance == null) {
		xpath.tokenizer.container.NodeTestTokenizer.instance = new xpath.tokenizer.container.NodeTestTokenizer();
		xpath.tokenizer.container.NodeTestTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.NodeTestTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.NodeTestTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.NodeTestTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.NameTestTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.token.TypeTestTokenizer.getInstance(),xpath.tokenizer.token.PINameTestTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.NodeTestTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.NodeTestTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.NodeTestTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.NodeTestTokenizer.prototype.__class__ = xpath.tokenizer.container.NodeTestTokenizer;
xpath.tokenizer.container.NodeTestTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
sandy.util.LoaderQueue = function(p) { if( p === $_ ) return; {
	$s.push("sandy.util.LoaderQueue::new");
	var $spos = $s.length;
	this.data = new Hash();
	neash.events.EventDispatcher.apply(this,[]);
	this.m_oLoaders = new Hash();
	this.m_oQueueEvent = new sandy.events.QueueEvent(sandy.events.QueueEvent.QUEUE_COMPLETE);
	$s.pop();
}}
sandy.util.LoaderQueue.__name__ = ["sandy","util","LoaderQueue"];
sandy.util.LoaderQueue.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) sandy.util.LoaderQueue.prototype[k] = neash.events.EventDispatcher.prototype[k];
sandy.util.LoaderQueue.prototype.add = function(p_sID,p_oURLRequest) {
	$s.push("sandy.util.LoaderQueue::add");
	var $spos = $s.length;
	this.m_oLoaders.set(p_sID,new sandy.util.QueueElement(p_sID,new neash.display.Loader(),p_oURLRequest));
	this.m_nLoaders++;
	$s.pop();
}
sandy.util.LoaderQueue.prototype.completeHandler = function(p_oEvent) {
	$s.push("sandy.util.LoaderQueue::completeHandler");
	var $spos = $s.length;
	var l_oLoaderInfos = p_oEvent.target;
	var l_oLoader = l_oLoaderInfos.loader;
	var l_sName = this.getIDFromLoader(l_oLoader);
	this.data.set(l_sName,l_oLoaderInfos.content);
	this.m_nLoaders--;
	if(this.m_nLoaders == 0) {
		this.m_oQueueEvent.__setLoaders(this.m_oLoaders);
		this.dispatchEvent(this.m_oQueueEvent);
	}
	$s.pop();
}
sandy.util.LoaderQueue.prototype.data = null;
sandy.util.LoaderQueue.prototype.getIDFromLoader = function(p_oLoader) {
	$s.push("sandy.util.LoaderQueue::getIDFromLoader");
	var $spos = $s.length;
	{ var $it66 = this.m_oLoaders.iterator();
	while( $it66.hasNext() ) { var l_oElement = $it66.next();
	{
		if(p_oLoader == l_oElement.loader) {
			var $tmp = l_oElement.name;
			$s.pop();
			return $tmp;
		}
	}
	}}
	{
		$s.pop();
		return null;
	}
	$s.pop();
}
sandy.util.LoaderQueue.prototype.ioErrorHandler = function(p_oEvent) {
	$s.push("sandy.util.LoaderQueue::ioErrorHandler");
	var $spos = $s.length;
	this.m_nLoaders--;
	if(this.m_nLoaders == 0) {
		this.m_oQueueEvent.__setLoaders(this.m_oLoaders);
		this.dispatchEvent(this.m_oQueueEvent);
	}
	$s.pop();
}
sandy.util.LoaderQueue.prototype.m_nLoaders = null;
sandy.util.LoaderQueue.prototype.m_oLoaders = null;
sandy.util.LoaderQueue.prototype.m_oQueueEvent = null;
sandy.util.LoaderQueue.prototype.start = function() {
	$s.push("sandy.util.LoaderQueue::start");
	var $spos = $s.length;
	{ var $it67 = this.m_oLoaders.iterator();
	while( $it67.hasNext() ) { var l_oLoader = $it67.next();
	{
		l_oLoader.loader.load(l_oLoader.urlRequest);
		l_oLoader.loader.contentLoaderInfo.addEventListener(neash.events.Event.COMPLETE,$closure(this,"completeHandler"));
		l_oLoader.loader.contentLoaderInfo.addEventListener(neash.events.IOErrorEvent.IO_ERROR,$closure(this,"ioErrorHandler"));
	}
	}}
	$s.pop();
}
sandy.util.LoaderQueue.prototype.__class__ = sandy.util.LoaderQueue;
sandy.util.QueueElement = function(p_sName,p_oLoader,p_oURLRequest) { if( p_sName === $_ ) return; {
	$s.push("sandy.util.QueueElement::new");
	var $spos = $s.length;
	this.name = p_sName;
	this.loader = p_oLoader;
	this.urlRequest = p_oURLRequest;
	$s.pop();
}}
sandy.util.QueueElement.__name__ = ["sandy","util","QueueElement"];
sandy.util.QueueElement.prototype.loader = null;
sandy.util.QueueElement.prototype.name = null;
sandy.util.QueueElement.prototype.urlRequest = null;
sandy.util.QueueElement.prototype.__class__ = sandy.util.QueueElement;
neash.geom = {}
neash.geom.Transform = function(inParent) { if( inParent === $_ ) return; {
	$s.push("neash.geom.Transform::new");
	var $spos = $s.length;
	this.mObj = inParent;
	$s.pop();
}}
neash.geom.Transform.__name__ = ["neash","geom","Transform"];
neash.geom.Transform.prototype.GetMatrix = function() {
	$s.push("neash.geom.Transform::GetMatrix");
	var $spos = $s.length;
	{
		var $tmp = this.mObj.GetMatrix();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.geom.Transform.prototype.SetMatrix = function(inMatrix) {
	$s.push("neash.geom.Transform::SetMatrix");
	var $spos = $s.length;
	{
		var $tmp = this.mObj.SetMatrix(inMatrix);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.geom.Transform.prototype.colorTransform = null;
neash.geom.Transform.prototype.mObj = null;
neash.geom.Transform.prototype.matrix = null;
neash.geom.Transform.prototype.__class__ = neash.geom.Transform;
xpath.tokenizer.token.NameTestTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.NameTestTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.NameTestTokenizer.__name__ = ["xpath","tokenizer","token","NameTestTokenizer"];
xpath.tokenizer.token.NameTestTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.NameTestTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.NameTestTokenizer.instance = null;
xpath.tokenizer.token.NameTestTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.NameTestTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.NameTestTokenizer.instance == null) xpath.tokenizer.token.NameTestTokenizer.instance = new xpath.tokenizer.token.NameTestTokenizer();
	{
		var $tmp = xpath.tokenizer.token.NameTestTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.NameTestTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.NameTestTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	if(input.query.charAt(pos) == "*") {
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.NameTestToken("*");
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		var characterLength = 1 + this.countWhitespace(input.query,pos + 1);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	var charCode = input.query.charCodeAt(pos);
	if(charCode == null || ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) && charCode < 128 && charCode != 95)) {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "NameTest", position : input.position}]);
	}
	do {
		charCode = input.query.charCodeAt(++pos);
	} while((charCode > 47 && charCode < 58) || (charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode > 127 || charCode == 46 || charCode == 45 || charCode == 95);
	if(charCode != 58) {
		var characterLength = pos - input.position;
		var name = input.query.substr(input.position,characterLength);
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.NameTestToken(name);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		characterLength += this.countWhitespace(input.query,pos);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	if(input.query.charAt(++pos) == "*") {
		var characterLength = pos - input.position;
		var name = input.query.substr(input.position,characterLength) + "*";
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.NameTestToken(name);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		characterLength += 1 + this.countWhitespace(input.query,pos + 1);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	charCode = input.query.charCodeAt(pos);
	if(charCode == null || ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) && charCode < 128 && charCode != 95)) {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "NameTest", position : input.position}]);
	}
	do {
		charCode = input.query.charCodeAt(++pos);
	} while((charCode > 47 && charCode < 58) || (charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode > 127 || charCode == 46 || charCode == 45 || charCode == 95);
	var characterLength = pos - input.position;
	var name = input.query.substr(input.position,characterLength);
	var result = [function($this) {
		var $r;
		var tmp = new xpath.tokenizer.NameTestToken(name);
		$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this)];
	characterLength += this.countWhitespace(input.query,pos);
	{
		var $tmp = input.getOutput(result,characterLength);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.NameTestTokenizer.prototype.__class__ = xpath.tokenizer.token.NameTestTokenizer;
canvas.display.CapsStyle = { __ename__ : ["canvas","display","CapsStyle"], __constructs__ : ["NONE","ROUND","SQUARE"] }
canvas.display.CapsStyle.NONE = ["NONE",0];
canvas.display.CapsStyle.NONE.toString = $estr;
canvas.display.CapsStyle.NONE.__enum__ = canvas.display.CapsStyle;
canvas.display.CapsStyle.ROUND = ["ROUND",1];
canvas.display.CapsStyle.ROUND.toString = $estr;
canvas.display.CapsStyle.ROUND.__enum__ = canvas.display.CapsStyle;
canvas.display.CapsStyle.SQUARE = ["SQUARE",2];
canvas.display.CapsStyle.SQUARE.toString = $estr;
canvas.display.CapsStyle.SQUARE.__enum__ = canvas.display.CapsStyle;
xpath.parser.ExpressionParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.ExpressionParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.ExpressionParser.__name__ = ["xpath","parser","ExpressionParser"];
xpath.parser.ExpressionParser.instance = null;
xpath.parser.ExpressionParser.getInstance = function() {
	$s.push("xpath.parser.ExpressionParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.ExpressionParser.instance == null) xpath.parser.ExpressionParser.instance = new xpath.parser.ExpressionParser();
	{
		var $tmp = xpath.parser.ExpressionParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.ExpressionParser.prototype.parse = function(input) {
	$s.push("xpath.parser.ExpressionParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(!Std["is"](token,xpath.tokenizer.BeginExpressionToken)) {
		$s.pop();
		return null;
	}
	var results = new List();
	var operatorStack = new List();
	var precedenceStack = new List();
	var output = xpath.parser.OperandParser.getInstance().parse(input.descend());
	if(output == null) throw new xpath.parser.ParseError("Invalid token stream");
	results.push(output.result);
	input = output.getNextInput();
	var hasNext = input.hasNext();
	if(hasNext) token = input.next();
	while(hasNext && Std["is"](token,xpath.tokenizer.OperatorToken)) {
		var newOperatorToken = function($this) {
			var $r;
			var tmp = token;
			$r = (Std["is"](tmp,xpath.tokenizer.OperatorToken)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this);
		var newOperator = newOperatorToken.operator;
		var newPrecedence = newOperatorToken.getPrecedence();
		output = xpath.parser.OperandParser.getInstance().parse(input.descend());
		if(output == null) throw new xpath.parser.ParseError("Invalid token stream");
		input = output.getNextInput();
		var newOperand = output.result;
		while(!precedenceStack.isEmpty() && newPrecedence <= precedenceStack.first()) {
			precedenceStack.pop();
			var rightOperand = results.pop();
			var leftOperand = results.pop();
			var operator = operatorStack.pop();
			results.push(new xpath.expression.Operation(leftOperand,operator,rightOperand));
		}
		results.push(newOperand);
		operatorStack.push(newOperator);
		precedenceStack.push(newPrecedence);
		hasNext = input.hasNext();
		if(hasNext) token = input.next();
	}
	precedenceStack = null;
	if(!hasNext || !Std["is"](token,xpath.tokenizer.EndExpressionToken)) throw new xpath.parser.ParseError("Invalid token stream");
	while(!operatorStack.isEmpty()) {
		var rightOperand = results.pop();
		var leftOperand = results.pop();
		var operator = operatorStack.pop();
		results.push(new xpath.expression.Operation(leftOperand,operator,rightOperand));
	}
	operatorStack = null;
	output = input.getOutput(input.count,results.pop());
	if(!results.isEmpty()) throw new xpath.parser.ParseError("Invalid token stream");
	{
		$s.pop();
		return output;
	}
	$s.pop();
}
xpath.parser.ExpressionParser.prototype.__class__ = xpath.parser.ExpressionParser;
xpath.parser.ExpressionParser.__interfaces__ = [xpath.parser.Parser];
xpath.tokenizer.Token = function() { }
xpath.tokenizer.Token.__name__ = ["xpath","tokenizer","Token"];
xpath.tokenizer.Token.prototype.__class__ = xpath.tokenizer.Token;
xpath.tokenizer.ArgumentDelimiterToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.ArgumentDelimiterToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.ArgumentDelimiterToken.__name__ = ["xpath","tokenizer","ArgumentDelimiterToken"];
xpath.tokenizer.ArgumentDelimiterToken.prototype.__class__ = xpath.tokenizer.ArgumentDelimiterToken;
xpath.tokenizer.ArgumentDelimiterToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.AxisToken = function(axis) { if( axis === $_ ) return; {
	$s.push("xpath.tokenizer.AxisToken::new");
	var $spos = $s.length;
	this.axis = axis;
	$s.pop();
}}
xpath.tokenizer.AxisToken.__name__ = ["xpath","tokenizer","AxisToken"];
xpath.tokenizer.AxisToken.prototype.axis = null;
xpath.tokenizer.AxisToken.prototype.__class__ = xpath.tokenizer.AxisToken;
xpath.tokenizer.AxisToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.BeginExpressionToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.BeginExpressionToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.BeginExpressionToken.__name__ = ["xpath","tokenizer","BeginExpressionToken"];
xpath.tokenizer.BeginExpressionToken.prototype.__class__ = xpath.tokenizer.BeginExpressionToken;
xpath.tokenizer.BeginExpressionToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.BeginFunctionCallToken = function(name) { if( name === $_ ) return; {
	$s.push("xpath.tokenizer.BeginFunctionCallToken::new");
	var $spos = $s.length;
	this.name = name;
	$s.pop();
}}
xpath.tokenizer.BeginFunctionCallToken.__name__ = ["xpath","tokenizer","BeginFunctionCallToken"];
xpath.tokenizer.BeginFunctionCallToken.prototype.name = null;
xpath.tokenizer.BeginFunctionCallToken.prototype.__class__ = xpath.tokenizer.BeginFunctionCallToken;
xpath.tokenizer.BeginFunctionCallToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.BeginGroupToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.BeginGroupToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.BeginGroupToken.__name__ = ["xpath","tokenizer","BeginGroupToken"];
xpath.tokenizer.BeginGroupToken.prototype.__class__ = xpath.tokenizer.BeginGroupToken;
xpath.tokenizer.BeginGroupToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.BeginPathToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.BeginPathToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.BeginPathToken.__name__ = ["xpath","tokenizer","BeginPathToken"];
xpath.tokenizer.BeginPathToken.prototype.__class__ = xpath.tokenizer.BeginPathToken;
xpath.tokenizer.BeginPathToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.BeginPredicateToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.BeginPredicateToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.BeginPredicateToken.__name__ = ["xpath","tokenizer","BeginPredicateToken"];
xpath.tokenizer.BeginPredicateToken.prototype.__class__ = xpath.tokenizer.BeginPredicateToken;
xpath.tokenizer.BeginPredicateToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.BeginXPathToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.BeginXPathToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.BeginXPathToken.__name__ = ["xpath","tokenizer","BeginXPathToken"];
xpath.tokenizer.BeginXPathToken.prototype.__class__ = xpath.tokenizer.BeginXPathToken;
xpath.tokenizer.BeginXPathToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.EndExpressionToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.EndExpressionToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.EndExpressionToken.__name__ = ["xpath","tokenizer","EndExpressionToken"];
xpath.tokenizer.EndExpressionToken.prototype.__class__ = xpath.tokenizer.EndExpressionToken;
xpath.tokenizer.EndExpressionToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.EndFunctionCallToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.EndFunctionCallToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.EndFunctionCallToken.__name__ = ["xpath","tokenizer","EndFunctionCallToken"];
xpath.tokenizer.EndFunctionCallToken.prototype.__class__ = xpath.tokenizer.EndFunctionCallToken;
xpath.tokenizer.EndFunctionCallToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.EndGroupToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.EndGroupToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.EndGroupToken.__name__ = ["xpath","tokenizer","EndGroupToken"];
xpath.tokenizer.EndGroupToken.prototype.__class__ = xpath.tokenizer.EndGroupToken;
xpath.tokenizer.EndGroupToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.EndPathToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.EndPathToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.EndPathToken.__name__ = ["xpath","tokenizer","EndPathToken"];
xpath.tokenizer.EndPathToken.prototype.__class__ = xpath.tokenizer.EndPathToken;
xpath.tokenizer.EndPathToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.EndPredicateToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.EndPredicateToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.EndPredicateToken.__name__ = ["xpath","tokenizer","EndPredicateToken"];
xpath.tokenizer.EndPredicateToken.prototype.__class__ = xpath.tokenizer.EndPredicateToken;
xpath.tokenizer.EndPredicateToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.EndXPathToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.EndXPathToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.EndXPathToken.__name__ = ["xpath","tokenizer","EndXPathToken"];
xpath.tokenizer.EndXPathToken.prototype.__class__ = xpath.tokenizer.EndXPathToken;
xpath.tokenizer.EndXPathToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.LiteralToken = function(value) { if( value === $_ ) return; {
	$s.push("xpath.tokenizer.LiteralToken::new");
	var $spos = $s.length;
	this.value = value;
	$s.pop();
}}
xpath.tokenizer.LiteralToken.__name__ = ["xpath","tokenizer","LiteralToken"];
xpath.tokenizer.LiteralToken.prototype.value = null;
xpath.tokenizer.LiteralToken.prototype.__class__ = xpath.tokenizer.LiteralToken;
xpath.tokenizer.LiteralToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.NameTestToken = function(name) { if( name === $_ ) return; {
	$s.push("xpath.tokenizer.NameTestToken::new");
	var $spos = $s.length;
	this.name = name;
	$s.pop();
}}
xpath.tokenizer.NameTestToken.__name__ = ["xpath","tokenizer","NameTestToken"];
xpath.tokenizer.NameTestToken.prototype.name = null;
xpath.tokenizer.NameTestToken.prototype.__class__ = xpath.tokenizer.NameTestToken;
xpath.tokenizer.NameTestToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.NegationOperatorToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.NegationOperatorToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.NegationOperatorToken.__name__ = ["xpath","tokenizer","NegationOperatorToken"];
xpath.tokenizer.NegationOperatorToken.prototype.__class__ = xpath.tokenizer.NegationOperatorToken;
xpath.tokenizer.NegationOperatorToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.NumberToken = function(value) { if( value === $_ ) return; {
	$s.push("xpath.tokenizer.NumberToken::new");
	var $spos = $s.length;
	this.value = value;
	$s.pop();
}}
xpath.tokenizer.NumberToken.__name__ = ["xpath","tokenizer","NumberToken"];
xpath.tokenizer.NumberToken.prototype.value = null;
xpath.tokenizer.NumberToken.prototype.__class__ = xpath.tokenizer.NumberToken;
xpath.tokenizer.NumberToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.OperatorToken = function(operator) { if( operator === $_ ) return; {
	$s.push("xpath.tokenizer.OperatorToken::new");
	var $spos = $s.length;
	this.operator = operator;
	$s.pop();
}}
xpath.tokenizer.OperatorToken.__name__ = ["xpath","tokenizer","OperatorToken"];
xpath.tokenizer.OperatorToken.prototype.getPrecedence = function() {
	$s.push("xpath.tokenizer.OperatorToken::getPrecedence");
	var $spos = $s.length;
	{
		var $tmp = function($this) {
			var $r;
			var $e = ($this.operator);
			switch( $e[1] ) {
			case 1:
			{
				$r = 0;
			}break;
			case 0:
			{
				$r = 1;
			}break;
			case 7:
			{
				$r = 2;
			}break;
			case 8:
			{
				$r = 2;
			}break;
			case 10:
			{
				$r = 3;
			}break;
			case 9:
			{
				$r = 3;
			}break;
			case 12:
			{
				$r = 3;
			}break;
			case 11:
			{
				$r = 3;
			}break;
			case 5:
			{
				$r = 4;
			}break;
			case 6:
			{
				$r = 4;
			}break;
			case 13:
			{
				$r = 5;
			}break;
			case 3:
			{
				$r = 5;
			}break;
			case 2:
			{
				$r = 5;
			}break;
			case 4:
			{
				$r = 6;
			}break;
			default:{
				$r = null;
			}break;
			}
			return $r;
		}(this);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.OperatorToken.prototype.operator = null;
xpath.tokenizer.OperatorToken.prototype.__class__ = xpath.tokenizer.OperatorToken;
xpath.tokenizer.OperatorToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.PINameTestToken = function(name) { if( name === $_ ) return; {
	$s.push("xpath.tokenizer.PINameTestToken::new");
	var $spos = $s.length;
	this.name = name;
	$s.pop();
}}
xpath.tokenizer.PINameTestToken.__name__ = ["xpath","tokenizer","PINameTestToken"];
xpath.tokenizer.PINameTestToken.prototype.name = null;
xpath.tokenizer.PINameTestToken.prototype.__class__ = xpath.tokenizer.PINameTestToken;
xpath.tokenizer.PINameTestToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.StepDelimiterToken = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.StepDelimiterToken::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.StepDelimiterToken.__name__ = ["xpath","tokenizer","StepDelimiterToken"];
xpath.tokenizer.StepDelimiterToken.prototype.__class__ = xpath.tokenizer.StepDelimiterToken;
xpath.tokenizer.StepDelimiterToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.TypeTestToken = function(type) { if( type === $_ ) return; {
	$s.push("xpath.tokenizer.TypeTestToken::new");
	var $spos = $s.length;
	this.type = type;
	$s.pop();
}}
xpath.tokenizer.TypeTestToken.__name__ = ["xpath","tokenizer","TypeTestToken"];
xpath.tokenizer.TypeTestToken.prototype.type = null;
xpath.tokenizer.TypeTestToken.prototype.__class__ = xpath.tokenizer.TypeTestToken;
xpath.tokenizer.TypeTestToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.VariableReferenceToken = function(name) { if( name === $_ ) return; {
	$s.push("xpath.tokenizer.VariableReferenceToken::new");
	var $spos = $s.length;
	this.name = name;
	$s.pop();
}}
xpath.tokenizer.VariableReferenceToken.__name__ = ["xpath","tokenizer","VariableReferenceToken"];
xpath.tokenizer.VariableReferenceToken.prototype.name = null;
xpath.tokenizer.VariableReferenceToken.prototype.__class__ = xpath.tokenizer.VariableReferenceToken;
xpath.tokenizer.VariableReferenceToken.__interfaces__ = [xpath.tokenizer.Token];
xpath.tokenizer.util.Sequence = function(tokenizers) { if( tokenizers === $_ ) return; {
	$s.push("xpath.tokenizer.util.Sequence::new");
	var $spos = $s.length;
	this.tokenizers = tokenizers;
	$s.pop();
}}
xpath.tokenizer.util.Sequence.__name__ = ["xpath","tokenizer","util","Sequence"];
xpath.tokenizer.util.Sequence.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.util.Sequence::tokenize");
	var $spos = $s.length;
	var iterator = this.tokenizers.iterator();
	var output = iterator.next().tokenize(input);
	var result = output.result;
	var characterLength = output.characterLength;
	while(iterator.hasNext()) {
		output = iterator.next().tokenize(output.getNextInput());
		result = result.concat(output.result);
		characterLength += output.characterLength;
	}
	{
		var $tmp = input.getOutput(result,characterLength);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.util.Sequence.prototype.tokenizers = null;
xpath.tokenizer.util.Sequence.prototype.__class__ = xpath.tokenizer.util.Sequence;
xpath.tokenizer.util.Sequence.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.tokenizer.util.Repetition = function(tokenizers) { if( tokenizers === $_ ) return; {
	$s.push("xpath.tokenizer.util.Repetition::new");
	var $spos = $s.length;
	xpath.tokenizer.util.Sequence.apply(this,[tokenizers]);
	$s.pop();
}}
xpath.tokenizer.util.Repetition.__name__ = ["xpath","tokenizer","util","Repetition"];
xpath.tokenizer.util.Repetition.__super__ = xpath.tokenizer.util.Sequence;
for(var k in xpath.tokenizer.util.Sequence.prototype ) xpath.tokenizer.util.Repetition.prototype[k] = xpath.tokenizer.util.Sequence.prototype[k];
xpath.tokenizer.util.Repetition.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.util.Repetition::tokenize");
	var $spos = $s.length;
	var workingInput = input;
	var result = new Array();
	var characterLength = 0;
	var done = false;
	while(!done) {
		try {
			var output = xpath.tokenizer.util.Sequence.prototype.tokenize.apply(this,[workingInput]);
			result = result.concat(output.result);
			characterLength += output.characterLength;
			if(output.isComplete()) {
				characterLength = null;
				done = true;
			}
			else {
				workingInput = output.getNextInput();
			}
		}
		catch( $e68 ) {
			if( js.Boot.__instanceof($e68,xpath.tokenizer.TokenizerException) ) {
				var exception = $e68;
				{
					$e = [];
					while($s.length >= $spos) $e.unshift($s.pop());
					$s.push($e[0]);
					done = true;
				}
			} else throw($e68);
		}
	}
	{
		var $tmp = input.getOutput(result,characterLength);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.util.Repetition.prototype.__class__ = xpath.tokenizer.util.Repetition;
sandy.view.ViewPort = function(p_nW,p_nH) { if( p_nW === $_ ) return; {
	$s.push("sandy.view.ViewPort::new");
	var $spos = $s.length;
	this.hasChanged = false;
	this.m_nW = 0;
	this.m_nW2 = 0;
	this.m_nH = 0;
	this.m_nH2 = 0;
	this.m_nRatio = 0;
	this.offset = new canvas.geom.Point();
	this.__setWidth(p_nW);
	this.__setHeight(p_nH);
	$s.pop();
}}
sandy.view.ViewPort.__name__ = ["sandy","view","ViewPort"];
sandy.view.ViewPort.prototype.__getHeight = function() {
	$s.push("sandy.view.ViewPort::__getHeight");
	var $spos = $s.length;
	{
		var $tmp = this.m_nH;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.view.ViewPort.prototype.__getHeight2 = function() {
	$s.push("sandy.view.ViewPort::__getHeight2");
	var $spos = $s.length;
	{
		var $tmp = this.m_nH2;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.view.ViewPort.prototype.__getRatio = function() {
	$s.push("sandy.view.ViewPort::__getRatio");
	var $spos = $s.length;
	{
		var $tmp = this.m_nRatio;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.view.ViewPort.prototype.__getWidth = function() {
	$s.push("sandy.view.ViewPort::__getWidth");
	var $spos = $s.length;
	{
		var $tmp = this.m_nW;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.view.ViewPort.prototype.__getWidth2 = function() {
	$s.push("sandy.view.ViewPort::__getWidth2");
	var $spos = $s.length;
	{
		var $tmp = this.m_nW2;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.view.ViewPort.prototype.__setHeight = function(p_nValue) {
	$s.push("sandy.view.ViewPort::__setHeight");
	var $spos = $s.length;
	this.m_nH = p_nValue;
	this.update();
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.view.ViewPort.prototype.__setWidth = function(p_nValue) {
	$s.push("sandy.view.ViewPort::__setWidth");
	var $spos = $s.length;
	this.m_nW = p_nValue;
	this.update();
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.view.ViewPort.prototype.hasChanged = null;
sandy.view.ViewPort.prototype.height = null;
sandy.view.ViewPort.prototype.height2 = null;
sandy.view.ViewPort.prototype.m_nH = null;
sandy.view.ViewPort.prototype.m_nH2 = null;
sandy.view.ViewPort.prototype.m_nRatio = null;
sandy.view.ViewPort.prototype.m_nW = null;
sandy.view.ViewPort.prototype.m_nW2 = null;
sandy.view.ViewPort.prototype.offset = null;
sandy.view.ViewPort.prototype.ratio = null;
sandy.view.ViewPort.prototype.update = function() {
	$s.push("sandy.view.ViewPort::update");
	var $spos = $s.length;
	this.m_nW2 = this.m_nW >> 1;
	this.m_nH2 = this.m_nH >> 1;
	this.m_nRatio = ((this.m_nH != 0)?this.m_nW / this.m_nH:0);
	this.hasChanged = true;
	$s.pop();
}
sandy.view.ViewPort.prototype.width = null;
sandy.view.ViewPort.prototype.width2 = null;
sandy.view.ViewPort.prototype.__class__ = sandy.view.ViewPort;
sandy.parser.Parser = function() { }
sandy.parser.Parser.__name__ = ["sandy","parser","Parser"];
sandy.parser.Parser.create = function(p_sFile,p_sParserType,p_nScale) {
	$s.push("sandy.parser.Parser::create");
	var $spos = $s.length;
	if(p_nScale == null) p_nScale = 1;
	var l_sExt, l_iParser = null;
	if(Std["is"](p_sFile,String) && p_sParserType == null) {
		l_sExt = (p_sFile.split(".")).reverse()[0];
	}
	else {
		l_sExt = p_sParserType;
	}
	switch(l_sExt.toUpperCase()) {
	case "ASE":{
		l_iParser = new sandy.parser.ASEParser(p_sFile,p_nScale);
	}break;
	case "OBJ":{
		null;
	}break;
	case "DAE":{
		l_iParser = new sandy.parser.ColladaParser(p_sFile,p_nScale);
	}break;
	case "3DS":{
		l_iParser = new sandy.parser.Parser3DS(p_sFile,p_nScale);
	}break;
	default:{
		null;
	}break;
	}
	{
		$s.pop();
		return l_iParser;
	}
	$s.pop();
}
sandy.parser.Parser.prototype.__class__ = sandy.parser.Parser;
neash.geom.ColorTransform = function(inRedMultiplier,inGreenMultiplier,inBlueMultiplier,inAlphaMultiplier,inRedOffset,inGreenOffset,inBlueOffset,inAlphaOffset) { if( inRedMultiplier === $_ ) return; {
	$s.push("neash.geom.ColorTransform::new");
	var $spos = $s.length;
	this.redMultiplier = (inRedMultiplier == null?1.0:inRedMultiplier);
	this.greenMultiplier = (inGreenMultiplier == null?1.0:inGreenMultiplier);
	this.blueMultiplier = (inBlueMultiplier == null?1.0:inBlueMultiplier);
	this.alphaMultiplier = (inAlphaMultiplier == null?1.0:inAlphaMultiplier);
	this.redOffset = (inRedOffset == null?0.0:inRedOffset);
	this.greenOffset = (inGreenOffset == null?0.0:inGreenOffset);
	this.blueOffset = (inBlueOffset == null?0.0:inBlueOffset);
	this.alphaOffset = (inAlphaOffset == null?0.0:inAlphaOffset);
	this.color = 0;
	$s.pop();
}}
neash.geom.ColorTransform.__name__ = ["neash","geom","ColorTransform"];
neash.geom.ColorTransform.prototype.alphaMultiplier = null;
neash.geom.ColorTransform.prototype.alphaOffset = null;
neash.geom.ColorTransform.prototype.blueMultiplier = null;
neash.geom.ColorTransform.prototype.blueOffset = null;
neash.geom.ColorTransform.prototype.color = null;
neash.geom.ColorTransform.prototype.concat = function(second) {
	$s.push("neash.geom.ColorTransform::concat");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
neash.geom.ColorTransform.prototype.greenMultiplier = null;
neash.geom.ColorTransform.prototype.greenOffset = null;
neash.geom.ColorTransform.prototype.redMultiplier = null;
neash.geom.ColorTransform.prototype.redOffset = null;
neash.geom.ColorTransform.prototype.__class__ = neash.geom.ColorTransform;
xpath.EvaluationException = function(message) { if( message === $_ ) return; {
	$s.push("xpath.EvaluationException::new");
	var $spos = $s.length;
	xpath.XPathException.apply(this,[message]);
	$s.pop();
}}
xpath.EvaluationException.__name__ = ["xpath","EvaluationException"];
xpath.EvaluationException.__super__ = xpath.XPathException;
for(var k in xpath.XPathException.prototype ) xpath.EvaluationException.prototype[k] = xpath.XPathException.prototype[k];
xpath.EvaluationException.prototype.toString = function() {
	$s.push("xpath.EvaluationException::toString");
	var $spos = $s.length;
	{
		var $tmp = (this.message == null?"EvaluationException":"EvaluationException: " + this.message);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.EvaluationException.prototype.__class__ = xpath.EvaluationException;
neash.display.StageScaleMode = { __ename__ : ["neash","display","StageScaleMode"], __constructs__ : ["SHOW_ALL","NO_SCALE","NO_BORDER","EXACT_FIT"] }
neash.display.StageScaleMode.EXACT_FIT = ["EXACT_FIT",3];
neash.display.StageScaleMode.EXACT_FIT.toString = $estr;
neash.display.StageScaleMode.EXACT_FIT.__enum__ = neash.display.StageScaleMode;
neash.display.StageScaleMode.NO_BORDER = ["NO_BORDER",2];
neash.display.StageScaleMode.NO_BORDER.toString = $estr;
neash.display.StageScaleMode.NO_BORDER.__enum__ = neash.display.StageScaleMode;
neash.display.StageScaleMode.NO_SCALE = ["NO_SCALE",1];
neash.display.StageScaleMode.NO_SCALE.toString = $estr;
neash.display.StageScaleMode.NO_SCALE.__enum__ = neash.display.StageScaleMode;
neash.display.StageScaleMode.SHOW_ALL = ["SHOW_ALL",0];
neash.display.StageScaleMode.SHOW_ALL.toString = $estr;
neash.display.StageScaleMode.SHOW_ALL.__enum__ = neash.display.StageScaleMode;
xpath.Operator = { __ename__ : ["xpath","Operator"], __constructs__ : ["And","Or","Modulo","Divide","Union","Plus","Minus","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","Multiply"] }
xpath.Operator.And = ["And",0];
xpath.Operator.And.toString = $estr;
xpath.Operator.And.__enum__ = xpath.Operator;
xpath.Operator.Divide = ["Divide",3];
xpath.Operator.Divide.toString = $estr;
xpath.Operator.Divide.__enum__ = xpath.Operator;
xpath.Operator.Equal = ["Equal",7];
xpath.Operator.Equal.toString = $estr;
xpath.Operator.Equal.__enum__ = xpath.Operator;
xpath.Operator.GreaterThan = ["GreaterThan",11];
xpath.Operator.GreaterThan.toString = $estr;
xpath.Operator.GreaterThan.__enum__ = xpath.Operator;
xpath.Operator.GreaterThanOrEqual = ["GreaterThanOrEqual",12];
xpath.Operator.GreaterThanOrEqual.toString = $estr;
xpath.Operator.GreaterThanOrEqual.__enum__ = xpath.Operator;
xpath.Operator.LessThan = ["LessThan",9];
xpath.Operator.LessThan.toString = $estr;
xpath.Operator.LessThan.__enum__ = xpath.Operator;
xpath.Operator.LessThanOrEqual = ["LessThanOrEqual",10];
xpath.Operator.LessThanOrEqual.toString = $estr;
xpath.Operator.LessThanOrEqual.__enum__ = xpath.Operator;
xpath.Operator.Minus = ["Minus",6];
xpath.Operator.Minus.toString = $estr;
xpath.Operator.Minus.__enum__ = xpath.Operator;
xpath.Operator.Modulo = ["Modulo",2];
xpath.Operator.Modulo.toString = $estr;
xpath.Operator.Modulo.__enum__ = xpath.Operator;
xpath.Operator.Multiply = ["Multiply",13];
xpath.Operator.Multiply.toString = $estr;
xpath.Operator.Multiply.__enum__ = xpath.Operator;
xpath.Operator.NotEqual = ["NotEqual",8];
xpath.Operator.NotEqual.toString = $estr;
xpath.Operator.NotEqual.__enum__ = xpath.Operator;
xpath.Operator.Or = ["Or",1];
xpath.Operator.Or.toString = $estr;
xpath.Operator.Or.__enum__ = xpath.Operator;
xpath.Operator.Plus = ["Plus",5];
xpath.Operator.Plus.toString = $estr;
xpath.Operator.Plus.__enum__ = xpath.Operator;
xpath.Operator.Union = ["Union",4];
xpath.Operator.Union.toString = $estr;
xpath.Operator.Union.__enum__ = xpath.Operator;
xpath.expression.FunctionCall = function(name,parameters) { if( name === $_ ) return; {
	$s.push("xpath.expression.FunctionCall::new");
	var $spos = $s.length;
	this.name = name;
	this.parameters = parameters;
	$s.pop();
}}
xpath.expression.FunctionCall.__name__ = ["xpath","expression","FunctionCall"];
xpath.expression.FunctionCall.prototype.evaluate = function(context) {
	$s.push("xpath.expression.FunctionCall::evaluate");
	var $spos = $s.length;
	var parameterValues = new Array();
	{ var $it69 = this.parameters.iterator();
	while( $it69.hasNext() ) { var parameter = $it69.next();
	{
		parameterValues.push(parameter.evaluate(context));
	}
	}}
	{
		var $tmp = context.callFunction(this.name,parameterValues);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.FunctionCall.prototype.name = null;
xpath.expression.FunctionCall.prototype.parameters = null;
xpath.expression.FunctionCall.prototype.__class__ = xpath.expression.FunctionCall;
xpath.expression.FunctionCall.__interfaces__ = [xpath.expression.Expression];
xpath.expression.FilterStep = function(expression,nextStep) { if( expression === $_ ) return; {
	$s.push("xpath.expression.FilterStep::new");
	var $spos = $s.length;
	xpath.expression.PathStep.apply(this,[$closure(this,"filterStep"),nextStep]);
	this.expression = expression;
	$s.pop();
}}
xpath.expression.FilterStep.__name__ = ["xpath","expression","FilterStep"];
xpath.expression.FilterStep.__super__ = xpath.expression.PathStep;
for(var k in xpath.expression.PathStep.prototype ) xpath.expression.FilterStep.prototype[k] = xpath.expression.PathStep.prototype[k];
xpath.expression.FilterStep.prototype.expression = null;
xpath.expression.FilterStep.prototype.filterStep = function(context) {
	$s.push("xpath.expression.FilterStep::filterStep");
	var $spos = $s.length;
	var result = this.expression.evaluate(context);
	if(Std["is"](result,xpath.value.XPathNodeSet)) {
		{
			var $tmp = (function($this) {
				var $r;
				var tmp = result;
				$r = (Std["is"](tmp,xpath.value.XPathNodeSet)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this).getNodes());
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.EvaluationException("Filter expression evaluated to a " + result.typeName + ", but a node set was expected");
	}
	$s.pop();
}
xpath.expression.FilterStep.prototype.__class__ = xpath.expression.FilterStep;
xpath.parser.NextStepParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.NextStepParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.NextStepParser.__name__ = ["xpath","parser","NextStepParser"];
xpath.parser.NextStepParser.instance = null;
xpath.parser.NextStepParser.getInstance = function() {
	$s.push("xpath.parser.NextStepParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.NextStepParser.instance == null) xpath.parser.NextStepParser.instance = new xpath.parser.NextStepParser();
	{
		var $tmp = xpath.parser.NextStepParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.NextStepParser.prototype.parse = function(input) {
	$s.push("xpath.parser.NextStepParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(Std["is"](token,xpath.tokenizer.StepDelimiterToken)) {
		var output = xpath.parser.StepParser.getInstance().parse(input.descend());
		if(output == null) {
			var $tmp = input.getOutput(input.count,null);
			$s.pop();
			return $tmp;
		}
		else {
			$s.pop();
			return output;
		}
	}
	else if(Std["is"](token,xpath.tokenizer.BeginPredicateToken)) {
		var output = xpath.parser.ExpressionParser.getInstance().parse(input.descend());
		if(output == null) throw new xpath.parser.ParseError("Invalid token stream");
		var predicateExpression = output.result;
		input = output.getNextInput();
		if(!input.hasNext()) throw new xpath.parser.ParseError("Invalid token stream");
		token = input.next();
		if(!Std["is"](token,xpath.tokenizer.EndPredicateToken)) throw new xpath.parser.ParseError("Invalid token stream");
		var nextStep;
		output = this.parse(input.descend());
		if(output == null) nextStep = null;
		else {
			nextStep = function($this) {
				var $r;
				var tmp = output.result;
				$r = (Std["is"](tmp,xpath.expression.PathStep)?tmp:function($this) {
					var $r;
					throw "Class cast error";
					return $r;
				}($this));
				return $r;
			}(this);
			input = output.getNextInput();
		}
		var result = new xpath.expression.PredicateStep(predicateExpression,nextStep);
		{
			var $tmp = input.getOutput(input.count,result);
			$s.pop();
			return $tmp;
		}
	}
	else {
		$s.pop();
		return null;
	}
	$s.pop();
}
xpath.parser.NextStepParser.prototype.__class__ = xpath.parser.NextStepParser;
xpath.parser.NextStepParser.__interfaces__ = [xpath.parser.Parser];
xpath.tokenizer.container.OperandTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.OperandTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.OperandTokenizer.__name__ = ["xpath","tokenizer","container","OperandTokenizer"];
xpath.tokenizer.container.OperandTokenizer.instance = null;
xpath.tokenizer.container.OperandTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.OperandTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.OperandTokenizer.instance == null) {
		xpath.tokenizer.container.OperandTokenizer.instance = new xpath.tokenizer.container.OperandTokenizer();
		xpath.tokenizer.container.OperandTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.OperandTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.OperandTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.OperandTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Disjunction([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.GroupTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.token.LiteralTokenizer.getInstance(),xpath.tokenizer.token.NumberTokenizer.getInstance(),xpath.tokenizer.container.FunctionCallTokenizer.getInstance(),xpath.tokenizer.token.VariableReferenceTokenizer.getInstance(),xpath.tokenizer.container.UnaryOperandTokenizer.getInstance(),xpath.tokenizer.container.PathTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.OperandTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.OperandTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.OperandTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.OperandTokenizer.prototype.__class__ = xpath.tokenizer.container.OperandTokenizer;
xpath.tokenizer.container.OperandTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
js.Lib = function() { }
js.Lib.__name__ = ["js","Lib"];
js.Lib.isIE = null;
js.Lib.isOpera = null;
js.Lib.alert = function(v) {
	$s.push("js.Lib::alert");
	var $spos = $s.length;
	alert(js.Boot.__string_rec(v,""));
	$s.pop();
}
js.Lib.eval = function(code) {
	$s.push("js.Lib::eval");
	var $spos = $s.length;
	{
		var $tmp = eval(code);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
js.Lib.setErrorHandler = function(f) {
	$s.push("js.Lib::setErrorHandler");
	var $spos = $s.length;
	js.Lib.onerror = f;
	$s.pop();
}
js.Lib.prototype.__class__ = js.Lib;
neash.events.FocusEvent = function(type,bubbles,cancelable,inObject,inShiftKey,inKeyCode) { if( type === $_ ) return; {
	$s.push("neash.events.FocusEvent::new");
	var $spos = $s.length;
	neash.events.Event.apply(this,[type,bubbles,cancelable]);
	this.keyCode = inKeyCode;
	this.shiftKey = (inShiftKey == null?false:inShiftKey);
	this.target = inObject;
	$s.pop();
}}
neash.events.FocusEvent.__name__ = ["neash","events","FocusEvent"];
neash.events.FocusEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) neash.events.FocusEvent.prototype[k] = neash.events.Event.prototype[k];
neash.events.FocusEvent.prototype.keyCode = null;
neash.events.FocusEvent.prototype.relatedObject = null;
neash.events.FocusEvent.prototype.shiftKey = null;
neash.events.FocusEvent.prototype.__class__ = neash.events.FocusEvent;
xpath.context.BaseEnvironment = function(p) { if( p === $_ ) return; {
	$s.push("xpath.context.BaseEnvironment::new");
	var $spos = $s.length;
	this.functions = new Hash();
	this.variables = new Hash();
	$s.pop();
}}
xpath.context.BaseEnvironment.__name__ = ["xpath","context","BaseEnvironment"];
xpath.context.BaseEnvironment.prototype.callFunction = function(context,name,parameters) {
	$s.push("xpath.context.BaseEnvironment::callFunction");
	var $spos = $s.length;
	{
		var $tmp = (this.getFunction(name))(context,parameters);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.BaseEnvironment.prototype.existsFunction = function(name) {
	$s.push("xpath.context.BaseEnvironment::existsFunction");
	var $spos = $s.length;
	{
		var $tmp = this.functions.get(name) != null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.BaseEnvironment.prototype.existsVariable = function(name) {
	$s.push("xpath.context.BaseEnvironment::existsVariable");
	var $spos = $s.length;
	{
		var $tmp = this.variables.get(name) != null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.BaseEnvironment.prototype.functions = null;
xpath.context.BaseEnvironment.prototype.getFunction = function(name) {
	$s.push("xpath.context.BaseEnvironment::getFunction");
	var $spos = $s.length;
	var f = this.functions.get(name);
	if(f == null) throw new xpath.EvaluationException("evaluated a function which is not defined");
	else {
		$s.pop();
		return f;
	}
	$s.pop();
}
xpath.context.BaseEnvironment.prototype.getVariable = function(name) {
	$s.push("xpath.context.BaseEnvironment::getVariable");
	var $spos = $s.length;
	var value = this.variables.get(name);
	if(value == null) throw new xpath.EvaluationException("evaluated a variable which is not defined");
	else {
		$s.pop();
		return value;
	}
	$s.pop();
}
xpath.context.BaseEnvironment.prototype.variables = null;
xpath.context.BaseEnvironment.prototype.__class__ = xpath.context.BaseEnvironment;
xpath.context.BaseEnvironment.__interfaces__ = [xpath.context.Environment];
sandy.materials.attributes.VertexNormalAttributes = function(p_nLength,p_nThickness,p_nColor,p_nAlpha) { if( p_nLength === $_ ) return; {
	$s.push("sandy.materials.attributes.VertexNormalAttributes::new");
	var $spos = $s.length;
	if(p_nAlpha == null) p_nAlpha = 1.0;
	if(p_nColor == null) p_nColor = 0;
	if(p_nThickness == null) p_nThickness = 1;
	if(p_nLength == null) p_nLength = 10.0;
	this.m_nLength = p_nLength;
	this.__setThickness(p_nThickness);
	this.__setAlpha(p_nAlpha);
	this.__setColor(p_nColor);
	this.modified = true;
	sandy.materials.attributes.LineAttributes.apply(this,[]);
	$s.pop();
}}
sandy.materials.attributes.VertexNormalAttributes.__name__ = ["sandy","materials","attributes","VertexNormalAttributes"];
sandy.materials.attributes.VertexNormalAttributes.__super__ = sandy.materials.attributes.LineAttributes;
for(var k in sandy.materials.attributes.LineAttributes.prototype ) sandy.materials.attributes.VertexNormalAttributes.prototype[k] = sandy.materials.attributes.LineAttributes.prototype[k];
sandy.materials.attributes.VertexNormalAttributes.prototype.__getLength = function() {
	$s.push("sandy.materials.attributes.VertexNormalAttributes::__getLength");
	var $spos = $s.length;
	{
		var $tmp = this.m_nLength;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.VertexNormalAttributes.prototype.__setLength = function(p_nValue) {
	$s.push("sandy.materials.attributes.VertexNormalAttributes::__setLength");
	var $spos = $s.length;
	this.m_nLength = p_nValue;
	this.modified = true;
	{
		$s.pop();
		return p_nValue;
	}
	$s.pop();
}
sandy.materials.attributes.VertexNormalAttributes.prototype.begin = function(p_oScene) {
	$s.push("sandy.materials.attributes.VertexNormalAttributes::begin");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.materials.attributes.VertexNormalAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.VertexNormalAttributes::draw");
	var $spos = $s.length;
	var l_aPoints = p_oPolygon.vertices;
	var l_oVertex;
	p_oGraphics.lineStyle(this.__getThickness(),this.__getColor(),this.__getAlpha());
	p_oGraphics.beginFill(0);
	var lId = l_aPoints.length;
	while((l_oVertex = l_aPoints[--lId]) != null) {
		var l_oDiff = p_oPolygon.vertexNormals[lId].getVector().clone();
		p_oPolygon.shape.viewMatrix.vectorMult3x3(l_oDiff);
		l_oDiff.scale(this.m_nLength);
		var l_oNormal = sandy.core.data.Vertex.createFromVector(l_oDiff);
		l_oNormal.add(l_oVertex);
		p_oScene.camera.projectVertex(l_oNormal);
		p_oGraphics.moveTo(l_oVertex.sx,l_oVertex.sy);
		p_oGraphics.lineTo(l_oNormal.sx,l_oNormal.sy);
		l_oNormal = null;
		l_oDiff = null;
	}
	p_oGraphics.endFill();
	$s.pop();
}
sandy.materials.attributes.VertexNormalAttributes.prototype.length = null;
sandy.materials.attributes.VertexNormalAttributes.prototype.m_nLength = null;
sandy.materials.attributes.VertexNormalAttributes.prototype.__class__ = sandy.materials.attributes.VertexNormalAttributes;
neash.net.URLLoader = function(request) { if( request === $_ ) return; {
	$s.push("neash.net.URLLoader::new");
	var $spos = $s.length;
	neash.events.EventDispatcher.apply(this,[]);
	this.bytesLoaded = 0;
	this.bytesTotal = 0;
	this.dataFormat = neash.net.URLLoaderDataFormat.TEXT;
	$s.pop();
}}
neash.net.URLLoader.__name__ = ["neash","net","URLLoader"];
neash.net.URLLoader.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) neash.net.URLLoader.prototype[k] = neash.events.EventDispatcher.prototype[k];
neash.net.URLLoader.prototype.bytesLoaded = null;
neash.net.URLLoader.prototype.bytesTotal = null;
neash.net.URLLoader.prototype.close = function() {
	$s.push("neash.net.URLLoader::close");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.net.URLLoader.prototype.data = null;
neash.net.URLLoader.prototype.dataFormat = null;
neash.net.URLLoader.prototype.load = function(request) {
	$s.push("neash.net.URLLoader::load");
	var $spos = $s.length;
	var h = new haxe.Http(request.url);
	h.onData = $closure(this,"onData");
	h.onError = $closure(this,"onError");
	h.request(false);
	$s.pop();
}
neash.net.URLLoader.prototype.onData = function(data) {
	$s.push("neash.net.URLLoader::onData");
	var $spos = $s.length;
	this.data = data;
	var e = new neash.events.Event(neash.events.Event.COMPLETE);
	e.target = this;
	this.dispatchEvent(e);
	$s.pop();
}
neash.net.URLLoader.prototype.onError = function(msg) {
	$s.push("neash.net.URLLoader::onError");
	var $spos = $s.length;
	haxe.Log.trace(msg,{ fileName : "URLLoader.hx", lineNumber : 45, className : "neash.net.URLLoader", methodName : "onError"});
	this.dispatchEvent(new neash.events.Event(neash.events.IOErrorEvent.IO_ERROR));
	$s.pop();
}
neash.net.URLLoader.prototype.__class__ = neash.net.URLLoader;
haxe.Log = function() { }
haxe.Log.__name__ = ["haxe","Log"];
haxe.Log.trace = function(v,infos) {
	$s.push("haxe.Log::trace");
	var $spos = $s.length;
	js.Boot.__trace(v,infos);
	$s.pop();
}
haxe.Log.clear = function() {
	$s.push("haxe.Log::clear");
	var $spos = $s.length;
	js.Boot.__clear_trace();
	$s.pop();
}
haxe.Log.prototype.__class__ = haxe.Log;
neash.display.Bitmap = function(inBitmapData,inPixelSnapping,inSmoothing) { if( inBitmapData === $_ ) return; {
	$s.push("neash.display.Bitmap::new");
	var $spos = $s.length;
	neash.display.DisplayObject.apply(this,[]);
	this.bitmapData = inBitmapData;
	this.pixelSnapping = inPixelSnapping;
	this.smoothing = inSmoothing;
	$s.pop();
}}
neash.display.Bitmap.__name__ = ["neash","display","Bitmap"];
neash.display.Bitmap.__super__ = neash.display.DisplayObject;
for(var k in neash.display.DisplayObject.prototype ) neash.display.Bitmap.prototype[k] = neash.display.DisplayObject.prototype[k];
neash.display.Bitmap.prototype.bitmapData = null;
neash.display.Bitmap.prototype.pixelSnapping = null;
neash.display.Bitmap.prototype.smoothing = null;
neash.display.Bitmap.prototype.__class__ = neash.display.Bitmap;
sandy.materials.Appearance = function(p_oFront,p_oBack) { if( p_oFront === $_ ) return; {
	$s.push("sandy.materials.Appearance::new");
	var $spos = $s.length;
	this.m_oFrontMaterial = ((p_oFront != null)?p_oFront:new sandy.materials.ColorMaterial());
	this.m_oBackMaterial = ((p_oBack != null)?p_oBack:this.m_oFrontMaterial);
	$s.pop();
}}
sandy.materials.Appearance.__name__ = ["sandy","materials","Appearance"];
sandy.materials.Appearance.prototype.__getBackMaterial = function() {
	$s.push("sandy.materials.Appearance::__getBackMaterial");
	var $spos = $s.length;
	{
		var $tmp = this.m_oBackMaterial;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.Appearance.prototype.__getFlags = function() {
	$s.push("sandy.materials.Appearance::__getFlags");
	var $spos = $s.length;
	var l_nFlag = this.m_oFrontMaterial.__getFlags();
	if(this.m_oFrontMaterial != this.m_oBackMaterial) {
		l_nFlag |= this.m_oBackMaterial.__getFlags();
	}
	{
		$s.pop();
		return l_nFlag;
	}
	$s.pop();
}
sandy.materials.Appearance.prototype.__getFrontMaterial = function() {
	$s.push("sandy.materials.Appearance::__getFrontMaterial");
	var $spos = $s.length;
	{
		var $tmp = this.m_oFrontMaterial;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.Appearance.prototype.__getUseVertexNormal = function() {
	$s.push("sandy.materials.Appearance::__getUseVertexNormal");
	var $spos = $s.length;
	{
		var $tmp = (this.m_oBackMaterial.useVertexNormal && this.m_oFrontMaterial.useVertexNormal);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.Appearance.prototype.__setBackMaterial = function(p_oMat) {
	$s.push("sandy.materials.Appearance::__setBackMaterial");
	var $spos = $s.length;
	this.m_oBackMaterial = p_oMat;
	if(this.m_oFrontMaterial == null) {
		this.m_oFrontMaterial = p_oMat;
	}
	{
		$s.pop();
		return p_oMat;
	}
	$s.pop();
}
sandy.materials.Appearance.prototype.__setFrontMaterial = function(p_oMat) {
	$s.push("sandy.materials.Appearance::__setFrontMaterial");
	var $spos = $s.length;
	this.m_oFrontMaterial = p_oMat;
	if(this.m_oBackMaterial == null) {
		this.m_oBackMaterial = p_oMat;
	}
	{
		$s.pop();
		return p_oMat;
	}
	$s.pop();
}
sandy.materials.Appearance.prototype.backMaterial = null;
sandy.materials.Appearance.prototype.flags = null;
sandy.materials.Appearance.prototype.frontMaterial = null;
sandy.materials.Appearance.prototype.m_oBackMaterial = null;
sandy.materials.Appearance.prototype.m_oFrontMaterial = null;
sandy.materials.Appearance.prototype.toString = function() {
	$s.push("sandy.materials.Appearance::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.materials.Appearance";
	}
	$s.pop();
}
sandy.materials.Appearance.prototype.useVertexNormal = null;
sandy.materials.Appearance.prototype.__class__ = sandy.materials.Appearance;
sandy.core.data.Edge3D = function(p_nVertexId1,p_nVertexId2) { if( p_nVertexId1 === $_ ) return; {
	$s.push("sandy.core.data.Edge3D::new");
	var $spos = $s.length;
	this.vertexId1 = p_nVertexId1;
	this.vertexId2 = p_nVertexId2;
	$s.pop();
}}
sandy.core.data.Edge3D.__name__ = ["sandy","core","data","Edge3D"];
sandy.core.data.Edge3D.prototype.clone = function() {
	$s.push("sandy.core.data.Edge3D::clone");
	var $spos = $s.length;
	var l_oEdge = new sandy.core.data.Edge3D(this.vertexId1,this.vertexId2);
	{
		$s.pop();
		return l_oEdge;
	}
	$s.pop();
}
sandy.core.data.Edge3D.prototype.vertex1 = null;
sandy.core.data.Edge3D.prototype.vertex2 = null;
sandy.core.data.Edge3D.prototype.vertexId1 = null;
sandy.core.data.Edge3D.prototype.vertexId2 = null;
sandy.core.data.Edge3D.prototype.__class__ = sandy.core.data.Edge3D;
xpath.expression.Literal = function(value) { if( value === $_ ) return; {
	$s.push("xpath.expression.Literal::new");
	var $spos = $s.length;
	this.value = value;
	$s.pop();
}}
xpath.expression.Literal.__name__ = ["xpath","expression","Literal"];
xpath.expression.Literal.prototype.evaluate = function(context) {
	$s.push("xpath.expression.Literal::evaluate");
	var $spos = $s.length;
	{
		var $tmp = new xpath.value.XPathString(this.value);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.Literal.prototype.value = null;
xpath.expression.Literal.prototype.__class__ = xpath.expression.Literal;
xpath.expression.Literal.__interfaces__ = [xpath.expression.Expression];
nme.display.InterpolationMethod = { __ename__ : ["nme","display","InterpolationMethod"], __constructs__ : ["RGB","LINEAR_RGB"] }
nme.display.InterpolationMethod.LINEAR_RGB = ["LINEAR_RGB",1];
nme.display.InterpolationMethod.LINEAR_RGB.toString = $estr;
nme.display.InterpolationMethod.LINEAR_RGB.__enum__ = nme.display.InterpolationMethod;
nme.display.InterpolationMethod.RGB = ["RGB",0];
nme.display.InterpolationMethod.RGB.toString = $estr;
nme.display.InterpolationMethod.RGB.__enum__ = nme.display.InterpolationMethod;
sandy.core.scenegraph.Camera3D = function(p_nWidth,p_nHeight,p_nFov,p_nNear,p_nFar) { if( p_nWidth === $_ ) return; {
	$s.push("sandy.core.scenegraph.Camera3D::new");
	var $spos = $s.length;
	if(p_nFov == null) p_nFov = 45;
	if(p_nNear == null) p_nNear = 50;
	if(p_nFar == null) p_nFar = 10000;
	sandy.core.scenegraph.ATransformable.apply(this,[null]);
	this.invModelMatrix = new sandy.core.data.Matrix4();
	this.viewport = new sandy.view.ViewPort(640,480);
	this.frustrum = new sandy.view.Frustum();
	this._perspectiveChanged = false;
	this._mp = new sandy.core.data.Matrix4();
	this._mpInv = new sandy.core.data.Matrix4();
	this.m_aDisplayList = new Array();
	this.viewport.__setWidth(p_nWidth);
	this.viewport.__setHeight(p_nHeight);
	this._nFov = p_nFov;
	this._nFar = p_nFar;
	this._nNear = p_nNear;
	this.setPerspectiveProjection(this._nFov,this.viewport.__getRatio(),this._nNear,this._nFar);
	this.m_nOffx = this.viewport.__getWidth2();
	this.m_nOffy = this.viewport.__getHeight2();
	this.viewport.hasChanged = false;
	this.visible = false;
	this.__setZ(-300);
	this.lookAt(0,0,0);
	$s.pop();
}}
sandy.core.scenegraph.Camera3D.__name__ = ["sandy","core","scenegraph","Camera3D"];
sandy.core.scenegraph.Camera3D.__super__ = sandy.core.scenegraph.ATransformable;
for(var k in sandy.core.scenegraph.ATransformable.prototype ) sandy.core.scenegraph.Camera3D.prototype[k] = sandy.core.scenegraph.ATransformable.prototype[k];
sandy.core.scenegraph.Camera3D.prototype.__getFar = function() {
	$s.push("sandy.core.scenegraph.Camera3D::__getFar");
	var $spos = $s.length;
	{
		var $tmp = this._nFar;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.__getFov = function() {
	$s.push("sandy.core.scenegraph.Camera3D::__getFov");
	var $spos = $s.length;
	{
		var $tmp = this._nFov;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.__getInvProjectionMatrix = function() {
	$s.push("sandy.core.scenegraph.Camera3D::__getInvProjectionMatrix");
	var $spos = $s.length;
	{
		var $tmp = this._mpInv;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.__getNear = function() {
	$s.push("sandy.core.scenegraph.Camera3D::__getNear");
	var $spos = $s.length;
	{
		var $tmp = this._nNear;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.__getProjectionMatrix = function() {
	$s.push("sandy.core.scenegraph.Camera3D::__getProjectionMatrix");
	var $spos = $s.length;
	{
		var $tmp = this._mp;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.__setFar = function(pFar) {
	$s.push("sandy.core.scenegraph.Camera3D::__setFar");
	var $spos = $s.length;
	this._nFar = pFar;
	this._perspectiveChanged = true;
	{
		$s.pop();
		return pFar;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.__setFov = function(p_nFov) {
	$s.push("sandy.core.scenegraph.Camera3D::__setFov");
	var $spos = $s.length;
	this._nFov = p_nFov;
	this._perspectiveChanged = true;
	{
		$s.pop();
		return p_nFov;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.__setNear = function(pNear) {
	$s.push("sandy.core.scenegraph.Camera3D::__setNear");
	var $spos = $s.length;
	this._nNear = pNear;
	this._perspectiveChanged = true;
	{
		$s.pop();
		return pNear;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype._mp = null;
sandy.core.scenegraph.Camera3D.prototype._mpInv = null;
sandy.core.scenegraph.Camera3D.prototype._nFar = null;
sandy.core.scenegraph.Camera3D.prototype._nFov = null;
sandy.core.scenegraph.Camera3D.prototype._nNear = null;
sandy.core.scenegraph.Camera3D.prototype._perspectiveChanged = null;
sandy.core.scenegraph.Camera3D.prototype.addArrayToDisplayList = function(p_aShapeArray) {
	$s.push("sandy.core.scenegraph.Camera3D::addArrayToDisplayList");
	var $spos = $s.length;
	this.m_aDisplayList = this.m_aDisplayList.concat(p_aShapeArray);
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.addToDisplayList = function(p_oShape) {
	$s.push("sandy.core.scenegraph.Camera3D::addToDisplayList");
	var $spos = $s.length;
	if(p_oShape != null) this.m_aDisplayList[this.m_aDisplayList.length] = (p_oShape);
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.cull = function(p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Camera3D::cull");
	var $spos = $s.length;
	{
		$s.pop();
		return;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.destroy = function() {
	$s.push("sandy.core.scenegraph.Camera3D::destroy");
	var $spos = $s.length;
	var l_oShape;
	{
		var _g = 0, _g1 = this.m_aDisplayedList;
		while(_g < _g1.length) {
			var l_oShape1 = _g1[_g];
			++_g;
			if(l_oShape1 != null) l_oShape1.clear();
		}
	}
	{
		var _g = 0, _g1 = this.m_aDisplayList;
		while(_g < _g1.length) {
			var l_oShape1 = _g1[_g];
			++_g;
			if(l_oShape1 != null) l_oShape1.clear();
		}
	}
	this.m_aDisplayedList = null;
	this.m_aDisplayList = null;
	this.viewport = null;
	sandy.core.scenegraph.ATransformable.prototype.destroy.apply(this,[]);
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.far = null;
sandy.core.scenegraph.Camera3D.prototype.fov = null;
sandy.core.scenegraph.Camera3D.prototype.frustrum = null;
sandy.core.scenegraph.Camera3D.prototype.invModelMatrix = null;
sandy.core.scenegraph.Camera3D.prototype.invProjectionMatrix = null;
sandy.core.scenegraph.Camera3D.prototype.m_aDisplayList = null;
sandy.core.scenegraph.Camera3D.prototype.m_aDisplayedList = null;
sandy.core.scenegraph.Camera3D.prototype.m_nOffx = null;
sandy.core.scenegraph.Camera3D.prototype.m_nOffy = null;
sandy.core.scenegraph.Camera3D.prototype.mp11 = null;
sandy.core.scenegraph.Camera3D.prototype.mp12 = null;
sandy.core.scenegraph.Camera3D.prototype.mp13 = null;
sandy.core.scenegraph.Camera3D.prototype.mp14 = null;
sandy.core.scenegraph.Camera3D.prototype.mp21 = null;
sandy.core.scenegraph.Camera3D.prototype.mp22 = null;
sandy.core.scenegraph.Camera3D.prototype.mp23 = null;
sandy.core.scenegraph.Camera3D.prototype.mp24 = null;
sandy.core.scenegraph.Camera3D.prototype.mp31 = null;
sandy.core.scenegraph.Camera3D.prototype.mp32 = null;
sandy.core.scenegraph.Camera3D.prototype.mp33 = null;
sandy.core.scenegraph.Camera3D.prototype.mp34 = null;
sandy.core.scenegraph.Camera3D.prototype.mp41 = null;
sandy.core.scenegraph.Camera3D.prototype.mp42 = null;
sandy.core.scenegraph.Camera3D.prototype.mp43 = null;
sandy.core.scenegraph.Camera3D.prototype.mp44 = null;
sandy.core.scenegraph.Camera3D.prototype.near = null;
sandy.core.scenegraph.Camera3D.prototype.projectArray = function(p_oList) {
	$s.push("sandy.core.scenegraph.Camera3D::projectArray");
	var $spos = $s.length;
	var l_nX = this.viewport.offset.x + this.m_nOffx;
	var l_nY = this.viewport.offset.y + this.m_nOffy;
	var l_nCste;
	{
		var _g = 0;
		while(_g < p_oList.length) {
			var l_oVertex = p_oList[_g];
			++_g;
			if(!l_oVertex.projected) {
				l_nCste = 1 / (l_oVertex.wx * this.mp41 + l_oVertex.wy * this.mp42 + l_oVertex.wz * this.mp43 + this.mp44);
				l_oVertex.sx = l_nCste * (l_oVertex.wx * this.mp11 + l_oVertex.wy * this.mp12 + l_oVertex.wz * this.mp13 + this.mp14) * this.m_nOffx + l_nX;
				l_oVertex.sy = -l_nCste * (l_oVertex.wx * this.mp21 + l_oVertex.wy * this.mp22 + l_oVertex.wz * this.mp23 + this.mp24) * this.m_nOffy + l_nY;
				l_oVertex.projected = true;
			}
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.projectVertex = function(p_oVertex) {
	$s.push("sandy.core.scenegraph.Camera3D::projectVertex");
	var $spos = $s.length;
	var l_nX = (this.viewport.offset.x + this.m_nOffx);
	var l_nY = (this.viewport.offset.y + this.m_nOffy);
	var l_nCste = 1 / (p_oVertex.wx * this.mp41 + p_oVertex.wy * this.mp42 + p_oVertex.wz * this.mp43 + this.mp44);
	p_oVertex.sx = l_nCste * (p_oVertex.wx * this.mp11 + p_oVertex.wy * this.mp12 + p_oVertex.wz * this.mp13 + this.mp14) * this.m_nOffx + l_nX;
	p_oVertex.sy = -l_nCste * (p_oVertex.wx * this.mp21 + p_oVertex.wy * this.mp22 + p_oVertex.wz * this.mp23 + this.mp24) * this.m_nOffy + l_nY;
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.projectionMatrix = null;
sandy.core.scenegraph.Camera3D.prototype.render = function(p_oScene,p_oCamera) {
	$s.push("sandy.core.scenegraph.Camera3D::render");
	var $spos = $s.length;
	{
		$s.pop();
		return;
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.renderDisplayList = function(p_oScene) {
	$s.push("sandy.core.scenegraph.Camera3D::renderDisplayList");
	var $spos = $s.length;
	var l_oShape;
	if(this.m_aDisplayedList != null) {
		{
			var _g = 0, _g1 = this.m_aDisplayedList;
			while(_g < _g1.length) {
				var l_oShape1 = _g1[_g];
				++_g;
				l_oShape1.clear();
			}
		}
	}
	var l_mcContainer = p_oScene.container;
	this.m_aDisplayList.sort(function(a,b) {
		$s.push("sandy.core.scenegraph.Camera3D::renderDisplayList@181");
		var $spos = $s.length;
		{
			var $tmp = ((a.__getDepth() > b.__getDepth())?1:(a.__getDepth() < b.__getDepth()?-1:0));
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	{
		var _g = 0, _g1 = this.m_aDisplayList;
		while(_g < _g1.length) {
			var l_oShape1 = _g1[_g];
			++_g;
			l_oShape1.display(p_oScene);
			l_mcContainer.addChild(l_oShape1.__getContainer());
		}
	}
	this.m_aDisplayedList = this.m_aDisplayList.splice(0,this.m_aDisplayList.length);
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.setPerspectiveProjection = function(p_nFovY,p_nAspectRatio,p_nZNear,p_nZFar) {
	$s.push("sandy.core.scenegraph.Camera3D::setPerspectiveProjection");
	var $spos = $s.length;
	var cotan, Q;
	this.frustrum.computePlanes(p_nAspectRatio,p_nZNear,p_nZFar,p_nFovY);
	p_nFovY = sandy.util.NumberUtil.toRadian(p_nFovY);
	cotan = 1 / Math.tan(p_nFovY / 2);
	Q = p_nZFar / (p_nZFar - p_nZNear);
	this._mp.zero();
	this._mp.n11 = cotan / p_nAspectRatio;
	this._mp.n22 = cotan;
	this._mp.n33 = Q;
	this._mp.n34 = -Q * p_nZNear;
	this._mp.n43 = 1;
	this.mp11 = this._mp.n11;
	this.mp21 = this._mp.n21;
	this.mp31 = this._mp.n31;
	this.mp41 = this._mp.n41;
	this.mp12 = this._mp.n12;
	this.mp22 = this._mp.n22;
	this.mp32 = this._mp.n32;
	this.mp42 = this._mp.n42;
	this.mp13 = this._mp.n13;
	this.mp23 = this._mp.n23;
	this.mp33 = this._mp.n33;
	this.mp43 = this._mp.n43;
	this.mp14 = this._mp.n14;
	this.mp24 = this._mp.n24;
	this.mp34 = this._mp.n34;
	this.mp44 = this._mp.n44;
	this._mpInv.copy(this._mp);
	this._mpInv.inverse();
	this.changed = true;
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.toString = function() {
	$s.push("sandy.core.scenegraph.Camera3D::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.core.scenegraph.Camera3D";
	}
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.update = function(p_oScene,p_oModelMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Camera3D::update");
	var $spos = $s.length;
	if(this.viewport.hasChanged) {
		this._perspectiveChanged = true;
		this.m_nOffx = this.viewport.__getWidth2();
		this.m_nOffy = this.viewport.__getHeight2();
		if(p_oScene.__getRectClipping()) p_oScene.container.SetScrollRect(new canvas.geom.Rectangle(0,0,this.viewport.__getWidth(),this.viewport.__getHeight()));
		this.viewport.hasChanged = false;
	}
	if(this._perspectiveChanged) this.updatePerspective();
	sandy.core.scenegraph.ATransformable.prototype.update.apply(this,[p_oScene,p_oModelMatrix,p_bChanged]);
	this.invModelMatrix.n11 = this.modelMatrix.n11;
	this.invModelMatrix.n12 = this.modelMatrix.n21;
	this.invModelMatrix.n13 = this.modelMatrix.n31;
	this.invModelMatrix.n21 = this.modelMatrix.n12;
	this.invModelMatrix.n22 = this.modelMatrix.n22;
	this.invModelMatrix.n23 = this.modelMatrix.n32;
	this.invModelMatrix.n31 = this.modelMatrix.n13;
	this.invModelMatrix.n32 = this.modelMatrix.n23;
	this.invModelMatrix.n33 = this.modelMatrix.n33;
	this.invModelMatrix.n14 = -(this.modelMatrix.n11 * this.modelMatrix.n14 + this.modelMatrix.n21 * this.modelMatrix.n24 + this.modelMatrix.n31 * this.modelMatrix.n34);
	this.invModelMatrix.n24 = -(this.modelMatrix.n12 * this.modelMatrix.n14 + this.modelMatrix.n22 * this.modelMatrix.n24 + this.modelMatrix.n32 * this.modelMatrix.n34);
	this.invModelMatrix.n34 = -(this.modelMatrix.n13 * this.modelMatrix.n14 + this.modelMatrix.n23 * this.modelMatrix.n24 + this.modelMatrix.n33 * this.modelMatrix.n34);
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.updatePerspective = function() {
	$s.push("sandy.core.scenegraph.Camera3D::updatePerspective");
	var $spos = $s.length;
	this.setPerspectiveProjection(this._nFov,this.viewport.__getRatio(),this._nNear,this._nFar);
	this._perspectiveChanged = false;
	$s.pop();
}
sandy.core.scenegraph.Camera3D.prototype.viewport = null;
sandy.core.scenegraph.Camera3D.prototype.__class__ = sandy.core.scenegraph.Camera3D;
sandy.core.scenegraph.Sprite3D = function(p_sName,p_oContent,p_nScale,p_nOffset) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.Sprite3D::new");
	var $spos = $s.length;
	this.offset = 0;
	if(p_sName == null) p_sName = "";
	if(p_nScale == null) p_nScale = 1;
	if(p_nOffset == null) p_nOffset = 0;
	this.m_oNormale = new sandy.core.data.Vector();
	sandy.core.scenegraph.Sprite2D.apply(this,[p_sName,p_oContent,p_nScale]);
	this._dir = new sandy.core.data.Vertex(0,0,-1);
	this._vView = new sandy.core.data.Vector(0,0,1);
	this.offset = p_nOffset;
	$s.pop();
}}
sandy.core.scenegraph.Sprite3D.__name__ = ["sandy","core","scenegraph","Sprite3D"];
sandy.core.scenegraph.Sprite3D.__super__ = sandy.core.scenegraph.Sprite2D;
for(var k in sandy.core.scenegraph.Sprite2D.prototype ) sandy.core.scenegraph.Sprite3D.prototype[k] = sandy.core.scenegraph.Sprite2D.prototype[k];
sandy.core.scenegraph.Sprite3D.prototype.__frameFromAngle = function(a) {
	$s.push("sandy.core.scenegraph.Sprite3D::__frameFromAngle");
	var $spos = $s.length;
	a = sandy.util.NumberUtil.toDegree(a);
	a = ((a + this.offset) + 360) % 360;
	var b = Std["int"](a * this.m_nAutoOffset) << 0;
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite3D.prototype.__setContent = function(p_content) {
	$s.push("sandy.core.scenegraph.Sprite3D::__setContent");
	var $spos = $s.length;
	if(p_content != null) {
		p_content.GetTransform().GetMatrix().identity();
		if(this.m_oContent != null) this.m_oContainer.removeChild(this.m_oContent);
		this.m_oContent = p_content;
		this.m_oContainer.addChildAt(this.m_oContent,0);
		this.m_oContent.SetX(0);
		this.m_oContent.SetY(0);
		this.m_nW2 = this.m_oContainer.GetWidth() / 2;
		this.m_nH2 = this.m_oContainer.GetHeight() / 2;
		this.m_nAutoOffset = this.m_oContent.totalFrames / 360;
	}
	{
		$s.pop();
		return p_content;
	}
	$s.pop();
}
sandy.core.scenegraph.Sprite3D.prototype._dir = null;
sandy.core.scenegraph.Sprite3D.prototype._vView = null;
sandy.core.scenegraph.Sprite3D.prototype.content = null;
sandy.core.scenegraph.Sprite3D.prototype.m_nAngle = null;
sandy.core.scenegraph.Sprite3D.prototype.m_nAutoOffset = null;
sandy.core.scenegraph.Sprite3D.prototype.m_oNormale = null;
sandy.core.scenegraph.Sprite3D.prototype.m_oSuper = null;
sandy.core.scenegraph.Sprite3D.prototype.offset = null;
sandy.core.scenegraph.Sprite3D.prototype.render = function(p_oScene,p_oCamera) {
	$s.push("sandy.core.scenegraph.Sprite3D::render");
	var $spos = $s.length;
	if((this.m_oMaterial != null) && !p_oScene.materialManager.isRegistered(this.m_oMaterial)) {
		p_oScene.materialManager.register(this.m_oMaterial);
	}
	var l_oMatrix = this.viewMatrix, m11 = l_oMatrix.n11, m21 = l_oMatrix.n21, m31 = l_oMatrix.n31, m12 = l_oMatrix.n12, m22 = l_oMatrix.n22, m32 = l_oMatrix.n32, m13 = l_oMatrix.n13, m23 = l_oMatrix.n23, m33 = l_oMatrix.n33, m14 = l_oMatrix.n14, m24 = l_oMatrix.n24, m34 = l_oMatrix.n34;
	this._dir.wx = this._dir.x * m11 + this._dir.y * m12 + this._dir.z * m13 + m14;
	this._dir.wy = this._dir.x * m21 + this._dir.y * m22 + this._dir.z * m23 + m24;
	this._dir.wz = this._dir.x * m31 + this._dir.y * m32 + this._dir.z * m33 + m34;
	this._v.wx = this._v.x * m11 + this._v.y * m12 + this._v.z * m13 + m14;
	this._v.wy = this._v.x * m21 + this._v.y * m22 + this._v.z * m23 + m24;
	this._v.wz = this._v.x * m31 + this._v.y * m32 + this._v.z * m33 + m34;
	this.m_nDepth = (this.enableForcedDepth?this.forcedDepth:this._v.wz);
	p_oCamera.projectVertex(this._v);
	p_oCamera.addToDisplayList(this);
	this._vx.copy(this._v);
	this._vx.wx++;
	p_oCamera.projectVertex(this._vx);
	this._vy.copy(this._v);
	this._vy.wy++;
	p_oCamera.projectVertex(this._vy);
	this.m_nPerspScaleX = this._nScale * (this._vx.sx - this._v.sx);
	this.m_nPerspScaleY = this._nScale * (this._v.sy - this._vy.sy);
	this.m_nRotation = Math.atan2(m12,m22);
	this.m_oNormale.x = this._v.wx - this._dir.wx;
	this.m_oNormale.y = this._v.wy - this._dir.wy;
	this.m_oNormale.z = this._v.wz - this._dir.wz;
	this.m_nAngle = sandy.math.VectorMath.getAngle(this._vView,this.m_oNormale);
	if(this.m_oNormale.x < 0) this.m_nAngle = 2 * Math.PI - this.m_nAngle;
	this.m_oContent.gotoAndStop(this.__frameFromAngle(this.m_nAngle));
	$s.pop();
}
sandy.core.scenegraph.Sprite3D.prototype.__class__ = sandy.core.scenegraph.Sprite3D;
sandy.core.light = {}
sandy.core.light.Light3D = function(p_oD,p_nPow) { if( p_oD === $_ ) return; {
	$s.push("sandy.core.light.Light3D::new");
	var $spos = $s.length;
	this._dir = p_oD;
	this._dir.normalize();
	neash.events.EventDispatcher.apply(this,[]);
	this.setPower(p_nPow);
	$s.pop();
}}
sandy.core.light.Light3D.__name__ = ["sandy","core","light","Light3D"];
sandy.core.light.Light3D.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) sandy.core.light.Light3D.prototype[k] = neash.events.EventDispatcher.prototype[k];
sandy.core.light.Light3D.prototype.__getColor = function() {
	$s.push("sandy.core.light.Light3D::__getColor");
	var $spos = $s.length;
	{
		var $tmp = this._color;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.light.Light3D.prototype.__setColor = function(p_nColor) {
	$s.push("sandy.core.light.Light3D::__setColor");
	var $spos = $s.length;
	this._color = p_nColor;
	this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.LIGHT_COLOR_CHANGED));
	{
		$s.pop();
		return p_nColor;
	}
	$s.pop();
}
sandy.core.light.Light3D.prototype._color = null;
sandy.core.light.Light3D.prototype._dir = null;
sandy.core.light.Light3D.prototype._nPower = null;
sandy.core.light.Light3D.prototype._power = null;
sandy.core.light.Light3D.prototype.calculate = function(normal) {
	$s.push("sandy.core.light.Light3D::calculate");
	var $spos = $s.length;
	var DP = this._dir.dot(normal);
	DP = -DP;
	if(DP < 0) {
		DP = 0;
	}
	{
		var $tmp = this._nPower * DP;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.light.Light3D.prototype.color = null;
sandy.core.light.Light3D.prototype.destroy = function() {
	$s.push("sandy.core.light.Light3D::destroy");
	var $spos = $s.length;
	null;
	$s.pop();
}
sandy.core.light.Light3D.prototype.getDirectionVector = function() {
	$s.push("sandy.core.light.Light3D::getDirectionVector");
	var $spos = $s.length;
	{
		var $tmp = this._dir;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.light.Light3D.prototype.getNormalizedPower = function() {
	$s.push("sandy.core.light.Light3D::getNormalizedPower");
	var $spos = $s.length;
	{
		var $tmp = this._nPower;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.light.Light3D.prototype.getPower = function() {
	$s.push("sandy.core.light.Light3D::getPower");
	var $spos = $s.length;
	{
		var $tmp = this._power;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.light.Light3D.prototype.setDirection = function(x,y,z) {
	$s.push("sandy.core.light.Light3D::setDirection");
	var $spos = $s.length;
	this._dir.x = x;
	this._dir.y = y;
	this._dir.z = z;
	this._dir.normalize();
	this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.LIGHT_UPDATED));
	$s.pop();
}
sandy.core.light.Light3D.prototype.setDirectionVector = function(pDir) {
	$s.push("sandy.core.light.Light3D::setDirectionVector");
	var $spos = $s.length;
	this._dir = pDir;
	this._dir.normalize();
	this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.LIGHT_UPDATED));
	$s.pop();
}
sandy.core.light.Light3D.prototype.setPower = function(p_nPow) {
	$s.push("sandy.core.light.Light3D::setPower");
	var $spos = $s.length;
	this._power = sandy.util.NumberUtil.constrain(p_nPow,0,150);
	this._nPower = this._power / 150;
	this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.LIGHT_UPDATED));
	$s.pop();
}
sandy.core.light.Light3D.prototype.__class__ = sandy.core.light.Light3D;
canvas.utils.Endian = { __ename__ : ["canvas","utils","Endian"], __constructs__ : ["BIG_ENDIAN","LITTLE_ENDIAN"] }
canvas.utils.Endian.BIG_ENDIAN = ["BIG_ENDIAN",0];
canvas.utils.Endian.BIG_ENDIAN.toString = $estr;
canvas.utils.Endian.BIG_ENDIAN.__enum__ = canvas.utils.Endian;
canvas.utils.Endian.LITTLE_ENDIAN = ["LITTLE_ENDIAN",1];
canvas.utils.Endian.LITTLE_ENDIAN.toString = $estr;
canvas.utils.Endian.LITTLE_ENDIAN.__enum__ = canvas.utils.Endian;
xpath.tokenizer.token.BeginExpressionTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.BeginExpressionTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.BeginExpressionToken(),"","BeginExpression"]);
	$s.pop();
}}
xpath.tokenizer.token.BeginExpressionTokenizer.__name__ = ["xpath","tokenizer","token","BeginExpressionTokenizer"];
xpath.tokenizer.token.BeginExpressionTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.BeginExpressionTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.BeginExpressionTokenizer.instance = null;
xpath.tokenizer.token.BeginExpressionTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.BeginExpressionTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.BeginExpressionTokenizer.instance == null) xpath.tokenizer.token.BeginExpressionTokenizer.instance = new xpath.tokenizer.token.BeginExpressionTokenizer();
	{
		var $tmp = xpath.tokenizer.token.BeginExpressionTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.BeginExpressionTokenizer.prototype.__class__ = xpath.tokenizer.token.BeginExpressionTokenizer;
xpath.expression.TypeStep = function(type,nextStep) { if( type === $_ ) return; {
	$s.push("xpath.expression.TypeStep::new");
	var $spos = $s.length;
	xpath.expression.PathStep.apply(this,[$closure(this,"typeStep"),nextStep]);
	this.type = type;
	$s.pop();
}}
xpath.expression.TypeStep.__name__ = ["xpath","expression","TypeStep"];
xpath.expression.TypeStep.__super__ = xpath.expression.PathStep;
for(var k in xpath.expression.PathStep.prototype ) xpath.expression.TypeStep.prototype[k] = xpath.expression.PathStep.prototype[k];
xpath.expression.TypeStep.prototype.type = null;
xpath.expression.TypeStep.prototype.typeStep = function(context) {
	$s.push("xpath.expression.TypeStep::typeStep");
	var $spos = $s.length;
	var node = context.node;
	var nodeType = context.node.getType();
	switch(this.type) {
	case xpath.NodeCategory.Node:{
		if(nodeType == xpath.xml.XmlNodeType.Element || nodeType == xpath.xml.XmlNodeType.Attribute) {
			{
				var $tmp = [node];
				$s.pop();
				return $tmp;
			}
		}
	}break;
	case xpath.NodeCategory.Text:{
		if(nodeType == xpath.xml.XmlNodeType.Text) {
			{
				var $tmp = [node];
				$s.pop();
				return $tmp;
			}
		}
	}break;
	case xpath.NodeCategory.Comment:{
		if(nodeType == xpath.xml.XmlNodeType.Comment) {
			{
				var $tmp = [node];
				$s.pop();
				return $tmp;
			}
		}
	}break;
	}
	{
		var $tmp = [];
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.TypeStep.prototype.__class__ = xpath.expression.TypeStep;
sandy.commands.Delegate = function(f,rest) { if( f === $_ ) return; {
	$s.push("sandy.commands.Delegate::new");
	var $spos = $s.length;
	if(rest == null) rest = [];
	this._f = f;
	this._a = rest;
	$s.pop();
}}
sandy.commands.Delegate.__name__ = ["sandy","commands","Delegate"];
sandy.commands.Delegate.create = function(method,args) {
	$s.push("sandy.commands.Delegate::create");
	var $spos = $s.length;
	{
		var $tmp = function(rest) {
			$s.push("sandy.commands.Delegate::create@19");
			var $spos = $s.length;
			{
				var $tmp = method.apply(null,(rest != null?((args != null?args.concat(rest):rest)):((args != null?args:null))));
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.commands.Delegate.prototype._a = null;
sandy.commands.Delegate.prototype._f = null;
sandy.commands.Delegate.prototype.addArguments = function(rest) {
	$s.push("sandy.commands.Delegate::addArguments");
	var $spos = $s.length;
	if(rest.length > 0) this._a = this._a.concat(rest);
	$s.pop();
}
sandy.commands.Delegate.prototype.addArgumentsArray = function(a) {
	$s.push("sandy.commands.Delegate::addArgumentsArray");
	var $spos = $s.length;
	if(a.length > 0) this._a = this._a.concat(a);
	$s.pop();
}
sandy.commands.Delegate.prototype.callFunction = function() {
	$s.push("sandy.commands.Delegate::callFunction");
	var $spos = $s.length;
	{
		var $tmp = this._f.apply(null,this._a);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.commands.Delegate.prototype.execute = function(e) {
	$s.push("sandy.commands.Delegate::execute");
	var $spos = $s.length;
	var a = new Array();
	if(e != null) a.push(e);
	this._f.apply(null,((this._a.length > 0)?a.concat(this._a):(((a.length > 0)?a:null))));
	$s.pop();
}
sandy.commands.Delegate.prototype.getArguments = function() {
	$s.push("sandy.commands.Delegate::getArguments");
	var $spos = $s.length;
	{
		var $tmp = this._a;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.commands.Delegate.prototype.handleEvent = function(e) {
	$s.push("sandy.commands.Delegate::handleEvent");
	var $spos = $s.length;
	this.execute(e);
	$s.pop();
}
sandy.commands.Delegate.prototype.setArguments = function(rest) {
	$s.push("sandy.commands.Delegate::setArguments");
	var $spos = $s.length;
	if(rest.length > 0) this._a = rest;
	$s.pop();
}
sandy.commands.Delegate.prototype.setArgumentsArray = function(a) {
	$s.push("sandy.commands.Delegate::setArgumentsArray");
	var $spos = $s.length;
	if(a.length > 0) this._a = a;
	$s.pop();
}
sandy.commands.Delegate.prototype.toString = function() {
	$s.push("sandy.commands.Delegate::toString");
	var $spos = $s.length;
	{
		$s.pop();
		return "sandy.commands.Delegate";
	}
	$s.pop();
}
sandy.commands.Delegate.prototype.__class__ = sandy.commands.Delegate;
sandy.commands.Delegate.__interfaces__ = [sandy.commands.Command];
sandy.events.Shape3DEvent = function(e,p_oShape,p_oPolygon,p_oUV,p_oPoint3d,p_oEvent) { if( e === $_ ) return; {
	$s.push("sandy.events.Shape3DEvent::new");
	var $spos = $s.length;
	sandy.events.BubbleEvent.apply(this,[e,p_oShape]);
	this.shape = p_oShape;
	this.polygon = p_oPolygon;
	this.uv = p_oUV;
	this.point = p_oPoint3d;
	this.event = p_oEvent;
	$s.pop();
}}
sandy.events.Shape3DEvent.__name__ = ["sandy","events","Shape3DEvent"];
sandy.events.Shape3DEvent.__super__ = sandy.events.BubbleEvent;
for(var k in sandy.events.BubbleEvent.prototype ) sandy.events.Shape3DEvent.prototype[k] = sandy.events.BubbleEvent.prototype[k];
sandy.events.Shape3DEvent.prototype.event = null;
sandy.events.Shape3DEvent.prototype.point = null;
sandy.events.Shape3DEvent.prototype.polygon = null;
sandy.events.Shape3DEvent.prototype.shape = null;
sandy.events.Shape3DEvent.prototype.uv = null;
sandy.events.Shape3DEvent.prototype.__class__ = sandy.events.Shape3DEvent;
haxe.Http = function(url) { if( url === $_ ) return; {
	$s.push("haxe.Http::new");
	var $spos = $s.length;
	this.url = url;
	this.headers = new Hash();
	this.params = new Hash();
	this.async = true;
	$s.pop();
}}
haxe.Http.__name__ = ["haxe","Http"];
haxe.Http.request = function(url) {
	$s.push("haxe.Http::request");
	var $spos = $s.length;
	var h = new haxe.Http(url);
	h.async = false;
	var r = null;
	h.onData = function(d) {
		$s.push("haxe.Http::request@620");
		var $spos = $s.length;
		r = d;
		$s.pop();
	}
	h.onError = function(e) {
		$s.push("haxe.Http::request@623");
		var $spos = $s.length;
		throw e;
		$s.pop();
	}
	h.request(false);
	{
		$s.pop();
		return r;
	}
	$s.pop();
}
haxe.Http.prototype.async = null;
haxe.Http.prototype.headers = null;
haxe.Http.prototype.onData = function(data) {
	$s.push("haxe.Http::onData");
	var $spos = $s.length;
	null;
	$s.pop();
}
haxe.Http.prototype.onError = function(msg) {
	$s.push("haxe.Http::onError");
	var $spos = $s.length;
	null;
	$s.pop();
}
haxe.Http.prototype.onStatus = function(status) {
	$s.push("haxe.Http::onStatus");
	var $spos = $s.length;
	null;
	$s.pop();
}
haxe.Http.prototype.params = null;
haxe.Http.prototype.postData = null;
haxe.Http.prototype.request = function(post) {
	$s.push("haxe.Http::request");
	var $spos = $s.length;
	var me = this;
	var r = new js.XMLHttpRequest();
	var onreadystatechange = function() {
		$s.push("haxe.Http::request@101");
		var $spos = $s.length;
		if(r.readyState != 4) {
			$s.pop();
			return;
		}
		var s = function($this) {
			var $r;
			try {
				$r = r.status;
			}
			catch( $e70 ) {
				{
					var e = $e70;
					$r = function($this) {
						var $r;
						$e = [];
						while($s.length >= $spos) $e.unshift($s.pop());
						$s.push($e[0]);
						$r = null;
						return $r;
					}($this);
				}
			}
			return $r;
		}(this);
		if(s == undefined) s = null;
		if(s != null) me.onStatus(s);
		if(s != null && s >= 200 && s < 400) me.onData(r.responseText);
		else switch(s) {
		case null:{
			me.onError("Failed to connect or resolve host");
		}break;
		case 12029:{
			me.onError("Failed to connect to host");
		}break;
		case 12007:{
			me.onError("Unknown host");
		}break;
		default:{
			me.onError("Http Error #" + r.status);
		}break;
		}
		$s.pop();
	}
	r.onreadystatechange = onreadystatechange;
	var uri = this.postData;
	if(uri != null) post = true;
	else { var $it71 = this.params.keys();
	while( $it71.hasNext() ) { var p = $it71.next();
	{
		if(uri == null) uri = "";
		else uri += "&";
		uri += StringTools.urlDecode(p) + "=" + StringTools.urlEncode(this.params.get(p));
	}
	}}
	try {
		if(post) r.open("POST",this.url,this.async);
		else if(uri != null) {
			var question = this.url.split("?").length <= 1;
			r.open("GET",this.url + ((question?"?":"&")) + uri,this.async);
			uri = null;
		}
		else r.open("GET",this.url,this.async);
	}
	catch( $e72 ) {
		{
			var e = $e72;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				this.onError(e.toString());
				{
					$s.pop();
					return;
				}
			}
		}
	}
	if(this.headers.get("Content-Type") == null && post && this.postData == null) r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	{ var $it73 = this.headers.keys();
	while( $it73.hasNext() ) { var h = $it73.next();
	r.setRequestHeader(h,this.headers.get(h));
	}}
	r.send(uri);
	if(!this.async) onreadystatechange();
	$s.pop();
}
haxe.Http.prototype.setHeader = function(header,value) {
	$s.push("haxe.Http::setHeader");
	var $spos = $s.length;
	this.headers.set(header,value);
	$s.pop();
}
haxe.Http.prototype.setParameter = function(param,value) {
	$s.push("haxe.Http::setParameter");
	var $spos = $s.length;
	this.params.set(param,value);
	$s.pop();
}
haxe.Http.prototype.setPostData = function(data) {
	$s.push("haxe.Http::setPostData");
	var $spos = $s.length;
	this.postData = data;
	$s.pop();
}
haxe.Http.prototype.url = null;
haxe.Http.prototype.__class__ = haxe.Http;
sandy.core.data.Plane = function(p_nA,p_nB,p_nC,p_nd) { if( p_nA === $_ ) return; {
	$s.push("sandy.core.data.Plane::new");
	var $spos = $s.length;
	p_nA = ((p_nA != null)?p_nA:0);
	p_nB = ((p_nB != null)?p_nB:0);
	p_nC = ((p_nC != null)?p_nC:0);
	p_nd = ((p_nd != null)?p_nd:0);
	this.a = p_nA;
	this.b = p_nB;
	this.c = p_nC;
	this.d = p_nd;
	$s.pop();
}}
sandy.core.data.Plane.__name__ = ["sandy","core","data","Plane"];
sandy.core.data.Plane.prototype.a = null;
sandy.core.data.Plane.prototype.b = null;
sandy.core.data.Plane.prototype.c = null;
sandy.core.data.Plane.prototype.d = null;
sandy.core.data.Plane.prototype.toString = function() {
	$s.push("sandy.core.data.Plane::toString");
	var $spos = $s.length;
	{
		var $tmp = "sandy.core.data.Plane" + "(a:" + this.a + ", b:" + this.b + ", c:" + this.c + ", d:" + this.d + ")";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Plane.prototype.__class__ = sandy.core.data.Plane;
xpath.tokenizer.token.VariableReferenceTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.VariableReferenceTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.VariableReferenceTokenizer.__name__ = ["xpath","tokenizer","token","VariableReferenceTokenizer"];
xpath.tokenizer.token.VariableReferenceTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.VariableReferenceTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.VariableReferenceTokenizer.instance = null;
xpath.tokenizer.token.VariableReferenceTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.VariableReferenceTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.VariableReferenceTokenizer.instance == null) xpath.tokenizer.token.VariableReferenceTokenizer.instance = new xpath.tokenizer.token.VariableReferenceTokenizer();
	{
		var $tmp = xpath.tokenizer.token.VariableReferenceTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.VariableReferenceTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.VariableReferenceTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	if(input.query.charAt(pos) != "$") {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "VariableReference", position : input.position}]);
	}
	var nameStartPos = ++pos;
	var charCode = input.query.charCodeAt(pos);
	if(pos >= input.query.length || ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) && charCode < 128 && charCode != 95)) {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "VariableReference", position : input.position}]);
	}
	do {
		charCode = input.query.charCodeAt(++pos);
	} while((charCode > 47 && charCode < 58) || (charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode > 127 || charCode == 46 || charCode == 45 || charCode == 95);
	if(charCode != 58) {
		var name = input.query.substr(nameStartPos,pos - nameStartPos);
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.VariableReferenceToken(name);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this)];
		var characterLength = pos - input.position;
		characterLength += this.countWhitespace(input.query,pos);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	charCode = input.query.charCodeAt(++pos);
	if(pos >= input.query.length || ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) && charCode < 128 && charCode != 95)) {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "VariableReference", position : input.position}]);
	}
	do {
		charCode = input.query.charCodeAt(++pos);
	} while((charCode > 47 && charCode < 58) || (charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode > 127 || charCode == 46 || charCode == 45 || charCode == 95);
	var name = input.query.substr(nameStartPos,pos - nameStartPos);
	var result = [function($this) {
		var $r;
		var tmp = new xpath.tokenizer.VariableReferenceToken(name);
		$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this)];
	var characterLength = pos - input.position;
	characterLength += this.countWhitespace(input.query,pos);
	{
		var $tmp = input.getOutput(result,characterLength);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.VariableReferenceTokenizer.prototype.__class__ = xpath.tokenizer.token.VariableReferenceTokenizer;
sandy.materials.attributes.MediumAttributes = function(p_nColor,p_oFadeFrom,p_oFadeTo,p_nBlurAmount) { if( p_nColor === $_ ) return; {
	$s.push("sandy.materials.attributes.MediumAttributes::new");
	var $spos = $s.length;
	if(p_nBlurAmount == null) p_nBlurAmount = 0.0;
	if(p_nColor == null) p_nColor = -1;
	this.m_bWasNotBlurred = true;
	this._m = new canvas.geom.Matrix();
	if(p_oFadeFrom == null) p_oFadeFrom = new sandy.core.data.Vector(0,0,0);
	if(p_oFadeTo == null) p_oFadeTo = new sandy.core.data.Vector(0,0,500);
	sandy.materials.attributes.AAttributes.apply(this,[]);
	this.__setColor(p_nColor);
	this.__setFadeTo(p_oFadeTo);
	this.fadeFrom = p_oFadeFrom;
	this.blurAmount = p_nBlurAmount;
	$s.pop();
}}
sandy.materials.attributes.MediumAttributes.__name__ = ["sandy","materials","attributes","MediumAttributes"];
sandy.materials.attributes.MediumAttributes.__super__ = sandy.materials.attributes.AAttributes;
for(var k in sandy.materials.attributes.AAttributes.prototype ) sandy.materials.attributes.MediumAttributes.prototype[k] = sandy.materials.attributes.AAttributes.prototype[k];
sandy.materials.attributes.MediumAttributes.prototype.__getColor = function() {
	$s.push("sandy.materials.attributes.MediumAttributes::__getColor");
	var $spos = $s.length;
	{
		var $tmp = this._c + Math.floor(255 * this._a) * 16777216;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.__getFadeTo = function() {
	$s.push("sandy.materials.attributes.MediumAttributes::__getFadeTo");
	var $spos = $s.length;
	{
		var $tmp = this._fadeTo;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.__setColor = function(p_nColor) {
	$s.push("sandy.materials.attributes.MediumAttributes::__setColor");
	var $spos = $s.length;
	this._c = (p_nColor & 16777215);
	this._a = (p_nColor - this._c) / 16777216 / 255.0;
	{
		$s.pop();
		return p_nColor;
	}
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.__setFadeTo = function(p_oW) {
	$s.push("sandy.materials.attributes.MediumAttributes::__setFadeTo");
	var $spos = $s.length;
	this._fadeTo = p_oW;
	this._fadeToN2 = p_oW.getNorm();
	this._fadeToN2 *= this._fadeToN2;
	{
		$s.pop();
		return p_oW;
	}
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype._a = null;
sandy.materials.attributes.MediumAttributes.prototype._c = null;
sandy.materials.attributes.MediumAttributes.prototype._fadeTo = null;
sandy.materials.attributes.MediumAttributes.prototype._fadeToN2 = null;
sandy.materials.attributes.MediumAttributes.prototype._m = null;
sandy.materials.attributes.MediumAttributes.prototype.blurAmount = null;
sandy.materials.attributes.MediumAttributes.prototype.blurDisplayObjectBy = function(p_oDisplayObject,p_nBlurAmount) {
	$s.push("sandy.materials.attributes.MediumAttributes::blurDisplayObjectBy");
	var $spos = $s.length;
	if(this.m_bWasNotBlurred && (p_nBlurAmount == 0)) {
		$s.pop();
		return;
	}
	var fs = [], changed = false;
	var i = p_oDisplayObject.GetFilters().length - 1;
	while(i > -1) {
		if(!changed && Std["is"](p_oDisplayObject.GetFilters()[i],canvas.filters.BlurFilter) && (p_oDisplayObject.GetFilters()[i].quality == 1)) {
			var bf = p_oDisplayObject.GetFilters()[i];
			if((bf.blurX == p_nBlurAmount) && (bf.blurY == p_nBlurAmount)) {
				$s.pop();
				return;
			}
			bf.blurX = bf.blurY = p_nBlurAmount;
			fs[i] = bf;
			changed = true;
		}
		else {
			fs[i] = p_oDisplayObject.GetFilters()[i];
		}
		i--;
	}
	if(!changed) {
		fs.push(new canvas.filters.BlurFilter(p_nBlurAmount,p_nBlurAmount,1));
		this.m_bWasNotBlurred = false;
	}
	p_oDisplayObject.SetFilters(fs);
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.color = null;
sandy.materials.attributes.MediumAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.MediumAttributes::draw");
	var $spos = $s.length;
	var l_points = (((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices));
	var n = l_points.length;
	if(n < 3) {
		$s.pop();
		return;
	}
	var l_ratios = new Array();
	{
		var _g = 0;
		while(_g < n) {
			var i = _g++;
			l_ratios[i] = this.ratioFromWorldVector(l_points[i].getWorldVector());
		}
	}
	var zIndices = "sort".apply(l_ratios,[Array.NUMERIC | Array.RETURNINDEXEDARRAY]);
	var v0 = l_points[zIndices[0]];
	var v1 = l_points[zIndices[1]];
	var v2 = l_points[zIndices[2]];
	var r0 = l_ratios[zIndices[0]], ar0 = this._a * r0;
	var r1 = l_ratios[zIndices[1]];
	var r2 = l_ratios[zIndices[2]], ar2 = this._a * r2;
	if(ar2 > 0) {
		if(ar0 < 1) {
			sandy.math.VertexMath.linearGradientMatrix(v0,v1,v2,r0,r1,r2,this._m);
			p_oGraphics.beginGradientFill(canvas.display.GradientType.LINEAR,[this._c,this._c],[ar0,ar2],[0,255],this._m);
		}
		else {
			p_oGraphics.beginFill(this._c,1);
		}
		p_oGraphics.moveTo(l_points[0].sx,l_points[0].sy);
		{
			var _g = 0;
			while(_g < l_points.length) {
				var l_oVertex = l_points[_g];
				++_g;
				p_oGraphics.lineTo(l_oVertex.sx,l_oVertex.sy);
			}
		}
		p_oGraphics.endFill();
	}
	this.blurDisplayObjectBy((p_oPolygon.shape.__getUseSingleContainer()?p_oPolygon.shape.__getContainer():p_oPolygon.__getContainer()),this.prepareBlurAmount(this.blurAmount * r0));
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.drawOnSprite = function(p_oSprite,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.MediumAttributes::drawOnSprite");
	var $spos = $s.length;
	var l_ratio = Math.max(0,Math.min(1,this.ratioFromWorldVector(p_oSprite.getPosition("camera")) * this._a));
	var l_color = sandy.math.ColorMath.hex2rgb(this._c);
	var l_coltr = p_oSprite.__getContainer().GetTransform().colorTransform;
	l_coltr.redOffset = Math.round(l_color.r * l_ratio);
	l_coltr.greenOffset = Math.round(l_color.g * l_ratio);
	l_coltr.blueOffset = Math.round(l_color.b * l_ratio);
	l_coltr.redMultiplier = l_coltr.greenMultiplier = l_coltr.blueMultiplier = 1 - l_ratio;
	p_oSprite.__getContainer().GetTransform().colorTransform = l_coltr;
	this.blurDisplayObjectBy(p_oSprite.__getContainer(),this.prepareBlurAmount(this.blurAmount * l_ratio));
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.fadeFrom = null;
sandy.materials.attributes.MediumAttributes.prototype.fadeTo = null;
sandy.materials.attributes.MediumAttributes.prototype.m_bWasNotBlurred = null;
sandy.materials.attributes.MediumAttributes.prototype.prepareBlurAmount = function(p_nBlurAmount) {
	$s.push("sandy.materials.attributes.MediumAttributes::prepareBlurAmount");
	var $spos = $s.length;
	{
		var $tmp = Math.round(10 * Math.min(255,Math.max(0,p_nBlurAmount))) * 0.1;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.ratioFromWorldVector = function(p_oW) {
	$s.push("sandy.materials.attributes.MediumAttributes::ratioFromWorldVector");
	var $spos = $s.length;
	p_oW.sub(this.fadeFrom);
	{
		var $tmp = p_oW.dot(this._fadeTo) / this._fadeToN2;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.MediumAttributes.prototype.__class__ = sandy.materials.attributes.MediumAttributes;
sandy.materials.WireFrameMaterial = function(p_nThickness,p_nColor,p_nAlpha,p_oAttr) { if( p_nThickness === $_ ) return; {
	$s.push("sandy.materials.WireFrameMaterial::new");
	var $spos = $s.length;
	if(p_nAlpha == null) p_nAlpha = 1.0;
	if(p_nColor == null) p_nColor = 0;
	if(p_nThickness == null) p_nThickness = 1;
	sandy.materials.Material.apply(this,[p_oAttr]);
	this.m_oType = sandy.materials.MaterialType.WIREFRAME;
	this.attributes.attributes.push(new sandy.materials.attributes.LineAttributes(p_nThickness,p_nColor,p_nAlpha));
	$s.pop();
}}
sandy.materials.WireFrameMaterial.__name__ = ["sandy","materials","WireFrameMaterial"];
sandy.materials.WireFrameMaterial.__super__ = sandy.materials.Material;
for(var k in sandy.materials.Material.prototype ) sandy.materials.WireFrameMaterial.prototype[k] = sandy.materials.Material.prototype[k];
sandy.materials.WireFrameMaterial.prototype.renderPolygon = function(p_oScene,p_oPolygon,p_mcContainer) {
	$s.push("sandy.materials.WireFrameMaterial::renderPolygon");
	var $spos = $s.length;
	this.attributes.draw(p_mcContainer.GetGraphics(),p_oPolygon,this,p_oScene);
	$s.pop();
}
sandy.materials.WireFrameMaterial.prototype.__class__ = sandy.materials.WireFrameMaterial;
sandy.core.scenegraph.Shape3D = function(p_sName,p_oGeometry,p_oAppearance,p_bUseSingleContainer) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.scenegraph.Shape3D::new");
	var $spos = $s.length;
	this.aPolygons = new Array();
	this.enableNearClipping = false;
	this.enableClipping = false;
	this.enableForcedDepth = false;
	this.forcedDepth = 0;
	this.m_bEv = false;
	this.m_oGeomCenter = new sandy.core.data.Vector();
	this.m_bBackFaceCulling = true;
	this.m_bClipped = false;
	this.m_bUseSingleContainer = true;
	this.m_nDepth = 0;
	this.m_aToProject = new Array();
	this.m_aVisiblePoly = new Array();
	this.m_bMouseInteractivity = false;
	this.m_bForcedSingleContainer = false;
	this.invModelMatrix = new sandy.core.data.Matrix4();
	if(p_sName == null) p_sName = "";
	if(p_bUseSingleContainer == null) p_bUseSingleContainer = true;
	sandy.core.scenegraph.ATransformable.apply(this,[p_sName]);
	this.m_oContainer = new neash.display.Sprite();
	this.__setGeometry(p_oGeometry);
	this.m_bUseSingleContainer = !p_bUseSingleContainer;
	this.__setUseSingleContainer(p_bUseSingleContainer);
	this.__setAppearance(((p_oAppearance != null)?p_oAppearance:sandy.core.scenegraph.Shape3D.DEFAULT_APPEARANCE));
	this.updateBoundingVolumes();
	$s.pop();
}}
sandy.core.scenegraph.Shape3D.__name__ = ["sandy","core","scenegraph","Shape3D"];
sandy.core.scenegraph.Shape3D.__super__ = sandy.core.scenegraph.ATransformable;
for(var k in sandy.core.scenegraph.ATransformable.prototype ) sandy.core.scenegraph.Shape3D.prototype[k] = sandy.core.scenegraph.ATransformable.prototype[k];
sandy.core.scenegraph.Shape3D.prototype.__destroyPolygons = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__destroyPolygons");
	var $spos = $s.length;
	if(this.aPolygons != null && this.aPolygons.length > 0) {
		var i = 0, l = this.aPolygons.length;
		while(i < l) {
			if(this.__getBroadcaster() != null) this.__getBroadcaster().removeChild(this.aPolygons[i].__getBroadcaster());
			if(this.aPolygons[i] != null) this.aPolygons[i].destroy();
			this.aPolygons[i] = null;
			i++;
		}
	}
	this.aPolygons.splice(0,this.aPolygons.length);
	this.aPolygons = null;
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__generatePolygons = function(p_oGeometry) {
	$s.push("sandy.core.scenegraph.Shape3D::__generatePolygons");
	var $spos = $s.length;
	var i = 0, j = 0, l = p_oGeometry.aFacesVertexID.length;
	this.aPolygons = new Array();
	{
		var _g = 0;
		while(_g < l) {
			var i1 = _g++;
			this.aPolygons[i1] = new sandy.core.data.Polygon(this,p_oGeometry,p_oGeometry.aFacesVertexID[i1],p_oGeometry.aFacesUVCoordsID[i1],i1,i1);
			if(this.m_oAppearance != null) this.aPolygons[(i1)].__setAppearance(this.m_oAppearance);
			this.__getBroadcaster().addChild(this.aPolygons[(i1)].__getBroadcaster());
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getAppearance = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getAppearance");
	var $spos = $s.length;
	{
		var $tmp = this.m_oAppearance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getContainer = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getContainer");
	var $spos = $s.length;
	{
		var $tmp = this.m_oContainer;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getDepth = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getDepth");
	var $spos = $s.length;
	{
		var $tmp = this.m_nDepth;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getEnableBackFaceCulling = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getEnableBackFaceCulling");
	var $spos = $s.length;
	{
		var $tmp = this.m_bBackFaceCulling;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getEnableEvents = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getEnableEvents");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getEnableInteractivity = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getEnableInteractivity");
	var $spos = $s.length;
	{
		var $tmp = this.m_bMouseInteractivity;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getGeometry = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getGeometry");
	var $spos = $s.length;
	{
		var $tmp = this.m_oGeometry;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getGeometryCenter = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getGeometryCenter");
	var $spos = $s.length;
	{
		var $tmp = this.m_oGeomCenter;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getUseSingleContainer = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getUseSingleContainer");
	var $spos = $s.length;
	{
		var $tmp = this.m_bUseSingleContainer;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__getVisiblePolygonsCount = function() {
	$s.push("sandy.core.scenegraph.Shape3D::__getVisiblePolygonsCount");
	var $spos = $s.length;
	{
		var $tmp = this.m_nVisiblePoly;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setAppearance = function(p_oApp) {
	$s.push("sandy.core.scenegraph.Shape3D::__setAppearance");
	var $spos = $s.length;
	this.m_oAppearance = p_oApp;
	if(this.m_oGeometry != null) {
		{
			var _g = 0, _g1 = this.aPolygons;
			while(_g < _g1.length) {
				var v = _g1[_g];
				++_g;
				v.__setAppearance(this.m_oAppearance);
			}
		}
	}
	{
		$s.pop();
		return p_oApp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setDepth = function(p_nDepth) {
	$s.push("sandy.core.scenegraph.Shape3D::__setDepth");
	var $spos = $s.length;
	{
		$s.pop();
		return p_nDepth;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setEnableBackFaceCulling = function(b) {
	$s.push("sandy.core.scenegraph.Shape3D::__setEnableBackFaceCulling");
	var $spos = $s.length;
	if(b != this.m_bBackFaceCulling) {
		this.m_bBackFaceCulling = b;
		this.changed = true;
	}
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setEnableEvents = function(b) {
	$s.push("sandy.core.scenegraph.Shape3D::__setEnableEvents");
	var $spos = $s.length;
	var v = null;
	if(b) {
		if(!this.m_bEv) {
			if(this.m_bUseSingleContainer == false) {
				{
					var _g = 0, _g1 = this.aPolygons;
					while(_g < _g1.length) {
						var v1 = _g1[_g];
						++_g;
						v1.__setEnableEvents(true);
					}
				}
			}
			else {
				this.m_oContainer.addEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.ROLL_OVER,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.ROLL_OUT,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onInteraction"));
				this.m_oContainer.addEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onInteraction"));
			}
		}
	}
	else if(!b && this.m_bEv) {
		if(this.m_bUseSingleContainer == false) {
			{
				var _g = 0, _g1 = this.aPolygons;
				while(_g < _g1.length) {
					var v1 = _g1[_g];
					++_g;
					v1.__setEnableEvents(false);
				}
			}
		}
		else {
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.ROLL_OVER,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.ROLL_OUT,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onInteraction"));
			this.m_oContainer.removeEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onInteraction"));
		}
	}
	this.m_bEv = b;
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setEnableInteractivity = function(p_bState) {
	$s.push("sandy.core.scenegraph.Shape3D::__setEnableInteractivity");
	var $spos = $s.length;
	if(p_bState != this.m_bMouseInteractivity) {
		if(p_bState) {
			if(this.m_bUseSingleContainer == true) {
				this.m_bUseSingleContainer = false;
				this.m_bForcedSingleContainer = true;
			}
		}
		else {
			if(this.m_bForcedSingleContainer == true) {
				this.__setUseSingleContainer(true);
				this.m_bForcedSingleContainer = false;
			}
		}
		{
			var _g = 0, _g1 = this.aPolygons;
			while(_g < _g1.length) {
				var l_oPolygon = _g1[_g];
				++_g;
				l_oPolygon.__setEnableInteractivity(p_bState);
			}
		}
		this.m_bMouseInteractivity = p_bState;
	}
	{
		$s.pop();
		return p_bState;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setGeometry = function(p_geometry) {
	$s.push("sandy.core.scenegraph.Shape3D::__setGeometry");
	var $spos = $s.length;
	if(p_geometry == null) {
		$s.pop();
		return null;
	}
	this.m_oGeometry = p_geometry;
	this.updateBoundingVolumes();
	this.m_oGeometry.generateFaceNormals();
	this.m_oGeometry.generateVertexNormals();
	this.__destroyPolygons();
	this.__generatePolygons(this.m_oGeometry);
	{
		$s.pop();
		return p_geometry;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setGeometryCenter = function(p_oGeomCenter) {
	$s.push("sandy.core.scenegraph.Shape3D::__setGeometryCenter");
	var $spos = $s.length;
	var l_oDiff = p_oGeomCenter.clone();
	l_oDiff.sub(this.m_oGeomCenter);
	if(this.m_oGeometry != null) {
		{
			var _g = 0, _g1 = this.m_oGeometry.aVertex;
			while(_g < _g1.length) {
				var l_oVertex = _g1[_g];
				++_g;
				l_oVertex.x += l_oDiff.x;
				l_oVertex.y += l_oDiff.y;
				l_oVertex.z += l_oDiff.z;
			}
		}
	}
	this.m_oGeomCenter.copy(p_oGeomCenter);
	this.updateBoundingVolumes();
	{
		$s.pop();
		return p_oGeomCenter;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.__setUseSingleContainer = function(p_bUseSingleContainer) {
	$s.push("sandy.core.scenegraph.Shape3D::__setUseSingleContainer");
	var $spos = $s.length;
	var l_oFace;
	if(p_bUseSingleContainer == this.m_bUseSingleContainer) {
		$s.pop();
		return p_bUseSingleContainer;
	}
	if(p_bUseSingleContainer) {
		{
			var _g = 0, _g1 = this.aPolygons;
			while(_g < _g1.length) {
				var l_oFace1 = _g1[_g];
				++_g;
				if(l_oFace1.__getContainer().GetParent() != null) {
					l_oFace1.__getContainer().GetGraphics().clear();
					l_oFace1.__getContainer().GetParent().removeChild(l_oFace1.__getContainer());
					this.__getBroadcaster().removeChild(l_oFace1.__getBroadcaster());
				}
			}
		}
	}
	else {
		if(this.m_oContainer.GetParent() != null) {
			this.m_oContainer.GetGraphics().clear();
			this.m_oContainer.GetParent().removeChild(this.m_oContainer);
		}
		{
			var _g = 0, _g1 = this.aPolygons;
			while(_g < _g1.length) {
				var l_oFace1 = _g1[_g];
				++_g;
				this.__getBroadcaster().addChild(l_oFace1.__getBroadcaster());
				l_oFace1.__getContainer().GetGraphics().clear();
			}
		}
	}
	this.m_bUseSingleContainer = p_bUseSingleContainer;
	{
		$s.pop();
		return p_bUseSingleContainer;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype._onInteraction = function(p_oEvt) {
	$s.push("sandy.core.scenegraph.Shape3D::_onInteraction");
	var $spos = $s.length;
	var l_oClick = new canvas.geom.Point(this.m_oContainer.GetMouseX(),this.m_oContainer.GetMouseY());
	var l_oA = new canvas.geom.Point(), l_oB = new canvas.geom.Point(), l_oC = new canvas.geom.Point();
	var l_oPoly;
	var l_aSId = this.aPolygons.sortOn("m_nDepth",Array.NUMERIC | Array.RETURNINDEXEDARRAY);
	var l = this.aPolygons.length, j;
	{
		var _g = 0;
		while(_g < l) {
			var j1 = _g++;
			l_oPoly = this.aPolygons[l_aSId[j1]];
			if(!l_oPoly.visible && this.m_bBackFaceCulling) continue;
			var l_nSize = l_oPoly.vertices.length;
			var l_nTriangles = l_nSize - 2;
			{
				var _g1 = 0;
				while(_g1 < l_nTriangles) {
					var i = _g1++;
					l_oA.x = l_oPoly.vertices[i].sx;
					l_oA.y = l_oPoly.vertices[i].sy;
					l_oB.x = l_oPoly.vertices[i + 1].sx;
					l_oB.y = l_oPoly.vertices[i + 1].sy;
					l_oC.x = l_oPoly.vertices[(i + 2) % l_nSize].sx;
					l_oC.y = l_oPoly.vertices[(i + 2) % l_nSize].sy;
					if(sandy.math.IntersectionMath.isPointInTriangle2D(l_oClick,l_oA,l_oB,l_oC)) {
						var l_oUV = l_oPoly.getUVFrom2D(l_oClick);
						var l_oPt3d = l_oPoly.get3DFrom2D(l_oClick);
						this.m_oEB.broadcastEvent(new sandy.events.Shape3DEvent(p_oEvt.type,this,l_oPoly,l_oUV,l_oPt3d,p_oEvt));
						{
							$s.pop();
							return;
						}
					}
				}
			}
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.aPolygons = null;
sandy.core.scenegraph.Shape3D.prototype.appearance = null;
sandy.core.scenegraph.Shape3D.prototype.clear = function() {
	$s.push("sandy.core.scenegraph.Shape3D::clear");
	var $spos = $s.length;
	if(this.m_oContainer != null) this.m_oContainer.GetGraphics().clear();
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.clone = function(p_sName,p_bKeepTransform) {
	$s.push("sandy.core.scenegraph.Shape3D::clone");
	var $spos = $s.length;
	if(p_sName == null) p_sName = "";
	if(p_bKeepTransform == null) p_bKeepTransform = false;
	var l_oClone = new sandy.core.scenegraph.Shape3D(p_sName,this.__getGeometry().clone(),this.__getAppearance(),this.m_bUseSingleContainer);
	if(p_bKeepTransform == true) l_oClone.__setMatrix(this.__getMatrix());
	{
		$s.pop();
		return l_oClone;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.container = null;
sandy.core.scenegraph.Shape3D.prototype.cull = function(p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged) {
	$s.push("sandy.core.scenegraph.Shape3D::cull");
	var $spos = $s.length;
	sandy.core.scenegraph.ATransformable.prototype.cull.apply(this,[p_oScene,p_oFrustum,p_oViewMatrix,p_bChanged]);
	if(this.culled == sandy.view.Frustum.OUTSIDE) {
		$s.pop();
		return;
	}
	if(!this.boundingSphere.uptodate) this.boundingSphere.transform(this.viewMatrix);
	this.culled = p_oFrustum.sphereInFrustum(this.boundingSphere);
	if(this.culled == sandy.view.Frustum.INTERSECT && this.boundingBox != null) {
		if(!this.boundingBox.uptodate) this.boundingBox.transform(this.viewMatrix);
		this.culled = p_oFrustum.boxInFrustum(this.boundingBox);
	}
	this.m_bClipped = ((this.culled == sandy.view.CullingState.INTERSECT) && (this.enableClipping || this.enableNearClipping));
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.depth = null;
sandy.core.scenegraph.Shape3D.prototype.destroy = function() {
	$s.push("sandy.core.scenegraph.Shape3D::destroy");
	var $spos = $s.length;
	this.m_oGeometry.dispose();
	this.clear();
	if(this.m_oContainer.GetParent() != null) this.m_oContainer.GetParent().removeChild(this.m_oContainer);
	if(this.m_oContainer != null) this.m_oContainer = null;
	this.__destroyPolygons();
	sandy.core.scenegraph.ATransformable.prototype.destroy.apply(this,[]);
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.display = function(p_oScene,p_oContainer) {
	$s.push("sandy.core.scenegraph.Shape3D::display");
	var $spos = $s.length;
	this.m_aVisiblePoly.sort(function(a,b) {
		$s.push("sandy.core.scenegraph.Shape3D::display@457");
		var $spos = $s.length;
		{
			var $tmp = (a.__getDepth() > b.__getDepth()?1:(a.__getDepth() < b.__getDepth()?-1:0));
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	{
		var _g = 0, _g1 = this.m_aVisiblePoly;
		while(_g < _g1.length) {
			var l_oPoly = _g1[_g];
			++_g;
			l_oPoly.display(p_oScene,this.m_oContainer);
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.enableBackFaceCulling = null;
sandy.core.scenegraph.Shape3D.prototype.enableClipping = null;
sandy.core.scenegraph.Shape3D.prototype.enableEvents = null;
sandy.core.scenegraph.Shape3D.prototype.enableForcedDepth = null;
sandy.core.scenegraph.Shape3D.prototype.enableInteractivity = null;
sandy.core.scenegraph.Shape3D.prototype.enableNearClipping = null;
sandy.core.scenegraph.Shape3D.prototype.forcedDepth = null;
sandy.core.scenegraph.Shape3D.prototype.geometry = null;
sandy.core.scenegraph.Shape3D.prototype.geometryCenter = null;
sandy.core.scenegraph.Shape3D.prototype.invModelMatrix = null;
sandy.core.scenegraph.Shape3D.prototype.m_aToProject = null;
sandy.core.scenegraph.Shape3D.prototype.m_aVisiblePoly = null;
sandy.core.scenegraph.Shape3D.prototype.m_bBackFaceCulling = null;
sandy.core.scenegraph.Shape3D.prototype.m_bClipped = null;
sandy.core.scenegraph.Shape3D.prototype.m_bEv = null;
sandy.core.scenegraph.Shape3D.prototype.m_bForcedSingleContainer = null;
sandy.core.scenegraph.Shape3D.prototype.m_bMouseInteractivity = null;
sandy.core.scenegraph.Shape3D.prototype.m_bUseSingleContainer = null;
sandy.core.scenegraph.Shape3D.prototype.m_nDepth = null;
sandy.core.scenegraph.Shape3D.prototype.m_nVisiblePoly = null;
sandy.core.scenegraph.Shape3D.prototype.m_oAppearance = null;
sandy.core.scenegraph.Shape3D.prototype.m_oContainer = null;
sandy.core.scenegraph.Shape3D.prototype.m_oGeomCenter = null;
sandy.core.scenegraph.Shape3D.prototype.m_oGeometry = null;
sandy.core.scenegraph.Shape3D.prototype.render = function(p_oScene,p_oCamera) {
	$s.push("sandy.core.scenegraph.Shape3D::render");
	var $spos = $s.length;
	if(this.m_oAppearance == null) {
		$s.pop();
		return;
	}
	var m11, m21, m31, m12, m22, m32, m13, m23, m33, m14, m24, m34, x, y, z, tx, ty, tz;
	var l_nZNear = p_oCamera.__getNear(), l_aPoints = this.m_oGeometry.aVertex, l_oMatrix = this.viewMatrix, l_oFrustum = p_oCamera.frustrum, l_aVertexNormals = this.m_oGeometry.aVertexNormals, l_oVertexNormal, l_oVertex, l_oFace, l_nMinZ;
	l_oMatrix = this.viewMatrix;
	m11 = l_oMatrix.n11;
	m21 = l_oMatrix.n21;
	m31 = l_oMatrix.n31;
	m12 = l_oMatrix.n12;
	m22 = l_oMatrix.n22;
	m32 = l_oMatrix.n32;
	m13 = l_oMatrix.n13;
	m23 = l_oMatrix.n23;
	m33 = l_oMatrix.n33;
	m14 = l_oMatrix.n14;
	m24 = l_oMatrix.n24;
	m34 = l_oMatrix.n34;
	{
		var _g = 0;
		while(_g < l_aPoints.length) {
			var l_oVertex1 = l_aPoints[_g];
			++_g;
			l_oVertex1.wx = (x = l_oVertex1.x) * m11 + (y = l_oVertex1.y) * m12 + (z = l_oVertex1.z) * m13 + m14;
			l_oVertex1.wy = x * m21 + y * m22 + z * m23 + m24;
			l_oVertex1.wz = x * m31 + y * m32 + z * m33 + m34;
			l_oVertex1.projected = false;
		}
	}
	this.m_aVisiblePoly = [];
	this.m_nVisiblePoly = 0;
	this.m_nDepth = 0;
	{
		var _g = 0, _g1 = this.aPolygons;
		while(_g < _g1.length) {
			var l_oFace1 = _g1[_g];
			++_g;
			l_oFace1.isClipped = false;
			x = l_oFace1.normal.x;
			y = l_oFace1.normal.y;
			z = l_oFace1.normal.z;
			tx = x * m11 + y * m12 + z * m13;
			ty = x * m21 + y * m22 + z * m23;
			tz = x * m31 + y * m32 + z * m33;
			x = l_oFace1.a.wx * tx + l_oFace1.a.wy * ty + l_oFace1.a.wz * tz;
			l_oFace1.visible = x < 0;
			if(l_oFace1.visible || !this.m_bBackFaceCulling) {
				l_oFace1.precompute();
				l_nMinZ = l_oFace1.minZ;
				if(this.m_bClipped && this.enableClipping) {
					l_oFace1.clip(l_oFrustum);
					if(l_oFace1.cvertices.length > 2) {
						p_oCamera.projectArray(l_oFace1.cvertices);
						if(!this.enableForcedDepth) this.m_nDepth += l_oFace1.m_nDepth;
						else l_oFace1.__setDepth(this.forcedDepth);
						this.m_aVisiblePoly[(this.m_nVisiblePoly++)] = l_oFace1;
					}
				}
				else if(this.enableNearClipping && l_nMinZ < l_nZNear) {
					l_oFace1.clipFrontPlane(l_oFrustum);
					if(l_oFace1.cvertices.length > 2) {
						p_oCamera.projectArray(l_oFace1.cvertices);
						if(!this.enableForcedDepth) this.m_nDepth += l_oFace1.m_nDepth;
						else l_oFace1.__setDepth(this.forcedDepth);
						this.m_aVisiblePoly[(this.m_nVisiblePoly++)] = l_oFace1;
					}
				}
				else if(l_nMinZ >= l_nZNear) {
					p_oCamera.projectArray(l_oFace1.vertices);
					if(!this.enableForcedDepth) this.m_nDepth += l_oFace1.m_nDepth;
					else l_oFace1.__setDepth(this.forcedDepth);
					this.m_aVisiblePoly[(this.m_nVisiblePoly++)] = l_oFace1;
				}
				else continue;
				if(l_oFace1.hasAppearanceChanged) {
					if(p_oScene.materialManager.isRegistered(l_oFace1.__getAppearance().__getFrontMaterial()) == false) {
						p_oScene.materialManager.register(l_oFace1.__getAppearance().__getFrontMaterial());
					}
					if(l_oFace1.__getAppearance().__getFrontMaterial() != l_oFace1.__getAppearance().__getBackMaterial()) {
						if(p_oScene.materialManager.isRegistered(l_oFace1.__getAppearance().__getBackMaterial()) == false) {
							p_oScene.materialManager.register(l_oFace1.__getAppearance().__getBackMaterial());
						}
					}
					l_oFace1.hasAppearanceChanged = false;
				}
			}
		}
	}
	if(this.m_bUseSingleContainer) {
		if(this.enableForcedDepth) this.m_nDepth = this.forcedDepth;
		else this.m_nDepth /= this.m_aVisiblePoly.length;
		p_oCamera.addToDisplayList(this);
	}
	else {
		p_oCamera.addArrayToDisplayList((this.m_aVisiblePoly));
	}
	var l_nFlags = this.__getAppearance().__getFlags();
	if(l_nFlags == 0) {
		$s.pop();
		return;
	}
	var i;
	l_oMatrix = this.modelMatrix;
	m11 = l_oMatrix.n11;
	m21 = l_oMatrix.n21;
	m31 = l_oMatrix.n31;
	m12 = l_oMatrix.n12;
	m22 = l_oMatrix.n22;
	m32 = l_oMatrix.n32;
	m13 = l_oMatrix.n13;
	m23 = l_oMatrix.n23;
	m33 = l_oMatrix.n33;
	if((this.__getAppearance().__getFlags() & sandy.core.SandyFlags.POLYGON_NORMAL_WORLD) > 0) {
		{
			var _g = 0, _g1 = this.m_aVisiblePoly;
			while(_g < _g1.length) {
				var l_oPoly = _g1[_g];
				++_g;
				l_oVertex = l_oPoly.normal;
				l_oVertex.wx = (x = l_oVertex.x) * m11 + (y = l_oVertex.y) * m12 + (z = l_oVertex.z) * m13;
				l_oVertex.wy = x * m21 + y * m22 + z * m23;
				l_oVertex.wz = x * m31 + y * m32 + z * m33;
			}
		}
	}
	if((this.__getAppearance().__getFlags() & sandy.core.SandyFlags.VERTEX_NORMAL_WORLD) > 0) {
		i = this.m_oGeometry.aVertexNormals.length;
		while(--i > -1) {
			if(this.m_oGeometry.aVertex[(i)].projected) {
				l_oVertex = this.m_oGeometry.aVertexNormals[(i)];
				l_oVertex.wx = (x = l_oVertex.x) * m11 + (y = l_oVertex.y) * m12 + (z = l_oVertex.z) * m13;
				l_oVertex.wy = x * m21 + y * m22 + z * m23;
				l_oVertex.wz = x * m31 + y * m32 + z * m33;
			}
		}
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.swapCulling = function() {
	$s.push("sandy.core.scenegraph.Shape3D::swapCulling");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.aPolygons;
		while(_g < _g1.length) {
			var v = _g1[_g];
			++_g;
			v.swapCulling();
		}
	}
	this.changed = true;
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.toString = function() {
	$s.push("sandy.core.scenegraph.Shape3D::toString");
	var $spos = $s.length;
	{
		var $tmp = "sandy.core.scenegraph.Shape3D" + " " + this.m_oGeometry.toString();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.updateBoundingVolumes = function() {
	$s.push("sandy.core.scenegraph.Shape3D::updateBoundingVolumes");
	var $spos = $s.length;
	if(this.m_oGeometry != null) {
		this.boundingSphere = sandy.bounds.BSphere.create(this.m_oGeometry.aVertex);
		this.boundingBox = sandy.bounds.BBox.create(this.m_oGeometry.aVertex);
	}
	$s.pop();
}
sandy.core.scenegraph.Shape3D.prototype.useSingleContainer = null;
sandy.core.scenegraph.Shape3D.prototype.__class__ = sandy.core.scenegraph.Shape3D;
sandy.core.scenegraph.Shape3D.__interfaces__ = [sandy.core.scenegraph.IDisplayable];
Reflect = function() { }
Reflect.__name__ = ["Reflect"];
Reflect.hasField = function(o,field) {
	$s.push("Reflect::hasField");
	var $spos = $s.length;
	if(o.hasOwnProperty != null) {
		var $tmp = o.hasOwnProperty(field);
		$s.pop();
		return $tmp;
	}
	var arr = Reflect.fields(o);
	{ var $it74 = arr.iterator();
	while( $it74.hasNext() ) { var t = $it74.next();
	if(t == field) {
		$s.pop();
		return true;
	}
	}}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
Reflect.field = function(o,field) {
	$s.push("Reflect::field");
	var $spos = $s.length;
	var v = null;
	try {
		v = o[field];
	}
	catch( $e75 ) {
		{
			var e = $e75;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				null;
			}
		}
	}
	{
		$s.pop();
		return v;
	}
	$s.pop();
}
Reflect.setField = function(o,field,value) {
	$s.push("Reflect::setField");
	var $spos = $s.length;
	o[field] = value;
	$s.pop();
}
Reflect.callMethod = function(o,func,args) {
	$s.push("Reflect::callMethod");
	var $spos = $s.length;
	{
		var $tmp = func.apply(o,args);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Reflect.fields = function(o) {
	$s.push("Reflect::fields");
	var $spos = $s.length;
	if(o == null) {
		var $tmp = new Array();
		$s.pop();
		return $tmp;
	}
	var a = new Array();
	if(o.hasOwnProperty) {
		
					for(var i in o)
						if( o.hasOwnProperty(i) )
							a.push(i);
				;
	}
	else {
		var t;
		try {
			t = o.__proto__;
		}
		catch( $e76 ) {
			{
				var e = $e76;
				{
					$e = [];
					while($s.length >= $spos) $e.unshift($s.pop());
					$s.push($e[0]);
					t = null;
				}
			}
		}
		if(t != null) o.__proto__ = null;
		
					for(var i in o)
						if( i != "__proto__" )
							a.push(i);
				;
		if(t != null) o.__proto__ = t;
	}
	{
		$s.pop();
		return a;
	}
	$s.pop();
}
Reflect.isFunction = function(f) {
	$s.push("Reflect::isFunction");
	var $spos = $s.length;
	{
		var $tmp = typeof(f) == "function" && f.__name__ == null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Reflect.compare = function(a,b) {
	$s.push("Reflect::compare");
	var $spos = $s.length;
	{
		var $tmp = ((a == b)?0:((((a) > (b))?1:-1)));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Reflect.compareMethods = function(f1,f2) {
	$s.push("Reflect::compareMethods");
	var $spos = $s.length;
	if(f1 == f2) {
		$s.pop();
		return true;
	}
	if(!Reflect.isFunction(f1) || !Reflect.isFunction(f2)) {
		$s.pop();
		return false;
	}
	{
		var $tmp = f1.scope == f2.scope && f1.method == f2.method && f1.method != null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Reflect.isObject = function(v) {
	$s.push("Reflect::isObject");
	var $spos = $s.length;
	if(v == null) {
		$s.pop();
		return false;
	}
	var t = typeof(v);
	{
		var $tmp = (t == "string" || (t == "object" && !v.__enum__) || (t == "function" && v.__name__ != null));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Reflect.deleteField = function(o,f) {
	$s.push("Reflect::deleteField");
	var $spos = $s.length;
	if(!Reflect.hasField(o,f)) {
		$s.pop();
		return false;
	}
	delete(o[f]);
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
Reflect.copy = function(o) {
	$s.push("Reflect::copy");
	var $spos = $s.length;
	var o2 = { }
	{
		var _g = 0, _g1 = Reflect.fields(o);
		while(_g < _g1.length) {
			var f = _g1[_g];
			++_g;
			o2[f] = Reflect.field(o,f);
		}
	}
	{
		$s.pop();
		return o2;
	}
	$s.pop();
}
Reflect.makeVarArgs = function(f) {
	$s.push("Reflect::makeVarArgs");
	var $spos = $s.length;
	{
		var $tmp = function() {
			$s.push("Reflect::makeVarArgs@345");
			var $spos = $s.length;
			var a = new Array();
			{
				var _g1 = 0, _g = arguments.length;
				while(_g1 < _g) {
					var i = _g1++;
					a.push(arguments[i]);
				}
			}
			{
				var $tmp = f(a);
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Reflect.prototype.__class__ = Reflect;
xpath.parser.ParserOutput = function(result,getNextInputCallback) { if( result === $_ ) return; {
	$s.push("xpath.parser.ParserOutput::new");
	var $spos = $s.length;
	this.result = result;
	this.getNextInputCallback = getNextInputCallback;
	$s.pop();
}}
xpath.parser.ParserOutput.__name__ = ["xpath","parser","ParserOutput"];
xpath.parser.ParserOutput.prototype.getNextInput = function() {
	$s.push("xpath.parser.ParserOutput::getNextInput");
	var $spos = $s.length;
	if(this.getNextInputCallback != null) {
		var $tmp = this.getNextInputCallback();
		$s.pop();
		return $tmp;
	}
	else throw new xpath.parser.ParseError("Unexpected end of query");
	$s.pop();
}
xpath.parser.ParserOutput.prototype.getNextInputCallback = null;
xpath.parser.ParserOutput.prototype.isComplete = function() {
	$s.push("xpath.parser.ParserOutput::isComplete");
	var $spos = $s.length;
	{
		var $tmp = this.getNextInputCallback == null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.ParserOutput.prototype.result = null;
xpath.parser.ParserOutput.prototype.__class__ = xpath.parser.ParserOutput;
xpath.tokenizer.TokenizerInput = function(query,position) { if( query === $_ ) return; {
	$s.push("xpath.tokenizer.TokenizerInput::new");
	var $spos = $s.length;
	if(position == null) position = 0;
	this.query = query;
	this.position = position;
	$s.pop();
}}
xpath.tokenizer.TokenizerInput.__name__ = ["xpath","tokenizer","TokenizerInput"];
xpath.tokenizer.TokenizerInput.prototype.getOutput = function(result,characterLength) {
	$s.push("xpath.tokenizer.TokenizerInput::getOutput");
	var $spos = $s.length;
	var nextInput = null;
	if(characterLength == null) {
		characterLength = this.query.length - this.position;
	}
	else {
		nextInput = new xpath.tokenizer.TokenizerInput(this.query,this.position + characterLength);
	}
	{
		var $tmp = new xpath.tokenizer.TokenizerOutput(result,characterLength,nextInput);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.TokenizerInput.prototype.position = null;
xpath.tokenizer.TokenizerInput.prototype.query = null;
xpath.tokenizer.TokenizerInput.prototype.__class__ = xpath.tokenizer.TokenizerInput;
sandy.core.SceneLocator = function(access) { if( access === $_ ) return; {
	$s.push("sandy.core.SceneLocator::new");
	var $spos = $s.length;
	this._m = new Hash();
	$s.pop();
}}
sandy.core.SceneLocator.__name__ = ["sandy","core","SceneLocator"];
sandy.core.SceneLocator._oI = null;
sandy.core.SceneLocator.getInstance = function() {
	$s.push("sandy.core.SceneLocator::getInstance");
	var $spos = $s.length;
	if(sandy.core.SceneLocator._oI == null) sandy.core.SceneLocator._oI = new sandy.core.SceneLocator(new sandy.core.PrivateConstructorAccess());
	{
		var $tmp = sandy.core.SceneLocator._oI;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.SceneLocator.prototype._m = null;
sandy.core.SceneLocator.prototype.getScene = function(key) {
	$s.push("sandy.core.SceneLocator::getScene");
	var $spos = $s.length;
	if(!(this.isRegistered(key))) haxe.Log.trace("Can't locate scene instance with '" + key + "' name in " + this,{ fileName : "SceneLocator.hx", lineNumber : 69, className : "sandy.core.SceneLocator", methodName : "getScene"});
	{
		var $tmp = this._m.get(key);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.SceneLocator.prototype.isRegistered = function(key) {
	$s.push("sandy.core.SceneLocator::isRegistered");
	var $spos = $s.length;
	{
		var $tmp = this._m.get(key) != null;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.SceneLocator.prototype.registerScene = function(key,o) {
	$s.push("sandy.core.SceneLocator::registerScene");
	var $spos = $s.length;
	if(this.isRegistered(key)) {
		haxe.Log.trace("scene instance is already registered with '" + key + "' name in " + this,{ fileName : "SceneLocator.hx", lineNumber : 95, className : "sandy.core.SceneLocator", methodName : "registerScene"});
		{
			$s.pop();
			return false;
		}
	}
	else {
		this._m.set(key,o);
		{
			$s.pop();
			return true;
		}
	}
	$s.pop();
}
sandy.core.SceneLocator.prototype.unregisterScene = function(key) {
	$s.push("sandy.core.SceneLocator::unregisterScene");
	var $spos = $s.length;
	this._m.remove(key);
	$s.pop();
}
sandy.core.SceneLocator.prototype.__class__ = sandy.core.SceneLocator;
sandy.core.PrivateConstructorAccess = function(p) { if( p === $_ ) return; {
	$s.push("sandy.core.PrivateConstructorAccess::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
sandy.core.PrivateConstructorAccess.__name__ = ["sandy","core","PrivateConstructorAccess"];
sandy.core.PrivateConstructorAccess.prototype.__class__ = sandy.core.PrivateConstructorAccess;
xpath.expression.Negation = function(operand) { if( operand === $_ ) return; {
	$s.push("xpath.expression.Negation::new");
	var $spos = $s.length;
	this.operand = operand;
	$s.pop();
}}
xpath.expression.Negation.__name__ = ["xpath","expression","Negation"];
xpath.expression.Negation.prototype.evaluate = function(context) {
	$s.push("xpath.expression.Negation::evaluate");
	var $spos = $s.length;
	var operandValue = this.operand.evaluate(context);
	{
		var $tmp = new xpath.value.XPathNumber(-operandValue.getFloat());
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.expression.Negation.prototype.operand = null;
xpath.expression.Negation.prototype.__class__ = xpath.expression.Negation;
xpath.expression.Negation.__interfaces__ = [xpath.expression.Expression];
xpath.parser.OperandParser = function(p) { if( p === $_ ) return; {
	$s.push("xpath.parser.OperandParser::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.parser.OperandParser.__name__ = ["xpath","parser","OperandParser"];
xpath.parser.OperandParser.instance = null;
xpath.parser.OperandParser.getInstance = function() {
	$s.push("xpath.parser.OperandParser::getInstance");
	var $spos = $s.length;
	if(xpath.parser.OperandParser.instance == null) xpath.parser.OperandParser.instance = new xpath.parser.OperandParser();
	{
		var $tmp = xpath.parser.OperandParser.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.parser.OperandParser.prototype.parse = function(input) {
	$s.push("xpath.parser.OperandParser::parse");
	var $spos = $s.length;
	if(!input.hasNext()) {
		$s.pop();
		return null;
	}
	var token = input.next();
	if(Std["is"](token,xpath.tokenizer.NegationOperatorToken)) {
		var output = this.parse(input);
		input = output.getNextInput();
		var result = new xpath.expression.Negation(output.result);
		{
			var $tmp = input.getOutput(input.count,result);
			$s.pop();
			return $tmp;
		}
	}
	else if(Std["is"](token,xpath.tokenizer.LiteralToken)) {
		var result = new xpath.expression.Literal(function($this) {
			var $r;
			var tmp = token;
			$r = (Std["is"](tmp,xpath.tokenizer.LiteralToken)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).value);
		{
			var $tmp = input.getOutput(input.count,result);
			$s.pop();
			return $tmp;
		}
	}
	else if(Std["is"](token,xpath.tokenizer.NumberToken)) {
		var result = new xpath.expression.Number(function($this) {
			var $r;
			var tmp = token;
			$r = (Std["is"](tmp,xpath.tokenizer.NumberToken)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).value);
		{
			var $tmp = input.getOutput(input.count,result);
			$s.pop();
			return $tmp;
		}
	}
	else if(Std["is"](token,xpath.tokenizer.VariableReferenceToken)) {
		var result = new xpath.expression.VariableReference(function($this) {
			var $r;
			var tmp = token;
			$r = (Std["is"](tmp,xpath.tokenizer.VariableReferenceToken)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this).name);
		{
			var $tmp = input.getOutput(input.count,result);
			$s.pop();
			return $tmp;
		}
	}
	else {
		input.restart();
		var output = xpath.parser.PathParser.getInstance().parse(input.descend());
		if(output == null) {
			output = xpath.parser.GroupParser.getInstance().parse(input.descend());
		}
		if(output == null) {
			output = xpath.parser.FunctionCallParser.getInstance().parse(input.descend());
		}
		{
			$s.pop();
			return output;
		}
	}
	$s.pop();
}
xpath.parser.OperandParser.prototype.__class__ = xpath.parser.OperandParser;
xpath.parser.OperandParser.__interfaces__ = [xpath.parser.Parser];
neash.events.MouseEvent = function(type,bubbles,cancelable,in_localX,in_localY,in_relatedObject,in_ctrlKey,in_altKey,in_shiftKey,in_buttonDown,in_delta) { if( type === $_ ) return; {
	$s.push("neash.events.MouseEvent::new");
	var $spos = $s.length;
	neash.events.Event.apply(this,[type,bubbles,cancelable]);
	this.shiftKey = (in_shiftKey == null?false:in_shiftKey);
	this.altKey = (in_altKey == null?false:in_altKey);
	this.ctrlKey = (in_ctrlKey == null?false:in_ctrlKey);
	bubbles = (in_buttonDown == null?false:in_buttonDown);
	this.relatedObject = in_relatedObject;
	this.delta = (in_delta == null?0:in_delta);
	this.localX = (in_localX == null?0:in_localX);
	this.localY = (in_localY == null?0:in_localY);
	this.buttonDown = (in_buttonDown == null?false:in_buttonDown);
	$s.pop();
}}
neash.events.MouseEvent.__name__ = ["neash","events","MouseEvent"];
neash.events.MouseEvent.__super__ = neash.events.Event;
for(var k in neash.events.Event.prototype ) neash.events.MouseEvent.prototype[k] = neash.events.Event.prototype[k];
neash.events.MouseEvent.prototype.GetMouseX = function() {
	$s.push("neash.events.MouseEvent::GetMouseX");
	var $spos = $s.length;
	{
		var $tmp = canvas.Manager.SmouseX();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.MouseEvent.prototype.GetMouseY = function() {
	$s.push("neash.events.MouseEvent::GetMouseY");
	var $spos = $s.length;
	{
		var $tmp = canvas.Manager.SmouseY();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.events.MouseEvent.prototype.altKey = null;
neash.events.MouseEvent.prototype.buttonDown = null;
neash.events.MouseEvent.prototype.ctrlKey = null;
neash.events.MouseEvent.prototype.delta = null;
neash.events.MouseEvent.prototype.localX = null;
neash.events.MouseEvent.prototype.localY = null;
neash.events.MouseEvent.prototype.relatedObject = null;
neash.events.MouseEvent.prototype.shiftKey = null;
neash.events.MouseEvent.prototype.stageX = null;
neash.events.MouseEvent.prototype.stageY = null;
neash.events.MouseEvent.prototype.updateAfterEvent = function() {
	$s.push("neash.events.MouseEvent::updateAfterEvent");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.events.MouseEvent.prototype.__class__ = neash.events.MouseEvent;
xpath.context.Context = function(node,position,size,environment) { if( node === $_ ) return; {
	$s.push("xpath.context.Context::new");
	var $spos = $s.length;
	this.node = node;
	this.position = position;
	this.size = size;
	this.environment = environment;
	$s.pop();
}}
xpath.context.Context.__name__ = ["xpath","context","Context"];
xpath.context.Context.prototype.callFunction = function(name,parameters) {
	$s.push("xpath.context.Context::callFunction");
	var $spos = $s.length;
	if(parameters == null) parameters = new Array();
	{
		var $tmp = this.environment.callFunction(this,name,parameters);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.Context.prototype.environment = null;
xpath.context.Context.prototype.getVariable = function(name) {
	$s.push("xpath.context.Context::getVariable");
	var $spos = $s.length;
	{
		var $tmp = this.environment.getVariable(name);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.Context.prototype.node = null;
xpath.context.Context.prototype.position = null;
xpath.context.Context.prototype.size = null;
xpath.context.Context.prototype.__class__ = xpath.context.Context;
neash.events.EventPhase = function() { }
neash.events.EventPhase.__name__ = ["neash","events","EventPhase"];
neash.events.EventPhase.prototype.__class__ = neash.events.EventPhase;
neash.swf.ScaledFont = function(inFont,inHeight) { if( inFont === $_ ) return; {
	$s.push("neash.swf.ScaledFont::new");
	var $spos = $s.length;
	this.mFont = inFont;
	this.mHeight = inHeight;
	this.mScale = inHeight / 1024.0;
	this.mMatrix = new canvas.geom.Matrix();
	this.mMatrix.scale(this.mScale,this.mScale);
	this.mAscent = this.GetAscent();
	$s.pop();
}}
neash.swf.ScaledFont.__name__ = ["neash","swf","ScaledFont"];
neash.swf.ScaledFont.prototype.CanRenderOutline = function() {
	$s.push("neash.swf.ScaledFont::CanRenderOutline");
	var $spos = $s.length;
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.CanRenderSolid = function() {
	$s.push("neash.swf.ScaledFont::CanRenderSolid");
	var $spos = $s.length;
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.GetAdvance = function(inChar) {
	$s.push("neash.swf.ScaledFont::GetAdvance");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mFont.GetAdvance(inChar) * this.mScale);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.GetAscent = function() {
	$s.push("neash.swf.ScaledFont::GetAscent");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mFont.GetAscent() * this.mScale);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.GetDescent = function() {
	$s.push("neash.swf.ScaledFont::GetDescent");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mFont.GetDescent() * this.mScale);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.GetHeight = function() {
	$s.push("neash.swf.ScaledFont::GetHeight");
	var $spos = $s.length;
	{
		var $tmp = this.mHeight;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.GetLeading = function() {
	$s.push("neash.swf.ScaledFont::GetLeading");
	var $spos = $s.length;
	{
		var $tmp = Std["int"](this.mFont.GetLeading() * this.mScale);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.GetName = function() {
	$s.push("neash.swf.ScaledFont::GetName");
	var $spos = $s.length;
	{
		var $tmp = this.mFont.GetName();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.Render = function(inGfx,inChar,inX,inY,inOutline) {
	$s.push("neash.swf.ScaledFont::Render");
	var $spos = $s.length;
	this.mMatrix.tx = inX;
	this.mMatrix.ty = inY + this.mAscent;
	{
		var $tmp = Std["int"](this.mFont.RenderChar(inGfx,inChar,this.mMatrix) * this.mScale);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.swf.ScaledFont.prototype.mAscent = null;
neash.swf.ScaledFont.prototype.mFont = null;
neash.swf.ScaledFont.prototype.mHeight = null;
neash.swf.ScaledFont.prototype.mMatrix = null;
neash.swf.ScaledFont.prototype.mScale = null;
neash.swf.ScaledFont.prototype.__class__ = neash.swf.ScaledFont;
neash.swf.ScaledFont.__interfaces__ = [neash.text.Font];
xpath.tokenizer.container.FunctionArgumentsTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.FunctionArgumentsTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.FunctionArgumentsTokenizer.__name__ = ["xpath","tokenizer","container","FunctionArgumentsTokenizer"];
xpath.tokenizer.container.FunctionArgumentsTokenizer.instance = null;
xpath.tokenizer.container.FunctionArgumentsTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.FunctionArgumentsTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.FunctionArgumentsTokenizer.instance == null) {
		xpath.tokenizer.container.FunctionArgumentsTokenizer.instance = new xpath.tokenizer.container.FunctionArgumentsTokenizer();
		xpath.tokenizer.container.FunctionArgumentsTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.FunctionArgumentsTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FunctionArgumentsTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.FunctionArgumentsTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.container.ExpressionTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Repetition([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.ArgumentDelimiterTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.ExpressionTokenizer.getInstance()])]);
	$s.pop();
}
xpath.tokenizer.container.FunctionArgumentsTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.FunctionArgumentsTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FunctionArgumentsTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.FunctionArgumentsTokenizer.prototype.__class__ = xpath.tokenizer.container.FunctionArgumentsTokenizer;
xpath.tokenizer.container.FunctionArgumentsTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.tokenizer.token.AbbreviatedStepTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.AbbreviatedStepTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.token.AbbreviatedStepTokenizer.__name__ = ["xpath","tokenizer","token","AbbreviatedStepTokenizer"];
xpath.tokenizer.token.AbbreviatedStepTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.AbbreviatedStepTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.AbbreviatedStepTokenizer.instance = null;
xpath.tokenizer.token.AbbreviatedStepTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.AbbreviatedStepTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.AbbreviatedStepTokenizer.instance == null) xpath.tokenizer.token.AbbreviatedStepTokenizer.instance = new xpath.tokenizer.token.AbbreviatedStepTokenizer();
	{
		var $tmp = xpath.tokenizer.token.AbbreviatedStepTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.AbbreviatedStepTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.AbbreviatedStepTokenizer::tokenize");
	var $spos = $s.length;
	if(input.query.substr(input.position,2) == "..") {
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.AxisToken(xpath.Axis.Parent);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this),new xpath.tokenizer.TypeTestToken(xpath.NodeCategory.Node)];
		var characterLength = 2 + this.countWhitespace(input.query,input.position + 2);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else if(input.query.charAt(input.position) == ".") {
		var result = [function($this) {
			var $r;
			var tmp = new xpath.tokenizer.AxisToken(xpath.Axis.Self);
			$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
				var $r;
				throw "Class cast error";
				return $r;
			}($this));
			return $r;
		}(this),new xpath.tokenizer.TypeTestToken(xpath.NodeCategory.Node)];
		var characterLength = 1 + this.countWhitespace(input.query,input.position + 1);
		{
			var $tmp = input.getOutput(result,characterLength);
			$s.pop();
			return $tmp;
		}
	}
	else {
		throw new xpath.tokenizer.ExpectedException([{ tokenName : "AbbreviatedStep", position : input.position}]);
	}
	$s.pop();
}
xpath.tokenizer.token.AbbreviatedStepTokenizer.prototype.__class__ = xpath.tokenizer.token.AbbreviatedStepTokenizer;
xpath.tokenizer.ExpectedException = function(expectedTokens) { if( expectedTokens === $_ ) return; {
	$s.push("xpath.tokenizer.ExpectedException::new");
	var $spos = $s.length;
	var array = Lambda.array(expectedTokens);
	if(array.length > 0) {
		array.sort(function(token1,token2) {
			$s.push("xpath.tokenizer.ExpectedException::new@38");
			var $spos = $s.length;
			{
				var $tmp = token1.position - token2.position;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		});
		var expectedToken = array.shift();
		var position = expectedToken.position;
		var message = "Expected " + expectedToken.tokenName;
		{
			var _g = 0;
			while(_g < array.length) {
				var expectedToken1 = array[_g];
				++_g;
				message += ", or " + expectedToken1.tokenName;
				if(expectedToken1.position > position) {
					message += " at character ";
					message += Std.string(expectedToken1.position);
				}
			}
		}
		xpath.tokenizer.TokenizerException.apply(this,[position,message]);
	}
	else throw new xpath.tokenizer.TokenizerError("Attempted to create an ExpectedException with an " + "empty expected tokens list");
	this.expectedTokens = expectedTokens;
	$s.pop();
}}
xpath.tokenizer.ExpectedException.__name__ = ["xpath","tokenizer","ExpectedException"];
xpath.tokenizer.ExpectedException.__super__ = xpath.tokenizer.TokenizerException;
for(var k in xpath.tokenizer.TokenizerException.prototype ) xpath.tokenizer.ExpectedException.prototype[k] = xpath.tokenizer.TokenizerException.prototype[k];
xpath.tokenizer.ExpectedException.prototype.expectedTokens = null;
xpath.tokenizer.ExpectedException.prototype.__class__ = xpath.tokenizer.ExpectedException;
xpath.tokenizer.token.BeginGroupTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.BeginGroupTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.BeginGroupToken(),"(","BeginGroup"]);
	$s.pop();
}}
xpath.tokenizer.token.BeginGroupTokenizer.__name__ = ["xpath","tokenizer","token","BeginGroupTokenizer"];
xpath.tokenizer.token.BeginGroupTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.BeginGroupTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.BeginGroupTokenizer.instance = null;
xpath.tokenizer.token.BeginGroupTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.BeginGroupTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.BeginGroupTokenizer.instance == null) xpath.tokenizer.token.BeginGroupTokenizer.instance = new xpath.tokenizer.token.BeginGroupTokenizer();
	{
		var $tmp = xpath.tokenizer.token.BeginGroupTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.BeginGroupTokenizer.prototype.__class__ = xpath.tokenizer.token.BeginGroupTokenizer;
xpath.tokenizer.container.FilterExpressionTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.FilterExpressionTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.FilterExpressionTokenizer.__name__ = ["xpath","tokenizer","container","FilterExpressionTokenizer"];
xpath.tokenizer.container.FilterExpressionTokenizer.instance = null;
xpath.tokenizer.container.FilterExpressionTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.FilterExpressionTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.FilterExpressionTokenizer.instance == null) {
		xpath.tokenizer.container.FilterExpressionTokenizer.instance = new xpath.tokenizer.container.FilterExpressionTokenizer();
		xpath.tokenizer.container.FilterExpressionTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.FilterExpressionTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FilterExpressionTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.FilterExpressionTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginExpressionTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),new xpath.tokenizer.util.Repetition([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.NegationOperatorTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this)]),xpath.tokenizer.container.FilterOperandTokenizer.getInstance(),xpath.tokenizer.token.EndExpressionTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.FilterExpressionTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.FilterExpressionTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.FilterExpressionTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.FilterExpressionTokenizer.prototype.__class__ = xpath.tokenizer.container.FilterExpressionTokenizer;
xpath.tokenizer.container.FilterExpressionTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
xpath.tokenizer.util.Optional = function(tokenizers) { if( tokenizers === $_ ) return; {
	$s.push("xpath.tokenizer.util.Optional::new");
	var $spos = $s.length;
	xpath.tokenizer.util.Sequence.apply(this,[tokenizers]);
	$s.pop();
}}
xpath.tokenizer.util.Optional.__name__ = ["xpath","tokenizer","util","Optional"];
xpath.tokenizer.util.Optional.__super__ = xpath.tokenizer.util.Sequence;
for(var k in xpath.tokenizer.util.Sequence.prototype ) xpath.tokenizer.util.Optional.prototype[k] = xpath.tokenizer.util.Sequence.prototype[k];
xpath.tokenizer.util.Optional.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.util.Optional::tokenize");
	var $spos = $s.length;
	try {
		{
			var $tmp = xpath.tokenizer.util.Sequence.prototype.tokenize.apply(this,[input]);
			$s.pop();
			return $tmp;
		}
	}
	catch( $e77 ) {
		if( js.Boot.__instanceof($e77,xpath.tokenizer.TokenizerException) ) {
			var exception = $e77;
			{
				$e = [];
				while($s.length >= $spos) $e.unshift($s.pop());
				$s.push($e[0]);
				{
					var $tmp = input.getOutput([],0);
					$s.pop();
					return $tmp;
				}
			}
		} else throw($e77);
	}
	$s.pop();
}
xpath.tokenizer.util.Optional.prototype.__class__ = xpath.tokenizer.util.Optional;
xpath.tokenizer.token.TypeTestTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.TypeTestTokenizer::new");
	var $spos = $s.length;
	this.typeTestNameToTypeTest = new Hash();
	this.typeTestNameToTypeTest.set("comment",xpath.NodeCategory.Comment);
	this.typeTestNameToTypeTest.set("text",xpath.NodeCategory.Text);
	this.typeTestNameToTypeTest.set("node",xpath.NodeCategory.Node);
	this.typeNames = new Array();
	{ var $it78 = this.typeTestNameToTypeTest.keys();
	while( $it78.hasNext() ) { var typeName = $it78.next();
	{
		this.typeNames.push(typeName);
	}
	}}
	this.typeNames.sort(function(x,y) {
		$s.push("xpath.tokenizer.token.TypeTestTokenizer::new@53");
		var $spos = $s.length;
		{
			var $tmp = y.length - x.length;
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	$s.pop();
}}
xpath.tokenizer.token.TypeTestTokenizer.__name__ = ["xpath","tokenizer","token","TypeTestTokenizer"];
xpath.tokenizer.token.TypeTestTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.TypeTestTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.TypeTestTokenizer.instance = null;
xpath.tokenizer.token.TypeTestTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.TypeTestTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.TypeTestTokenizer.instance == null) xpath.tokenizer.token.TypeTestTokenizer.instance = new xpath.tokenizer.token.TypeTestTokenizer();
	{
		var $tmp = xpath.tokenizer.token.TypeTestTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.TypeTestTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.TypeTestTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	{
		var _g = 0, _g1 = this.typeNames;
		while(_g < _g1.length) {
			var typeName = _g1[_g];
			++_g;
			if(input.query.substr(pos,typeName.length) == typeName) {
				pos += typeName.length;
				pos += this.countWhitespace(input.query,pos);
				if(input.query.charAt(pos) != "(") {
					throw new xpath.tokenizer.ExpectedException([{ tokenName : "NodeCategory", position : input.position}]);
				}
				++pos;
				pos += this.countWhitespace(input.query,pos);
				if(input.query.charAt(pos) != ")") {
					throw new xpath.tokenizer.ExpectedException([{ tokenName : "NodeCategory", position : input.position}]);
				}
				++pos;
				pos += this.countWhitespace(input.query,pos);
				var type = this.typeTestNameToTypeTest.get(typeName);
				var result = [function($this) {
					var $r;
					var tmp = new xpath.tokenizer.TypeTestToken(type);
					$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
						var $r;
						throw "Class cast error";
						return $r;
					}($this));
					return $r;
				}(this)];
				var characterLength = pos - input.position;
				{
					var $tmp = input.getOutput(result,characterLength);
					$s.pop();
					return $tmp;
				}
			}
		}
	}
	throw new xpath.tokenizer.ExpectedException([{ tokenName : "NodeCategory", position : input.position}]);
	$s.pop();
}
xpath.tokenizer.token.TypeTestTokenizer.prototype.typeNames = null;
xpath.tokenizer.token.TypeTestTokenizer.prototype.typeTestNameToTypeTest = null;
xpath.tokenizer.token.TypeTestTokenizer.prototype.__class__ = xpath.tokenizer.token.TypeTestTokenizer;
neash.display.MovieClip = function(p) { if( p === $_ ) return; {
	$s.push("neash.display.MovieClip::new");
	var $spos = $s.length;
	neash.display.Sprite.apply(this,[]);
	this.enabled = true;
	this.mCurrentFrame = 0;
	this.mTotalFrames = 0;
	this.name = "MovieClip";
	$s.pop();
}}
neash.display.MovieClip.__name__ = ["neash","display","MovieClip"];
neash.display.MovieClip.__super__ = neash.display.Sprite;
for(var k in neash.display.Sprite.prototype ) neash.display.MovieClip.prototype[k] = neash.display.Sprite.prototype[k];
neash.display.MovieClip.prototype.GetCurrentFrame = function() {
	$s.push("neash.display.MovieClip::GetCurrentFrame");
	var $spos = $s.length;
	{
		var $tmp = this.mCurrentFrame;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.MovieClip.prototype.GetTotalFrames = function() {
	$s.push("neash.display.MovieClip::GetTotalFrames");
	var $spos = $s.length;
	{
		var $tmp = this.mTotalFrames;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
neash.display.MovieClip.prototype.currentFrame = null;
neash.display.MovieClip.prototype.enabled = null;
neash.display.MovieClip.prototype.framesLoaded = null;
neash.display.MovieClip.prototype.gotoAndPlay = function(frame,scene) {
	$s.push("neash.display.MovieClip::gotoAndPlay");
	var $spos = $s.length;
	null;
	$s.pop();
}
neash.display.MovieClip.prototype.mCurrentFrame = null;
neash.display.MovieClip.prototype.mTotalFrames = null;
neash.display.MovieClip.prototype.totalFrames = null;
neash.display.MovieClip.prototype.__class__ = neash.display.MovieClip;
haxe.io.BytesBuffer = function(p) { if( p === $_ ) return; {
	$s.push("haxe.io.BytesBuffer::new");
	var $spos = $s.length;
	this.b = new Array();
	$s.pop();
}}
haxe.io.BytesBuffer.__name__ = ["haxe","io","BytesBuffer"];
haxe.io.BytesBuffer.prototype.add = function(src) {
	$s.push("haxe.io.BytesBuffer::add");
	var $spos = $s.length;
	var b1 = this.b;
	var b2 = src.b;
	{
		var _g1 = 0, _g = src.length;
		while(_g1 < _g) {
			var i = _g1++;
			this.b.push(b2[i]);
		}
	}
	$s.pop();
}
haxe.io.BytesBuffer.prototype.addByte = function($byte) {
	$s.push("haxe.io.BytesBuffer::addByte");
	var $spos = $s.length;
	this.b.push($byte);
	$s.pop();
}
haxe.io.BytesBuffer.prototype.addBytes = function(src,pos,len) {
	$s.push("haxe.io.BytesBuffer::addBytes");
	var $spos = $s.length;
	if(pos < 0 || len < 0 || pos + len > src.length) throw haxe.io.Error.OutsideBounds;
	var b1 = this.b;
	var b2 = src.b;
	{
		var _g1 = pos, _g = pos + len;
		while(_g1 < _g) {
			var i = _g1++;
			this.b.push(b2[i]);
		}
	}
	$s.pop();
}
haxe.io.BytesBuffer.prototype.b = null;
haxe.io.BytesBuffer.prototype.getBytes = function() {
	$s.push("haxe.io.BytesBuffer::getBytes");
	var $spos = $s.length;
	var bytes = new haxe.io.Bytes(this.b.length,this.b);
	this.b = null;
	{
		$s.pop();
		return bytes;
	}
	$s.pop();
}
haxe.io.BytesBuffer.prototype.__class__ = haxe.io.BytesBuffer;
sandy.materials.attributes.PhongAttributes = function(p_bBright,p_nAmbient,p_nQuality,p_nSamples) { if( p_bBright === $_ ) return; {
	$s.push("sandy.materials.attributes.PhongAttributes::new");
	var $spos = $s.length;
	if(p_nSamples == null) p_nSamples = 4;
	if(p_nQuality == null) p_nQuality = 15;
	if(p_nAmbient == null) p_nAmbient = 0.0;
	if(p_bBright == null) p_bBright = false;
	this.m_oLightMaps = new haxe.FastList();
	this._useBright = true;
	this.aN0 = [new sandy.core.data.Vector(),new sandy.core.data.Vector(),new sandy.core.data.Vector()];
	this.aN = [new sandy.core.data.Vector(),new sandy.core.data.Vector(),new sandy.core.data.Vector()];
	this.aNP = [new canvas.geom.Point(),new canvas.geom.Point(),new canvas.geom.Point()];
	this.matrix = new canvas.geom.Matrix();
	this.matrix2 = new canvas.geom.Matrix();
	this.dv = new sandy.core.data.Vector();
	this.e1 = new sandy.core.data.Vector();
	this.e2 = new sandy.core.data.Vector();
	this.spherize = 0;
	this.onlySpecular = false;
	sandy.materials.attributes.ALightAttributes.apply(this,[]);
	this.__setUseBright(p_bBright);
	this.__setAmbient(sandy.util.NumberUtil.constrain(p_nAmbient,0,1));
	this.m_nQuality = p_nQuality;
	this.m_nSamples = p_nSamples;
	$s.pop();
}}
sandy.materials.attributes.PhongAttributes.__name__ = ["sandy","materials","attributes","PhongAttributes"];
sandy.materials.attributes.PhongAttributes.__super__ = sandy.materials.attributes.ALightAttributes;
for(var k in sandy.materials.attributes.ALightAttributes.prototype ) sandy.materials.attributes.PhongAttributes.prototype[k] = sandy.materials.attributes.ALightAttributes.prototype[k];
sandy.materials.attributes.PhongAttributes.prototype.__getUseBright = function() {
	$s.push("sandy.materials.attributes.PhongAttributes::__getUseBright");
	var $spos = $s.length;
	{
		var $tmp = this._useBright;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.materials.attributes.PhongAttributes.prototype.__setUseBright = function(p_bUseBright) {
	$s.push("sandy.materials.attributes.PhongAttributes::__setUseBright");
	var $spos = $s.length;
	if(this._useBright != p_bUseBright) {
		this._useBright = p_bUseBright;
		this.m_oLightMaps = new haxe.FastList();
	}
	{
		$s.pop();
		return p_bUseBright;
	}
	$s.pop();
}
sandy.materials.attributes.PhongAttributes.prototype._useBright = null;
sandy.materials.attributes.PhongAttributes.prototype.aN = null;
sandy.materials.attributes.PhongAttributes.prototype.aN0 = null;
sandy.materials.attributes.PhongAttributes.prototype.aNP = null;
sandy.materials.attributes.PhongAttributes.prototype.begin = function(p_oScene) {
	$s.push("sandy.materials.attributes.PhongAttributes::begin");
	var $spos = $s.length;
	sandy.materials.attributes.ALightAttributes.prototype.begin.apply(this,[p_oScene]);
	var l_oLight = p_oScene.__getLight();
	if(this.m_oLightMaps.first() == null) {
		l_oLight.addEventListener(sandy.events.SandyEvent.LIGHT_UPDATED,$closure(this,"watchForUpdatedLights"));
		this.computeLightMap(l_oLight,this.m_nQuality,this.m_nSamples);
	}
	this.m_oCurrentLightMap = this.m_oLightMaps.first();
	$s.pop();
}
sandy.materials.attributes.PhongAttributes.prototype.computeLightMap = function(p_oLight,p_nQuality,p_nSamples) {
	$s.push("sandy.materials.attributes.PhongAttributes::computeLightMap");
	var $spos = $s.length;
	if(p_nSamples == null) p_nSamples = 4;
	if(p_nQuality == null) p_nQuality = 4;
	var i, j;
	var l_nQuality = Std["int"](sandy.util.NumberUtil.constrain(p_nQuality,2,15));
	var l_nSamples = Std["int"](Math.max(p_nSamples,1));
	var N = l_nQuality * l_nSamples;
	var l_oCurrentH = this.m_oCurrentH.clone();
	this.m_oCurrentH.copy(this.m_oCurrentL);
	var e = ((Math.abs(this.m_oCurrentL.x) + Math.abs(this.m_oCurrentL.y) > 0)?new sandy.core.data.Vector(this.m_oCurrentL.y,-this.m_oCurrentL.x,0):new sandy.core.data.Vector(this.m_oCurrentL.z,0,-this.m_oCurrentL.x));
	e.normalize();
	var n = new sandy.core.data.Vector();
	var l_aReflection = [new Array(),new Array()];
	var S = [0.0,0.0], t = [-1.0,-1.0];
	{
		var _g = 0;
		while(_g < N) {
			var i1 = _g++;
			var r = i1 * 1.0 / (N - 1), q = 0.5 * (1 - r * r);
			n.x = e.x * r - this.m_oCurrentL.x * q;
			n.y = e.y * r - this.m_oCurrentL.y * q;
			n.z = e.z * r - this.m_oCurrentL.z * q;
			n.normalize();
			l_aReflection[0][i1] = this.calculate(n,true,true);
			l_aReflection[1][i1] = this.calculate(n,true) - l_aReflection[0][i1];
			{
				var _g1 = 0;
				while(_g1 < 2) {
					var j1 = _g1++;
					l_aReflection[j1][i1] = sandy.util.NumberUtil.constrain(l_aReflection[j1][i1],0,1);
					S[j1] += l_aReflection[j1][i1];
					if(this.__getUseBright()) {
						if(l_aReflection[j1][0] > 0.5) if(l_aReflection[j1][i1] <= 0.5) t[j1] = ((l_aReflection[j1][i1 - 1] - 0.5) * i1 + (0.5 - l_aReflection[j1][i1]) * (i1 - 1)) / (l_aReflection[j1][i1 - 1] - l_aReflection[j1][i1]);
					}
				}
			}
		}
	}
	this.m_oCurrentH.copy(l_oCurrentH);
	var l_oLightMap = new sandy.materials.attributes.PhongAttributesLightMap();
	var I = [0.0,0.0], s = [0.0,0.0];
	{
		var _g = 0;
		while(_g < N) {
			var i1 = _g++;
			var _g1 = 0;
			while(_g1 < 2) {
				var j1 = _g1++;
				if(I[j1] > l_nQuality - 1) continue;
				s[j1] += l_aReflection[j1][i1];
				if((s[j1] >= S[j1] * I[j1] / (l_nQuality - 1)) || (N - i1 <= l_nQuality - I[j1])) {
					if(this.__getUseBright()) {
						if(j1 == 0) {
							l_oLightMap.alphas[j1].push(((l_aReflection[j1][i1] > 0.5)?2 * l_aReflection[j1][i1] - 1:1 - 2 * l_aReflection[j1][i1]));
							l_oLightMap.colors[j1].push(((l_aReflection[j1][i1] > 0.5)?16777215:0));
							l_oLightMap.ratios[j1].push((i1 * 255) / (N - 1));
							if((i1 <= t[j1]) && (t[j1] <= i1 + 1)) {
								if(l_nQuality > 13) {
									I[j1] += 1;
									if(l_nQuality > 14) {
										l_oLightMap.alphas[j1].pop();
										l_oLightMap.colors[j1].pop();
										l_oLightMap.ratios[j1].pop();
									}
								}
								l_oLightMap.alphas[j1].push(0);
								l_oLightMap.colors[j1].push(16777215);
								l_oLightMap.ratios[j1].push((t[j1] * 255) / (N - 1));
								l_oLightMap.alphas[j1].push(0);
								l_oLightMap.colors[j1].push(0);
								l_oLightMap.ratios[j1].push((t[j1] * 255) / (N - 1));
							}
						}
						else {
							l_oLightMap.alphas[j1].push(2.5 * l_aReflection[j1][i1] * l_aReflection[j1][i1]);
							l_oLightMap.colors[j1].push(16777215);
							l_oLightMap.ratios[j1].push((i1 * 255) / (N - 1));
						}
					}
					else {
						l_oLightMap.alphas[j1].push(1 - l_aReflection[j1][i1]);
						l_oLightMap.colors[j1].push(0);
						l_oLightMap.ratios[j1].push((i1 * 255) / (N - 1));
					}
					I[j1] += 1;
				}
			}
		}
	}
	this.m_oLightMaps.add(l_oLightMap);
	$s.pop();
}
sandy.materials.attributes.PhongAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.PhongAttributes::draw");
	var $spos = $s.length;
	sandy.materials.attributes.ALightAttributes.prototype.draw.apply(this,[p_oGraphics,p_oPolygon,p_oMaterial,p_oScene]);
	var i, j, l_oVertex, v, p, p1, p2, m2a, m2b, m2c, m2d, a;
	if(!p_oMaterial.lightingEnable) {
		$s.pop();
		return;
	}
	var l_aPoints = ((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices);
	l_oVertex = l_aPoints[0];
	this.matrix2.tx = l_oVertex.sx;
	m2a = m2c = -l_oVertex.sx;
	this.matrix2.ty = l_oVertex.sy;
	m2b = m2d = -l_oVertex.sy;
	l_oVertex = l_aPoints[1];
	m2a += l_oVertex.sx;
	this.matrix2.a = m2a;
	m2b += l_oVertex.sy;
	this.matrix2.b = m2b;
	l_oVertex = l_aPoints[2];
	m2c += l_oVertex.sx;
	this.matrix2.c = m2c;
	m2d += l_oVertex.sy;
	this.matrix2.d = m2d;
	{
		var _g = 0;
		while(_g < 3) {
			var i1 = _g++;
			v = this.aN0[i1];
			v.copy(p_oPolygon.vertexNormals[i1].getVector());
			if(this.spherize > 0) {
				l_oVertex = l_aPoints[i1];
				this.dv.copy(l_oVertex.getVector());
				this.dv.sub(p_oPolygon.shape.__getGeometryCenter());
				this.dv.normalize();
				this.dv.scale(this.spherize);
				v.add(this.dv);
				v.normalize();
			}
			if(!p_oPolygon.visible) v.scale(-1);
		}
	}
	var j1 = (this.onlySpecular?1:0);
	while(j1 < ((this._useBright?2:1))) {
		var d = ((j1 == 0)?this.m_oCurrentL:this.m_oCurrentH);
		var backside = true;
		{
			var _g = 0;
			while(_g < 3) {
				var i1 = _g++;
				v = this.aN[i1];
				v.copy(this.aN0[i1]);
				var d_dot_aNi = d.dot(v);
				if(d_dot_aNi < 0) backside = false;
				v.scale(1 / (1 - d_dot_aNi));
			}
		}
		if(backside) {
			if(j1 == 0) {
				var aI = this.__getAmbient() * this.m_nI;
				if(this.__getUseBright()) p_oGraphics.beginFill(((aI < 0.5)?0:16777215),((aI < 0.5)?(1 - 2 * aI):(2 * aI - 1)));
				else p_oGraphics.beginFill(0,1 - aI);
			}
		}
		else {
			if((d.x != 0) || (d.y != 0)) {
				this.e1.x = d.y;
				this.e1.y = -d.x;
				this.e1.z = 0;
			}
			else {
				this.e1.x = d.z;
				this.e1.y = 0;
				this.e1.z = -d.x;
			}
			this.e2.copy(d);
			this.e2.crossWith(this.e1);
			this.e1.normalize();
			this.e2.normalize();
			{
				var _g = 0;
				while(_g < 3) {
					var i1 = _g++;
					p = this.aNP[i1];
					v = this.aN[i1];
					p.x = this.e1.dot(v);
					p.y = this.e2.dot(v);
					p.x = (16384 - 1) * 0.05 * p.x;
					p.y = (16384 - 1) * 0.05 * p.y;
				}
			}
			p = this.aNP[0];
			p1 = this.aNP[1];
			p2 = this.aNP[2];
			a = (p.x - p1.x) * (p.y - p2.y) - (p.y - p1.y) * (p.x - p2.x);
			while((-20 < a) && (a < 20)) {
				p.x--;
				p1.y++;
				p2.x++;
				a = (p.x - p1.x) * (p.y - p2.y) - (p.y - p1.y) * (p.x - p2.x);
			}
			this.matrix.a = p1.x - p.x;
			this.matrix.b = p1.y - p.y;
			this.matrix.c = p2.x - p.x;
			this.matrix.d = p2.y - p.y;
			this.matrix.tx = p.x;
			this.matrix.ty = p.y;
			this.matrix.invert();
			this.matrix.concat(this.matrix2);
			p_oGraphics.beginGradientFill(canvas.display.GradientType.RADIAL,this.m_oCurrentLightMap.colors[j1],this.m_oCurrentLightMap.alphas[j1],this.m_oCurrentLightMap.ratios[j1],this.matrix);
		}
		if(!backside || (j1 == 0)) {
			p_oGraphics.moveTo(l_aPoints[0].sx,l_aPoints[0].sy);
			{
				var _g = 0;
				while(_g < l_aPoints.length) {
					var l_oVertex1 = l_aPoints[_g];
					++_g;
					p_oGraphics.lineTo(l_oVertex1.sx,l_oVertex1.sy);
				}
			}
			p_oGraphics.endFill();
		}
		j1++;
	}
	l_aPoints = null;
	$s.pop();
}
sandy.materials.attributes.PhongAttributes.prototype.dv = null;
sandy.materials.attributes.PhongAttributes.prototype.e1 = null;
sandy.materials.attributes.PhongAttributes.prototype.e2 = null;
sandy.materials.attributes.PhongAttributes.prototype.m_nQuality = null;
sandy.materials.attributes.PhongAttributes.prototype.m_nSamples = null;
sandy.materials.attributes.PhongAttributes.prototype.m_oCurrentLightMap = null;
sandy.materials.attributes.PhongAttributes.prototype.m_oLightMaps = null;
sandy.materials.attributes.PhongAttributes.prototype.matrix = null;
sandy.materials.attributes.PhongAttributes.prototype.matrix2 = null;
sandy.materials.attributes.PhongAttributes.prototype.onPropertyChange = function() {
	$s.push("sandy.materials.attributes.PhongAttributes::onPropertyChange");
	var $spos = $s.length;
	this.m_oLightMaps = new haxe.FastList();
	$s.pop();
}
sandy.materials.attributes.PhongAttributes.prototype.onlySpecular = null;
sandy.materials.attributes.PhongAttributes.prototype.spherize = null;
sandy.materials.attributes.PhongAttributes.prototype.useBright = null;
sandy.materials.attributes.PhongAttributes.prototype.watchForUpdatedLights = function(p_oEvent) {
	$s.push("sandy.materials.attributes.PhongAttributes::watchForUpdatedLights");
	var $spos = $s.length;
	if(this.m_oLightMaps.first() != null) {
		this.computeLightMap(p_oEvent.target,this.m_nQuality,this.m_nSamples);
	}
	$s.pop();
}
sandy.materials.attributes.PhongAttributes.prototype.__class__ = sandy.materials.attributes.PhongAttributes;
xpath.tokenizer.token.AxisTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.AxisTokenizer::new");
	var $spos = $s.length;
	this.axisNameToAxis = new Hash();
	this.axisNameToAxis.set("ancestor",xpath.Axis.Ancestor);
	this.axisNameToAxis.set("ancestor-or-self",xpath.Axis.AncestorOrSelf);
	this.axisNameToAxis.set("attribute",xpath.Axis.Attribute);
	this.axisNameToAxis.set("child",xpath.Axis.Child);
	this.axisNameToAxis.set("descendant",xpath.Axis.Descendant);
	this.axisNameToAxis.set("descendant-or-self",xpath.Axis.DescendantOrSelf);
	this.axisNameToAxis.set("following",xpath.Axis.Following);
	this.axisNameToAxis.set("following-sibling",xpath.Axis.FollowingSibling);
	this.axisNameToAxis.set("namespace",xpath.Axis.Namespace);
	this.axisNameToAxis.set("parent",xpath.Axis.Parent);
	this.axisNameToAxis.set("preceding",xpath.Axis.Preceding);
	this.axisNameToAxis.set("preceding-sibling",xpath.Axis.PrecedingSibling);
	this.axisNameToAxis.set("self",xpath.Axis.Self);
	this.axisNames = new Array();
	{ var $it79 = this.axisNameToAxis.keys();
	while( $it79.hasNext() ) { var axisName = $it79.next();
	{
		this.axisNames.push(axisName);
	}
	}}
	this.axisNames.sort(function(x,y) {
		$s.push("xpath.tokenizer.token.AxisTokenizer::new@61");
		var $spos = $s.length;
		{
			var $tmp = y.length - x.length;
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	$s.pop();
}}
xpath.tokenizer.token.AxisTokenizer.__name__ = ["xpath","tokenizer","token","AxisTokenizer"];
xpath.tokenizer.token.AxisTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.AxisTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.AxisTokenizer.instance = null;
xpath.tokenizer.token.AxisTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.AxisTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.AxisTokenizer.instance == null) xpath.tokenizer.token.AxisTokenizer.instance = new xpath.tokenizer.token.AxisTokenizer();
	{
		var $tmp = xpath.tokenizer.token.AxisTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.AxisTokenizer.prototype.axisNameToAxis = null;
xpath.tokenizer.token.AxisTokenizer.prototype.axisNames = null;
xpath.tokenizer.token.AxisTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.AxisTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	var axis = null;
	{
		var _g = 0, _g1 = this.axisNames;
		while(_g < _g1.length) {
			var axisName = _g1[_g];
			++_g;
			if(input.query.substr(pos,axisName.length) == axisName) {
				pos += axisName.length;
				pos += this.countWhitespace(input.query,pos);
				if(input.query.substr(pos,2) == "::") {
					pos += 2;
					axis = this.axisNameToAxis.get(axisName);
				}
				else {
					pos = input.position;
					axis = xpath.Axis.Child;
				}
				break;
			}
		}
	}
	if(axis == null) {
		if(input.query.charAt(pos) == "@") {
			axis = xpath.Axis.Attribute;
			++pos;
		}
		else {
			axis = xpath.Axis.Child;
		}
	}
	pos += this.countWhitespace(input.query,pos);
	var characterLength = pos - input.position;
	var result = [function($this) {
		var $r;
		var tmp = new xpath.tokenizer.AxisToken(axis);
		$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this)];
	{
		var $tmp = input.getOutput(result,characterLength);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.AxisTokenizer.prototype.__class__ = xpath.tokenizer.token.AxisTokenizer;
StringBuf = function(p) { if( p === $_ ) return; {
	$s.push("StringBuf::new");
	var $spos = $s.length;
	this.b = "";
	$s.pop();
}}
StringBuf.__name__ = ["StringBuf"];
StringBuf.prototype.add = function(x) {
	$s.push("StringBuf::add");
	var $spos = $s.length;
	this.b += x;
	$s.pop();
}
StringBuf.prototype.addChar = function(c) {
	$s.push("StringBuf::addChar");
	var $spos = $s.length;
	this.b += String.fromCharCode(c);
	$s.pop();
}
StringBuf.prototype.addSub = function(s,pos,len) {
	$s.push("StringBuf::addSub");
	var $spos = $s.length;
	this.b += s.substr(pos,len);
	$s.pop();
}
StringBuf.prototype.b = null;
StringBuf.prototype.toString = function() {
	$s.push("StringBuf::toString");
	var $spos = $s.length;
	{
		var $tmp = this.b;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
StringBuf.prototype.__class__ = StringBuf;
haxe.FastCell = function(elt,next) { if( elt === $_ ) return; {
	$s.push("haxe.FastCell::new");
	var $spos = $s.length;
	this.elt = elt;
	this.next = next;
	$s.pop();
}}
haxe.FastCell.__name__ = ["haxe","FastCell"];
haxe.FastCell.prototype.elt = null;
haxe.FastCell.prototype.next = null;
haxe.FastCell.prototype.__class__ = haxe.FastCell;
haxe.FastList = function(p) { if( p === $_ ) return; {
	$s.push("haxe.FastList::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
haxe.FastList.__name__ = ["haxe","FastList"];
haxe.FastList.prototype.add = function(item) {
	$s.push("haxe.FastList::add");
	var $spos = $s.length;
	this.head = new haxe.FastCell(item,this.head);
	$s.pop();
}
haxe.FastList.prototype.first = function() {
	$s.push("haxe.FastList::first");
	var $spos = $s.length;
	{
		var $tmp = (this.head == null?null:this.head.elt);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.FastList.prototype.head = null;
haxe.FastList.prototype.isEmpty = function() {
	$s.push("haxe.FastList::isEmpty");
	var $spos = $s.length;
	{
		var $tmp = (this.head == null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.FastList.prototype.iterator = function() {
	$s.push("haxe.FastList::iterator");
	var $spos = $s.length;
	var l = this.head;
	{
		var $tmp = { hasNext : function() {
			$s.push("haxe.FastList::iterator@110");
			var $spos = $s.length;
			{
				var $tmp = l != null;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}, next : function() {
			$s.push("haxe.FastList::iterator@113");
			var $spos = $s.length;
			var k = l;
			l = k.next;
			{
				var $tmp = k.elt;
				$s.pop();
				return $tmp;
			}
			$s.pop();
		}}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.FastList.prototype.pop = function() {
	$s.push("haxe.FastList::pop");
	var $spos = $s.length;
	var k = this.head;
	if(k == null) {
		$s.pop();
		return null;
	}
	else {
		this.head = k.next;
		{
			var $tmp = k.elt;
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
haxe.FastList.prototype.remove = function(v) {
	$s.push("haxe.FastList::remove");
	var $spos = $s.length;
	var prev = null;
	var l = this.head;
	while(l != null) {
		if(l.elt == v) {
			if(prev == null) this.head = l.next;
			else prev.next = l.next;
			break;
		}
		prev = l;
		l = l.next;
	}
	{
		var $tmp = (l != null);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.FastList.prototype.toString = function() {
	$s.push("haxe.FastList::toString");
	var $spos = $s.length;
	var a = new Array();
	var l = this.head;
	while(l != null) {
		a.push(l.elt);
		l = l.next;
	}
	{
		var $tmp = "{" + a.join(",") + "}";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.FastList.prototype.__class__ = haxe.FastList;
neash.display.PixelSnapping = { __ename__ : ["neash","display","PixelSnapping"], __constructs__ : ["NEVER","AUTO","ALWAYS"] }
neash.display.PixelSnapping.ALWAYS = ["ALWAYS",2];
neash.display.PixelSnapping.ALWAYS.toString = $estr;
neash.display.PixelSnapping.ALWAYS.__enum__ = neash.display.PixelSnapping;
neash.display.PixelSnapping.AUTO = ["AUTO",1];
neash.display.PixelSnapping.AUTO.toString = $estr;
neash.display.PixelSnapping.AUTO.__enum__ = neash.display.PixelSnapping;
neash.display.PixelSnapping.NEVER = ["NEVER",0];
neash.display.PixelSnapping.NEVER.toString = $estr;
neash.display.PixelSnapping.NEVER.__enum__ = neash.display.PixelSnapping;
xpath.tokenizer.token.ArgumentDelimiterTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.ArgumentDelimiterTokenizer::new");
	var $spos = $s.length;
	xpath.tokenizer.token.FixedStringTokenizer.apply(this,[new xpath.tokenizer.ArgumentDelimiterToken(),",","ArgumentDelimiter"]);
	$s.pop();
}}
xpath.tokenizer.token.ArgumentDelimiterTokenizer.__name__ = ["xpath","tokenizer","token","ArgumentDelimiterTokenizer"];
xpath.tokenizer.token.ArgumentDelimiterTokenizer.__super__ = xpath.tokenizer.token.FixedStringTokenizer;
for(var k in xpath.tokenizer.token.FixedStringTokenizer.prototype ) xpath.tokenizer.token.ArgumentDelimiterTokenizer.prototype[k] = xpath.tokenizer.token.FixedStringTokenizer.prototype[k];
xpath.tokenizer.token.ArgumentDelimiterTokenizer.instance = null;
xpath.tokenizer.token.ArgumentDelimiterTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.ArgumentDelimiterTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.ArgumentDelimiterTokenizer.instance == null) xpath.tokenizer.token.ArgumentDelimiterTokenizer.instance = new xpath.tokenizer.token.ArgumentDelimiterTokenizer();
	{
		var $tmp = xpath.tokenizer.token.ArgumentDelimiterTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.ArgumentDelimiterTokenizer.prototype.__class__ = xpath.tokenizer.token.ArgumentDelimiterTokenizer;
neash.utils.Timer = function(delay,repeatCount) { if( delay === $_ ) return; {
	$s.push("neash.utils.Timer::new");
	var $spos = $s.length;
	neash.events.EventDispatcher.apply(this,[]);
	this.proxy = new haxe.Timer(Std["int"](delay));
	$s.pop();
}}
neash.utils.Timer.__name__ = ["neash","utils","Timer"];
neash.utils.Timer.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) neash.utils.Timer.prototype[k] = neash.events.EventDispatcher.prototype[k];
neash.utils.Timer.prototype.count = function() {
	$s.push("neash.utils.Timer::count");
	var $spos = $s.length;
	if(this.repeatCount != null && this.currentCount++ > this.repeatCount) this.stop();
	$s.pop();
}
neash.utils.Timer.prototype.currentCount = null;
neash.utils.Timer.prototype.delay = null;
neash.utils.Timer.prototype.proxy = null;
neash.utils.Timer.prototype.repeatCount = null;
neash.utils.Timer.prototype.reset = function() {
	$s.push("neash.utils.Timer::reset");
	var $spos = $s.length;
	this.stop();
	this.currentCount = 0;
	$s.pop();
}
neash.utils.Timer.prototype.running = null;
neash.utils.Timer.prototype.start = function() {
	$s.push("neash.utils.Timer::start");
	var $spos = $s.length;
	if(this.currentCount == null) this.currentCount = 0;
	this.proxy.run = $closure(this,"count");
	$s.pop();
}
neash.utils.Timer.prototype.stop = function() {
	$s.push("neash.utils.Timer::stop");
	var $spos = $s.length;
	this.proxy.stop();
	$s.pop();
}
neash.utils.Timer.prototype.__class__ = neash.utils.Timer;
canvas.display.Graphics = function(inSurface) { if( inSurface === $_ ) return; {
	$s.push("canvas.display.Graphics::new");
	var $spos = $s.length;
	this.mChanged = false;
	if(inSurface == null) {
		this.mSurface = canvas.Manager.getScreen();
	}
	else {
		this.mSurface = inSurface;
	}
	this.mLastMoveID = 0;
	this.clear();
	$s.pop();
}}
canvas.display.Graphics.__name__ = ["canvas","display","Graphics"];
canvas.display.Graphics.foo = null;
canvas.display.Graphics.prototype.AddDrawable = function(inDrawable) {
	$s.push("canvas.display.Graphics::AddDrawable");
	var $spos = $s.length;
	if(inDrawable == null) {
		$s.pop();
		return;
	}
	this.mChanged = true;
	if(this.mSurface == null) this.mDrawList.push(inDrawable);
	else {
		throw "Not implemented";
	}
	$s.pop();
}
canvas.display.Graphics.prototype.AddLineSegment = function() {
	$s.push("canvas.display.Graphics::AddLineSegment");
	var $spos = $s.length;
	if(this.mCurrentLine.point_idx1 > 0) {
		this.mLineJobs.push({ grad : this.mCurrentLine.grad, point_idx0 : this.mCurrentLine.point_idx0, point_idx1 : this.mCurrentLine.point_idx1, thickness : this.mCurrentLine.thickness, alpha : this.mCurrentLine.alpha, pixel_hinting : this.mCurrentLine.pixel_hinting, colour : this.mCurrentLine.colour, joints : this.mCurrentLine.joints, caps : this.mCurrentLine.caps, scale_mode : this.mCurrentLine.scale_mode, miter_limit : this.mCurrentLine.miter_limit});
	}
	this.mCurrentLine.point_idx0 = this.mCurrentLine.point_idx1 = -1;
	$s.pop();
}
canvas.display.Graphics.prototype.AddToMask = function(ioMask,inMatrix,inSurface) {
	$s.push("canvas.display.Graphics::AddToMask");
	var $spos = $s.length;
	if(this.mDrawList.length > 0) {
		throw "Not implemented";
	}
	$s.pop();
}
canvas.display.Graphics.prototype.CheckChanged = function() {
	$s.push("canvas.display.Graphics::CheckChanged");
	var $spos = $s.length;
	this.ClosePolygon(true);
	var result = this.mChanged;
	this.mChanged = false;
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
canvas.display.Graphics.prototype.ClearLine = function() {
	$s.push("canvas.display.Graphics::ClearLine");
	var $spos = $s.length;
	this.mCurrentLine = { grad : null, point_idx0 : -1, point_idx1 : -1, thickness : 0.0, alpha : 0.0, colour : 0, miter_limit : 3.0, caps : canvas.display.Graphics.END_ROUND, scale_mode : canvas.display.Graphics.SCALE_NORMAL, joints : canvas.display.Graphics.CORNER_ROUND, pixel_hinting : 0}
	$s.pop();
}
canvas.display.Graphics.prototype.ClosePolygon = function(inCancelFill) {
	$s.push("canvas.display.Graphics::ClosePolygon");
	var $spos = $s.length;
	var l = this.mPoints.length;
	if(l > 0) {
		if(l > 1) {
			var ctx = this.mSurface;
			if(this.mFilling && l > 2) {
				if(this.mPoints[this.mLastMoveID].x != this.mPoints[l - 1].x || this.mPoints[this.mLastMoveID].y != this.mPoints[l - 1].y) {
					this.lineTo(this.mPoints[this.mLastMoveID].x,this.mPoints[this.mLastMoveID].y);
				}
			}
			this.AddLineSegment();
			var highX = this.mPoints[0].x;
			var highY = this.mPoints[0].y;
			var lowX = this.mPoints[0].x;
			var lowY = this.mPoints[0].y;
			ctx.lineWidth = 1;
			ctx.strokeStyle = "rgba(0,0,0,0)";
			ctx.beginPath();
			{
				var _g = 0, _g1 = this.mPoints;
				while(_g < _g1.length) {
					var p = _g1[_g];
					++_g;
					if(p.type == canvas.display.Graphics.MOVE) {
						ctx.moveTo(p.x,p.y);
					}
					else {
						ctx.lineTo(p.x,p.y);
					}
				}
			}
			ctx.closePath();
			ctx.stroke();
			ctx.save();
			ctx.clip();
			if(this.mFilling && l > 2) {
				var img = this.mBitmap.texture_buffer;
				var matrix = this.mBitmap.matrix;
				ctx.setTransform(matrix.a,matrix.b,matrix.c,matrix.d,matrix.tx,matrix.ty);
				ctx.drawImage(img,0,0);
				ctx.restore();
			}
		}
		this.mLineJobs = [];
		this.mPoints = [];
	}
	if(inCancelFill) {
		this.mFillAlpha = 0;
		this.mSolidGradient = null;
		this.mBitmap = null;
		this.mFilling = false;
	}
	$s.pop();
}
canvas.display.Graphics.prototype.CreateGradient = function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
	$s.push("canvas.display.Graphics::CreateGradient");
	var $spos = $s.length;
	var points = new Array();
	{
		var _g1 = 0, _g = colors.length;
		while(_g1 < _g) {
			var i = _g1++;
			points.push({ col : colors[i], alpha : alphas[i], ratio : ratios[i]});
		}
	}
	var flags = 0;
	if(type == canvas.display.GradientType.RADIAL) flags |= canvas.display.Graphics.RADIAL;
	if(spreadMethod == canvas.display.SpreadMethod.REPEAT) flags |= canvas.display.Graphics.REPEAT;
	else if(spreadMethod == canvas.display.SpreadMethod.REFLECT) flags |= canvas.display.Graphics.REFLECT;
	if(matrix == null) {
		matrix = new canvas.geom.Matrix();
		matrix.createGradientBox(25,25);
	}
	else matrix = matrix.clone();
	var focal = (focalPointRatio == null?0:focalPointRatio);
	{
		var $tmp = { points : points, matrix : matrix, flags : flags, focal : focal}
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.display.Graphics.prototype.CreateMask = function(inMatrix) {
	$s.push("canvas.display.Graphics::CreateMask");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
canvas.display.Graphics.prototype.GetExtent = function(inMatrix) {
	$s.push("canvas.display.Graphics::GetExtent");
	var $spos = $s.length;
	this.flush();
	var result = new canvas.geom.Rectangle();
	throw "Not implemented";
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
canvas.display.Graphics.prototype.SetSurface = function(inSurface) {
	$s.push("canvas.display.Graphics::SetSurface");
	var $spos = $s.length;
	this.mSurface = inSurface;
	$s.pop();
}
canvas.display.Graphics.prototype.beginBitmapFill = function(bitmap,matrix,in_repeat,in_smooth) {
	$s.push("canvas.display.Graphics::beginBitmapFill");
	var $spos = $s.length;
	this.ClosePolygon(true);
	var repeat = (in_repeat == null?true:in_repeat);
	var smooth = (in_smooth == null?false:in_smooth);
	this.mFilling = true;
	this.mSolidGradient = null;
	this.mBitmap = { texture_buffer : bitmap.handle(), matrix : (matrix == null?matrix:matrix.clone()), flags : ((repeat?canvas.display.Graphics.BMP_REPEAT:0)) | ((smooth?canvas.display.Graphics.BMP_SMOOTH:0))}
	$s.pop();
}
canvas.display.Graphics.prototype.beginFill = function(color,alpha) {
	$s.push("canvas.display.Graphics::beginFill");
	var $spos = $s.length;
	this.ClosePolygon(true);
	this.mFillColour = color;
	this.mFillAlpha = (alpha == null?1.0:alpha);
	this.mFilling = true;
	this.mSolidGradient = null;
	this.mBitmap = null;
	$s.pop();
}
canvas.display.Graphics.prototype.beginGradientFill = function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
	$s.push("canvas.display.Graphics::beginGradientFill");
	var $spos = $s.length;
	this.ClosePolygon(true);
	this.mFilling = true;
	this.mBitmap = null;
	this.mSolidGradient = this.CreateGradient(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio);
	$s.pop();
}
canvas.display.Graphics.prototype.blit = function(inTexture) {
	$s.push("canvas.display.Graphics::blit");
	var $spos = $s.length;
	this.ClosePolygon(true);
	var ctx = this.mSurface;
	ctx.drawImage(inTexture.handle(),this.mPenX,this.mPenY);
	$s.pop();
}
canvas.display.Graphics.prototype.clear = function() {
	$s.push("canvas.display.Graphics::clear");
	var $spos = $s.length;
	this.mChanged = true;
	this.mPenX = 0.0;
	this.mPenY = 0.0;
	this.mDrawList = new Array();
	this.mPoints = [];
	this.mSolidGradient = null;
	this.mBitmap = null;
	this.mFilling = false;
	this.mFillColour = 0;
	this.mFillAlpha = 0.0;
	this.mLastMoveID = 0;
	this.ClearLine();
	this.mLineJobs = [];
	$s.pop();
}
canvas.display.Graphics.prototype.curveTo = function(inCX,inCY,inX,inY) {
	$s.push("canvas.display.Graphics::curveTo");
	var $spos = $s.length;
	var pid = this.mPoints.length;
	if(pid == 0) {
		this.mPoints.push({ x : this.mPenX, y : this.mPenY, cx : 0.0, cy : 0.0, type : canvas.display.Graphics.MOVE});
		pid++;
	}
	this.mPenX = inX;
	this.mPenY = inY;
	this.mPoints.push({ x : inX, y : inY, cx : inCX, cy : inCY, type : canvas.display.Graphics.CURVE});
	if(this.mCurrentLine.grad != null || this.mCurrentLine.alpha > 0) {
		if(this.mCurrentLine.point_idx0 < 0) this.mCurrentLine.point_idx0 = pid - 1;
		this.mCurrentLine.point_idx1 = pid;
	}
	$s.pop();
}
canvas.display.Graphics.prototype.drawRect = function(x,y,width,height) {
	$s.push("canvas.display.Graphics::drawRect");
	var $spos = $s.length;
	this.ClosePolygon(false);
	this.moveTo(x,y);
	this.lineTo(x + width,y);
	this.lineTo(x + width,y + height);
	this.lineTo(x,y + height);
	this.lineTo(x,y);
	this.ClosePolygon(false);
	$s.pop();
}
canvas.display.Graphics.prototype.drawRoundRect = function(x,y,width,height,ellipseWidth,ellipseHeight) {
	$s.push("canvas.display.Graphics::drawRoundRect");
	var $spos = $s.length;
	if(ellipseHeight < 1 || ellipseHeight < 1) {
		this.drawRect(x,y,width,height);
		{
			$s.pop();
			return;
		}
	}
	this.ClosePolygon(false);
	this.moveTo(x,y + ellipseHeight);
	this.curveTo(x,y,x + ellipseWidth,y);
	this.lineTo(x + width - ellipseWidth,y);
	this.curveTo(x + width,y,x + width,y + ellipseWidth);
	this.lineTo(x + width,y + height - ellipseHeight);
	this.curveTo(x + width,y + height,x + width - ellipseWidth,y + height);
	this.lineTo(x + ellipseWidth,y + height);
	this.curveTo(x,y + height,x,y + height - ellipseHeight);
	this.lineTo(x,y + ellipseHeight);
	this.ClosePolygon(false);
	$s.pop();
}
canvas.display.Graphics.prototype.endFill = function() {
	$s.push("canvas.display.Graphics::endFill");
	var $spos = $s.length;
	this.ClosePolygon(true);
	$s.pop();
}
canvas.display.Graphics.prototype.flush = function() {
	$s.push("canvas.display.Graphics::flush");
	var $spos = $s.length;
	this.ClosePolygon(true);
	$s.pop();
}
canvas.display.Graphics.prototype.hitTest = function(inX,inY) {
	$s.push("canvas.display.Graphics::hitTest");
	var $spos = $s.length;
	{
		var _g = 0, _g1 = this.mDrawList;
		while(_g < _g1.length) {
			var obj = _g1[_g];
			++_g;
			throw "Not implemented";
		}
	}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
canvas.display.Graphics.prototype.lineStyle = function(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit) {
	$s.push("canvas.display.Graphics::lineStyle");
	var $spos = $s.length;
	this.AddLineSegment();
	if(thickness == null) {
		this.ClearLine();
		{
			$s.pop();
			return;
		}
	}
	else {
		this.mCurrentLine.grad = null;
		this.mCurrentLine.thickness = Math.round(thickness);
		this.mCurrentLine.colour = (color == null?0:color);
		this.mCurrentLine.alpha = (alpha == null?1.0:alpha);
		this.mCurrentLine.miter_limit = (miterLimit == null?3.0:miterLimit);
		this.mCurrentLine.pixel_hinting = ((pixelHinting == null || !pixelHinting)?0:canvas.display.Graphics.PIXEL_HINTING);
	}
	this.mCurrentLine.caps = canvas.display.Graphics.END_ROUND;
	if(caps != null) {
		switch(caps) {
		case canvas.display.CapsStyle.ROUND:{
			this.mCurrentLine.caps = canvas.display.Graphics.END_ROUND;
		}break;
		case canvas.display.CapsStyle.SQUARE:{
			this.mCurrentLine.caps = canvas.display.Graphics.END_SQUARE;
		}break;
		case canvas.display.CapsStyle.NONE:{
			this.mCurrentLine.caps = canvas.display.Graphics.END_NONE;
		}break;
		}
	}
	this.mCurrentLine.scale_mode = canvas.display.Graphics.SCALE_NORMAL;
	if(scaleMode != null) {
		switch(scaleMode) {
		case canvas.display.LineScaleMode.NORMAL:{
			this.mCurrentLine.scale_mode = canvas.display.Graphics.SCALE_NORMAL;
		}break;
		case canvas.display.LineScaleMode.VERTICAL:{
			this.mCurrentLine.scale_mode = canvas.display.Graphics.SCALE_VERTICAL;
		}break;
		case canvas.display.LineScaleMode.HORIZONTAL:{
			this.mCurrentLine.scale_mode = canvas.display.Graphics.SCALE_HORIZONTAL;
		}break;
		case canvas.display.LineScaleMode.NONE:{
			this.mCurrentLine.scale_mode = canvas.display.Graphics.SCALE_NONE;
		}break;
		}
	}
	this.mCurrentLine.joints = canvas.display.Graphics.CORNER_ROUND;
	if(joints != null) {
		switch(joints) {
		case canvas.display.JointStyle.ROUND:{
			this.mCurrentLine.joints = canvas.display.Graphics.CORNER_ROUND;
		}break;
		case canvas.display.JointStyle.MITER:{
			this.mCurrentLine.joints = canvas.display.Graphics.CORNER_MITER;
		}break;
		case canvas.display.JointStyle.BEVEL:{
			this.mCurrentLine.joints = canvas.display.Graphics.CORNER_BEVEL;
		}break;
		}
	}
	$s.pop();
}
canvas.display.Graphics.prototype.lineTo = function(inX,inY) {
	$s.push("canvas.display.Graphics::lineTo");
	var $spos = $s.length;
	var pid = this.mPoints.length;
	if(pid == 0) {
		this.mPoints.push({ x : this.mPenX, y : this.mPenY, cx : 0.0, cy : 0.0, type : canvas.display.Graphics.MOVE});
		this.origin = this.mPoints[this.mPoints.length - 1];
		pid++;
	}
	this.mPenX = inX;
	this.mPenY = inY;
	this.mPoints.push({ x : this.mPenX, y : this.mPenY, cx : 0.0, cy : 0.0, type : canvas.display.Graphics.LINE});
	if(!this.mFilling && inX == this.origin.x && inY == this.origin.y) this.ClosePolygon(false);
	$s.pop();
}
canvas.display.Graphics.prototype.mBitmap = null;
canvas.display.Graphics.prototype.mChanged = null;
canvas.display.Graphics.prototype.mCurrentLine = null;
canvas.display.Graphics.prototype.mDrawList = null;
canvas.display.Graphics.prototype.mFillAlpha = null;
canvas.display.Graphics.prototype.mFillColour = null;
canvas.display.Graphics.prototype.mFilling = null;
canvas.display.Graphics.prototype.mLastMoveID = null;
canvas.display.Graphics.prototype.mLineDraws = null;
canvas.display.Graphics.prototype.mLineJobs = null;
canvas.display.Graphics.prototype.mPenX = null;
canvas.display.Graphics.prototype.mPenY = null;
canvas.display.Graphics.prototype.mPoints = null;
canvas.display.Graphics.prototype.mSolid = null;
canvas.display.Graphics.prototype.mSolidGradient = null;
canvas.display.Graphics.prototype.mSurface = null;
canvas.display.Graphics.prototype.moveTo = function(inX,inY) {
	$s.push("canvas.display.Graphics::moveTo");
	var $spos = $s.length;
	this.mPenX = inX;
	this.mPenY = inY;
	if(!this.mFilling) {
		this.ClosePolygon(false);
	}
	else {
		this.AddLineSegment();
		this.mLastMoveID = this.mPoints.length;
		this.mPoints.push({ x : this.mPenX, y : this.mPenY, cx : 0.0, cy : 0.0, type : canvas.display.Graphics.MOVE});
	}
	$s.pop();
}
canvas.display.Graphics.prototype.origin = null;
canvas.display.Graphics.prototype.render = function(inMatrix,inSurface,inMaskHandle,inScrollRect) {
	$s.push("canvas.display.Graphics::render");
	var $spos = $s.length;
	this.ClosePolygon(true);
	{
		var _g = 0, _g1 = this.mDrawList;
		while(_g < _g1.length) {
			var obj = _g1[_g];
			++_g;
			throw "Not implemented";
		}
	}
	$s.pop();
}
canvas.display.Graphics.prototype.__class__ = canvas.display.Graphics;
sandy.core.data.Polygon = function(p_oOwner,p_geometry,p_aVertexID,p_aUVCoordsID,p_nFaceNormalID,p_nEdgesID) { if( p_oOwner === $_ ) return; {
	$s.push("sandy.core.data.Polygon::new");
	var $spos = $s.length;
	this.id = sandy.core.data.Polygon._ID_++;
	this.isClipped = false;
	this.aNeighboors = new Array();
	this.hasAppearanceChanged = false;
	this.m_oEB = new sandy.events.BubbleEventBroadcaster();
	this.mouseEvents = false;
	this.mouseInteractivity = false;
	if(p_aUVCoordsID == null) p_aUVCoordsID = [];
	p_nFaceNormalID = ((p_nFaceNormalID != null)?p_nFaceNormalID:0);
	p_nEdgesID = ((p_nEdgesID != null)?p_nEdgesID:0);
	this.shape = p_oOwner;
	this.m_oGeometry = p_geometry;
	this.__update(p_aVertexID,p_aUVCoordsID,p_nFaceNormalID,p_nEdgesID);
	this.m_oContainer = new neash.display.Sprite();
	sandy.core.data.Polygon.POLYGON_MAP.set(this.id,this);
	$s.pop();
}}
sandy.core.data.Polygon.__name__ = ["sandy","core","data","Polygon"];
sandy.core.data.Polygon.prototype.__getAppearance = function() {
	$s.push("sandy.core.data.Polygon::__getAppearance");
	var $spos = $s.length;
	{
		var $tmp = this.m_oAppearance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__getBroadcaster = function() {
	$s.push("sandy.core.data.Polygon::__getBroadcaster");
	var $spos = $s.length;
	{
		var $tmp = this.m_oEB;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__getContainer = function() {
	$s.push("sandy.core.data.Polygon::__getContainer");
	var $spos = $s.length;
	{
		var $tmp = this.m_oContainer;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__getDepth = function() {
	$s.push("sandy.core.data.Polygon::__getDepth");
	var $spos = $s.length;
	{
		var $tmp = this.m_nDepth;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__getEnableEvents = function() {
	$s.push("sandy.core.data.Polygon::__getEnableEvents");
	var $spos = $s.length;
	{
		var $tmp = this.mouseEvents;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__getEnableInteractivity = function() {
	$s.push("sandy.core.data.Polygon::__getEnableInteractivity");
	var $spos = $s.length;
	{
		var $tmp = this.mouseInteractivity;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__setAppearance = function(p_oApp) {
	$s.push("sandy.core.data.Polygon::__setAppearance");
	var $spos = $s.length;
	if(this.scene != null) {
		if(this.scene.materialManager.isRegistered(this.m_oAppearance.__getFrontMaterial())) this.scene.materialManager.unregister(this.m_oAppearance.__getFrontMaterial());
		if(this.scene.materialManager.isRegistered(this.m_oAppearance.__getBackMaterial())) this.scene.materialManager.unregister(this.m_oAppearance.__getBackMaterial());
	}
	if(this.m_oAppearance != null) {
		p_oApp.__getFrontMaterial().unlink(this);
		if(p_oApp.__getBackMaterial() != p_oApp.__getFrontMaterial()) p_oApp.__getBackMaterial().unlink(this);
	}
	this.m_oAppearance = p_oApp;
	p_oApp.__getFrontMaterial().init(this);
	if(p_oApp.__getBackMaterial() != p_oApp.__getFrontMaterial()) p_oApp.__getBackMaterial().init(this);
	this.hasAppearanceChanged = true;
	{
		$s.pop();
		return p_oApp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__setDepth = function(p_nDepth) {
	$s.push("sandy.core.data.Polygon::__setDepth");
	var $spos = $s.length;
	this.m_nDepth = p_nDepth;
	{
		$s.pop();
		return p_nDepth;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__setEnableEvents = function(b) {
	$s.push("sandy.core.data.Polygon::__setEnableEvents");
	var $spos = $s.length;
	if(b && !this.mouseEvents) {
		this.__getContainer().addEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.ROLL_OVER,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.ROLL_OUT,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onInteraction"));
		this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onInteraction"));
	}
	else if(!b && this.mouseEvents) {
		this.__getContainer().removeEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.ROLL_OVER,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.ROLL_OUT,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onInteraction"));
		this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onInteraction"));
	}
	this.mouseEvents = b;
	{
		$s.pop();
		return b;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__setEnableInteractivity = function(p_bState) {
	$s.push("sandy.core.data.Polygon::__setEnableInteractivity");
	var $spos = $s.length;
	if(p_bState != this.mouseInteractivity) {
		if(p_bState) {
			this.__getContainer().addEventListener(neash.events.MouseEvent.ROLL_OVER,$closure(this,"_startMouseInteraction"),false);
			this.__getContainer().addEventListener(neash.events.MouseEvent.ROLL_OUT,$closure(this,"_stopMouseInteraction"),false);
		}
		else {
			this._stopMouseInteraction();
		}
		this.mouseInteractivity = p_bState;
	}
	{
		$s.pop();
		return p_bState;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.__update = function(p_aVertexID,p_aUVCoordsID,p_nFaceNormalID,p_nEdgeListID) {
	$s.push("sandy.core.data.Polygon::__update");
	var $spos = $s.length;
	var i = 0, l;
	this.vertexNormals = new Array();
	this.vertices = new Array();
	{
		var _g = 0;
		while(_g < p_aVertexID.length) {
			var o = p_aVertexID[_g];
			++_g;
			this.vertices[i] = this.m_oGeometry.aVertex[p_aVertexID[i]];
			this.vertexNormals[i] = this.m_oGeometry.aVertexNormals[p_aVertexID[i]];
			i++;
		}
	}
	this.a = this.vertices[0];
	this.b = this.vertices[1];
	this.c = this.vertices[2];
	if(p_aUVCoordsID != null) {
		var l_nMinU = Math.POSITIVE_INFINITY, l_nMinV = Math.POSITIVE_INFINITY, l_nMaxU = Math.NEGATIVE_INFINITY, l_nMaxV = Math.NEGATIVE_INFINITY;
		this.aUVCoord = new Array();
		i = 0;
		{
			var _g = 0;
			while(_g < p_aUVCoordsID.length) {
				var p = p_aUVCoordsID[_g];
				++_g;
				var l_oUV = this.m_oGeometry.aUVCoords[p_aUVCoordsID[i]];
				this.aUVCoord[i] = l_oUV;
				if(l_oUV.u < l_nMinU) l_nMinU = l_oUV.u;
				else if(l_oUV.u > l_nMaxU) l_nMaxU = l_oUV.u;
				if(l_oUV.v < l_nMinV) l_nMinV = l_oUV.v;
				else if(l_oUV.v > l_nMaxV) l_nMaxV = l_oUV.v;
				i++;
			}
		}
		this.uvBounds = new canvas.geom.Rectangle(l_nMinU,l_nMinV,l_nMaxU - l_nMinU,l_nMaxV - l_nMinV);
	}
	this.normal = this.m_oGeometry.aFacesNormals[p_nFaceNormalID];
	if(this.normal == null) {
		var l_oNormal = this.createNormal();
		var l_nID = this.m_oGeometry.setFaceNormal(this.m_oGeometry.getNextFaceNormalID(),l_oNormal.x,l_oNormal.y,l_oNormal.z);
		this.normal = this.m_oGeometry.aFacesNormals[l_nID];
	}
	this.aEdges = new Array();
	{
		var _g = 0, _g1 = this.m_oGeometry.aFaceEdges[p_nEdgeListID];
		while(_g < _g1.length) {
			var l_nEdgeId = _g1[_g];
			++_g;
			var l_oEdge = this.m_oGeometry.aEdges[l_nEdgeId];
			l_oEdge.vertex1 = this.m_oGeometry.aVertex[l_oEdge.vertexId1];
			l_oEdge.vertex2 = this.m_oGeometry.aVertex[l_oEdge.vertexId2];
			this.aEdges.push(l_oEdge);
		}
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype._onInteraction = function(p_oEvt) {
	$s.push("sandy.core.data.Polygon::_onInteraction");
	var $spos = $s.length;
	var l_oClick = new canvas.geom.Point(this.m_oContainer.GetMouseX(),this.m_oContainer.GetMouseY());
	var l_oUV = this.getUVFrom2D(l_oClick);
	var l_oPt3d = this.get3DFrom2D(l_oClick);
	this.m_oEB.broadcastEvent(new sandy.events.Shape3DEvent(p_oEvt.type,this.shape,this,l_oUV,l_oPt3d,p_oEvt));
	$s.pop();
}
sandy.core.data.Polygon.prototype._onTextureInteraction = function(p_oEvt) {
	$s.push("sandy.core.data.Polygon::_onTextureInteraction");
	var $spos = $s.length;
	if(p_oEvt == null || !(Std["is"](p_oEvt,neash.events.MouseEvent))) p_oEvt = new neash.events.MouseEvent(neash.events.MouseEvent.MOUSE_MOVE,true,false,0,0,null,false,false,false,false,0);
	var pt2D = new canvas.geom.Point(this.scene.container.GetMouseX(),this.scene.container.GetMouseY());
	var uv = this.getUVFrom2D(pt2D);
	sandy.core.interaction.VirtualMouse.getInstance().interactWithTexture(this,uv,p_oEvt);
	this._onInteraction(p_oEvt);
	$s.pop();
}
sandy.core.data.Polygon.prototype._startMouseInteraction = function(e) {
	$s.push("sandy.core.data.Polygon::_startMouseInteraction");
	var $spos = $s.length;
	this.__getContainer().addEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.KeyboardEvent.KEY_DOWN,$closure(this,"_onTextureInteraction"));
	this.__getContainer().addEventListener(neash.events.KeyboardEvent.KEY_UP,$closure(this,"_onTextureInteraction"));
	this.m_oContainer.addEventListener(neash.events.Event.ENTER_FRAME,$closure(this,"_onTextureInteraction"));
	$s.pop();
}
sandy.core.data.Polygon.prototype._stopMouseInteraction = function(e) {
	$s.push("sandy.core.data.Polygon::_stopMouseInteraction");
	var $spos = $s.length;
	this.__getContainer().removeEventListener(neash.events.MouseEvent.CLICK,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_UP,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_DOWN,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.MouseEvent.DOUBLE_CLICK,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_MOVE,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_OVER,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_OUT,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.MouseEvent.MOUSE_WHEEL,$closure(this,"_onTextureInteraction"));
	this.m_oContainer.removeEventListener(neash.events.Event.ENTER_FRAME,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.KeyboardEvent.KEY_DOWN,$closure(this,"_onTextureInteraction"));
	this.__getContainer().removeEventListener(neash.events.KeyboardEvent.KEY_UP,$closure(this,"_onTextureInteraction"));
	$s.pop();
}
sandy.core.data.Polygon.prototype.a = null;
sandy.core.data.Polygon.prototype.aEdges = null;
sandy.core.data.Polygon.prototype.aNeighboors = null;
sandy.core.data.Polygon.prototype.aUVCoord = null;
sandy.core.data.Polygon.prototype.addEventListener = function(p_sEvent,oL,arguments) {
	$s.push("sandy.core.data.Polygon::addEventListener");
	var $spos = $s.length;
	this.m_oEB.apply($closure(this.m_oEB,"addEventListener"),arguments);
	$s.pop();
}
sandy.core.data.Polygon.prototype.appearance = null;
sandy.core.data.Polygon.prototype.b = null;
sandy.core.data.Polygon.prototype.broadcaster = null;
sandy.core.data.Polygon.prototype.c = null;
sandy.core.data.Polygon.prototype.caUVCoord = null;
sandy.core.data.Polygon.prototype.clear = function() {
	$s.push("sandy.core.data.Polygon::clear");
	var $spos = $s.length;
	this.m_oContainer.GetGraphics().clear();
	$s.pop();
}
sandy.core.data.Polygon.prototype.clip = function(p_oFrustum) {
	$s.push("sandy.core.data.Polygon::clip");
	var $spos = $s.length;
	this.isClipped = true;
	if(this.vertices.length < 3) {
		this.clipFrontPlane(p_oFrustum);
	}
	else {
		this.cvertices = null;
		this.caUVCoord = null;
		this.cvertices = this.vertices.concat([]);
		this.caUVCoord = this.aUVCoord.concat([]);
		p_oFrustum.clipFrustum(this.cvertices,this.caUVCoord);
	}
	{
		var $tmp = this.cvertices;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.clipFrontPlane = function(p_oFrustum) {
	$s.push("sandy.core.data.Polygon::clipFrontPlane");
	var $spos = $s.length;
	this.isClipped = true;
	this.cvertices = null;
	this.cvertices = this.vertices.concat([]);
	if(this.vertices.length < 3) {
		p_oFrustum.clipLineFrontPlane(this.cvertices);
	}
	else {
		this.caUVCoord = null;
		this.caUVCoord = this.aUVCoord.concat([]);
		p_oFrustum.clipFrontPlane(this.cvertices,this.caUVCoord);
	}
	{
		var $tmp = this.cvertices;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.container = null;
sandy.core.data.Polygon.prototype.createNormal = function() {
	$s.push("sandy.core.data.Polygon::createNormal");
	var $spos = $s.length;
	if(this.vertices.length > 2) {
		var v, w;
		var a = this.vertices[0], b = this.vertices[1], c = this.vertices[2];
		v = new sandy.core.data.Vector(b.wx - a.wx,b.wy - a.wy,b.wz - a.wz);
		w = new sandy.core.data.Vector(b.wx - c.wx,b.wy - c.wy,b.wz - c.wz);
		var l_normal = sandy.math.VectorMath.cross(v,w);
		sandy.math.VectorMath.normalize(l_normal);
		{
			$s.pop();
			return l_normal;
		}
	}
	else {
		{
			var $tmp = new sandy.core.data.Vector();
			$s.pop();
			return $tmp;
		}
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.cvertices = null;
sandy.core.data.Polygon.prototype.depth = null;
sandy.core.data.Polygon.prototype.destroy = function() {
	$s.push("sandy.core.data.Polygon::destroy");
	var $spos = $s.length;
	this.clear();
	if(this.m_oContainer.GetParent() != null) this.m_oContainer.GetParent().removeChild(this.m_oContainer);
	if(this.m_oContainer != null) this.m_oContainer = null;
	this.cvertices = null;
	this.vertices = null;
	this.m_oEB = null;
	sandy.core.data.Polygon.POLYGON_MAP.set(this.id,null);
	$s.pop();
}
sandy.core.data.Polygon.prototype.display = function(p_oScene,p_oContainer) {
	$s.push("sandy.core.data.Polygon::display");
	var $spos = $s.length;
	this.scene = p_oScene;
	var lCont = ((p_oContainer != null)?p_oContainer:this.m_oContainer);
	if(this.visible) {
		this.m_oAppearance.__getFrontMaterial().renderPolygon(p_oScene,this,lCont);
	}
	else {
		this.m_oAppearance.__getBackMaterial().renderPolygon(p_oScene,this,lCont);
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.enableEvents = null;
sandy.core.data.Polygon.prototype.enableInteractivity = null;
sandy.core.data.Polygon.prototype.get3DFrom2D = function(p_oScreenPoint) {
	$s.push("sandy.core.data.Polygon::get3DFrom2D");
	var $spos = $s.length;
	var m1 = new canvas.geom.Matrix(this.vertices[1].sx - this.vertices[0].sx,this.vertices[2].sx - this.vertices[0].sx,this.vertices[1].sy - this.vertices[0].sy,this.vertices[2].sy - this.vertices[0].sy,0,0);
	m1.invert();
	var capA = m1.a * (p_oScreenPoint.x - this.vertices[0].sx) + m1.b * (p_oScreenPoint.y - this.vertices[0].sy);
	var capB = m1.c * (p_oScreenPoint.x - this.vertices[0].sx) + m1.d * (p_oScreenPoint.y - this.vertices[0].sy);
	var l_oPoint = new sandy.core.data.Vector(this.vertices[0].x + capA * (this.vertices[1].x - this.vertices[0].x) + capB * (this.vertices[2].x - this.vertices[0].x),this.vertices[0].y + capA * (this.vertices[1].y - this.vertices[0].y) + capB * (this.vertices[2].y - this.vertices[0].y),this.vertices[0].z + capA * (this.vertices[1].z - this.vertices[0].z) + capB * (this.vertices[2].z - this.vertices[0].z));
	this.shape.__getMatrix().vectorMult(l_oPoint);
	{
		$s.pop();
		return l_oPoint;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.getUVFrom2D = function(p_oScreenPoint) {
	$s.push("sandy.core.data.Polygon::getUVFrom2D");
	var $spos = $s.length;
	var p0 = new canvas.geom.Point(this.vertices[0].sx,this.vertices[0].sy);
	var p1 = new canvas.geom.Point(this.vertices[1].sx,this.vertices[1].sy);
	var p2 = new canvas.geom.Point(this.vertices[2].sx,this.vertices[2].sy);
	var u0 = this.aUVCoord[0];
	var u1 = this.aUVCoord[1];
	var u2 = this.aUVCoord[2];
	var v01 = new canvas.geom.Point(p1.x - p0.x,p1.y - p0.y);
	var vn01 = v01.clone();
	vn01.normalize(1);
	var v02 = new canvas.geom.Point(p2.x - p0.x,p2.y - p0.y);
	var vn02 = v02.clone();
	vn02.normalize(1);
	var v4 = new canvas.geom.Point(p_oScreenPoint.x - v01.x,p_oScreenPoint.y - v01.y);
	var l_oInter = sandy.math.IntersectionMath.intersectionLine2D(p0,p2,p_oScreenPoint,v4);
	var vi02 = new canvas.geom.Point(l_oInter.x - p0.x,l_oInter.y - p0.y);
	var vi01 = new canvas.geom.Point(p_oScreenPoint.x - l_oInter.x,p_oScreenPoint.y - l_oInter.y);
	var d1 = vi01.get_length() / v01.get_length();
	var d2 = vi02.get_length() / v02.get_length();
	{
		var $tmp = new sandy.core.data.UVCoord(u0.u + d1 * (u1.u - u0.u) + d2 * (u2.u - u0.u),u0.v + d1 * (u1.v - u0.v) + d2 * (u2.v - u0.v));
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.hasAppearanceChanged = null;
sandy.core.data.Polygon.prototype.id = null;
sandy.core.data.Polygon.prototype.isClipped = null;
sandy.core.data.Polygon.prototype.m_aUVCoords = null;
sandy.core.data.Polygon.prototype.m_nDepth = null;
sandy.core.data.Polygon.prototype.m_oAppearance = null;
sandy.core.data.Polygon.prototype.m_oContainer = null;
sandy.core.data.Polygon.prototype.m_oEB = null;
sandy.core.data.Polygon.prototype.m_oGeometry = null;
sandy.core.data.Polygon.prototype.minZ = null;
sandy.core.data.Polygon.prototype.mouseEvents = null;
sandy.core.data.Polygon.prototype.mouseInteractivity = null;
sandy.core.data.Polygon.prototype.normal = null;
sandy.core.data.Polygon.prototype.precompute = function() {
	$s.push("sandy.core.data.Polygon::precompute");
	var $spos = $s.length;
	this.minZ = this.a.wz;
	if(this.b.wz < this.minZ) this.minZ = this.b.wz;
	if(this.c != null) {
		if(this.c.wz < this.minZ) this.minZ = this.c.wz;
		this.m_nDepth = 0.333 * (this.a.wz + this.b.wz + this.c.wz);
	}
	else {
		this.m_nDepth = 0.5 * (this.a.wz + this.b.wz);
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.removeEventListener = function(p_sEvent,oL) {
	$s.push("sandy.core.data.Polygon::removeEventListener");
	var $spos = $s.length;
	this.m_oEB.removeEventListener(p_sEvent,oL);
	$s.pop();
}
sandy.core.data.Polygon.prototype.scene = null;
sandy.core.data.Polygon.prototype.shape = null;
sandy.core.data.Polygon.prototype.swapCulling = function() {
	$s.push("sandy.core.data.Polygon::swapCulling");
	var $spos = $s.length;
	this.normal.negate();
	$s.pop();
}
sandy.core.data.Polygon.prototype.toString = function() {
	$s.push("sandy.core.data.Polygon::toString");
	var $spos = $s.length;
	{
		var $tmp = "sandy.core.data.Polygon::id=" + this.id + " [Points: " + this.vertices.length + "]";
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.data.Polygon.prototype.uvBounds = null;
sandy.core.data.Polygon.prototype.vertexNormals = null;
sandy.core.data.Polygon.prototype.vertices = null;
sandy.core.data.Polygon.prototype.visible = null;
sandy.core.data.Polygon.prototype.__class__ = sandy.core.data.Polygon;
sandy.core.data.Polygon.__interfaces__ = [sandy.core.scenegraph.IDisplayable];
sandy.materials.attributes.DashedLineAttributes = function(p_nThickness,p_nColor,p_nAlpha,p_length,p_gap) { if( p_nThickness === $_ ) return; {
	$s.push("sandy.materials.attributes.DashedLineAttributes::new");
	var $spos = $s.length;
	if(p_gap == null) p_gap = 10.0;
	if(p_length == null) p_length = 10.0;
	if(p_nAlpha == null) p_nAlpha = 1.0;
	if(p_nColor == null) p_nColor = 0;
	if(p_nThickness == null) p_nThickness = 1;
	sandy.materials.attributes.LineAttributes.apply(this,[p_nThickness,p_nColor,p_nAlpha]);
	this.thisLength = p_length;
	this.thisGap = Math.abs(p_gap);
	$s.pop();
}}
sandy.materials.attributes.DashedLineAttributes.__name__ = ["sandy","materials","attributes","DashedLineAttributes"];
sandy.materials.attributes.DashedLineAttributes.__super__ = sandy.materials.attributes.LineAttributes;
for(var k in sandy.materials.attributes.LineAttributes.prototype ) sandy.materials.attributes.DashedLineAttributes.prototype[k] = sandy.materials.attributes.LineAttributes.prototype[k];
sandy.materials.attributes.DashedLineAttributes.prototype.dashTo = function(p_oGraphics,p_oCamera,p_oStart,p_oEnd,len,gap) {
	$s.push("sandy.materials.attributes.DashedLineAttributes::dashTo");
	var $spos = $s.length;
	var seglength, l_oDelta, l_oCurrent = p_oStart.clone(), l_oDeltaNorm, segs, cx, cy;
	l_oDelta = new sandy.core.data.Vector(p_oEnd.wx - p_oStart.wx,p_oEnd.wy - p_oStart.wy,p_oEnd.wz - p_oStart.wz);
	l_oDeltaNorm = l_oDelta.getNorm();
	var l_oDir = l_oDelta.clone();
	l_oDir.normalize();
	seglength = (len + gap);
	segs = Std["int"](Math.abs(Math.floor(l_oDeltaNorm / seglength)));
	cx = p_oStart.sx;
	cy = p_oStart.sy;
	{
		var _g1 = 1, _g = (segs - 1);
		while(_g1 < _g) {
			var n = _g1++;
			l_oCurrent.wx += l_oDir.x * seglength;
			l_oCurrent.wy += l_oDir.y * seglength;
			l_oCurrent.wz += l_oDir.z * seglength;
			p_oGraphics.moveTo(cx,cy);
			p_oCamera.projectVertex(l_oCurrent);
			cx = l_oCurrent.sx;
			cy = l_oCurrent.sy;
			p_oGraphics.lineTo(cx,cy);
			l_oCurrent.wx += l_oDir.x * gap;
			l_oCurrent.wy += l_oDir.y * gap;
			l_oCurrent.wz += l_oDir.z * gap;
			p_oCamera.projectVertex(l_oCurrent);
			cx = l_oCurrent.sx;
			cy = l_oCurrent.sy;
		}
	}
	l_oCurrent.wx += l_oDir.x * seglength;
	l_oCurrent.wy += l_oDir.y * seglength;
	l_oCurrent.wz += l_oDir.z * seglength;
	p_oCamera.projectVertex(l_oCurrent);
	l_oDelta.x = p_oEnd.wx - l_oCurrent.wx;
	l_oDelta.y = p_oEnd.wy - l_oCurrent.wy;
	l_oDelta.z = p_oEnd.wz - l_oCurrent.wz;
	l_oDeltaNorm = l_oDelta.getNorm();
	if(l_oDeltaNorm > len) {
		p_oGraphics.moveTo(cx,cy);
		cx = l_oCurrent.sx;
		cy = l_oCurrent.sy;
		p_oGraphics.lineTo(cx,cy);
	}
	else if(l_oDeltaNorm > 0) {
		p_oGraphics.moveTo(cx,cy);
		p_oGraphics.lineTo(p_oEnd.sx,p_oEnd.sy);
	}
	$s.pop();
}
sandy.materials.attributes.DashedLineAttributes.prototype.draw = function(p_oGraphics,p_oPolygon,p_oMaterial,p_oScene) {
	$s.push("sandy.materials.attributes.DashedLineAttributes::draw");
	var $spos = $s.length;
	var l_aPoints = ((p_oPolygon.isClipped)?p_oPolygon.cvertices:p_oPolygon.vertices);
	var l_nLength = l_aPoints.length;
	var l_oVertex;
	p_oGraphics.lineStyle(this.__getThickness(),this.__getColor(),this.__getAlpha());
	p_oGraphics.beginFill(0);
	{
		var _g = 0;
		while(_g < l_nLength) {
			var l_nId = _g++;
			var l_nNext = (l_nId + 1) % l_nLength;
			if(this.thisGap != 0) {
				this.dashTo(p_oGraphics,p_oScene.camera,l_aPoints[l_nId],l_aPoints[l_nNext],this.thisLength,this.thisGap);
			}
			else {
				p_oGraphics.moveTo(l_aPoints[l_nId].sx,l_aPoints[l_nId].sy);
				p_oGraphics.lineTo(l_aPoints[l_nNext].sx,l_aPoints[l_nNext].sy);
			}
		}
	}
	p_oGraphics.endFill();
	$s.pop();
}
sandy.materials.attributes.DashedLineAttributes.prototype.thisGap = null;
sandy.materials.attributes.DashedLineAttributes.prototype.thisLength = null;
sandy.materials.attributes.DashedLineAttributes.prototype.__class__ = sandy.materials.attributes.DashedLineAttributes;
xpath.context.CoreEnvironment = function(p) { if( p === $_ ) return; {
	$s.push("xpath.context.CoreEnvironment::new");
	var $spos = $s.length;
	xpath.context.BaseEnvironment.apply(this,[]);
	$s.pop();
}}
xpath.context.CoreEnvironment.__name__ = ["xpath","context","CoreEnvironment"];
xpath.context.CoreEnvironment.__super__ = xpath.context.BaseEnvironment;
for(var k in xpath.context.BaseEnvironment.prototype ) xpath.context.CoreEnvironment.prototype[k] = xpath.context.BaseEnvironment.prototype[k];
xpath.context.CoreEnvironment.instance = null;
xpath.context.CoreEnvironment.getInstance = function() {
	$s.push("xpath.context.CoreEnvironment::getInstance");
	var $spos = $s.length;
	if(xpath.context.CoreEnvironment.instance == null) {
		xpath.context.CoreEnvironment.instance = new xpath.context.CoreEnvironment();
		xpath.context.CoreEnvironment.instance.init();
	}
	{
		var $tmp = xpath.context.CoreEnvironment.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.context.CoreEnvironment.prototype.init = function() {
	$s.push("xpath.context.CoreEnvironment::init");
	var $spos = $s.length;
	this.functions.set("last",$closure(xpath.library.NodeSetLibrary,"last"));
	this.functions.set("position",$closure(xpath.library.NodeSetLibrary,"position"));
	this.functions.set("count",$closure(xpath.library.NodeSetLibrary,"count"));
	this.functions.set("local-name",$closure(xpath.library.NodeSetLibrary,"localName"));
	this.functions.set("name",$closure(xpath.library.NodeSetLibrary,"nodeName"));
	this.functions.set("string",$closure(xpath.library.StringLibrary,"string"));
	this.functions.set("concat",$closure(xpath.library.StringLibrary,"concat"));
	this.functions.set("starts-with",$closure(xpath.library.StringLibrary,"startsWith"));
	this.functions.set("contains",$closure(xpath.library.StringLibrary,"contains"));
	this.functions.set("substring-before",$closure(xpath.library.StringLibrary,"substringBefore"));
	this.functions.set("substring-after",$closure(xpath.library.StringLibrary,"substringAfter"));
	this.functions.set("substring",$closure(xpath.library.StringLibrary,"substring"));
	this.functions.set("string-length",$closure(xpath.library.StringLibrary,"stringLength"));
	this.functions.set("normalize-space",$closure(xpath.library.StringLibrary,"normalizeSpace"));
	this.functions.set("translate",$closure(xpath.library.StringLibrary,"translate"));
	this.functions.set("boolean",$closure(xpath.library.BooleanLibrary,"boolean"));
	this.functions.set("true",$closure(xpath.library.BooleanLibrary,"true"));
	this.functions.set("false",$closure(xpath.library.BooleanLibrary,"false"));
	this.functions.set("number",$closure(xpath.library.NumberLibrary,"number"));
	this.functions.set("sum",$closure(xpath.library.NumberLibrary,"sum"));
	this.functions.set("floor",$closure(xpath.library.NumberLibrary,"floor"));
	this.functions.set("ceiling",$closure(xpath.library.NumberLibrary,"ceiling"));
	this.functions.set("round",$closure(xpath.library.NumberLibrary,"round"));
	$s.pop();
}
xpath.context.CoreEnvironment.prototype.__class__ = xpath.context.CoreEnvironment;
canvas.geom.Matrix = function(in_a,in_b,in_c,in_d,in_tx,in_ty) { if( in_a === $_ ) return; {
	$s.push("canvas.geom.Matrix::new");
	var $spos = $s.length;
	this.a = (in_a == null?1.0:in_a);
	this.b = (in_b == null?0.0:in_b);
	this.c = (in_c == null?0.0:in_c);
	this.d = (in_d == null?1.0:in_d);
	this.tx = (in_tx == null?0.0:in_tx);
	this.ty = (in_ty == null?0.0:in_ty);
	$s.pop();
}}
canvas.geom.Matrix.__name__ = ["canvas","geom","Matrix"];
canvas.geom.Matrix.prototype.a = null;
canvas.geom.Matrix.prototype.b = null;
canvas.geom.Matrix.prototype.c = null;
canvas.geom.Matrix.prototype.clone = function() {
	$s.push("canvas.geom.Matrix::clone");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Matrix.prototype.concat = function(m) {
	$s.push("canvas.geom.Matrix::concat");
	var $spos = $s.length;
	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;
	$s.pop();
}
canvas.geom.Matrix.prototype.createGradientBox = function(in_width,in_height,rotation,in_tx,in_ty) {
	$s.push("canvas.geom.Matrix::createGradientBox");
	var $spos = $s.length;
	this.a = in_width / 1638.4;
	this.d = in_height / 1638.4;
	if(rotation != null && rotation != 0.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 = this.c = 0;
	}
	this.tx = (in_tx != null?in_tx + in_width / 2:in_width / 2);
	this.ty = (in_ty != null?in_ty + in_height / 2:in_height / 2);
	$s.pop();
}
canvas.geom.Matrix.prototype.d = null;
canvas.geom.Matrix.prototype.identity = function() {
	$s.push("canvas.geom.Matrix::identity");
	var $spos = $s.length;
	throw "Not implemented";
	$s.pop();
}
canvas.geom.Matrix.prototype.invert = function() {
	$s.push("canvas.geom.Matrix::invert");
	var $spos = $s.length;
	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;
	}
	{
		$s.pop();
		return this;
	}
	$s.pop();
}
canvas.geom.Matrix.prototype.mult = function(m) {
	$s.push("canvas.geom.Matrix::mult");
	var $spos = $s.length;
	var result = new canvas.geom.Matrix();
	result.a = this.a * m.a + this.b * m.c;
	result.b = this.a * m.b + this.b * m.d;
	result.c = this.c * m.a + this.d * m.c;
	result.d = this.c * m.b + this.d * m.d;
	result.tx = this.tx * m.a + this.ty * m.c + m.tx;
	result.ty = this.tx * m.b + this.ty * m.d + m.ty;
	{
		$s.pop();
		return result;
	}
	$s.pop();
}
canvas.geom.Matrix.prototype.rotate = function(inTheta) {
	$s.push("canvas.geom.Matrix::rotate");
	var $spos = $s.length;
	var cos = Math.cos(inTheta);
	var sin = Math.sin(inTheta);
	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;
	$s.pop();
}
canvas.geom.Matrix.prototype.scale = function(inSX,inSY) {
	$s.push("canvas.geom.Matrix::scale");
	var $spos = $s.length;
	this.a *= inSX;
	this.b *= inSY;
	this.c *= inSX;
	this.d *= inSY;
	this.tx *= inSX;
	this.ty *= inSY;
	$s.pop();
}
canvas.geom.Matrix.prototype.setRotation = function(inTheta,inScale) {
	$s.push("canvas.geom.Matrix::setRotation");
	var $spos = $s.length;
	var scale = (inScale == null?1.0:inScale);
	this.a = Math.cos(inTheta) * scale;
	this.c = Math.sin(inTheta) * scale;
	this.b = -this.c;
	this.d = this.a;
	$s.pop();
}
canvas.geom.Matrix.prototype.transformPoint = function(inPos) {
	$s.push("canvas.geom.Matrix::transformPoint");
	var $spos = $s.length;
	{
		var $tmp = new canvas.geom.Point(inPos.x * this.a + inPos.y * this.c + this.tx,inPos.x * this.b + inPos.y * this.d + this.ty);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
canvas.geom.Matrix.prototype.translate = function(inDX,inDY) {
	$s.push("canvas.geom.Matrix::translate");
	var $spos = $s.length;
	this.tx += inDX;
	this.ty += inDY;
	$s.pop();
}
canvas.geom.Matrix.prototype.tx = null;
canvas.geom.Matrix.prototype.ty = null;
canvas.geom.Matrix.prototype.__class__ = canvas.geom.Matrix;
Lambda = function() { }
Lambda.__name__ = ["Lambda"];
Lambda.array = function(it) {
	$s.push("Lambda::array");
	var $spos = $s.length;
	var a = new Array();
	{ var $it80 = it.iterator();
	while( $it80.hasNext() ) { var i = $it80.next();
	a.push(i);
	}}
	{
		$s.pop();
		return a;
	}
	$s.pop();
}
Lambda.list = function(it) {
	$s.push("Lambda::list");
	var $spos = $s.length;
	var l = new List();
	{ var $it81 = it.iterator();
	while( $it81.hasNext() ) { var i = $it81.next();
	l.add(i);
	}}
	{
		$s.pop();
		return l;
	}
	$s.pop();
}
Lambda.map = function(it,f) {
	$s.push("Lambda::map");
	var $spos = $s.length;
	var l = new List();
	{ var $it82 = it.iterator();
	while( $it82.hasNext() ) { var x = $it82.next();
	l.add(f(x));
	}}
	{
		$s.pop();
		return l;
	}
	$s.pop();
}
Lambda.mapi = function(it,f) {
	$s.push("Lambda::mapi");
	var $spos = $s.length;
	var l = new List();
	var i = 0;
	{ var $it83 = it.iterator();
	while( $it83.hasNext() ) { var x = $it83.next();
	l.add(f(i++,x));
	}}
	{
		$s.pop();
		return l;
	}
	$s.pop();
}
Lambda.has = function(it,elt,cmp) {
	$s.push("Lambda::has");
	var $spos = $s.length;
	if(cmp == null) {
		{ var $it84 = it.iterator();
		while( $it84.hasNext() ) { var x = $it84.next();
		if(x == elt) {
			$s.pop();
			return true;
		}
		}}
	}
	else {
		{ var $it85 = it.iterator();
		while( $it85.hasNext() ) { var x = $it85.next();
		if(cmp(x,elt)) {
			$s.pop();
			return true;
		}
		}}
	}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
Lambda.exists = function(it,f) {
	$s.push("Lambda::exists");
	var $spos = $s.length;
	{ var $it86 = it.iterator();
	while( $it86.hasNext() ) { var x = $it86.next();
	if(f(x)) {
		$s.pop();
		return true;
	}
	}}
	{
		$s.pop();
		return false;
	}
	$s.pop();
}
Lambda.foreach = function(it,f) {
	$s.push("Lambda::foreach");
	var $spos = $s.length;
	{ var $it87 = it.iterator();
	while( $it87.hasNext() ) { var x = $it87.next();
	if(!f(x)) {
		$s.pop();
		return false;
	}
	}}
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
Lambda.iter = function(it,f) {
	$s.push("Lambda::iter");
	var $spos = $s.length;
	{ var $it88 = it.iterator();
	while( $it88.hasNext() ) { var x = $it88.next();
	f(x);
	}}
	$s.pop();
}
Lambda.filter = function(it,f) {
	$s.push("Lambda::filter");
	var $spos = $s.length;
	var l = new List();
	{ var $it89 = it.iterator();
	while( $it89.hasNext() ) { var x = $it89.next();
	if(f(x)) l.add(x);
	}}
	{
		$s.pop();
		return l;
	}
	$s.pop();
}
Lambda.fold = function(it,f,first) {
	$s.push("Lambda::fold");
	var $spos = $s.length;
	{ var $it90 = it.iterator();
	while( $it90.hasNext() ) { var x = $it90.next();
	first = f(x,first);
	}}
	{
		$s.pop();
		return first;
	}
	$s.pop();
}
Lambda.count = function(it) {
	$s.push("Lambda::count");
	var $spos = $s.length;
	var n = 0;
	{ var $it91 = it.iterator();
	while( $it91.hasNext() ) { var _ = $it91.next();
	++n;
	}}
	{
		$s.pop();
		return n;
	}
	$s.pop();
}
Lambda.empty = function(it) {
	$s.push("Lambda::empty");
	var $spos = $s.length;
	{
		var $tmp = !it.iterator().hasNext();
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
Lambda.prototype.__class__ = Lambda;
xpath.tokenizer.token.OperatorTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.token.OperatorTokenizer::new");
	var $spos = $s.length;
	this.operatorSymbolToOperator = new Hash();
	this.operatorSymbolToOperator.set("and",xpath.Operator.And);
	this.operatorSymbolToOperator.set("mod",xpath.Operator.Modulo);
	this.operatorSymbolToOperator.set("div",xpath.Operator.Divide);
	this.operatorSymbolToOperator.set("or",xpath.Operator.Or);
	this.operatorSymbolToOperator.set("!=",xpath.Operator.NotEqual);
	this.operatorSymbolToOperator.set("<=",xpath.Operator.LessThanOrEqual);
	this.operatorSymbolToOperator.set(">=",xpath.Operator.GreaterThanOrEqual);
	this.operatorSymbolToOperator.set("=",xpath.Operator.Equal);
	this.operatorSymbolToOperator.set("|",xpath.Operator.Union);
	this.operatorSymbolToOperator.set("+",xpath.Operator.Plus);
	this.operatorSymbolToOperator.set("-",xpath.Operator.Minus);
	this.operatorSymbolToOperator.set("<",xpath.Operator.LessThan);
	this.operatorSymbolToOperator.set(">",xpath.Operator.GreaterThan);
	this.operatorSymbolToOperator.set("*",xpath.Operator.Multiply);
	this.operatorSymbols = new Array();
	{ var $it92 = this.operatorSymbolToOperator.keys();
	while( $it92.hasNext() ) { var operatorSymbol = $it92.next();
	{
		this.operatorSymbols.push(operatorSymbol);
	}
	}}
	this.operatorSymbols.sort(function(x,y) {
		$s.push("xpath.tokenizer.token.OperatorTokenizer::new@64");
		var $spos = $s.length;
		{
			var $tmp = y.length - x.length;
			$s.pop();
			return $tmp;
		}
		$s.pop();
	});
	$s.pop();
}}
xpath.tokenizer.token.OperatorTokenizer.__name__ = ["xpath","tokenizer","token","OperatorTokenizer"];
xpath.tokenizer.token.OperatorTokenizer.__super__ = xpath.tokenizer.token.TokenTokenizer;
for(var k in xpath.tokenizer.token.TokenTokenizer.prototype ) xpath.tokenizer.token.OperatorTokenizer.prototype[k] = xpath.tokenizer.token.TokenTokenizer.prototype[k];
xpath.tokenizer.token.OperatorTokenizer.instance = null;
xpath.tokenizer.token.OperatorTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.token.OperatorTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.token.OperatorTokenizer.instance == null) xpath.tokenizer.token.OperatorTokenizer.instance = new xpath.tokenizer.token.OperatorTokenizer();
	{
		var $tmp = xpath.tokenizer.token.OperatorTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.token.OperatorTokenizer.prototype.operatorSymbolToOperator = null;
xpath.tokenizer.token.OperatorTokenizer.prototype.operatorSymbols = null;
xpath.tokenizer.token.OperatorTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.token.OperatorTokenizer::tokenize");
	var $spos = $s.length;
	var pos = input.position;
	{
		var _g = 0, _g1 = this.operatorSymbols;
		while(_g < _g1.length) {
			var operatorSymbol = _g1[_g];
			++_g;
			if(input.query.substr(pos,operatorSymbol.length) == operatorSymbol) {
				pos += operatorSymbol.length;
				var operator = this.operatorSymbolToOperator.get(operatorSymbol);
				var result = [function($this) {
					var $r;
					var tmp = new xpath.tokenizer.OperatorToken(operator);
					$r = (Std["is"](tmp,xpath.tokenizer.Token)?tmp:function($this) {
						var $r;
						throw "Class cast error";
						return $r;
					}($this));
					return $r;
				}(this)];
				var characterLength = pos - input.position;
				characterLength += this.countWhitespace(input.query,pos);
				{
					var $tmp = input.getOutput(result,characterLength);
					$s.pop();
					return $tmp;
				}
			}
		}
	}
	throw new xpath.tokenizer.ExpectedException([{ tokenName : "Operator", position : input.position}]);
	$s.pop();
}
xpath.tokenizer.token.OperatorTokenizer.prototype.__class__ = xpath.tokenizer.token.OperatorTokenizer;
neash.media.SoundTransform = function(vol,panning) { if( vol === $_ ) return; {
	$s.push("neash.media.SoundTransform::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
neash.media.SoundTransform.__name__ = ["neash","media","SoundTransform"];
neash.media.SoundTransform.prototype.leftToLeft = null;
neash.media.SoundTransform.prototype.leftToRight = null;
neash.media.SoundTransform.prototype.pan = null;
neash.media.SoundTransform.prototype.rightToLeft = null;
neash.media.SoundTransform.prototype.rightToRight = null;
neash.media.SoundTransform.prototype.volume = null;
neash.media.SoundTransform.prototype.__class__ = neash.media.SoundTransform;
haxe.Timer = function(time_ms) { if( time_ms === $_ ) return; {
	$s.push("haxe.Timer::new");
	var $spos = $s.length;
	this.id = haxe.Timer.arr.length;
	haxe.Timer.arr[this.id] = this;
	this.timerId = window.setInterval("haxe.Timer.arr[" + this.id + "].run();",time_ms);
	$s.pop();
}}
haxe.Timer.__name__ = ["haxe","Timer"];
haxe.Timer.delay = function(f,time_ms) {
	$s.push("haxe.Timer::delay");
	var $spos = $s.length;
	var t = new haxe.Timer(time_ms);
	t.run = function() {
		$s.push("haxe.Timer::delay@78");
		var $spos = $s.length;
		t.stop();
		f();
		$s.pop();
	}
	$s.pop();
}
haxe.Timer.stamp = function() {
	$s.push("haxe.Timer::stamp");
	var $spos = $s.length;
	{
		var $tmp = Date.now().getTime() / 1000;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
haxe.Timer.prototype.id = null;
haxe.Timer.prototype.run = function() {
	$s.push("haxe.Timer::run");
	var $spos = $s.length;
	null;
	$s.pop();
}
haxe.Timer.prototype.stop = function() {
	$s.push("haxe.Timer::stop");
	var $spos = $s.length;
	if(this.id == null) {
		$s.pop();
		return;
	}
	window.clearInterval(this.timerId);
	haxe.Timer.arr[this.id] = null;
	if(this.id > 100 && this.id == haxe.Timer.arr.length - 1) {
		var p = this.id - 1;
		while(p >= 0 && haxe.Timer.arr[p] == null) p--;
		haxe.Timer.arr = haxe.Timer.arr.slice(0,p + 1);
	}
	this.id = null;
	$s.pop();
}
haxe.Timer.prototype.timerId = null;
haxe.Timer.prototype.__class__ = haxe.Timer;
neash.display.Loader = function(p) { if( p === $_ ) return; {
	$s.push("neash.display.Loader::new");
	var $spos = $s.length;
	neash.display.DisplayObjectContainer.apply(this,[]);
	$s.pop();
}}
neash.display.Loader.__name__ = ["neash","display","Loader"];
neash.display.Loader.__super__ = neash.display.DisplayObjectContainer;
for(var k in neash.display.DisplayObjectContainer.prototype ) neash.display.Loader.prototype[k] = neash.display.DisplayObjectContainer.prototype[k];
neash.display.Loader.prototype.content = null;
neash.display.Loader.prototype.contentLoaderInfo = null;
neash.display.Loader.prototype.load = function(request) {
	$s.push("neash.display.Loader::load");
	var $spos = $s.length;
	this.mImage = new canvas.display.BitmapData(0,0);
	this.contentLoaderInfo = new neash.display.LoaderInfo();
	this.mImage.LoadFromFile(request.url,this.contentLoaderInfo);
	this.content = new neash.display.Bitmap(this.mImage);
	if(this.mShape == null) {
		this.mShape = new neash.display.Shape();
		this.addChild(this.mShape);
	}
	else this.mShape.GetGraphics().clear();
	$s.pop();
}
neash.display.Loader.prototype.mImage = null;
neash.display.Loader.prototype.mShape = null;
neash.display.Loader.prototype.__class__ = neash.display.Loader;
xpath.tokenizer.container.ExpressionTokenizer = function(p) { if( p === $_ ) return; {
	$s.push("xpath.tokenizer.container.ExpressionTokenizer::new");
	var $spos = $s.length;
	null;
	$s.pop();
}}
xpath.tokenizer.container.ExpressionTokenizer.__name__ = ["xpath","tokenizer","container","ExpressionTokenizer"];
xpath.tokenizer.container.ExpressionTokenizer.instance = null;
xpath.tokenizer.container.ExpressionTokenizer.getInstance = function() {
	$s.push("xpath.tokenizer.container.ExpressionTokenizer::getInstance");
	var $spos = $s.length;
	if(xpath.tokenizer.container.ExpressionTokenizer.instance == null) {
		xpath.tokenizer.container.ExpressionTokenizer.instance = new xpath.tokenizer.container.ExpressionTokenizer();
		xpath.tokenizer.container.ExpressionTokenizer.instance.init();
	}
	{
		var $tmp = xpath.tokenizer.container.ExpressionTokenizer.instance;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.ExpressionTokenizer.prototype.init = function() {
	$s.push("xpath.tokenizer.container.ExpressionTokenizer::init");
	var $spos = $s.length;
	this.tokenizer = new xpath.tokenizer.util.Sequence([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.BeginExpressionTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.OperandTokenizer.getInstance(),new xpath.tokenizer.util.Repetition([function($this) {
		var $r;
		var tmp = xpath.tokenizer.token.OperatorTokenizer.getInstance();
		$r = (Std["is"](tmp,xpath.tokenizer.Tokenizer)?tmp:function($this) {
			var $r;
			throw "Class cast error";
			return $r;
		}($this));
		return $r;
	}(this),xpath.tokenizer.container.OperandTokenizer.getInstance()]),xpath.tokenizer.token.EndExpressionTokenizer.getInstance()]);
	$s.pop();
}
xpath.tokenizer.container.ExpressionTokenizer.prototype.tokenize = function(input) {
	$s.push("xpath.tokenizer.container.ExpressionTokenizer::tokenize");
	var $spos = $s.length;
	{
		var $tmp = this.tokenizer.tokenize(input);
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
xpath.tokenizer.container.ExpressionTokenizer.prototype.tokenizer = null;
xpath.tokenizer.container.ExpressionTokenizer.prototype.__class__ = xpath.tokenizer.container.ExpressionTokenizer;
xpath.tokenizer.container.ExpressionTokenizer.__interfaces__ = [xpath.tokenizer.Tokenizer];
sandy.core.Scene3D = function(p_sName,p_oContainer,p_oCamera,p_oRootNode) { if( p_sName === $_ ) return; {
	$s.push("sandy.core.Scene3D::new");
	var $spos = $s.length;
	this.materialManager = new sandy.materials.MaterialManager();
	this.m_bRectClipped = true;
	neash.events.EventDispatcher.apply(this,[]);
	if(sandy.core.SceneLocator.getInstance().registerScene(p_sName,this)) {
		this.container = p_oContainer;
		this.camera = p_oCamera;
		this.root = p_oRootNode;
		if(this.root != null && this.camera != null) {
			this.root.addChild(this.camera);
		}
	}
	this.m_sName = p_sName;
	this._light = new sandy.core.light.Light3D(new sandy.core.data.Vector(0,0,1),100);
	$s.pop();
}}
sandy.core.Scene3D.__name__ = ["sandy","core","Scene3D"];
sandy.core.Scene3D.__super__ = neash.events.EventDispatcher;
for(var k in neash.events.EventDispatcher.prototype ) sandy.core.Scene3D.prototype[k] = neash.events.EventDispatcher.prototype[k];
sandy.core.Scene3D.prototype.__getLight = function() {
	$s.push("sandy.core.Scene3D::__getLight");
	var $spos = $s.length;
	{
		var $tmp = this._light;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.Scene3D.prototype.__getName = function() {
	$s.push("sandy.core.Scene3D::__getName");
	var $spos = $s.length;
	{
		var $tmp = this.m_sName;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.Scene3D.prototype.__getRectClipping = function() {
	$s.push("sandy.core.Scene3D::__getRectClipping");
	var $spos = $s.length;
	{
		var $tmp = this.m_bRectClipped;
		$s.pop();
		return $tmp;
	}
	$s.pop();
}
sandy.core.Scene3D.prototype.__setLight = function(l) {
	$s.push("sandy.core.Scene3D::__setLight");
	var $spos = $s.length;
	if(this._light != null) {
		this._light.destroy();
	}
	this._light = l;
	this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.LIGHT_ADDED));
	{
		$s.pop();
		return l;
	}
	$s.pop();
}
sandy.core.Scene3D.prototype.__setRectClipping = function(p_bEnableClipping) {
	$s.push("sandy.core.Scene3D::__setRectClipping");
	var $spos = $s.length;
	this.m_bRectClipped = p_bEnableClipping;
	if(this.camera != null) {
		this.camera.viewport.hasChanged = true;
	}
	{
		$s.pop();
		return p_bEnableClipping;
	}
	$s.pop();
}
sandy.core.Scene3D.prototype._light = null;
sandy.core.Scene3D.prototype.camera = null;
sandy.core.Scene3D.prototype.container = null;
sandy.core.Scene3D.prototype.dispose = function() {
	$s.push("sandy.core.Scene3D::dispose");
	var $spos = $s.length;
	sandy.core.SceneLocator.getInstance().unregisterScene(this.m_sName);
	this.root.destroy();
	if(this.root != null) {
		this.root = null;
	}
	if(this.camera != null) {
		this.camera = null;
	}
	if(this._light != null) {
		this._light = null;
	}
	{
		$s.pop();
		return true;
	}
	$s.pop();
}
sandy.core.Scene3D.prototype.light = null;
sandy.core.Scene3D.prototype.m_bRectClipped = null;
sandy.core.Scene3D.prototype.m_sName = null;
sandy.core.Scene3D.prototype.materialManager = null;
sandy.core.Scene3D.prototype.name = null;
sandy.core.Scene3D.prototype.rectClipping = null;
sandy.core.Scene3D.prototype.render = function(p_oEvt) {
	$s.push("sandy.core.Scene3D::render");
	var $spos = $s.length;
	if(this.root != null && this.camera != null && this.container != null) {
		this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.SCENE_UPDATE));
		this.root.update(this,null,false);
		this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.SCENE_CULL));
		this.root.cull(this,this.camera.frustrum,this.camera.invModelMatrix,this.camera.changed);
		this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.SCENE_RENDER));
		this.root.render(this,this.camera);
		this.dispatchEvent(new sandy.events.SandyEvent(sandy.events.SandyEvent.SCENE_RENDER_DISPLAYLIST));
		this.materialManager.begin(this);
		this.camera.renderDisplayList(this);
		this.materialManager.finish(this);
	}
	$s.pop();
}
sandy.core.Scene3D.prototype.root = null;
sandy.core.Scene3D.prototype.__class__ = sandy.core.Scene3D;
xpath.NodeCategory = { __ename__ : ["xpath","NodeCategory"], __constructs__ : ["Comment","Text","Node"] }
xpath.NodeCategory.Comment = ["Comment",0];
xpath.NodeCategory.Comment.toString = $estr;
xpath.NodeCategory.Comment.__enum__ = xpath.NodeCategory;
xpath.NodeCategory.Node = ["Node",2];
xpath.NodeCategory.Node.toString = $estr;
xpath.NodeCategory.Node.__enum__ = xpath.NodeCategory;
xpath.NodeCategory.Text = ["Text",1];
xpath.NodeCategory.Text.toString = $estr;
xpath.NodeCategory.Text.__enum__ = xpath.NodeCategory;
$Main = function() { }
$Main.__name__ = ["@Main"];
$Main.prototype.__class__ = $Main;
$_ = {}
js.Boot.__res = {}
$s = [];
$e = [];
js.Boot.__init();
{
	Math.NaN = Number["NaN"];
	Math.NEGATIVE_INFINITY = Number["NEGATIVE_INFINITY"];
	Math.POSITIVE_INFINITY = Number["POSITIVE_INFINITY"];
	Math.isFinite = function(i) {
		$s.push("@Main::new@73");
		var $spos = $s.length;
		{
			var $tmp = isFinite(i);
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	Math.isNaN = function(i) {
		$s.push("@Main::new@85");
		var $spos = $s.length;
		{
			var $tmp = isNaN(i);
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	Math.__name__ = ["Math"];
}
{
	String.prototype.__class__ = String;
	String.__name__ = ["String"];
	Array.prototype.__class__ = Array;
	Array.__name__ = ["Array"];
	Int = { __name__ : ["Int"]}
	Dynamic = { __name__ : ["Dynamic"]}
	Float = Number;
	Float.__name__ = ["Float"];
	Bool = { __ename__ : ["Bool"]}
	Class = { __name__ : ["Class"]}
	Enum = { }
	Void = { __ename__ : ["Void"]}
}
{
	Xml = js.JsXml__;
	Xml.__name__ = ["Xml"];
	Xml.Element = "element";
	Xml.PCData = "pcdata";
	Xml.CData = "cdata";
	Xml.Comment = "comment";
	Xml.DocType = "doctype";
	Xml.Prolog = "prolog";
	Xml.Document = "document";
}
{
	js["XMLHttpRequest"] = (window.XMLHttpRequest?XMLHttpRequest:(window.ActiveXObject?function() {
		$s.push("@Main::new@53");
		var $spos = $s.length;
		try {
			{
				var $tmp = new ActiveXObject("Msxml2.XMLHTTP");
				$s.pop();
				return $tmp;
			}
		}
		catch( $e93 ) {
			{
				var e = $e93;
				{
					$e = [];
					while($s.length >= $spos) $e.unshift($s.pop());
					$s.push($e[0]);
					try {
						{
							var $tmp = new ActiveXObject("Microsoft.XMLHTTP");
							$s.pop();
							return $tmp;
						}
					}
					catch( $e94 ) {
						{
							var e1 = $e94;
							{
								$e = [];
								while($s.length >= $spos) $e.unshift($s.pop());
								$s.push($e[0]);
								throw "Unable to create XMLHttpRequest object.";
							}
						}
					}
				}
			}
		}
		$s.pop();
	}:function($this) {
		var $r;
		throw "Unable to create XMLHttpRequest object.";
		return $r;
	}(this)));
}
{
	onerror = function(msg,url,line) {
		var stack = $s.copy();
		var f = js.Lib.onerror;
		$s.splice(0,$s.length);
		if( f == null ) {
			var i = stack.length;
			var s = "";
			while( --i >= 0 )
				s += "Called from "+stack[i]+"\n";
			alert(msg+"\n\n"+s);
			return false;
		}
		return f(msg,stack);
	}
}
{
	Date.now = function() {
		$s.push("@Main::new@119");
		var $spos = $s.length;
		{
			var $tmp = new Date();
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	Date.fromTime = function(t) {
		$s.push("@Main::new@122");
		var $spos = $s.length;
		var d = new Date();
		d["setTime"](t);
		{
			$s.pop();
			return d;
		}
		$s.pop();
	}
	Date.fromString = function(s) {
		$s.push("@Main::new@131");
		var $spos = $s.length;
		switch(s.length) {
		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]);
			{
				$s.pop();
				return d;
			}
		}break;
		case 10:{
			var k = s.split("-");
			{
				var $tmp = new Date(k[0],k[1] - 1,k[2],0,0,0);
				$s.pop();
				return $tmp;
			}
		}break;
		case 19:{
			var k = s.split(" ");
			var y = k[0].split("-");
			var t = k[1].split(":");
			{
				var $tmp = new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]);
				$s.pop();
				return $tmp;
			}
		}break;
		default:{
			throw "Invalid date format : " + s;
		}break;
		}
		$s.pop();
	}
	Date.prototype["toString"] = function() {
		$s.push("@Main::new@160");
		var $spos = $s.length;
		var date = this;
		var m = date.getMonth() + 1;
		var d = date.getDate();
		var h = date.getHours();
		var mi = date.getMinutes();
		var s = date.getSeconds();
		{
			var $tmp = 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));
			$s.pop();
			return $tmp;
		}
		$s.pop();
	}
	Date.prototype.__class__ = Date;
	Date.__name__ = ["Date"];
}
neash.text.FontInstance.mSolidFonts = new Hash();
neash.display.DisplayObject.TRANSLATE_CHANGE = 1;
neash.display.DisplayObject.NON_TRANSLATE_CHANGE = 2;
neash.display.DisplayObject.GRAPHICS_CHANGE = 4;
sandy.core.SandyFlags.POLYGON_NORMAL_WORLD = 1;
sandy.core.SandyFlags.VERTEX_NORMAL_WORLD = 2;
sandy.math.FastMath.PRECISION = 131072;
sandy.math.FastMath.TWO_PI = 2 * Math.PI;
sandy.math.FastMath.HALF_PI = Math.PI / 2;
sandy.math.FastMath.PRECISION_S = sandy.math.FastMath.PRECISION - 1;
sandy.math.FastMath.PRECISION_DIV_2PI = sandy.math.FastMath.PRECISION / sandy.math.FastMath.TWO_PI;
neash.text.NeashText.mDefaultFont = "Times.ttf";
neash.text.NeashText.sSelectionOwner = null;
neash.text.TextFieldType.DYNAMIC = "DYNAMIC";
neash.text.TextFieldType.INPUT = "INPUT";
sandy.core.scenegraph.Node._ID_ = 0;
neash.swf.Tags.End = 0;
neash.swf.Tags.ShowFrame = 1;
neash.swf.Tags.DefineShape = 2;
neash.swf.Tags.FreeCharacter = 3;
neash.swf.Tags.PlaceObject = 4;
neash.swf.Tags.RemoveObject = 5;
neash.swf.Tags.DefineBits = 6;
neash.swf.Tags.DefineButton = 7;
neash.swf.Tags.JPEGTables = 8;
neash.swf.Tags.SetBackgroundColor = 9;
neash.swf.Tags.DefineFont = 10;
neash.swf.Tags.DefineText = 11;
neash.swf.Tags.DoAction = 12;
neash.swf.Tags.DefineFontInfo = 13;
neash.swf.Tags.DefineSound = 14;
neash.swf.Tags.StartSound = 15;
neash.swf.Tags.StopSound = 16;
neash.swf.Tags.DefineButtonSound = 17;
neash.swf.Tags.SoundStreamHead = 18;
neash.swf.Tags.SoundStreamBlock = 19;
neash.swf.Tags.DefineBitsLossless = 20;
neash.swf.Tags.DefineBitsJPEG2 = 21;
neash.swf.Tags.DefineShape2 = 22;
neash.swf.Tags.DefineButtonCxform = 23;
neash.swf.Tags.Protect = 24;
neash.swf.Tags.PathsArePostScript = 25;
neash.swf.Tags.PlaceObject2 = 26;
neash.swf.Tags.c27 = 27;
neash.swf.Tags.RemoveObject2 = 28;
neash.swf.Tags.SyncFrame = 29;
neash.swf.Tags.c30 = 30;
neash.swf.Tags.FreeAll = 31;
neash.swf.Tags.DefineShape3 = 32;
neash.swf.Tags.DefineText2 = 33;
neash.swf.Tags.DefineButton2 = 34;
neash.swf.Tags.DefineBitsJPEG3 = 35;
neash.swf.Tags.DefineBitsLossless2 = 36;
neash.swf.Tags.DefineEditText = 37;
neash.swf.Tags.DefineVideo = 38;
neash.swf.Tags.DefineSprite = 39;
neash.swf.Tags.NameCharacter = 40;
neash.swf.Tags.ProductInfo = 41;
neash.swf.Tags.DefineTextFormat = 42;
neash.swf.Tags.FrameLabel = 43;
neash.swf.Tags.DefineBehavior = 44;
neash.swf.Tags.SoundStreamHead2 = 45;
neash.swf.Tags.DefineMorphShape = 46;
neash.swf.Tags.FrameTag = 47;
neash.swf.Tags.DefineFont2 = 48;
neash.swf.Tags.GenCommand = 49;
neash.swf.Tags.DefineCommandObj = 50;
neash.swf.Tags.CharacterSet = 51;
neash.swf.Tags.FontRef = 52;
neash.swf.Tags.DefineFunction = 53;
neash.swf.Tags.PlaceFunction = 54;
neash.swf.Tags.GenTagObject = 55;
neash.swf.Tags.ExportAssets = 56;
neash.swf.Tags.ImportAssets = 57;
neash.swf.Tags.EnableDebugger = 58;
neash.swf.Tags.DoInitAction = 59;
neash.swf.Tags.DefineVideoStream = 60;
neash.swf.Tags.VideoFrame = 61;
neash.swf.Tags.DefineFontInfo2 = 62;
neash.swf.Tags.DebugID = 63;
neash.swf.Tags.EnableDebugger2 = 64;
neash.swf.Tags.ScriptLimits = 65;
neash.swf.Tags.SetTabIndex = 66;
neash.swf.Tags.DefineShape4_hmm = 67;
neash.swf.Tags.c68 = 68;
neash.swf.Tags.FileAttributes = 69;
neash.swf.Tags.PlaceObject3 = 70;
neash.swf.Tags.ImportAssets2 = 71;
neash.swf.Tags.DoABC = 72;
neash.swf.Tags.DefineFontAlignZones = 73;
neash.swf.Tags.CSMTextSettings = 74;
neash.swf.Tags.DefineFont3 = 75;
neash.swf.Tags.SymbolClass = 76;
neash.swf.Tags.MetaData = 77;
neash.swf.Tags.DefineScalingGrid = 78;
neash.swf.Tags.c79 = 79;
neash.swf.Tags.c80 = 80;
neash.swf.Tags.c81 = 81;
neash.swf.Tags.DoABC2 = 82;
neash.swf.Tags.DefineShape4 = 83;
neash.swf.Tags.DefineMorphShape2 = 84;
neash.swf.Tags.c85 = 85;
neash.swf.Tags.DefineSceneAndFrameLabelData = 86;
neash.swf.Tags.DefineBinaryData = 87;
neash.swf.Tags.DefineFontName = 88;
neash.swf.Tags.StartSound2 = 89;
neash.swf.Tags.LAST = 90;
neash.swf.Tags.tags = ["End","ShowFrame","DefineShape","FreeCharacter","PlaceObject","RemoveObject","DefineBits","DefineButton","JPEGTables","SetBackgroundColor","DefineFont","DefineText","DoAction","DefineFontInfo","DefineSound","StartSound","StopSound","DefineButtonSound","SoundStreamHead","SoundStreamBlock","DefineBitsLossless","DefineBitsJPEG2","DefineShape2","DefineButtonCxform","Protect","PathsArePostScript","PlaceObject2","27 (invalid)","RemoveObject2","SyncFrame","30 (invalid)","FreeAll","DefineShape3","DefineText2","DefineButton2","DefineBitsJPEG3","DefineBitsLossless2","DefineEditText","DefineVideo","DefineSprite","NameCharacter","ProductInfo","DefineTextFormat","FrameLabel","DefineBehavior","SoundStreamHead2","DefineMorphShape","FrameTag","DefineFont2","GenCommand","DefineCommandObj","CharacterSet","FontRef","DefineFunction","PlaceFunction","GenTagObject","ExportAssets","ImportAssets","EnableDebugger","DoInitAction","DefineVideoStream","VideoFrame","DefineFontInfo2","DebugID","EnableDebugger2","ScriptLimits","SetTabIndex","DefineShape4","DefineMorphShape2","FileAttributes","PlaceObject3","ImportAssets2","DoABC","DefineFontAlignZones","CSMTextSettings","DefineFont3","SymbolClass","Metadata","DefineScalingGrid","79 (invalid)","80 (invalid)","81 (invalid)","DoABC2","DefineShape4","DefineMorphShape2","c85","DefineSceneAndFrameLabelData","DefineBinaryData","DefineFontName","StartSound2","LAST"];
neash.events.Event.ACTIVATE = "activate";
neash.events.Event.ADDED = "added";
neash.events.Event.ADDED_TO_STAGE = "addedToStage";
neash.events.Event.CANCEL = "cancel";
neash.events.Event.CHANGE = "change";
neash.events.Event.CLOSE = "close";
neash.events.Event.COMPLETE = "complete";
neash.events.Event.CONNECT = "connect";
neash.events.Event.DEACTIVATE = "deactivate";
neash.events.Event.ENTER_FRAME = "enterFrame";
neash.events.Event.ID3 = "id3";
neash.events.Event.INIT = "init";
neash.events.Event.MOUSE_LEAVE = "mouseLeave";
neash.events.Event.OPEN = "open";
neash.events.Event.REMOVED = "removed";
neash.events.Event.REMOVED_FROM_STAGE = "removedFromStage";
neash.events.Event.RENDER = "render";
neash.events.Event.RESIZE = "resize";
neash.events.Event.SCROLL = "scroll";
neash.events.Event.SELECT = "select";
neash.events.Event.SOUND_COMPLETE = "soundComplete";
neash.events.Event.TAB_CHILDREN_CHANGE = "tabChildrenChange";
neash.events.Event.TAB_ENABLED_CHANGE = "tabEnabledChange";
neash.events.Event.TAB_INDEX_CHANGE = "tabIndexChange";
neash.events.Event.UNLOAD = "unload";
sandy.parser.ParserEvent.FAIL = "onFailEVENT";
sandy.parser.ParserEvent.INIT = "onInitEVENT";
sandy.parser.ParserEvent.LOAD = "onLoadEVENT";
sandy.parser.ParserEvent.PROGRESS = "onProgressEVENT";
sandy.parser.ParserEvent.PARSING = "onParsingEVENT";
neash.events.ProgressEvent.PROGRESS = "progress";
neash.events.ProgressEvent.SOCKET_DATA = "socketData";
neash.text.FontManager.mFontMap = new Hash();
neash.text.FontManager.mSWFFonts = new Hash();
sandy.parser.Parser3DSChunkTypes.MAIN3DS = 19789;
sandy.parser.Parser3DSChunkTypes.EDIT3DS = 15677;
sandy.parser.Parser3DSChunkTypes.KEYF3DS = 45056;
sandy.parser.Parser3DSChunkTypes.EDIT_MATERIAL = 45055;
sandy.parser.Parser3DSChunkTypes.EDIT_CONFIG1 = 256;
sandy.parser.Parser3DSChunkTypes.EDIT_CONFIG2 = 15933;
sandy.parser.Parser3DSChunkTypes.EDIT_VIEW_P1 = 28690;
sandy.parser.Parser3DSChunkTypes.EDIT_VIEW_P2 = 28689;
sandy.parser.Parser3DSChunkTypes.EDIT_VIEW_P3 = 28704;
sandy.parser.Parser3DSChunkTypes.EDIT_VIEW1 = 28673;
sandy.parser.Parser3DSChunkTypes.EDIT_BACKGR = 4608;
sandy.parser.Parser3DSChunkTypes.EDIT_AMBIENT = 8448;
sandy.parser.Parser3DSChunkTypes.EDIT_OBJECT = 16384;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW01 = 4352;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW02 = 4609;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW03 = 4864;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW04 = 5120;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW05 = 5152;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW06 = 5200;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW07 = 5376;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW08 = 8704;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW09 = 8705;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW10 = 8720;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW11 = 8960;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW12 = 8962;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW13 = 12288;
sandy.parser.Parser3DSChunkTypes.EDIT_UNKNW14 = 45055;
sandy.parser.Parser3DSChunkTypes.OBJ_TRIMESH = 16640;
sandy.parser.Parser3DSChunkTypes.OBJ_LIGHT = 17920;
sandy.parser.Parser3DSChunkTypes.OBJ_CAMERA = 18176;
sandy.parser.Parser3DSChunkTypes.OBJ_UNKNWN01 = 16400;
sandy.parser.Parser3DSChunkTypes.OBJ_UNKNWN02 = 16402;
sandy.parser.Parser3DSChunkTypes.CAM_UNKNWN01 = 18192;
sandy.parser.Parser3DSChunkTypes.CAM_UNKNWN02 = 18208;
sandy.parser.Parser3DSChunkTypes.LIT_OFF = 17952;
sandy.parser.Parser3DSChunkTypes.LIT_SPOT = 17936;
sandy.parser.Parser3DSChunkTypes.LIT_UNKNWN01 = 18010;
sandy.parser.Parser3DSChunkTypes.TRI_VERTEXL = 16656;
sandy.parser.Parser3DSChunkTypes.TRI_FACEL2 = 16657;
sandy.parser.Parser3DSChunkTypes.TRI_FACEL1 = 16672;
sandy.parser.Parser3DSChunkTypes.TRI_TEXCOORD = 16704;
sandy.parser.Parser3DSChunkTypes.TRI_SMOOTH = 16720;
sandy.parser.Parser3DSChunkTypes.TRI_LOCAL = 16736;
sandy.parser.Parser3DSChunkTypes.TRI_VISIBLE = 16741;
sandy.parser.Parser3DSChunkTypes.KEYF_UNKNWN01 = 45065;
sandy.parser.Parser3DSChunkTypes.KEYF_UNKNWN02 = 45066;
sandy.parser.Parser3DSChunkTypes.KEYF_FRAMES = 45064;
sandy.parser.Parser3DSChunkTypes.KEYF_OBJDES = 45058;
sandy.parser.Parser3DSChunkTypes.NODE_ID = 45104;
sandy.parser.Parser3DSChunkTypes.NODE_HDR = 45072;
sandy.parser.Parser3DSChunkTypes.PIVOT = 45075;
sandy.parser.Parser3DSChunkTypes.POS_TRACK_TAG = 45088;
sandy.parser.Parser3DSChunkTypes.ROT_TRACK_TAG = 45089;
sandy.parser.Parser3DSChunkTypes.SCL_TRACK_TAG = 45090;
sandy.parser.Parser3DSChunkTypes.COL_RGB = 16;
sandy.parser.Parser3DSChunkTypes.COL_TRU = 17;
sandy.parser.Parser3DSChunkTypes.COL_UNK = 19;
sandy.parser.Parser3DSChunkTypes.TOP = 1;
sandy.parser.Parser3DSChunkTypes.BOTTOM = 2;
sandy.parser.Parser3DSChunkTypes.LEFT = 3;
sandy.parser.Parser3DSChunkTypes.RIGHT = 4;
sandy.parser.Parser3DSChunkTypes.FRONT = 5;
sandy.parser.Parser3DSChunkTypes.BACK = 6;
sandy.parser.Parser3DSChunkTypes.USER = 7;
sandy.parser.Parser3DSChunkTypes.CAMERA = 8;
sandy.parser.Parser3DSChunkTypes.LIGHT = 9;
sandy.parser.Parser3DSChunkTypes.DISABLED = 16;
sandy.parser.Parser3DSChunkTypes.BOGUS = 17;
sandy.materials.Material._ID_ = 0;
sandy.math.PlaneMath.NEGATIVE = -1;
sandy.math.PlaneMath.ON_PLANE = 0;
sandy.math.PlaneMath.POSITIVE = 1;
neash.events.Listener.sIDs = 1;
sandy.events.QueueEvent.QUEUE_COMPLETE = "queueComplete";
sandy.events.QueueEvent.QUEUE_LOADER_ERROR = "queueLoaderError";
neash.text.TextFormatAlign.LEFT = "left";
neash.text.TextFormatAlign.RIGHT = "right";
neash.text.TextFormatAlign.CENTER = "center";
neash.text.TextFormatAlign.JUSTIFY = "justify";
neash.events.KeyboardEvent.KEY_DOWN = "KEY_DOWN";
neash.events.KeyboardEvent.KEY_UP = "KEY_UP";
sandy.view.Frustum.NEAR = 0;
sandy.view.Frustum.FAR = 1;
sandy.view.Frustum.RIGHT = 2;
sandy.view.Frustum.LEFT = 3;
sandy.view.Frustum.TOP = 4;
sandy.view.Frustum.BOTTOM = 5;
sandy.view.Frustum.EPSILON = 0.005;
sandy.view.Frustum.INSIDE = sandy.view.CullingState.INSIDE;
sandy.view.Frustum.OUTSIDE = sandy.view.CullingState.OUTSIDE;
sandy.view.Frustum.INTERSECT = sandy.view.CullingState.INTERSECT;
sandy.core.data.Matrix4.USE_FAST_MATH = false;
sandy.core.scenegraph.Sound3D.LOOP = "loop";
sandy.core.scenegraph.Sound3D.CULL_PLAY = "cullPlay";
sandy.core.scenegraph.Sound3D.CULL_STOP = "cullStop";
sandy.core.scenegraph.Sound3D.SPEECH = "speech";
sandy.core.scenegraph.Sound3D.NOISE = "noise";
sandy.core.scenegraph.Sound3D.modelMatrix = new sandy.core.data.Matrix4();
sandy.util.NumberUtil.__TWO_PI = 2 * Math.PI;
sandy.util.NumberUtil.__PI = Math.PI;
sandy.util.NumberUtil.__HALF_PI = 0.5 * Math.PI;
sandy.util.NumberUtil.__TO_DREGREE = 180 / Math.PI;
sandy.util.NumberUtil.__TO_RADIAN = Math.PI / 180;
sandy.util.NumberUtil.TOL = 0.00001;
sandy.core.scenegraph.Group.children = new Array();
neash.events.IOErrorEvent.IO_ERROR = "IO_ERROR";
canvas.display.BitmapData.TRANSPARENT = 1;
canvas.display.BitmapData.HARDWARE = 2;
nme.KeyCode.UNKNOWN = 0;
nme.KeyCode.FIRST = 0;
nme.KeyCode.BACKSPACE = 8;
nme.KeyCode.TAB = 9;
nme.KeyCode.CLEAR = 12;
nme.KeyCode.RETURN = 13;
nme.KeyCode.PAUSE = 19;
nme.KeyCode.ESCAPE = 27;
nme.KeyCode.SPACE = 32;
nme.KeyCode.EXCLAIM = 33;
nme.KeyCode.QUOTEDBL = 34;
nme.KeyCode.HASH = 35;
nme.KeyCode.DOLLAR = 36;
nme.KeyCode.AMPERSAND = 38;
nme.KeyCode.QUOTE = 39;
nme.KeyCode.LEFTPAREN = 40;
nme.KeyCode.RIGHTPAREN = 41;
nme.KeyCode.ASTERISK = 42;
nme.KeyCode.PLUS = 43;
nme.KeyCode.COMMA = 44;
nme.KeyCode.MINUS = 45;
nme.KeyCode.PERIOD = 46;
nme.KeyCode.SLASH = 47;
nme.KeyCode.KEY_0 = 48;
nme.KeyCode.KEY_1 = 49;
nme.KeyCode.KEY_2 = 50;
nme.KeyCode.KEY_3 = 51;
nme.KeyCode.KEY_4 = 52;
nme.KeyCode.KEY_5 = 53;
nme.KeyCode.KEY_6 = 54;
nme.KeyCode.KEY_7 = 55;
nme.KeyCode.KEY_8 = 56;
nme.KeyCode.KEY_9 = 57;
nme.KeyCode.COLON = 58;
nme.KeyCode.SEMICOLON = 59;
nme.KeyCode.LESS = 60;
nme.KeyCode.EQUALS = 61;
nme.KeyCode.GREATER = 62;
nme.KeyCode.QUESTION = 63;
nme.KeyCode.AT = 64;
nme.KeyCode.LEFTBRACKET = 91;
nme.KeyCode.BACKSLASH = 92;
nme.KeyCode.RIGHTBRACKET = 93;
nme.KeyCode.CARET = 94;
nme.KeyCode.UNDERSCORE = 95;
nme.KeyCode.BACKQUOTE = 96;
nme.KeyCode.a = 97;
nme.KeyCode.b = 98;
nme.KeyCode.c = 99;
nme.KeyCode.d = 100;
nme.KeyCode.e = 101;
nme.KeyCode.f = 102;
nme.KeyCode.g = 103;
nme.KeyCode.h = 104;
nme.KeyCode.i = 105;
nme.KeyCode.j = 106;
nme.KeyCode.k = 107;
nme.KeyCode.l = 108;
nme.KeyCode.m = 109;
nme.KeyCode.n = 110;
nme.KeyCode.o = 111;
nme.KeyCode.p = 112;
nme.KeyCode.q = 113;
nme.KeyCode.r = 114;
nme.KeyCode.s = 115;
nme.KeyCode.t = 116;
nme.KeyCode.u = 117;
nme.KeyCode.v = 118;
nme.KeyCode.w = 119;
nme.KeyCode.x = 120;
nme.KeyCode.y = 121;
nme.KeyCode.z = 122;
nme.KeyCode.DELETE = 127;
nme.KeyCode.WORLD_0 = 160;
nme.KeyCode.WORLD_1 = 161;
nme.KeyCode.WORLD_2 = 162;
nme.KeyCode.WORLD_3 = 163;
nme.KeyCode.WORLD_4 = 164;
nme.KeyCode.WORLD_5 = 165;
nme.KeyCode.WORLD_6 = 166;
nme.KeyCode.WORLD_7 = 167;
nme.KeyCode.WORLD_8 = 168;
nme.KeyCode.WORLD_9 = 169;
nme.KeyCode.WORLD_10 = 170;
nme.KeyCode.WORLD_11 = 171;
nme.KeyCode.WORLD_12 = 172;
nme.KeyCode.WORLD_13 = 173;
nme.KeyCode.WORLD_14 = 174;
nme.KeyCode.WORLD_15 = 175;
nme.KeyCode.WORLD_16 = 176;
nme.KeyCode.WORLD_17 = 177;
nme.KeyCode.WORLD_18 = 178;
nme.KeyCode.WORLD_19 = 179;
nme.KeyCode.WORLD_20 = 180;
nme.KeyCode.WORLD_21 = 181;
nme.KeyCode.WORLD_22 = 182;
nme.KeyCode.WORLD_23 = 183;
nme.KeyCode.WORLD_24 = 184;
nme.KeyCode.WORLD_25 = 185;
nme.KeyCode.WORLD_26 = 186;
nme.KeyCode.WORLD_27 = 187;
nme.KeyCode.WORLD_28 = 188;
nme.KeyCode.WORLD_29 = 189;
nme.KeyCode.WORLD_30 = 190;
nme.KeyCode.WORLD_31 = 191;
nme.KeyCode.WORLD_32 = 192;
nme.KeyCode.WORLD_33 = 193;
nme.KeyCode.WORLD_34 = 194;
nme.KeyCode.WORLD_35 = 195;
nme.KeyCode.WORLD_36 = 196;
nme.KeyCode.WORLD_37 = 197;
nme.KeyCode.WORLD_38 = 198;
nme.KeyCode.WORLD_39 = 199;
nme.KeyCode.WORLD_40 = 200;
nme.KeyCode.WORLD_41 = 201;
nme.KeyCode.WORLD_42 = 202;
nme.KeyCode.WORLD_43 = 203;
nme.KeyCode.WORLD_44 = 204;
nme.KeyCode.WORLD_45 = 205;
nme.KeyCode.WORLD_46 = 206;
nme.KeyCode.WORLD_47 = 207;
nme.KeyCode.WORLD_48 = 208;
nme.KeyCode.WORLD_49 = 209;
nme.KeyCode.WORLD_50 = 210;
nme.KeyCode.WORLD_51 = 211;
nme.KeyCode.WORLD_52 = 212;
nme.KeyCode.WORLD_53 = 213;
nme.KeyCode.WORLD_54 = 214;
nme.KeyCode.WORLD_55 = 215;
nme.KeyCode.WORLD_56 = 216;
nme.KeyCode.WORLD_57 = 217;
nme.KeyCode.WORLD_58 = 218;
nme.KeyCode.WORLD_59 = 219;
nme.KeyCode.WORLD_60 = 220;
nme.KeyCode.WORLD_61 = 221;
nme.KeyCode.WORLD_62 = 222;
nme.KeyCode.WORLD_63 = 223;
nme.KeyCode.WORLD_64 = 224;
nme.KeyCode.WORLD_65 = 225;
nme.KeyCode.WORLD_66 = 226;
nme.KeyCode.WORLD_67 = 227;
nme.KeyCode.WORLD_68 = 228;
nme.KeyCode.WORLD_69 = 229;
nme.KeyCode.WORLD_70 = 230;
nme.KeyCode.WORLD_71 = 231;
nme.KeyCode.WORLD_72 = 232;
nme.KeyCode.WORLD_73 = 233;
nme.KeyCode.WORLD_74 = 234;
nme.KeyCode.WORLD_75 = 235;
nme.KeyCode.WORLD_76 = 236;
nme.KeyCode.WORLD_77 = 237;
nme.KeyCode.WORLD_78 = 238;
nme.KeyCode.WORLD_79 = 239;
nme.KeyCode.WORLD_80 = 240;
nme.KeyCode.WORLD_81 = 241;
nme.KeyCode.WORLD_82 = 242;
nme.KeyCode.WORLD_83 = 243;
nme.KeyCode.WORLD_84 = 244;
nme.KeyCode.WORLD_85 = 245;
nme.KeyCode.WORLD_86 = 246;
nme.KeyCode.WORLD_87 = 247;
nme.KeyCode.WORLD_88 = 248;
nme.KeyCode.WORLD_89 = 249;
nme.KeyCode.WORLD_90 = 250;
nme.KeyCode.WORLD_91 = 251;
nme.KeyCode.WORLD_92 = 252;
nme.KeyCode.WORLD_93 = 253;
nme.KeyCode.WORLD_94 = 254;
nme.KeyCode.WORLD_95 = 255;
nme.KeyCode.KP0 = 256;
nme.KeyCode.KP1 = 257;
nme.KeyCode.KP2 = 258;
nme.KeyCode.KP3 = 259;
nme.KeyCode.KP4 = 260;
nme.KeyCode.KP5 = 261;
nme.KeyCode.KP6 = 262;
nme.KeyCode.KP7 = 263;
nme.KeyCode.KP8 = 264;
nme.KeyCode.KP9 = 265;
nme.KeyCode.KP_PERIOD = 266;
nme.KeyCode.KP_DIVIDE = 267;
nme.KeyCode.KP_MULTIPLY = 268;
nme.KeyCode.KP_MINUS = 269;
nme.KeyCode.KP_PLUS = 270;
nme.KeyCode.KP_ENTER = 271;
nme.KeyCode.KP_EQUALS = 272;
nme.KeyCode.UP = 273;
nme.KeyCode.DOWN = 274;
nme.KeyCode.RIGHT = 275;
nme.KeyCode.LEFT = 276;
nme.KeyCode.INSERT = 277;
nme.KeyCode.HOME = 278;
nme.KeyCode.END = 279;
nme.KeyCode.PAGEUP = 280;
nme.KeyCode.PAGEDOWN = 281;
nme.KeyCode.F1 = 282;
nme.KeyCode.F2 = 283;
nme.KeyCode.F3 = 284;
nme.KeyCode.F4 = 285;
nme.KeyCode.F5 = 286;
nme.KeyCode.F6 = 287;
nme.KeyCode.F7 = 288;
nme.KeyCode.F8 = 289;
nme.KeyCode.F9 = 290;
nme.KeyCode.F10 = 291;
nme.KeyCode.F11 = 292;
nme.KeyCode.F12 = 293;
nme.KeyCode.F13 = 294;
nme.KeyCode.F14 = 295;
nme.KeyCode.F15 = 296;
nme.KeyCode.NUMLOCK = 300;
nme.KeyCode.CAPSLOCK = 301;
nme.KeyCode.SCROLLOCK = 302;
nme.KeyCode.RSHIFT = 303;
nme.KeyCode.LSHIFT = 304;
nme.KeyCode.RCTRL = 305;
nme.KeyCode.LCTRL = 306;
nme.KeyCode.RALT = 307;
nme.KeyCode.LALT = 308;
nme.KeyCode.RMETA = 309;
nme.KeyCode.LMETA = 310;
nme.KeyCode.LSUPER = 311;
nme.KeyCode.RSUPER = 312;
nme.KeyCode.MODE = 313;
nme.KeyCode.COMPOSE = 314;
nme.KeyCode.HELP = 315;
nme.KeyCode.PRINT = 316;
nme.KeyCode.SYSREQ = 317;
nme.KeyCode.BREAK = 318;
nme.KeyCode.MENU = 319;
nme.KeyCode.POWER = 320;
nme.KeyCode.EURO = 321;
nme.KeyCode.UNDO = 322;
js.JsXml__.enode = new EReg("^<([a-zA-Z0-9:_-]+)","");
js.JsXml__.ecdata = new EReg("^<!\\[CDATA\\[","i");
js.JsXml__.edoctype = new EReg("^<!DOCTYPE","i");
js.JsXml__.eend = new EReg("^</([a-zA-Z0-9:_-]+)>","");
js.JsXml__.epcdata = new EReg("^[^<]+","");
js.JsXml__.ecomment = new EReg("^<!--","");
js.JsXml__.eprolog = new EReg("^<\\?[^\\?]+\\?>","");
js.JsXml__.eattribute = new EReg("^\\s*([a-zA-Z0-9:_-]+)\\s*=\\s*([\"'])([^\\2]*?)\\2","");
js.JsXml__.eclose = new EReg("^[ \\r\\n\\t]*(>|(/>))","");
js.JsXml__.ecdata_end = new EReg("\\]\\]>","");
js.JsXml__.edoctype_elt = new EReg("[\\[|\\]>]","");
js.JsXml__.ecomment_end = new EReg("-->","");
neash.text.KeyCode.KEY_0 = 48;
neash.text.KeyCode.KEY_1 = 49;
neash.text.KeyCode.KEY_2 = 50;
neash.text.KeyCode.KEY_3 = 51;
neash.text.KeyCode.KEY_4 = 52;
neash.text.KeyCode.KEY_5 = 53;
neash.text.KeyCode.KEY_6 = 54;
neash.text.KeyCode.KEY_7 = 55;
neash.text.KeyCode.KEY_8 = 56;
neash.text.KeyCode.KEY_9 = 57;
neash.text.KeyCode.A = 65;
neash.text.KeyCode.B = 66;
neash.text.KeyCode.C = 67;
neash.text.KeyCode.D = 68;
neash.text.KeyCode.E = 69;
neash.text.KeyCode.F = 70;
neash.text.KeyCode.G = 71;
neash.text.KeyCode.H = 72;
neash.text.KeyCode.I = 73;
neash.text.KeyCode.J = 74;
neash.text.KeyCode.K = 75;
neash.text.KeyCode.L = 76;
neash.text.KeyCode.M = 77;
neash.text.KeyCode.N = 78;
neash.text.KeyCode.O = 79;
neash.text.KeyCode.P = 80;
neash.text.KeyCode.Q = 81;
neash.text.KeyCode.R = 82;
neash.text.KeyCode.S = 83;
neash.text.KeyCode.T = 84;
neash.text.KeyCode.U = 85;
neash.text.KeyCode.V = 86;
neash.text.KeyCode.W = 87;
neash.text.KeyCode.X = 88;
neash.text.KeyCode.Y = 89;
neash.text.KeyCode.Z = 90;
neash.text.KeyCode.KP0 = 96;
neash.text.KeyCode.KP1 = 97;
neash.text.KeyCode.KP2 = 98;
neash.text.KeyCode.KP3 = 99;
neash.text.KeyCode.KP4 = 100;
neash.text.KeyCode.KP5 = 101;
neash.text.KeyCode.KP6 = 102;
neash.text.KeyCode.KP7 = 103;
neash.text.KeyCode.KP8 = 104;
neash.text.KeyCode.KP9 = 105;
neash.text.KeyCode.KP_MULTIPLY = 106;
neash.text.KeyCode.KP_ADD = 107;
neash.text.KeyCode.KP_ENTER = 108;
neash.text.KeyCode.KP_SUBTRACT = 109;
neash.text.KeyCode.KP_PERIOD = 110;
neash.text.KeyCode.KP_DIVIDE = 111;
neash.text.KeyCode.F1 = 112;
neash.text.KeyCode.F2 = 113;
neash.text.KeyCode.F3 = 114;
neash.text.KeyCode.F4 = 115;
neash.text.KeyCode.F5 = 116;
neash.text.KeyCode.F6 = 117;
neash.text.KeyCode.F7 = 118;
neash.text.KeyCode.F8 = 119;
neash.text.KeyCode.F9 = 120;
neash.text.KeyCode.F11 = 122;
neash.text.KeyCode.F12 = 123;
neash.text.KeyCode.F13 = 124;
neash.text.KeyCode.F14 = 125;
neash.text.KeyCode.F15 = 126;
neash.text.KeyCode.BACKSPACE = 8;
neash.text.KeyCode.TAB = 9;
neash.text.KeyCode.ENTER = 13;
neash.text.KeyCode.SHIFT = 16;
neash.text.KeyCode.CONTROL = 17;
neash.text.KeyCode.CAPSLOCK = 18;
neash.text.KeyCode.ESCAPE = 27;
neash.text.KeyCode.SPACE = 32;
neash.text.KeyCode.PAGEUP = 33;
neash.text.KeyCode.PAGEDOWN = 34;
neash.text.KeyCode.END = 35;
neash.text.KeyCode.HOME = 36;
neash.text.KeyCode.LEFT = 37;
neash.text.KeyCode.RIGHT = 38;
neash.text.KeyCode.UP = 39;
neash.text.KeyCode.DOWN = 40;
neash.text.KeyCode.INSERT = 45;
neash.text.KeyCode.DELETE = 46;
neash.text.KeyCode.NUMLOCK = 144;
neash.text.KeyCode.BREAK = 19;
neash.display.StageQuality.BEST = "best";
neash.display.StageQuality.HIGH = "high";
neash.display.StageQuality.MEDIUM = "medium";
neash.display.StageQuality.LOW = "low";
sandy.materials.VideoMaterial.DEFAULT_FILL_COLOR = 0;
canvas.Manager.closeKey = 27;
canvas.Manager.pauseUpdates = neash.text.KeyCode.F11;
canvas.Manager.toggleQuality = neash.text.KeyCode.F12;
canvas.Manager.FULLSCREEN = 1;
canvas.Manager.OPENGL = 2;
canvas.Manager.RESIZABLE = 4;
canvas.Manager.CURSOR_NONE = 0;
canvas.Manager.CURSOR_NORMAL = 1;
canvas.Manager.CURSOR_TEXT = 2;
canvas.Manager.MOVE = 0;
canvas.Manager.LINE = 1;
canvas.Manager.CURVE = 2;
neash.Lib.mShowCursor = true;
neash.Lib.mShowFPS = false;
neash.Lib.mDragObject = null;
neash.Lib.mDragRect = null;
neash.Lib.mDragOffsetX = 0;
neash.Lib.mDragOffsetY = 0;
neash.Lib.mLastMouse = new canvas.geom.Point();
neash.text.TextFieldAutoSize.CENTER = "CENTER";
neash.text.TextFieldAutoSize.LEFT = "LEFT";
neash.text.TextFieldAutoSize.NONE = "NONE";
neash.text.TextFieldAutoSize.RIGHT = "RIGHT";
sandy.events.SandyEvent.LIGHT_ADDED = "lightAdded";
sandy.events.SandyEvent.LIGHT_UPDATED = "lightUpdated";
sandy.events.SandyEvent.LIGHT_COLOR_CHANGED = "lightColorChanged";
sandy.events.SandyEvent.SCENE_RENDER = "scene_render";
sandy.events.SandyEvent.SCENE_CULL = "scene_cull";
sandy.events.SandyEvent.SCENE_UPDATE = "scene_update";
sandy.events.SandyEvent.SCENE_RENDER_DISPLAYLIST = "scene_render_display_list";
sandy.events.SandyEvent.CONTAINER_CREATED = "containerCreated";
sandy.events.SandyEvent.QUEUE_COMPLETE = "queueComplete";
sandy.events.SandyEvent.QUEUE_LOADER_ERROR = "queueLoaderError";
sandy.materials.MovieMaterial.DEFAULT_FILL_COLOR = 0;
sandy.parser.Parser.ASE = "ASE";
sandy.parser.Parser.MAX_3DS = "3DS";
sandy.parser.Parser.COLLADA = "DAE";
js.Lib.document = document;
js.Lib.window = window;
js.Lib.onerror = null;
neash.events.FocusEvent.FOCUS_IN = "FOCUS_IN";
neash.events.FocusEvent.FOCUS_OUT = "FOCUS_OUT";
neash.events.FocusEvent.KEY_FOCUS_CHANGE = "KEY_FOCUS_CHANGE";
neash.events.FocusEvent.MOUSE_FOCUS_CHANGE = "MOUSE_FOCUS_CHANGE";
sandy.core.light.Light3D.MAX_POWER = 150;
sandy.core.scenegraph.Shape3D.DEFAULT_MATERIAL = new sandy.materials.WireFrameMaterial();
sandy.core.scenegraph.Shape3D.DEFAULT_APPEARANCE = new sandy.materials.Appearance(sandy.core.scenegraph.Shape3D.DEFAULT_MATERIAL);
neash.events.MouseEvent.CLICK = "click";
neash.events.MouseEvent.DOUBLE_CLICK = "doubleClick";
neash.events.MouseEvent.MOUSE_DOWN = "mouseDown";
neash.events.MouseEvent.MOUSE_MOVE = "mouseMove";
neash.events.MouseEvent.MOUSE_OUT = "mouseOut";
neash.events.MouseEvent.MOUSE_OVER = "mouseOver";
neash.events.MouseEvent.MOUSE_UP = "mouseUp";
neash.events.MouseEvent.MOUSE_WHEEL = "mouseWheel";
neash.events.MouseEvent.ROLL_OUT = "rollOut";
neash.events.MouseEvent.ROLL_OVER = "rollOver";
neash.events.EventPhase.CAPTURING_PHASE = 0;
neash.events.EventPhase.AT_TARGET = 1;
neash.events.EventPhase.BUBBLING_PHASE = 2;
canvas.display.Graphics.defaultFontName = "ARIAL.TTF";
canvas.display.Graphics.defaultFontSize = 12;
canvas.display.Graphics.immediateMatrix = null;
canvas.display.Graphics.immediateMask = null;
canvas.display.Graphics.TOP = 0;
canvas.display.Graphics.CENTER = 1;
canvas.display.Graphics.BOTTOM = 2;
canvas.display.Graphics.LEFT = 0;
canvas.display.Graphics.RIGHT = 2;
canvas.display.Graphics.RADIAL = 1;
canvas.display.Graphics.REPEAT = 2;
canvas.display.Graphics.REFLECT = 4;
canvas.display.Graphics.EDGE_MASK = 240;
canvas.display.Graphics.EDGE_CLAMP = 0;
canvas.display.Graphics.EDGE_REPEAT = 16;
canvas.display.Graphics.EDGE_UNCHECKED = 32;
canvas.display.Graphics.EDGE_REPEAT_POW2 = 48;
canvas.display.Graphics.END_NONE = 0;
canvas.display.Graphics.END_ROUND = 256;
canvas.display.Graphics.END_SQUARE = 512;
canvas.display.Graphics.END_MASK = 768;
canvas.display.Graphics.END_SHIFT = 8;
canvas.display.Graphics.CORNER_ROUND = 0;
canvas.display.Graphics.CORNER_MITER = 4096;
canvas.display.Graphics.CORNER_BEVEL = 8192;
canvas.display.Graphics.CORNER_MASK = 12288;
canvas.display.Graphics.CORNER_SHIFT = 12;
canvas.display.Graphics.PIXEL_HINTING = 16384;
canvas.display.Graphics.BMP_REPEAT = 16;
canvas.display.Graphics.BMP_SMOOTH = 65536;
canvas.display.Graphics.SCALE_NONE = 0;
canvas.display.Graphics.SCALE_VERTICAL = 1;
canvas.display.Graphics.SCALE_HORIZONTAL = 2;
canvas.display.Graphics.SCALE_NORMAL = 3;
canvas.display.Graphics.MOVE = 0;
canvas.display.Graphics.LINE = 1;
canvas.display.Graphics.CURVE = 2;
sandy.core.data.Polygon._ID_ = 0;
sandy.core.data.Polygon.POLYGON_MAP = new IntHash();
haxe.Timer.arr = new Array();
$Main.init = Dice.main();

