(function(Yc) { function R(a, b) { function c() {} c.prototype = a; var d = new c, e; for (e in b) d[e] = b[e]; b.toString !== Object.prototype.toString && (d.toString = b.toString); return d } function ea(a, b) { if (null == b) return null; null == b.__id__ && (b.__id__ = Ad++); var c; null == a.hx__closures__ ? a.hx__closures__ = {} : c = a.hx__closures__[b.__id__]; null == c && (c = function() { return c.method.apply(c.scope, arguments) }, c.scope = a, c.method = b, a.hx__closures__[b.__id__] = c); return c } var s = {}, F = function() { return S.__string_rec(this, "") }, C = function() {}; s.ApplicationMain = C; C.__name__ = ["ApplicationMain"]; C.loadEmbed = function(a) { C.embeds = (null != C.embeds ? C.embeds : 0) + 1; var b = null, b = function(c) { a.removeEventListener("load", b); 0 == --C.embeds && C.preload() }; a.addEventListener("load", b) }; C.main = function() { null != C.embeds && 0 != C.embeds || C.preload() }; C.preload = function() { for (var a = C.bytesLoaded = C.totalBytes = 0, b = C.AssetBytes; a < b.length;) { var c = b[a]; ++a; C.totalBytes += c } C.completed = 0; C.loaders = new X; C.urlLoaders = new X; C.total = 0; H.get_current().loaderInfo = kb.create(null); H.get_stage().set_frameRate(60); H.get_current().addChild(C.preloader = new za); C.preloader.onInit(); C.loadFile("assets/GameFont.png"); C.loadFile("assets/Objects.png"); a = 0; for (b = Ra.listNames(); a < b.length;) c = b[a], ++a, ma.startsWith(c, "NME_:bitmap_") && (c = U.resolveClass(ma.replace(c.substring(12), "_", ".")), null != c && (C.total++, U.createInstance(c, [0, 0, !0, 16777215, C.bitmapClass_onComplete]))); if (0 != C.total) { C.loaderStack = []; for (a = C.loaders.keys(); a.hasNext();) b = a.next(), C.loaderStack.push(b); C.urlLoaderStack = []; for (a = C.urlLoaders.keys(); a.hasNext();) b = a.next(), C.urlLoaderStack.push(b); for (a = 0; 8 > a;) a++, C.nextLoader() } else C.begin() }; C.nextLoader = function() { if (0 != C.loaderStack.length) { var a = C.loaderStack.shift(), b = C.loaders, b = null != O[a] ? b.getReserved(a) : b.h[a]; b.contentLoaderInfo.addEventListener("complete", C.loader_onComplete); b.load(new Eb(a)) } else 0 != C.urlLoaderStack.length && (a = C.urlLoaderStack.shift(), b = C.urlLoaders, b = null != O[a] ? b.getReserved(a) : b.h[a], b.addEventListener("complete", C.loader_onComplete), b.load(new Eb(a))) }; C.loadFile = function(a) { var b = C.loaders, c = new ac; null != O[a] ? b.setReserved(a, c) : b.h[a] = c; C.total++ }; C.begin = function() { C.preloader.addEventListener("complete", C.preloader_onComplete); C.preloader.onLoaded() }; C.bitmapClass_onComplete = function(a) { C.completed++; (null == a ? null : S.getClass(a)).preload = a; C.completed == C.total && C.begin() }; C.loader_onComplete = function(a) { C.completed++; C.bytesLoaded += C.AssetBytes[C.AssetNames.indexOf(a._target.url)]; C.preloader.onUpdate(C.bytesLoaded, C.totalBytes); C.completed == C.total ? C.begin() : C.nextLoader() }; C.preloader_onComplete = function(a) { C.preloader.removeEventListener("complete", C.preloader_onComplete); H.get_current().removeChild(C.preloader); C.preloader = null; null == Fb.main ? (a = new Gb, S.__instanceof(a, Fa) && H.get_current().addChild(a)) : Fb.main() }; var Sb = function() {}; s["openfl.events.IEventDispatcher"] = Sb; Sb.__name__ = ["openfl", "events", "IEventDispatcher"]; Sb.prototype = { __class__: Sb }; var ta = function() { this.eventList = new X }; s["openfl.events.EventDispatcher"] = ta; ta.__name__ = ["openfl", "events", "EventDispatcher"]; ta.__interfaces__ = [Sb]; ta.prototype = { addEventListener: function(a, b, c, d, e) { c = this.eventList; (null != O[a] ? c.existsReserved(a) : c.h.hasOwnProperty(a)) ? (c = this.eventList, c = null != O[a] ? c.getReserved(a) : c.h[a]) : (d = c = [], e = this.eventList, null != O[a] ? e.setReserved(a, d) : e.h[a] = d); c.push(b) }, removeEventListener: function(a, b, c) { c = this.eventList; if (null != O[a] ? c.existsReserved(a) : c.h.hasOwnProperty(a)) { c = this.eventList; c = null != O[a] ? c.getReserved(a) : c.h[a]; for (var d = 0; d < c.length;) { var e = c[d]; ++d; if (Z.compareMethods(e, b)) { J.remove(c, e); break } } 0 == c.length && this.eventList.remove(a) } }, hasEventListener: function(a) { var b = this.eventList; return null != O[a] ? b.existsReserved(a) : b.h.hasOwnProperty(a) }, dispatchEvent: function(a) { null == a.get_target() && a.set_target(this); a.set_currentTarget(this); var b = a.type, c = this.eventList; if (null != O[b] ? c.existsReserved(b) : c.h.hasOwnProperty(b)) for (c = this.eventList, b = null != O[b] ? c.getReserved(b) : c.h[b], c = 0; c < b.length;) { var d = b[c]; d(a); b[c] == d && ++c } return !0 }, __class__: ta }; var Va = function() { this.eventList = new X; this.eventMap = new Oa }; s["openfl.events.EventWrapper"] = Va; Va.__name__ = ["openfl", "events", "EventWrapper"]; Va.__super__ = ta; Va.prototype = R(ta.prototype, { addEventListener: function(a, b, c, d, e) { null == e && (e = !1); null == d && (d = 0); null == c && (c = !1); var p = this; ta.prototype.addEventListener.call(this, a, b, c, d, e); d = function(a) { a.get_target() == p.component && a.set_target(p); a.set_currentTarget(p); b(a) }; null == this.eventMap.h.__keys__[b.__id__] && this.eventMap.set(b, d); this.component.addEventListener(a, d, c) }, removeEventListener: function(a, b, c) { null == c && (c = !1); ta.prototype.removeEventListener.call(this, a, b, c); null != this.eventMap.h.__keys__[b.__id__] && (this.component.removeEventListener(a, this.eventMap.h[b.__id__], c), this.eventMap.remove(b)) }, __class__: Va }); var Fa = function() { this.rotation = this.x = this.y = 0; this.scaleX = this.scaleY = 1; this.visible = !0; Va.call(this); this.eventRemap = new X; null == this.component && (this.component = H.jsNode("div")); this.component.node = this; this.transform = new sc(this) }; s["openfl.display.DisplayObject"] = Fa; Fa.__name__ = ["openfl", "display", "DisplayObject"]; Fa.__super__ = Va; Fa.prototype = R(Va.prototype, { broadcastEvent: function(a) { this.dispatchEvent(a) }, syncMtx: function() { var a = this.component.style, b; !0 != this._syncMtx_set && (this._syncMtx_set = !0, H.setCSSProperties(a, "transform-origin", "0% 0%", 31)); b = ""; if (0 != this.x || 0 != this.y) b += "translate(" + this.x + "px, " + this.y + "px) "; if (1 != this.scaleX || 1 != this.scaleY) b += "scale(" + this.scaleX + ", " + this.scaleY + ") "; 0 != this.rotation && (b += "rotate(" + this.rotation + "deg) "); if (null != this.transform) { var c = this.transform.get_matrix(); null == c || c.isIdentity() || (b += "matrix(" + c.a + ", " + c.b + ", " + c.c + ", " + c.d + ", " + c.tx + ", " + c.ty + ") ") } a.setProperty("transform", b, null); a.setProperty("-o-transform", b, null); a.setProperty("-ms-transform", b, null); a.setProperty("-moz-transform", b, null); a.setProperty("-webkit-transform", b, null) }, set_x: function(a) { this.x != a && (this.x = a, this.syncMtx()); return a }, set_y: function(a) { this.y != a && (this.y = a, this.syncMtx()); return a }, set_scaleX: function(a) { this.scaleX != a && (this.scaleX = a, this.syncMtx()); return a }, set_scaleY: function(a) { this.scaleY != a && (this.scaleY = a, this.syncMtx()); return a }, get_width: function() { return this.__width ? !0 : 0 }, get_height: function() { return this.__height ? !0 : 0 }, set_visible: function(a) { this.visible != a && (this.visible = a, this.component.style.display = a ? "" : "none"); return a }, get_stage: function() { return this.__stage }, set_stage: function(a) { if (this.__stage != a) { var b = null != this.__stage != (null != a); this.__stage = a; b && this.dispatchEvent(new fa(null != a ? "addedToStage" : "removedFromStage")) } return a }, concatTransform: function(a) { this.transform.get_matrix().isIdentity() || a.concat(this.transform.get_matrix()); 0 != this.rotation && a.rotate(this.rotation * Math.PI / 180); 1 == this.scaleX && 1 == this.scaleY || a.scale(this.scaleX, this.scaleY); 0 == this.x && 0 == this.y || a.translate(this.x, this.y) }, hitTestLocal: function(a, b, c, d) { return (!d || this.visible) && 0 <= a && 0 <= b && a <= this.get_width() ? b <= this.get_height() : !1 }, addEventListener: function(a, b, c, d, e) { null == e && (e = !1); null == d && (d = 0); null == c && (c = !1); Va.prototype.addEventListener.call(this, a, b, c, d, e) }, broadcastMouse: function(a, b, c, d) { if (!this.visible) return !1; var e, p, f = a.length, g; a.push(this); p = 0 < d.length ? d.pop() : new na; for (g = c.length; g <= f;) e = a[g], p.identity(), e.concatTransform(p), p.invert(), e = 0 < d.length ? d.pop() : new na, 0 < g ? e.copy(c[g - 1]) : e.identity(), e.concat(p), c.push(e), ++g; p.copy(c[f]); c = b.stageX * p.a + b.stageY * p.c + p.tx; f = b.stageX * p.b + b.stageY * p.d + p.ty; d.push(p); a.pop(); return this.hitTestLocal(c, f, !0, !0) ? (null == b.relatedObject && (b.localX = c, b.localY = f, b.relatedObject = this), this.dispatchEvent(b), !0) : !1 }, dispatchEvent: function(a) { var b = Va.prototype.dispatchEvent.call(this, a); if (b && a.bubbles) switch (a.type) { case "middleClick": case "middleMouseDown": case "middleMouseUp": case "mouseClick": case "mouseDown": case "mouseMove": case "mouseOut": case "mouseOver": case "mouseUp": case "mouseWheel": case "rightClick": case "rightMouseDown": case "rightMouseUp": case "touchBegin": case "touchEnd": case "touchMove": var c = this.parent; null != c && c.dispatchEvent(a) } return b }, __class__: Fa, __properties__: { get_height: "get_height", get_width: "get_width", set_y: "set_y", set_x: "set_x", set_scaleY: "set_scaleY", set_scaleX: "set_scaleX", set_visible: "set_visible", set_stage: "set_stage", get_stage: "get_stage" } }); var Wa = function() { Fa.call(this); this.tabEnabled = !1; this.tabIndex = 0; this.mouseEnabled = this.doubleClickEnabled = !0 }; s["openfl.display.InteractiveObject"] = Wa; Wa.__name__ = ["openfl", "display", "InteractiveObject"]; Wa.__super__ = Fa; Wa.prototype = R(Fa.prototype, { giveFocus: function() { this.component.focus() }, __class__: Wa }); var ua = function() { Wa.call(this); this.children = []; this.mouseChildren = !0 }; s["openfl.display.DisplayObjectContainer"] = ua; ua.__name__ = ["openfl", "display", "DisplayObjectContainer"]; ua.__super__ = Wa; ua.prototype = R(Wa.prototype, { addChild: function(a) { null != a.parent && a.parent.removeChild(a); a.parent = this; a.set_stage(this.get_stage()); this.children.push(a); this.component.appendChild(a.component); var b = new fa("added"); a.dispatchEvent(b); this.dispatchEvent(b); return a }, removeChild: function(a) { if (a.parent == this) { a.parent = null; a.set_stage(null); J.remove(this.children, a); this.component.removeChild(a.component); var b = new fa("removed"); a.dispatchEvent(b); this.dispatchEvent(b) } return a }, addChildAt: function(a, b) { return b < this.children.length ? (null != a.parent && a.parent.removeChild(a), a.parent = this, a.set_stage(this.get_stage()), this.component.insertBefore(a.component, this.children[b].component), this.children.splice(b, 0, a), a) : this.addChild(a) }, broadcastEvent: function(a) { this.dispatchEvent(a); for (var b = 0, c = this.children; b < c.length;) { var d = c[b]; ++b; d.broadcastEvent(a) } }, broadcastMouse: function(a, b, c, d) { if (!this.visible) return !1; var e = !1; if (this.mouseChildren) { var p = this.children.length; if (0 < p) { for (a.push(this); 0 <= --p;) if (this.children[p].broadcastMouse(a, b, c, d)) { e = !0; break } a.pop() } } for (; c.length > a.length;) d.push(c.pop()); for (e = e ? !0 : Wa.prototype.broadcastMouse.call(this, a, b, c, d); c.length > a.length;) d.push(c.pop()); return e }, hitTestLocal: function(a, b, c, d) { if (!d || this.visible) { var e = this.children.length, p, f; if (0 < e) { for (p = na.create(); 0 <= --e;) if (p.identity(), f = this.children[e], f.concatTransform(p), p.invert(), f.hitTestLocal(a * p.a + b * p.c + p.tx, a * p.b + b * p.d + p.ty, c, d)) return !0; na.pool.push(p) } } return !1 }, set_stage: function(a) { Wa.prototype.set_stage.call(this, a); for (var b = 0, c = this.children; b < c.length;) { var d = c[b]; ++b; d.set_stage(a) } return a }, __class__: ua }); var Pa = function() {}; s["openfl.display.IBitmapDrawable"] = Pa; Pa.__name__ = ["openfl", "display", "IBitmapDrawable"]; Pa.prototype = { __class__: Pa }; var Aa = function() { ua.call(this) }; s["openfl.display.Sprite"] = Aa; Aa.__name__ = ["openfl", "display", "Sprite"]; Aa.__interfaces__ = [Pa]; Aa.__super__ = ua; Aa.prototype = R(ua.prototype, { get_graphics: function() { if (null == this._graphics) { var a = new ub, b = a.component; a.set_displayObject(this); 0 == this.children.length ? this.component.appendChild(b) : this.component.insertBefore(b, this.children[0].component); this._graphics = a } return this._graphics }, set_stage: function(a) { var b = null == this.get_stage() && null != a; a = ua.prototype.set_stage.call(this, a); b && null != this._graphics && this._graphics.invalidate(); return a }, drawToSurface: function(a, b, c, d, e, p, f) { this.get_graphics().drawToSurface(a, b, c, d, e, p, f) }, hitTestLocal: function(a, b, c, d) { if (ua.prototype.hitTestLocal.call(this, a, b, c, d)) return !0; if (!d || this.visible) if (d = this._graphics, null != d) return d.hitTestLocal(a, b, c); return !1 }, __class__: Aa, __properties__: R(ua.prototype.__properties__, { get_graphics: "get_graphics" }) }); var l = function() { this.frameCount = this.Cnt = this.oldFrames = this.oldTime = 0; this.currentTimeStep = -1; this.timeAccumulator = 0; this.needsExtraScreenBMP = !1; if (!A.ShowBlank && (this.initSystemVariables(), ua.call(this), l.LockCheck())) { f.MinimumBMD = l.DontSplitBitmaps(); this.initOzEngine(); this.registerGraphics(); G.trace("before expandtiles", { fileName: "Main.hx", lineNumber: 305, className: "Main", methodName: "new" }); f.ExpandTiles(t.definitionsXML); G.trace("before sortinit", { fileName: "Main.hx", lineNumber: 307, className: "Main", methodName: "new" }); x.SortIdsByName(f.BitmapsIds, f.BitmapsNames); l.isMobile = this.MobileCheck(); this.doc = f.New(null, null, !1); this.stateSprite = f.New(null, null, !1); this.debugSprite = f.New(null, null, !1); this.doc.addChild(this.stateSprite); this.doc.addChild(this.whiteRect = f.New(q.sysWhiteRect, null, !1)); var a = this.whiteRect, b = l.HEIGHT_MIN / 2; a.set_x(l.WIDTH_MIN / 2); a.set_y(b); this.whiteRect.set_visible(!1); this.whiteRect.smooth = !1; this.doc.addChild(this.debugSprite); this.debugText = f.New(null, W.TEXT, !1); this.debugText.font = y.Font; this.debugText.text = "FPS"; this.debugSprite.addChild(this.debugText); this.debugSprite.set_visible(!1); this.doc.setFluid(66); H.get_current().get_stage().addEventListener("blur", l.Deactivate); H.get_current().get_stage().addEventListener("focus", l.Activate); H.get_current().get_stage().addEventListener("deactivate", l.Deactivate); H.get_current().get_stage().addEventListener("activate", l.Activate); window.onfocus = l.fnResume; window.onblur = l.fnPause; document.onfocusin = l.fnResume; document.onfocusout = l.fnPause; document.body.onfocusin = l.fnResume; document.body.onfocusout = l.fnPause; var c, d; "undefined" !== typeof document.hidden ? (c = "hidden", d = "visibilitychange") : "undefined" !== typeof document.mozHidden ? (c = "mozHidden", d = "mozvisibilitychange") : "undefined" !== typeof document.msHidden ? (c = "msHidden", d = "msvisibilitychange") : "undefined" !== typeof document.webkitHidden && (c = "webkitHidden", d = "webkitvisibilitychange"); "undefined" !== typeof document.addEventListener && "undefined" !== typeof document[c] && document.addEventListener(d, function() { document[c] ? l.fnPause() : l.fnResume() }, !1); H.get_current().get_stage().addEventListener("enterFrame", ea(this, this.update)); G.trace("before ext init", { fileName: "Main.hx", lineNumber: 454, className: "Main", methodName: "new" }); G.trace("after ext init", { fileName: "Main.hx", lineNumber: 492, className: "Main", methodName: "new" }) } }; s.Main = l; l.__name__ = ["Main"]; l.LockCheck = function() { return !0 }; l.RunGC = function() {}; l.Deactivate = function(a) { l.fnPause() }; l.Activate = function(a) { l.fnResume() }; l.fnPause = function() { l.systemPaused || (l.systemPaused = !0, l.hadSound = !u.muteMusic, l.hadSound && u.ToggleMuteMusic(), G.trace("Screenbitmap.visible", { fileName: "Main.hx", lineNumber: 1008, className: "Main", methodName: "fnPause", customParams: [l.instance.ScreenBitmap.visible] })); tc.ScriptNotify("fnPause"); G.trace("fnPause", { fileName: "Main.hx", lineNumber: 1012, className: "Main", methodName: "fnPause" }) }; l.fnResume = function() { l.systemPaused && (l.systemPaused = !1, l.hadSound && u.ToggleMuteMusic()); tc.ScriptNotify("fnResume"); G.trace("fnResume", { fileName: "Main.hx", lineNumber: 1020, className: "Main", methodName: "fnResume" }) }; l.escape = function() { null == l.instance || null == l.instance.whiteRect || l.instance.whiteRect.get_visible() || l.instance.s.escape() }; l.DontSplitBitmaps = function() { var a = !1, b = !1, c = navigator.userAgent, a = -1 < c.indexOf("Android") && -1 < c.indexOf("Mozilla / 5.0") && -1 < c.indexOf("AppleWebKit"), b = -1 < c.indexOf("samsung") || -1 < c.indexOf("SAMSUNG") || -1 < c.indexOf("Samsung"), d = RegExp(/AppleWebKit\/([\d.]+)/), d = null === d.exec(c) ? null : parseFloat(d.exec(c)[1]), e = RegExp(/Chrome\/([\d.]+)/), c = null === e.exec(c) ? null : parseFloat(e.exec(c)[1]); return b ? !1 : a && null !== d && 537 > d || null !== c && 37 > c || !a ? null !== c ? !a : !1 : !0 }; l.__super__ = Aa; l.prototype = R(Aa.prototype, { initSystemVariables: function() { var a = null, b = null; A.MainStarted = !0; l.NAME = "slither math"; l.NAME = x.StringReplace(l.NAME, " ", "-"); G.trace("NAME IS THIS", { fileName: "Main.hx", lineNumber: 129, className: "Main", methodName: "initSystemVariables", customParams: [l.NAME] }); l.PACKAGE_DIR_NAME = "com.ozdy.slithermath"; l.PACKAGE_DIR_NAME = x.StringReplace(l.PACKAGE_DIR_NAME, ".", "/"); G.trace("NAME IS THIS", { fileName: "Main.hx", lineNumber: 132, className: "Main", methodName: "initSystemVariables", customParams: [l.PACKAGE_DIR_NAME] }); l.INTERPOLATE = !0; l.DEFAULT_SMOOTH = !0; b = "720"; l.WIDTH = K.parseInt(b); a = "720"; l.WIDTH_MIN = K.parseInt(a); null == b && (l.WIDTH = l.WIDTH_MIN); null == a && (l.WIDTH_MIN = l.WIDTH); a = "854"; l.WIDTH_MAX = K.parseInt(a); null == a && (l.WIDTH_MAX = l.WIDTH); l.STARTING_WIDTH = l.WIDTH; b = "480"; l.HEIGHT = K.parseInt(b); a = null; l.HEIGHT_MIN = K.parseInt(a); null == b && (l.HEIGHT = l.HEIGHT_MIN); null == a && (l.HEIGHT_MIN = l.HEIGHT); a = "854"; l.HEIGHT_MAX = K.parseInt(a); null == a && (l.HEIGHT_MAX = l.HEIGHT); l.STARTING_HEIGHT = l.HEIGHT; a = "640"; l.LANDSCAPE_WIDTH_MIN = K.parseInt(a); null == a && (l.LANDSCAPE_WIDTH_MIN = l.WIDTH_MIN); a = null; l.LANDSCAPE_WIDTH_MAX = K.parseInt(a); null == a && (l.LANDSCAPE_WIDTH_MAX = l.WIDTH_MAX); a = null; l.LANDSCAPE_HEIGHT = K.parseInt(a); null == a && (l.LANDSCAPE_HEIGHT = l.HEIGHT_MIN); a = "640"; l.PORTRAIT_HEIGHT_MIN = K.parseInt(a); null == a && (l.PORTRAIT_HEIGHT_MIN = l.HEIGHT_MIN); a = null; l.PORTRAIT_HEIGHT_MAX = K.parseInt(a); null == a && (l.PORTRAIT_HEIGHT_MAX = l.HEIGHT_MAX); a = "480"; l.PORTRAIT_WIDTH = K.parseInt(a); null == a && (l.PORTRAIT_WIDTH = l.WIDTH_MIN); l.Orientation = l.HEIGHT_MIN < l.WIDTH_MIN ? vb.LANDSCAPE : vb.PORTRAIT; l.FPS = K.parseInt("30") }, initOzEngine: function() { this.needsExtraScreenBMP = -1 < window.navigator.userAgent.toLowerCase().indexOf("iemobile"); this.needsExtraScreenBMP || (this.needsExtraScreenBMP = -1 < window.navigator.userAgent.toLowerCase().indexOf("trident/")); this.needsExtraScreenBMP || (this.needsExtraScreenBMP = "Microsoft Internet Explorer" == window.navigator.appName); this.ScreenBMD = new ia(l.WIDTH_MAX, l.HEIGHT_MAX, !0, 0); this.ScreenBitmap = new Sa(this.ScreenBMD, Xa.AUTO, !0); this.addChild(this.ScreenBitmap); this.ScreenBitmap.set_visible(!1); l.RESIZE_WIDTH = l.WIDTH; l.RESIZE_HEIGHT = l.HEIGHT; l.instance = this; G.trace("before inits", { fileName: "Main.hx", lineNumber: 263, className: "Main", methodName: "initOzEngine" }); n.Init(l.FPS); P.Init(); G.trace("before globals", { fileName: "Main.hx", lineNumber: 268, className: "Main", methodName: "initOzEngine" }); t.Init(); G.trace("before audio", { fileName: "Main.hx", lineNumber: 270, className: "Main", methodName: "initOzEngine" }); u.Init(); G.trace("before input init", { fileName: "Main.hx", lineNumber: 272, className: "Main", methodName: "initOzEngine" }); h.Init(this); G.trace("before spriteinit", { fileName: "Main.hx", lineNumber: 274, className: "Main", methodName: "initOzEngine" }); f.StaticInit(); G.trace("before particle init", { fileName: "Main.hx", lineNumber: 276, className: "Main", methodName: "initOzEngine" }); ca.StaticInit(); G.trace("before matrixinit", { fileName: "Main.hx", lineNumber: 278, className: "Main", methodName: "initOzEngine" }); T.InitPool(); oa.Init() }, registerGraphics: function() {}, start: function() { this.needsExtraScreenBMP ? (this.extraScreenBMP = new Sa(new ia(this.ScreenBMD.component.width, this.ScreenBMD.component.height)), this.addChild(this.extraScreenBMP), this.extraRect = new pa(0, 0, this.ScreenBMD.component.width, this.ScreenBMD.component.height), this.extraPoint = new xa) : this.ScreenBitmap.set_visible(!0); G.trace("we start", { fileName: "Main.hx", lineNumber: 522, className: "Main", methodName: "start" }); u.needsAudio && H.get_current().get_stage().addEventListener("mouseDown", u.HTML5Init); G.trace("after audio init start", { fileName: "Main.hx", lineNumber: 535, className: "Main", methodName: "start" }); this.transitionChangeState(new E(this), 15); (new wb(1E3)).run = ea(this, this.measureFPS); var a = f.GetMCByString("cmcRotateDeviceSprite"); null != a ? this.doc.addChild(this.rotateDeviceSprite = f.New(a, null, !1)) : this.doc.addChild(this.rotateDeviceSprite = f.New(null, W.EMPTY, !1)); G.trace("cmcRotateDeviceSprite", { fileName: "Main.hx", lineNumber: 561, className: "Main", methodName: "start", customParams: [a] }); this.rotateDeviceSprite.set_visible(!1); H.get_current().get_stage().addEventListener("resize", ea(this, this.onResize)); u.PlayMusic("main"); G.trace("after music play", { fileName: "Main.hx", lineNumber: 569, className: "Main", methodName: "start" }); G.trace("## Need Extra Screen BMD?", { fileName: "Main.hx", lineNumber: 572, className: "Main", methodName: "start", customParams: [this.needsExtraScreenBMP] }); G.trace("## Minimum BMD? If not - flush-fetch bmd for r/s/a/fill", { fileName: "Main.hx", lineNumber: 573, className: "Main", methodName: "start", customParams: [f.MinimumBMD] }); this.doc.adjustAllLayouts() }, onResize: function(a) { G.trace("we resize, event is null", { fileName: "Main.hx", lineNumber: 581, className: "Main", methodName: "onResize", customParams: [null == a] }); l.hasResized = !0; ga.resize(); a = this.whiteRect; var b = 1 * (l.WIDTH + 5), c = this.whiteRect, c = 1 == c.type[1] ? f.TilesheetFrames[c.mc.tilesheetId][c.mc.frames[c.get_currentFrame() - 1]][2] : 1; a.set_scaleX(b / c); a = this.whiteRect; b = 1 * (l.HEIGHT + 5); c = this.whiteRect; c = 1 == c.type[1] ? f.TilesheetFrames[c.mc.tilesheetId][c.mc.frames[c.get_currentFrame() - 1]][3] : 1; a.set_scaleY(b / c); null != this.s && this.s.resize(); null != this.rotateDeviceSprite && (a = this.rotateDeviceSprite, a.set_x(0), a.set_y(0), this.rotateDeviceSprite.setFluid(256)); this.doc.adjustAllLayouts() }, update: function(a) { a = 1 / l.FPS; this.oldTimeStep = this.currentTimeStep; this.currentTimeStep = wb.stamp(); this.timeAccumulator += 0 > this.oldTimeStep ? 1.5 * a : this.currentTimeStep - this.oldTimeStep; if (!l.systemPaused) if (l.started) { this.frameCount++; var b = !l.hasResized; !b && ga.invalidRect() && (b = !0); if (b) this.onResize(); if (null != this.rotateDeviceSprite && this.rotateDeviceSprite.get_visible()) l.systemPaused || this.draw(); else { if (l.INTERPOLATE) { for (b = 0; this.timeAccumulator >= a;) if (this.timeAccumulator -= a, ++b, this.doc.updateAnimations(), this.doc._updateOldValues(), f.RemoveRequested(), this.s.update(), n.Update(), this.Cnt++, P.UpdateAll(), ca.UpdateAll(), h.UpdateSpriteUnder(), 2 <= b) { this.timeAccumulator = 0; break } f.DeltaT = Math.round(this.timeAccumulator / a * 128) / 128 } else { a = 0; for (b = Math.round(l.FPS / H.get_current().get_stage().frameRate * 1); a < b;) a++, this.doc.updateAnimations(), this.doc._updateOldValues(), f.RemoveRequested(), this.s.update(), n.Update(), this.Cnt++, P.UpdateAll(), ca.UpdateAll(), h.UpdateSpriteUnder(); f.DeltaT = 1 } this.s.preRender(); this.draw() } } else u.loaded && (l.started = !0, this.start()) }, transitionChangeState: function(a, b) { var c = this; l.NumChangedStates++; this.s = a; u.LocallyUnmute(); this.s.update(); this.whiteRect.set_visible(!0); this.whiteRect.set_alpha(1); var d = P.New(); d.startValue = this.whiteRect.get_alpha(); d.endValue = 0; d.duration = b; d.cnt = 0; d.updateFunc = function(a) { c.whiteRect.set_alpha((1 - a * a) * d.startValue + a * a * d.endValue) }; d.repeat = 0; d.endFunc = function() { c.whiteRect.set_visible(!1) }; d.stateBound = !0; d.gameBound = !1; P.Add(d); l.RunGC() }, draw: function(a) { f.TilesheetId = -1; f.TraceCurrentMatrix && (G.trace("CM", { fileName: "Main.hx", lineNumber: 953, className: "Main", methodName: "draw", customParams: [T.matrixId, T.getCurrentMatrix().toString()] }), f.TraceCurrentMatrix = !1); this.doc.draw(); f.Flush(); this.needsExtraScreenBMP && this.extraScreenBMP.bitmapData.copyPixels(this.ScreenBitmap.bitmapData, this.extraRect, this.extraPoint) }, measureFPS: function() { var a = wb.stamp(), b = "" + (this.frameCount - this.oldFrames) + " : ", c = x.round(a - this.oldTime, 4); this.debugText.text = b + c; this.oldTime = a; this.oldFrames = this.frameCount }, MobileCheck: function() { return window.mobilecheck() }, __class__: l }); var Fb = function() { l.call(this) }; s.GameMain = Fb; Fb.__name__ = ["GameMain"]; Fb.__super__ = l; Fb.prototype = R(l.prototype, { registerGraphics: function() { l.prototype.registerGraphics.call(this); G.trace("before objectsinit", { fileName: "GameMain.hx", lineNumber: 8, className: "GameMain", methodName: "registerGraphics" }); q.Register(); G.trace("before game font", { fileName: "GameMain.hx", lineNumber: 14, className: "GameMain", methodName: "registerGraphics" }); y.Register(); y.Font.RegisterCharacters(); A.showCross = !1; t.atHooda = ga.hasInside("hoodamath.com") }, __class__: Fb }); var Gb = function() { l.call(this) }; s.DocumentClass = Gb; Gb.__name__ = ["DocumentClass"]; Gb.__super__ = Fb; Gb.prototype = R(Fb.prototype, { get_stage: function() { return H.get_current().get_stage() }, __class__: Gb }); var u = function() {}; s.Audio = u; u.__name__ = ["Audio"]; u.HTML5Init = function(a) { H.get_current().get_stage().hasEventListener("mouseDown") && H.get_current().get_stage().removeEventListener("mouseDown", u.HTML5Init); G.trace("we init audio", { fileName: "Audio.hx", lineNumber: 69, className: "Audio", methodName: "HTML5Init", customParams: [u.hasMusic] }); u.initted = !0; u.currentMusic = u.playingMusic = null; u.PlayMusic("main"); G.trace("we played main", { fileName: "Audio.hx", lineNumber: 73, className: "Audio", methodName: "HTML5Init" }); u.hasSound && (u.dicSounds = new X) }; u.Init = function() {}; u.PlayMusic = function(a) { try { if (!u.initted) return; u.muteMusic || u.currentMusic == a && u.playingMusic == a && (null != u.currentMusic || null != a) || (null == a && (a = u.currentMusic), null != u.playingMusic && u.musc.stop(), u.musc = createjs.Sound.play(a, { interrupt: createjs.Sound.INTERRUPT_EARLY, loop: -1 }), u.playingMusic = a) } catch (b) { G.trace("Error playing music: " + a, { fileName: "Audio.hx", lineNumber: 107, className: "Audio", methodName: "PlayMusic" }) } u.currentMusic = a }; u.StopMusic = function() { null != u.playingMusic && u.musc.stop(); u.playingMusic = null }; u.PauseMusic = function() { null != u.musc && (u.musc.paused = !0) }; u.ResumeMusic = function() { null != u.musc ? u.musc.paused = !1 : u.PlayMusic() }; u.PlaySound = function(a) { try { if (u.initted && u.hasSound && !u.muteSound) { var b = u.dicSounds; null != O[a] && b.getReserved(a); createjs.Sound.play(a, { interrupt: createjs.Sound.INTERRUPT_EARLY }); u.currentSound = a } } catch (c) { G.trace("Error playing sound: " + a, { fileName: "Audio.hx", lineNumber: 154, className: "Audio", methodName: "PlaySound" }) } }; u.Mute = function() { u.MuteSound(); u.MuteMusic() }; u.Unmute = function() { u.UnmuteMusic(); u.UnmuteSound() }; u.MuteSound = function() { u.muteSound || u.ToggleMuteSound() }; u.MuteMusic = function() { u.muteMusic || u.ToggleMuteMusic() }; u.UnmuteSound = function() { u.muteSound && u.ToggleMuteSound() }; u.UnmuteMusic = function() { u.muteMusic && u.ToggleMuteMusic() }; u.ToggleMuteMusic = function() { G.trace("TOGGLING MUTE MUSIC BRO", { fileName: "Audio.hx", lineNumber: 171, className: "Audio", methodName: "ToggleMuteMusic" }); try { u.muteMusic = !u.muteMusic, u.initted && (u.muteMusic ? u.PauseMusic() : u.ResumeMusic()) } catch (a) { a instanceof D && (a = a.val), G.trace("Error toggle mute music", { fileName: "Audio.hx", lineNumber: 183, className: "Audio", methodName: "ToggleMuteMusic", customParams: [a] }) } }; u.ToggleMuteSound = function() { u.muteSound = !u.muteSound }; u.updateVolume = function() {}; u.LocallyMute = function() { u.locallyMuted || (u.locallyMuted = !0, u.PauseMusic()) }; u.LocallyUnmute = function() { u.locallyMuted && (u.locallyMuted = !1, null != u.musc && u.playingMusic == u.currentMusic ? u.ResumeMusic() : null != u.currentMusic && u.PlayMusic(u.currentMusic)) }; var Tb = function() {}; s["openfl.AssetLibrary"] = Tb; Tb.__name__ = ["openfl", "AssetLibrary"]; Tb.prototype = { exists: function(a, b) { return !1 }, getBitmapData: function(a) { return null }, __class__: Tb }; var Ub = function() { this.type = new X; this.path = new X; this.add("assets/GameFont.png", Y.IMAGE); this.add("assets/Objects.png", Y.IMAGE) }; s.DefaultAssetLibrary = Ub; Ub.__name__ = ["DefaultAssetLibrary"]; Ub.__super__ = Tb; Ub.prototype = R(Tb.prototype, { add: function(a, b, c) { var d = this.type; null != O[a] ? d.setReserved(a, b) : d.h[a] = b; b = this.path; c = null != c ? c : a; null != O[a] ? b.setReserved(a, c) : b.h[a] = c }, exists: function(a, b) { var c = this.type, c = null != O[a] ? c.getReserved(a) : c.h[a]; if (null != c) { if (c == b || null == b) return !0; switch (b[1]) { case 0: return !0; case 4: return c == Y.SOUND; case 5: return c == Y.MUSIC } } return !1 }, getBitmapData: function(a) { var b = C.loaders, c = this.path; a = null != O[a] ? c.getReserved(a) : c.h[a]; return (null != O[a] ? b.getReserved(a) : b.h[a]).contentLoaderInfo.content.bitmapData }, __class__: Ub }); var bc = function() {}; s.ExternalAPI = bc; bc.__name__ = ["ExternalAPI"]; bc.JioSendScore = function(a) { a > bc.JioTopScore && (bc.JioTopScore = a) }; var y = function() {}; s.GameFont = y; y.__name__ = ["GameFont"]; y.Register = function() { y.Font = new Jc; y.Font.face = "DOCK11"; y.Font.size = 32; y.Font.padding = [0, 0, 0, 0]; y.Font.spacing = [1, 1]; y.Font.lineHeight = 20; y.Font.base = 26; y.Font.numPages = 1; y.Font.bitmapName = "GameFont.png"; y.Font.numChars = 96; y.Font.chars[33] = { id: 33, x: 167, y: 150, width: 10, height: 22, xOffset: 0, yOffset: -1, xAdvance: 12, page: 0, letter: "!", movieClip: null }; y.Font.chars[34] = { id: 34, x: 122, y: 174, width: 13, height: 10, xOffset: 0, yOffset: -2, xAdvance: 15, page: 0, letter: '"', movieClip: null }; y.Font.chars[35] = { id: 35, x: 47, y: 114, width: 20, height: 19, xOffset: 0, yOffset: -1, xAdvance: 22, page: 0, letter: "#", movieClip: null }; y.Font.chars[36] = { id: 36, x: 68, y: 68, width: 19, height: 26, xOffset: 0, yOffset: -3, xAdvance: 21, page: 0, letter: "$", movieClip: null }; y.Font.chars[37] = { id: 37, x: 0, y: 70, width: 23, height: 20, xOffset: 0, yOffset: 0, xAdvance: 25, page: 0, letter: "%", movieClip: null }; y.Font.chars[38] = { id: 38, x: 68, y: 117, width: 19, height: 23, xOffset: 0, yOffset: -2, xAdvance: 21, page: 0, letter: "&", movieClip: null }; y.Font.chars[39] = { id: 39, x: 177, y: 173, width: 8, height: 11, xOffset: 0, yOffset: 0, xAdvance: 10, page: 0, letter: "'", movieClip: null }; y.Font.chars[40] = { id: 40, x: 155, y: 0, width: 12, height: 26, xOffset: 0, yOffset: -1, xAdvance: 14, page: 0, letter: "(", movieClip: null }; y.Font.chars[41] = { id: 41, x: 156, y: 68, width: 11, height: 26, xOffset: 0, yOffset: -1, xAdvance: 13, page: 0, letter: ")", movieClip: null }; y.Font.chars[42] = { id: 42, x: 142, y: 0, width: 12, height: 12, xOffset: 0, yOffset: -2, xAdvance: 14, page: 0, letter: "*", movieClip: null }; y.Font.chars[43] = { id: 43, x: 155, y: 35, width: 12, height: 12, xOffset: 0, yOffset: 4, xAdvance: 14, page: 0, letter: "+", movieClip: null }; y.Font.chars[44] = { id: 44, x: 167, y: 173, width: 9, height: 11, xOffset: 0, yOffset: 12, xAdvance: 11, page: 0, letter: ",", movieClip: null }; y.Font.chars[45] = { id: 45, x: 155, y: 27, width: 12, height: 7, xOffset: 0, yOffset: 6, xAdvance: 14, page: 0, letter: "-", movieClip: null }; y.Font.chars[46] = { id: 46, x: 155, y: 177, width: 9, height: 9, xOffset: 0, yOffset: 11, xAdvance: 11, page: 0, letter: ".", movieClip: null }; y.Font.chars[47] = { id: 47, x: 125, y: 122, width: 15, height: 28, xOffset: 0, yOffset: -4, xAdvance: 17, page: 0, letter: "/", movieClip: null }; y.Font.chars[48] = { id: 48, x: 47, y: 134, width: 20, height: 23, xOffset: 0, yOffset: -2, xAdvance: 22, page: 0, letter: "0", movieClip: null }; y.Font.chars[49] = { id: 49, x: 141, y: 162, width: 13, height: 21, xOffset: 0, yOffset: -1, xAdvance: 15, page: 0, letter: "1", movieClip: null }; y.Font.chars[50] = { id: 50, x: 107, y: 0, width: 17, height: 22, xOffset: 0, yOffset: -2, xAdvance: 19, page: 0, letter: "2", movieClip: null }; y.Font.chars[51] = { id: 51, x: 88, y: 68, width: 18, height: 22, xOffset: 0, yOffset: -1, xAdvance: 20, page: 0, letter: "3", movieClip: null }; y.Font.chars[52] = { id: 52, x: 88, y: 91, width: 18, height: 21, xOffset: 0, yOffset: -1, xAdvance: 20, page: 0, letter: "4", movieClip: null }; y.Font.chars[53] = { id: 53, x: 89, y: 38, width: 17, height: 22, xOffset: 0, yOffset: -1, xAdvance: 19, page: 0, letter: "5", movieClip: null }; y.Font.chars[54] = { id: 54, x: 88, y: 129, width: 18, height: 22, xOffset: 0, yOffset: -1, xAdvance: 20, page: 0, letter: "6", movieClip: null }; y.Font.chars[55] = { id: 55, x: 89, y: 16, width: 17, height: 21, xOffset: 0, yOffset: -1, xAdvance: 19, page: 0, letter: "7", movieClip: null }; y.Font.chars[56] = { id: 56, x: 68, y: 164, width: 19, height: 23, xOffset: 0, yOffset: -2, xAdvance: 21, page: 0, letter: "8", movieClip: null }; y.Font.chars[57] = { id: 57, x: 88, y: 152, width: 18, height: 22, xOffset: 0, yOffset: -2, xAdvance: 20, page: 0, letter: "9", movieClip: null }; y.Font.chars[58] = { id: 58, x: 167, y: 48, width: 9, height: 16, xOffset: 0, yOffset: 1, xAdvance: 11, page: 0, letter: ":", movieClip: null }; y.Font.chars[59] = { id: 59, x: 177, y: 44, width: 9, height: 18, xOffset: 0, yOffset: 5, xAdvance: 11, page: 0, letter: ";", movieClip: null }; y.Font.chars[60] = { id: 60, x: 141, y: 87, width: 14, height: 18, xOffset: 0, yOffset: 2, xAdvance: 16, page: 0, letter: "<", movieClip: null }; y.Font.chars[61] = { id: 61, x: 142, y: 56, width: 12, height: 11, xOffset: 0, yOffset: 5, xAdvance: 14, page: 0, letter: "=", movieClip: null }; y.Font.chars[62] = { id: 62, x: 141, y: 68, width: 14, height: 18, xOffset: 0, yOffset: 2, xAdvance: 16, page: 0, letter: ">", movieClip: null }; y.Font.chars[63] = { id: 63, x: 125, y: 0, width: 16, height: 23, xOffset: 0, yOffset: -2, xAdvance: 18, page: 0, letter: "?", movieClip: null }; y.Font.chars[64] = { id: 64, x: 107, y: 92, width: 17, height: 16, xOffset: 0, yOffset: 1, xAdvance: 19, page: 0, letter: "@", movieClip: null }; y.Font.chars[65] = { id: 65, x: 24, y: 139, width: 22, height: 21, xOffset: 0, yOffset: -1, xAdvance: 24, page: 0, letter: "A", movieClip: null }; y.Font.chars[66] = { id: 66, x: 68, y: 95, width: 19, height: 21, xOffset: 0, yOffset: -1, xAdvance: 21, page: 0, letter: "B", movieClip: null }; y.Font.chars[67] = { id: 67, x: 48, y: 44, width: 20, height: 23, xOffset: 0, yOffset: -2, xAdvance: 22, page: 0, letter: "C", movieClip: null }; y.Font.chars[68] = { id: 68, x: 51, y: 0, width: 19, height: 21, xOffset: 0, yOffset: -1, xAdvance: 21, page: 0, letter: "D", movieClip: null }; y.Font.chars[69] = { id: 69, x: 124, y: 152, width: 16, height: 21, xOffset: 0, yOffset: -1, xAdvance: 18, page: 0, letter: "E", movieClip: null }; y.Font.chars[70] = { id: 70, x: 125, y: 24, width: 16, height: 21, xOffset: 0, yOffset: -1, xAdvance: 18, page: 0, letter: "F", movieClip: null }; y.Font.chars[71] = { id: 71, x: 0, y: 115, width: 23, height: 23, xOffset: 0, yOffset: -2, xAdvance: 25, page: 0, letter: "G", movieClip: null }; y.Font.chars[72] = { id: 72, x: 48, y: 68, width: 19, height: 21, xOffset: 0, yOffset: -1, xAdvance: 21, page: 0, letter: "H", movieClip: null }; y.Font.chars[73] = { id: 73, x: 168, y: 0, width: 10, height: 21, xOffset: 0, yOffset: -1, xAdvance: 12, page: 0, letter: "I", movieClip: null }; y.Font.chars[74] = { id: 74, x: 141, y: 138, width: 13, height: 23, xOffset: 0, yOffset: -1, xAdvance: 15, page: 0, letter: "J", movieClip: null }; y.Font.chars[75] = { id: 75, x: 26, y: 38, width: 21, height: 25, xOffset: 0, yOffset: -2, xAdvance: 23, page: 0, letter: "K", movieClip: null }; y.Font.chars[76] = { id: 76, x: 125, y: 84, width: 15, height: 21, xOffset: 0, yOffset: -1, xAdvance: 17, page: 0, letter: "L", movieClip: null }; y.Font.chars[77] = { id: 77, x: 24, y: 92, width: 22, height: 21, xOffset: 0, yOffset: -1, xAdvance: 24, page: 0, letter: "M", movieClip: null }; y.Font.chars[78] = { id: 78, x: 48, y: 22, width: 20, height: 21, xOffset: 0, yOffset: -1, xAdvance: 22, page: 0, letter: "N", movieClip: null }; y.Font.chars[79] = { id: 79, x: 0, y: 91, width: 23, height: 23, xOffset: 0, yOffset: -2, xAdvance: 25, page: 0, letter: "O", movieClip: null }; y.Font.chars[80] = { id: 80, x: 47, y: 92, width: 20, height: 21, xOffset: 0, yOffset: -1, xAdvance: 22, page: 0, letter: "P", movieClip: null }; y.Font.chars[81] = { id: 81, x: 0, y: 139, width: 23, height: 25, xOffset: 0, yOffset: -2, xAdvance: 25, page: 0, letter: "Q", movieClip: null }; y.Font.chars[82] = { id: 82, x: 24, y: 114, width: 22, height: 24, xOffset: 0, yOffset: -1, xAdvance: 24, page: 0, letter: "R", movieClip: null }; y.Font.chars[83] = { id: 83, x: 69, y: 22, width: 19, height: 23, xOffset: 0, yOffset: -2, xAdvance: 21, page: 0, letter: "S", movieClip: null }; y.Font.chars[84] = { id: 84, x: 69, y: 46, width: 19, height: 21, xOffset: 0, yOffset: -1, xAdvance: 21, page: 0, letter: "T", movieClip: null }; y.Font.chars[85] = { id: 85, x: 68, y: 141, width: 19, height: 22, xOffset: 0, yOffset: -1, xAdvance: 21, page: 0, letter: "U", movieClip: null }; y.Font.chars[86] = { id: 86, x: 0, y: 165, width: 23, height: 21, xOffset: 0, yOffset: -1, xAdvance: 25, page: 0, letter: "V", movieClip: null }; y.Font.chars[87] = { id: 87, x: 0, y: 0, width: 28, height: 21, xOffset: 0, yOffset: -1, xAdvance: 30, page: 0, letter: "W", movieClip: null }; y.Font.chars[88] = { id: 88, x: 24, y: 70, width: 23, height: 21, xOffset: 0, yOffset: -1, xAdvance: 25, page: 0, letter: "X", movieClip: null }; y.Font.chars[89] = { id: 89, x: 29, y: 0, width: 21, height: 21, xOffset: 0, yOffset: -1, xAdvance: 23, page: 0, letter: "Y", movieClip: null }; y.Font.chars[90] = { id: 90, x: 47, y: 158, width: 20, height: 21, xOffset: 0, yOffset: -1, xAdvance: 22, page: 0, letter: "Z", movieClip: null }; y.Font.chars[91] = { id: 91, x: 168, y: 65, width: 9, height: 27, xOffset: 0, yOffset: -4, xAdvance: 11, page: 0, letter: "[", movieClip: null }; y.Font.chars[92] = { id: 92, x: 155, y: 106, width: 11, height: 21, xOffset: 0, yOffset: -1, xAdvance: 13, page: 0, letter: "\\", movieClip: null }; y.Font.chars[93] = { id: 93, x: 167, y: 122, width: 10, height: 27, xOffset: 0, yOffset: -4, xAdvance: 12, page: 0, letter: "]", movieClip: null }; y.Font.chars[94] = { id: 94, x: 88, y: 175, width: 15, height: 12, xOffset: 0, yOffset: 0, xAdvance: 17, page: 0, letter: "^", movieClip: null }; y.Font.chars[95] = { id: 95, x: 43, y: 180, width: 16, height: 7, xOffset: 0, yOffset: 13, xAdvance: 18, page: 0, letter: "_", movieClip: null }; y.Font.chars[96] = { id: 96, x: 156, y: 95, width: 9, height: 8, xOffset: 0, yOffset: 0, xAdvance: 11, page: 0, letter: "`", movieClip: null }; y.Font.chars[97] = { id: 97, x: 88, y: 113, width: 18, height: 15, xOffset: 0, yOffset: -1, xAdvance: 20, page: 0, letter: "a", movieClip: null }; y.Font.chars[98] = { id: 98, x: 71, y: 0, width: 18, height: 15, xOffset: 0, yOffset: -1, xAdvance: 20, page: 0, letter: "b", movieClip: null }; y.Font.chars[99] = { id: 99, x: 107, y: 39, width: 17, height: 15, xOffset: 0, yOffset: -1, xAdvance: 19, page: 0, letter: "c", movieClip: null }; y.Font.chars[100] = { id: 100, x: 28, y: 22, width: 19, height: 15, xOffset: 0, yOffset: -1, xAdvance: 21, page: 0, letter: "d", movieClip: null }; y.Font.chars[101] = { id: 101, x: 0, y: 38, width: 25, height: 15, xOffset: 0, yOffset: -1, xAdvance: 27, page: 0, letter: "e", movieClip: null }; y.Font.chars[102] = { id: 102, x: 0, y: 22, width: 27, height: 15, xOffset: 0, yOffset: -1, xAdvance: 29, page: 0, letter: "f", movieClip: null }; y.Font.chars[103] = { id: 103, x: 141, y: 122, width: 13, height: 15, xOffset: 0, yOffset: -1, xAdvance: 15, page: 0, letter: "g", movieClip: null }; y.Font.chars[104] = { id: 104, x: 125, y: 46, width: 16, height: 21, xOffset: 0, yOffset: -1, xAdvance: 18, page: 0, letter: "h", movieClip: null }; y.Font.chars[105] = { id: 105, x: 155, y: 128, width: 11, height: 21, xOffset: 0, yOffset: -1, xAdvance: 13, page: 0, letter: "i", movieClip: null }; y.Font.chars[106] = { id: 106, x: 155, y: 150, width: 11, height: 26, xOffset: 0, yOffset: -1, xAdvance: 13, page: 0, letter: "j", movieClip: null }; y.Font.chars[107] = { id: 107, x: 107, y: 109, width: 17, height: 21, xOffset: 0, yOffset: -1, xAdvance: 19, page: 0, letter: "k", movieClip: null }; y.Font.chars[108] = { id: 108, x: 168, y: 22, width: 10, height: 21, xOffset: 0, yOffset: -1, xAdvance: 12, page: 0, letter: "l", movieClip: null }; y.Font.chars[109] = { id: 109, x: 0, y: 54, width: 24, height: 15, xOffset: 0, yOffset: 5, xAdvance: 26, page: 0, letter: "m", movieClip: null }; y.Font.chars[110] = { id: 110, x: 107, y: 76, width: 17, height: 15, xOffset: 0, yOffset: 5, xAdvance: 19, page: 0, letter: "n", movieClip: null }; y.Font.chars[111] = { id: 111, x: 125, y: 68, width: 15, height: 15, xOffset: 0, yOffset: 5, xAdvance: 17, page: 0, letter: "o", movieClip: null }; y.Font.chars[112] = { id: 112, x: 107, y: 55, width: 17, height: 20, xOffset: 0, yOffset: 5, xAdvance: 19, page: 0, letter: "p", movieClip: null }; y.Font.chars[113] = { id: 113, x: 107, y: 152, width: 16, height: 20, xOffset: 0, yOffset: 5, xAdvance: 18, page: 0, letter: "q", movieClip: null }; y.Font.chars[114] = { id: 114, x: 141, y: 106, width: 13, height: 15, xOffset: 0, yOffset: 5, xAdvance: 15, page: 0, letter: "r", movieClip: null }; y.Font.chars[115] = { id: 115, x: 142, y: 40, width: 12, height: 15, xOffset: 0, yOffset: 5, xAdvance: 14, page: 0, letter: "s", movieClip: null }; y.Font.chars[116] = { id: 116, x: 155, y: 48, width: 11, height: 19, xOffset: 0, yOffset: 1, xAdvance: 13, page: 0, letter: "t", movieClip: null }; y.Font.chars[117] = { id: 117, x: 107, y: 23, width: 17, height: 15, xOffset: 0, yOffset: 5, xAdvance: 19, page: 0, letter: "u", movieClip: null }; y.Font.chars[118] = { id: 118, x: 90, y: 0, width: 16, height: 15, xOffset: 0, yOffset: 5, xAdvance: 18, page: 0, letter: "v", movieClip: null }; y.Font.chars[119] = { id: 119, x: 24, y: 161, width: 22, height: 15, xOffset: 0, yOffset: 5, xAdvance: 24, page: 0, letter: "w", movieClip: null }; y.Font.chars[120] = { id: 120, x: 107, y: 173, width: 14, height: 14, xOffset: 0, yOffset: 4, xAdvance: 16, page: 0, letter: "x", movieClip: null }; y.Font.chars[121] = { id: 121, x: 107, y: 131, width: 17, height: 20, xOffset: 0, yOffset: 5, xAdvance: 19, page: 0, letter: "y", movieClip: null }; y.Font.chars[122] = { id: 122, x: 125, y: 106, width: 15, height: 15, xOffset: 0, yOffset: 5, xAdvance: 17, page: 0, letter: "z", movieClip: null }; y.Font.chars[123] = { id: 123, x: 167, y: 95, width: 11, height: 26, xOffset: 0, yOffset: -1, xAdvance: 13, page: 0, letter: "{", movieClip: null }; y.Font.chars[124] = { id: 124, x: 178, y: 122, width: 7, height: 27, xOffset: 0, yOffset: -4, xAdvance: 9, page: 0, letter: "|", movieClip: null }; y.Font.chars[125] = { id: 125, x: 142, y: 13, width: 12, height: 26, xOffset: 0, yOffset: -1, xAdvance: 14, page: 0, letter: "}", movieClip: null }; y.Font.chars[126] = { id: 126, x: 24, y: 177, width: 18, height: 7, xOffset: 0, yOffset: 8, xAdvance: 20, page: 0, letter: "~", movieClip: null }; y.Font.chars[32] = { id: 32, x: 0, y: 0, width: 0, height: 0, xOffset: 0, yOffset: 0, xAdvance: 12, page: 0, letter: " ", movieClip: null }; y.Font.chars[9] = { id: 9, x: 0, y: 0, width: 0, height: 0, xOffset: 0, yOffset: 0, xAdvance: 96, page: 0, letter: "\t", movieClip: null } }; var xb = function() { ua.call(this); var a = this.getBackgroundColor(), b = 0; 70 > 0.299 * (a >> 16 & 255) + 0.587 * (a >> 8 & 255) + 0.114 * (a & 255) && (b = 16777215); var a = this.getHeight() / 2 - 3.5, c = this.getWidth() - 60; this.outline = new Aa; this.outline.get_graphics().beginFill(b, 0.07); this.outline.get_graphics().drawRect(0, 0, c, 7); this.outline.set_x(30); this.outline.set_y(a); this.addChild(this.outline); this.progress = new Aa; this.progress.get_graphics().beginFill(b, 0.35); this.progress.get_graphics().drawRect(0, 0, c - 4, 3); this.progress.set_x(32); this.progress.set_y(a + 2); this.progress.set_scaleX(0); this.addChild(this.progress) }; s.NMEPreloader = xb; xb.__name__ = ["NMEPreloader"]; xb.__super__ = Aa; xb.prototype = R(Aa.prototype, { getBackgroundColor: function() { return 2236962 }, getHeight: function() { return H.get_current().get_stage().get_stageHeight() }, getWidth: function() { return H.get_current().get_stage().get_stageWidth() }, __class__: xb }); var A = function() { this.didLoad = !1; this.docClick = null; this.firstWidth = this.firstHeight = 0; this._painted = !1; this.PreloaderLogoVars = []; this.PreloaderLogo = null; this.PreloaderSizeVars = []; this.PreloaderBarVars = []; this.PreloaderBarMiddleBMD = this.PreloaderBarTop = this.PreloaderBarMiddle = this.PreloaderBarBottom = null; H.get_current().get_stage().component.id = "oz_game"; A.instance = this; this.firstWidth = this.getWidth() | 0; this.firstHeight = this.getHeight() | 0; xb.call(this); this.addEventListener("enterFrame", ea(this, this.updateFrame)); Math.min(this.firstWidth, 1.7791666666666666 * this.firstHeight); this.outline.get_graphics().clear(); this.progress.get_graphics().clear(); for (var a = ["512", "512", "25", "25"], b = 0, c = a.length; b < c;) { var d = b++; this.PreloaderSizeVars[d] = K.parseInt(a[d]) } a = ["480", "210", "440"]; b = 0; for (c = a.length; b < c;) d = b++, this.PreloaderBarVars[d] = K.parseInt(a[d]); a = new cb(this.PreloaderBarVars[0], this.PreloaderBarVars[1]); b = null; b = new ia(this.PreloaderBarVars[0], this.PreloaderBarVars[1] / 3 | 0, !0, -1); b.copyPixels(a, new pa(0, this.PreloaderBarVars[1] / 3, this.PreloaderBarVars[0], this.PreloaderBarVars[1] / 3), new xa(0, 0)); this.PreloaderBarTop = this.putBitmap(b); b = new ia(this.PreloaderBarVars[0], this.PreloaderBarVars[1] / 3 | 0, !0, 16777215); this.PreloaderBarMiddle = this.putBitmap(b); this.PreloaderBarMiddleBMD = new ia(this.PreloaderBarVars[0], this.PreloaderBarVars[1] / 3 | 0, !0, 16777215); this.PreloaderBarMiddleBMD.copyPixels(a, new pa(0, 0, this.PreloaderBarVars[0], this.PreloaderBarVars[1] / 3), new xa(0, 0)); b = new ia(this.PreloaderBarVars[0], this.PreloaderBarVars[1] / 3 | 0, !0, -1); b.copyPixels(a, new pa(0, 2 * (this.PreloaderBarVars[1] / 3 | 0), this.PreloaderBarVars[0], this.PreloaderBarVars[1] / 3), new xa(0, 0)); this.PreloaderBarBottom = this.putBitmap(b); A.done = !0; this.addEventListener("enterFrame", ea(this, this.estimatePreloading)); a = ["512", "144"]; b = 0; for (c = a.length; b < c;) d = b++, this.PreloaderLogoVars[d] = K.parseInt(a[d]); this.PreloaderLogo = this.putBitmap(new Ba(this.PreloaderLogoVars[0], this.PreloaderLogoVars[1])); G.trace("user agent: ", { fileName: "Preloader.hx", lineNumber: 564, className: "Preloader", methodName: "new", customParams: [window.navigator.userAgent.toLowerCase()] }); G.trace("needs audio ", { fileName: "Preloader.hx", lineNumber: 568, className: "Preloader", methodName: "new", customParams: [u.needsAudio] }); u.needsAudio && (a = [createjs.WebAudioPlugin, createjs.HTMLAudioPlugin], createjs.BrowserDetect.isFirefox && (a = [createjs.HTMLAudioPlugin]), u.hasMusic = createjs.Sound.registerPlugins(a), null == createjs.Sound.activePlugin ? (console.log("ActivePlugin is null"), u.hasMusic = u.hasSound = !1) : 0 <= navigator.userAgent.toLowerCase().indexOf("iemobile") ? (u.hasSound = !1, console.log("We're on IEMobile, disallowing sound if not WP")) : createjs.BrowserDetect.isIOS || createjs.BrowserDetect.isAndroid || createjs.BrowserDetect.isBlackberry ? (console.log(createjs.Sound.activePlugin.toString(), createjs.Sound.activePlugin instanceof createjs.WebAudioPlugin), u.hasSound = 0 <= createjs.Sound.activePlugin.toString().indexOf("WebAudio"), u.hasMusic = u.hasSound) : (u.hasSound = !0, console.log("no browser type check detected, allowing sound")), this.preloadHTML5Audio(), G.trace("needsAudio: ", { fileName: "Preloader.hx", lineNumber: 609, className: "Preloader", methodName: "new", customParams: [u.needsAudio, " hasMusic: ", u.hasMusic, " hasSound: ", u.hasSound ] })); this.onResize() }; s.Preloader = A; A.__name__ = ["Preloader"]; A.CreateManifest = function(a, b) { for (var c = [], d = 0, e = a.length; d < e;) { var p = d++; c.push({ id: a[p], src: b + a[p] + ".ogg" }) } return c }; A.loadAudioFiles = function(a, b, c) { null == c && (c = "audioassetsweb/"); a = A.CreateManifest(a, c); b = A.CreateManifest(b, c); u.hasMusic ? (c = new createjs.LoadQueue, createjs.Sound.alternateExtensions = ["mp3"], c.installPlugin(createjs.Sound), c.on("error", A.audioLoadError), c.on("progress", A.audioLoadProgress), c.on("fileload", A.audioLoadFile), c.on("complete", A.audioLoadComplete), u.hasSound ? c.loadManifest(a) : c.loadManifest(b), c.load()) : u.loaded = !0 }; A.audioLoadError = function(a) { G.trace("PreloadError", { fileName: "Preloader.hx", lineNumber: 188, className: "Preloader", methodName: "audioLoadError", customParams: [a.message] }) }; A.audioLoadFile = function(a) { G.trace("PreloadFile", { fileName: "Preloader.hx", lineNumber: 191, className: "Preloader", methodName: "audioLoadFile", customParams: [a.item.id, a.item.src] }) }; A.audioLoadProgress = function(a) { G.trace("PreloadProgress", { fileName: "Preloader.hx", lineNumber: 194, className: "Preloader", methodName: "audioLoadProgress", customParams: [a.loaded] }) }; A.audioLoadComplete = function(a) { G.trace("sounds are loaded", { fileName: "Preloader.hx", lineNumber: 198, className: "Preloader", methodName: "audioLoadComplete" }); u.loaded = !0; A.Destroy(); G.trace("Audio.loaded = ", { fileName: "Preloader.hx", lineNumber: 201, className: "Preloader", methodName: "audioLoadComplete", customParams: [u.loaded] }) }; A.LoadTimePass = function() { A.timePassed = !0 }; A.goAway = function(a) { G.trace("we cliccccck", { fileName: "Preloader.hx", lineNumber: 811, className: "Preloader", methodName: "goAway" }); A.done = !0; A.Destroy() }; A.Destroy = function() { G.trace("WE TRY DESTROY", { fileName: "Preloader.hx", lineNumber: 817, className: "Preloader", methodName: "Destroy" }); if (A.done && (G.trace("WE DONE BRO", { fileName: "Preloader.hx", lineNumber: 819, className: "Preloader", methodName: "Destroy" }), A.assetsLoaded && u.loaded)) { null != A.instance && A.instance.removeEventListener("enterFrame", (Ya = A.instance, ea(Ya, Ya.estimatePreloading))); for (var a = 0, b = A.BMPsToRemove.length; a < b;) { var c = a++; G.trace("WE REMOVE BMD", { fileName: "Preloader.hx", lineNumber: 824, className: "Preloader", methodName: "Destroy", customParams: [A.BMPsToRemove[c].bitmapData.component.width, c] }); H.get_current().removeChild(A.BMPsToRemove[c]) } null != A.bm && null != A.bm.parent && H.get_current().removeChild(A.bm); null != A._outline && null != A._outline.parent && H.get_current().removeChild(A._outline); null != A._progress && null != A._progress.parent && H.get_current().removeChild(A._progress); document.body.style.background = "#000000"; G.trace("we destroy", { fileName: "Preloader.hx", lineNumber: 853, className: "Preloader", methodName: "Destroy" }) } }; A.__super__ = xb; A.prototype = R(xb.prototype, { updateFrame: function(a) { a = this.getWidth() | 0; var b = this.getHeight() | 0; if (a != this.firstWidth || b != this.firstHeight) this.firstWidth = a, this.firstHeight = b, this.onResize() }, onResize: function(a) { G.trace("RESIZING", { fileName: "Preloader.hx", lineNumber: 251, className: "Preloader", methodName: "onResize", customParams: [this.getWidth(), this.getHeight()] }); a = this.PreloaderSizeVars[0] / this.PreloaderSizeVars[1]; var b = 0, c = 0, d = this.firstWidth, e = this.firstHeight; 1 * this.firstWidth / this.firstHeight > a ? (d = this.firstHeight * a, b = (this.firstWidth - d) / 2) : (e = this.firstWidth * a, c = (this.firstHeight - e) / 2); a = d / this.PreloaderSizeVars[0]; d = 0; this.firstHeight > this.firstWidth && (d = (this.firstHeight - e) / 6); null != this.PreloaderLogo && (this.PreloaderLogo.set_x(b + a * (this.PreloaderSizeVars[0] - this.PreloaderLogoVars[0]) / 2), this.PreloaderLogo.set_y(c + a * this.PreloaderSizeVars[2] - d), this.PreloaderLogo.set_scaleX(this.PreloaderLogo.set_scaleY(a))); b += a * (this.PreloaderSizeVars[0] - this.PreloaderBarVars[0]) / 2; c = this.firstHeight - c - a * (this.PreloaderBarVars[1] / 3 + this.PreloaderSizeVars[3]) + d; e = this.PreloaderBarTop; e.set_x(b); e.set_y(c); e.set_scaleX(e.set_scaleY(a)); e = this.PreloaderBarMiddle; e.set_x(b); e.set_y(c); e.set_scaleX(e.set_scaleY(a)); e = this.PreloaderBarBottom; e.set_x(b); e.set_y(c); e.set_scaleX(e.set_scaleY(a)); G.trace("RESIZING RESULT", { fileName: "Preloader.hx", lineNumber: 295, className: "Preloader", methodName: "onResize", customParams: [this.PreloaderLogo.x, this.PreloaderBarTop.x ] }) }, setXYScale: function(a, b, c, d) { a.set_x(b); a.set_y(c); a.set_scaleX(a.set_scaleY(d)) }, preloadHTML5Audio: function() {}, estimatePreloading: function(a) { A.estimateLoaded += 0.005; A.estimateLoaded = Math.min(A.estimateLoaded, 0.8); this.updateProgressBar(A.estimateLoaded) }, updateProgressBar: function(a) { var b = (this.PreloaderBarVars[0] - this.PreloaderBarVars[2]) / 2; this.PreloaderBarMiddle.bitmapData.copyPixels(this.PreloaderBarMiddleBMD, new pa(b, 0, this.PreloaderBarVars[2] * a, this.PreloaderBarVars[1]), new xa(b, 0)) }, mochiEnd: function() { this.didLoad = !0 }, onUpdate: function(a, b) { if (!A.ShowBlank) { var c = a / b; G.trace("updating", { fileName: "Preloader.hx", lineNumber: 656, className: "Preloader", methodName: "onUpdate", customParams: [c, a, b] }); u.needsAudio && (c *= 0.8); c > A.estimateLoaded ? A.estimateLoaded = c : c = A.estimateLoaded; this.updateProgressBar(c) } }, putBitmap: function(a) { A.SponsorBMDInstance = a; this.set_visible(!0); A.bm = new Sa(a); var b = Math.min(this.firstWidth, 1.7791666666666666 * this.firstHeight) / a.component.width, b = Math.min(b, 2); A.bm.set_x((this.firstWidth - a.component.width * b) / 2); A.bm.set_y((0.7 * this.firstHeight - a.component.height * b) / 2); A.bm.set_scaleX(A.bm.set_scaleY(b)); H.get_current().addChildAt(A.bm, 0); A.BMPsToRemove.push(A.bm); return A.bm }, putBGBitmap: function(a) { this.set_visible(!0); A.bm = new Sa(a); var b = this.firstHeight / a.component.height; A.bm.set_x((this.firstWidth - a.component.width * b) / 2); A.bm.set_y(0); A.bm.set_scaleX(A.bm.set_scaleY(b)); H.get_current().addChildAt(A.bm, 0); A.BMPsToRemove.push(A.bm); return A.bm }, putCenterBitmap: function(a) { this.set_visible(!0); A.bm = new Sa(a); var b = Math.min(this.firstWidth / a.component.width, this.firstHeight / a.component.height); A.bm.set_x((this.firstWidth - a.component.width * b) / 2); A.bm.set_y(this.firstHeight - b * a.component.height); A.bm.set_scaleX(A.bm.set_scaleY(b)); H.get_current().addChildAt(A.bm, 0); A.BMPsToRemove.push(A.bm); return A.bm }, putLowerBitmap: function(a) { this.set_visible(!0); A.bm = new Sa(a); var b = this.firstWidth / a.component.width; 0.2 * this.firstHeight < a.component.height * b && (b = 0.2 * this.firstHeight / a.component.height); b = Math.min(b, 2); A.bm.set_x((this.firstWidth - a.component.width * b) / 2); A.bm.set_y(this.firstHeight - b * a.component.height); A.bm.set_scaleX(A.bm.set_scaleY(b)); H.get_current().addChildAt(A.bm, 0); A.BMPsToRemove.push(A.bm) }, onInit: function() { G.trace("we init preloader", { fileName: "Preloader.hx", lineNumber: 778, className: "Preloader", methodName: "onInit" }) }, onLoaded: function() { this.removeEventListener("enterFrame", ea(this, this.updateFrame)); A.ShowBlank || (A.instance = null, G.trace("we done assets", { fileName: "Preloader.hx", lineNumber: 789, className: "Preloader", methodName: "onLoaded" }), A.assetsLoaded = !0, A.Destroy(), this.dispatchEvent(new fa("complete"))) }, __class__: A }); var za = function() { A.call(this) }; s.GamePreloader = za; za.__name__ = ["GamePreloader"]; za.__super__ = A; za.prototype = R(A.prototype, { preloadHTML5Audio: function() { A.prototype.preloadHTML5Audio.call(this); A.loadAudioFiles(za.SM, za.M) }, __class__: za }); var t = function() {}; s.Globals = t; t.__name__ = ["Globals"]; t.TextMath = function(a, b, c) { f.TextToSprites(a, b, q.ctxtMathFont, "0123456789/*+-=? BESTCOR:", 24, c) }; t.TextMathWhite = function(a, b, c) { f.TextToSprites(a, b, q.ctxtWhiteMathFont, "0123456789/*+-=? BESTCOR:", 24, c) }; t.Init = function() { t.levelsXML = B.parse(Ra.getString("levels")).firstElement(); t.definitionsXML = B.parse(Ra.getString("definitions")).firstElement(); t.componentsXML = B.parse('\n\t\n\t\t

\n\t\t

\n\t\t

\n\t\t

\n\t\n\t\n\t\t

\n\t\t

\n\t\t

\n\t\n\t\n\t\t

\n\t\n\t\n\t\n\t\t

\n\t\t

\n\t\t

\n\t\n\t\n\t\t

\n\t\n\t\n\n').firstElement(); t.levelsXMLLoaded = !0; t.definitionsXMLLoaded = !0; t.componentsXMLLoaded = !0; t.load() }; t.load = function() { t.so = ya.getLocal("slimath_9"); if (null == t.so.data || null == t.so.data.levelScores) { t.so.data.ratedGame = 0; t.so.data.edit_data = ""; t.so.data.levelScores = []; for (var a = 0, b = t.NUMLEVELS; a < b;) { var c = a++; t.so.data.levelScores[c] = -1 } t.so.data.liveChange = -1; t.so.data.lives = t.MAX_LIVES; t.so.data.premiumUpgrade = ""; t.so.data.currentSkin = 0; t.so.data.seenSkins = 1 } t.edit_data = B.parse(S.__cast(t.so.data.edit_data, String)).firstElement(); t.levelScores = t.so.data.levelScores; t.ratedGame = t.so.data.ratedGame; t.liveChange = t.so.data.liveChange; t.lives = t.so.data.lives; t.premiumUpgrade = t.so.data.premiumUpgrade; t.currentSkin = t.so.data.currentSkin; t.seenSkins = t.so.data.seenSkins }; t.save = function() { var a = db.print(t.edit_data); t.so.data.edit_data = a; t.so.data.levelScores = t.levelScores; t.so.data.ratedGame = t.ratedGame; t.so.data.lives = t.lives; t.so.data.liveChange = t.liveChange; t.so.data.premiumUpgrade = t.premiumUpgrade; t.so.data.currentSkin = t.currentSkin; t.so.data.seenSkins = t.seenSkins; a = null; try { a = S.__cast(t.so.flush(), String) } catch (b) { G.trace("couldnt write...", { fileName: "Globals.hx", lineNumber: 501, className: "Globals", methodName: "save" }) } null != a && (a == S.__cast(eb.PENDING, String) && G.trace("requesting permission to save", { fileName: "Globals.hx", lineNumber: 515, className: "Globals", methodName: "save" }), S.__cast(eb.FLUSHED, String)) }; t.moreGames = function(a) { x.getURL("http://www.hoodamath.com") }; t.solution = function(a) { x.getURL("http://www.ozdy.com/walkthroughs/jumpy-ape-joe.html") }; t.facebook = function(a) { x.getURL("https://www.facebook.com/pages/Ozdy/312711385427046") }; t.twitter = function(a) { x.getURL("https://twitter.com/OzdyGames") }; t.amazon = function(a) { a = t.AmazonURL; if (null == a || 0 == a.length) a = t.DefaultMobileURL; x.getURL(a) }; t.googleplay = function(a) { a = t.GooglePlayURL; if (null == a || 0 == a.length) a = t.DefaultMobileURL; x.getURL(a) }; t.appstore = function(a) { a = t.AppStoreURL; if (null == a || 0 == a.length) a = t.DefaultMobileURL; x.getURL(a) }; var lb = function() {}; s.HolaverseAPI = lb; lb.__name__ = ["HolaverseAPI"]; lb.Init = function(a) {}; lb.ShowAd = function() {}; lb.UpdateScore = function(a) {}; lb.Comment = function(a) {}; lb.Share = function(a, b, c) {}; var J = function() {}; s.HxOverrides = J; J.__name__ = ["HxOverrides"]; J.strDate = function(a) { switch (a.length) { case 8: a = a.split(":"); var b = new Date; b.setTime(0); b.setUTCHours(a[0]); b.setUTCMinutes(a[1]); b.setUTCSeconds(a[2]); return b; case 10: return a = a.split("-"), new Date(a[0], a[1] - 1, a[2], 0, 0, 0); case 19: return b = a.split(" "), a = b[0].split("-"), b = b[1].split(":"), new Date(a[0], a[1] - 1, a[2], b[0], b[1], b[2]); default: throw new D("Invalid date format : " + a); } }; J.cca = function(a, b) { var c = a.charCodeAt(b); return c != c ? void 0 : c }; J.substr = function(a, b, c) { if (null == c) c = a.length; else if (0 > c) if (0 == b) c = a.length + c; else return ""; return a.substr(b, c) }; J.remove = function(a, b) { var c = a.indexOf(b); if (-1 == c) return !1; a.splice(c, 1); return !0 }; J.iter = function(a) { return { cur: 0, arr: a, hasNext: function() { return this.cur < this.arr.length }, next: function() { return this.arr[this.cur++] } } }; var xa = function(a, b) { this.x = null != a ? a : 0; this.y = null != b ? b : 0 }; s["openfl.geom.Point"] = xa; xa.__name__ = ["openfl", "geom", "Point"]; xa.prototype = { setTo: function(a, b) { this.x = a; this.y = b }, __class__: xa }; var h = function() {}; s.Input = h; h.__name__ = ["Input"]; h.key = function(a) { return J.cca(a, 0) }; h.is = function(a, b, c) { null == c && (c = !0); null == b && (b = !1); if (!h.down[a] || b && !h.kproc[a]) return !1; b && c && (h.kproc[a] = !0); return !0 }; h.isUP = function(a, b) { null == b && (b = !0); null == a && (a = !1); var c; !h.down[38] || a && !h.kproc[38] ? c = !1 : (a && b && (h.kproc[38] = !0), c = !0); if (c) return !0; c = h.key("W"); if (!h.down[c] || a && !h.kproc[c]) return !1; a && b && (h.kproc[c] = !0); return !0 }; h.Init = function(a) { if (!h.Initted) { h.Initted = !0; h.mouseWheelDelta = 0; h.mctrl = !1; h.mshift = !1; h.kctrl = !1; h.kshift = !1; h.down = []; h.kproc = []; h.clicked = !1; h.clickedSprite = null; h.spriteUnder = null; h.DownEvent = new Hb(null, 2); h.ClickEvent = new Hb(null, 1); h.OverEvent = new Hb(null, 3); h.OutEvent = new Hb(null, 4); for (var b = 0; 256 > b;) b++, h.down.push(!1), h.kproc.push(!1); h.hasFocus = !0; h.iDoc = a; h.iStage = a.get_stage(); a.get_stage().addEventListener("keydown", h.keyDownHandler); a.get_stage().addEventListener("keyup", h.keyUpHandler); a.get_stage().addEventListener("mouseMove", h.mouseMoveHandler); a.get_stage().addEventListener("mouseDown", h.mouseDownHandler); a.get_stage().addEventListener("mouseUp", h.mouseUpHandler); a.get_stage().addEventListener("mouseWheel", h.mouseWheelHandler); h.tx = new va; h.ty = new va; h.tClickedSprite = new va; h.tClicked = new va; kd.inputMode = Ta.TOUCH_POINT; H.get_current().get_stage().addEventListener("touchMove", h.touchMoveHandler); H.get_current().get_stage().addEventListener("touchBegin", h.touchDownHandler); H.get_current().get_stage().addEventListener("touchEnd", h.touchUpHandler); a.get_stage().addEventListener("blur", h.focusOutHandler); a.get_stage().addEventListener("focus", h.focusInHandler); - 1 < window.navigator.userAgent.toLowerCase().indexOf("android") ? (window.removeEventListener("mousedown", (Ya = H.get_stage(), ea(Ya, Ya.onMouse))), window.removeEventListener("mouseup", (Ya = H.get_stage(), ea(Ya, Ya.onMouse))), window.removeEventListener("mousemove", (Ya = H.get_stage(), ea(Ya, Ya.onMouse))), G.trace("We're on android", { fileName: "Input.hx", lineNumber: 169, className: "Input", methodName: "Init" })) : G.trace("We're not on Android", { fileName: "Input.hx", lineNumber: 172, className: "Input", methodName: "Init" }) } }; h.reFocus = function(a) { h.iStage.get_focus() != h.iStage && h.iStage.set_focus(h.iStage) }; h.keyDownHandler = function(a) { h.down[a.keyCode % 256] = !0; h.kshift = a.shiftKey; h.kctrl = a.ctrlKey }; h.keyUpHandler = function(a) { a = a.keyCode; h.down[a % 256] = !1; h.kproc[a % 256] = !1 }; h.SetMouseXY = function(a, b) { h.mx = a - h.mOffsetX; h.my = b - h.mOffsetY; h.mx -= ga.offsetX; h.my -= ga.offsetY; h.mx /= l.instance.scaleX; h.my /= l.instance.scaleY }; h.SetTouchXY = function(a, b, c) { b -= h.mOffsetX; c -= h.mOffsetY; b -= ga.offsetX; c -= ga.offsetY; b /= l.instance.scaleX; c /= l.instance.scaleY; h.tx.h[a] = b; h.ty.h[a] = c }; h.mouseMoveHandler = function(a) { h.SetMouseXY(a.stageX, a.stageY) }; h.mouseWheelHandler = function(a) { h.mouseWheelDelta = a.delta }; h.UpdateSpriteUnder = function() { var a = h.spriteUnder; h.spriteUnder = f.GetSpriteAtPoint(l.instance.doc, h.mx, h.my); h.clicked || (null != a && a != h.spriteUnder && a.dispatchEvent(h.OutEvent.txy(a, h.mx, h.my)), !l.isMobile && null != h.spriteUnder && h.spriteUnder.mouseEnabled && h.spriteUnder.dispatchEvent(h.OverEvent.txy(h.spriteUnder, h.mx, h.my))); l.isMobile || h.clicked || (null != h.spriteUnder && h.spriteUnder.buttonMode ? h.ChangeCursor("button") : h.ChangeCursor("auto")); return h.spriteUnder }; h.ChangeCursor = function(a) { h.CurCursor != a && (document.body.style.cursor = "button" == a ? "pointer" : "auto", h.CurCursor = a) }; h.mouseDownHandler = function(a) { h.SetMouseXY(a.stageX, a.stageY); h.clickedSprite = h.UpdateSpriteUnder(); h.clicked && h.lastClicked + 1 < l.instance.frameCount && (h.clicked = !1); !h.clicked && null != h.clickedSprite && h.clickedSprite.mouseEnabled && h.clickedSprite.hasEventListener(2) ? (h.spriteUnder.dispatchEvent(h.DownEvent.txy(h.spriteUnder, h.mx, h.my)), null != h.DownSound && 0 < (h.spriteUnder.flags & 512) && u.PlaySound(h.ClickSound)) : h.mdown = !0; h.mup = !1; h.mctrl = a.ctrlKey; h.mshift = a.shiftKey; h.clicked = !0; h.lastClicked = l.instance.frameCount }; h.mouseUpHandler = function(a) { h.SetMouseXY(a.stageX, a.stageY); h.UpdateSpriteUnder(); h.clicked && (null != h.clickedSprite && h.clickedSprite == h.spriteUnder && h.clickedSprite.mouseEnabled && (h.spriteUnder.dispatchEvent(h.ClickEvent.txy(h.spriteUnder, h.mx, h.my)), null != h.ClickSound && 0 < (h.spriteUnder.flags & 512) && u.PlaySound(h.ClickSound)), null != h.clickedSprite && h.clickedSprite != h.spriteUnder && (h.spriteUnder = h.clickedSprite)); h.clicked = !1; h.UpdateSpriteUnder(); h.mdown = !1; h.mup = !0 }; h.touchMoveHandler = function(a) { h.SetTouchXY(a.touchPointID, a.stageX, a.stageY); var b = h.tClickedSprite, c = a.touchPointID; a = f.GetSpriteAtPoint(l.instance.doc, h.tx.h[a.touchPointID], h.ty.h[a.touchPointID]); b.h[c] = a }; h.GetTouchPointByFirstTouched = function(a) { if (0 > a || a >= h.TouchIdArrayLength) return null; a = h.TouchIdArray[a]; h._pTouch.setTo(h.tx.h[a], h.ty.h[a]); return h._pTouch }; h.GetLastTouchPoint = function() { var a = h.GetLastTouchId(); return 0 <= a ? (h._pTouch.setTo(h.tx.h[a], h.ty.h[a]), h._pTouch) : null }; h.AddTouchId = function(a) { for (var b = 0, c = h.TouchIdArrayLength; b < c;) { var d = b++, d = h.TouchIdArrayLength - d - 1; h.TouchIdArray[d + 1] = h.TouchIdArray[d] } h.TouchIdArrayLength++; h.TouchIdArray[0] = a }; h.RemoveTouchId = function(a) { for (var b = 0, c = 0, d = h.TouchIdArrayLength; c < d;) { var e = c++; h.TouchIdArray[e] == a ? ++b : h.TouchIdArray[e - b] = h.TouchIdArray[e] } h.TouchIdArrayLength -= b }; h.GetLastTouchId = function() { return 0 < h.TouchIdArrayLength ? h.TouchIdArray[0] : -1 }; h.touchDownHandler = function(a) { h.AddTouchId(a.touchPointID); h.SetTouchXY(a.touchPointID, a.stageX, a.stageY); var b = h.tClickedSprite, c = a.touchPointID; a = f.GetSpriteAtPoint(l.instance.doc, h.tx.h[a.touchPointID], h.ty.h[a.touchPointID]); b.h[c] = a }; h.touchUpHandler = function(a) { h.tx.remove(a.touchPointID); h.ty.remove(a.touchPointID); h.RemoveTouchId(a.touchPointID); h.tClickedSprite.remove(a.touchPointID) }; h.focusOutHandler = function(a) { h.hasFocus = !1; for (a = 0; 256 > a;) a++ }; h.focusInHandler = function(a) { h.hasFocus = !0 }; var cc = function() { this.length = 0 }; s.List = cc; cc.__name__ = ["List"]; cc.prototype = { add: function(a) { a = new zc(a, null); null == this.h ? this.h = a : this.q.next = a; this.q = a; this.length++ }, iterator: function() { return new Kc(this.h) }, __class__: cc }; var zc = function(a, b) { this.item = a; this.next = b }; s["_List.ListNode"] = zc; zc.__name__ = ["_List", "ListNode"]; zc.prototype = { __class__: zc }; var Kc = function(a) { this.head = a }; s["_List.ListIterator"] = Kc; Kc.__name__ = ["_List", "ListIterator"]; Kc.prototype = { hasNext: function() { return null != this.head }, next: function() { var a = this.head.item; this.head = this.head.next; return a }, __class__: Kc }; var vb = s.OzScreenOrientation = { __ename__: ["OzScreenOrientation"], __constructs__: ["PORTRAIT", "LANDSCAPE"] }; vb.PORTRAIT = ["PORTRAIT", 0 ]; vb.PORTRAIT.toString = F; vb.PORTRAIT.__enum__ = vb; vb.LANDSCAPE = ["LANDSCAPE", 1]; vb.LANDSCAPE.toString = F; vb.LANDSCAPE.__enum__ = vb; Math.__name__ = ["Math"]; var M = function(a, b, c) { this.name = a; this.frames = b; this.tilesheetId = c }; s["oz.OzMovieClip"] = M; M.__name__ = ["oz", "OzMovieClip"]; M.prototype = { __class__: M }; var q = function() {}; s.Objects = q; q.__name__ = ["Objects"]; q.Register = function() { q.MovieClips = [q.bmpLine, q.bmpPathEdge, q.bmpSysFill, q.cbtnAddition, q.cbtnDivision, q.cbtnInstructions, q.cbtnMixed, q.cbtnMultiplication, q.cbtnOK1, q.cbtnPause, q.cbtnPlay1, q.cbtnResume, q.cbtnSoundOff, q.cbtnSoundOn, q.cbtnSubtraction, q.cmcBG, q.cmcBGGGG, q.cmcBGRect, q.cmcBlackEye, q.cmcCrossHair, q.cmcDashedCircle, q.cmcDashedLine, q.cmcDialogBG, q.cmcDot, q.cmcGuiStar, q.cmcHooda, q.cmcInstDlg, q.cmcInstructionScreen, q.cmcInstructionText, q.cmcMadeBy, q.cmcMinimap, q.cmcMinimapPlayer, q.cmcPathNode, q.cmcPausedText, q.cmcSmallSmoke, q.cmcSmallSmokeFrames, q.cmcSmoke, q.cmcSpeedRing, q.cmcStarCount, q.cmcStarGold, q.cmcStompy, q.cmcSuperHoodaTitle, q.cmcWhiteCircle, q.cmcWhiteEye, q.cmcWormSegment, q.ctxtMathFont, q.ctxtWhiteMathFont, q.sponsorGGG, q.sysRectBlack, q.sysWhiteRect, q.tileBGRect, q.tileCoin, q.tileJungle, q.tileMenuBG ]; f.RegisterTilesheet(q.BitmapName, q.MovieClips, q.Frames) }; var mb = function() {}; s.ObjectsLayouts = mb; mb.__name__ = ["ObjectsLayouts"]; mb.cmcInstructions = function(a) { var b = f.New(q.cmcDialogBG); a.addChild(b); b.name = "bg"; b.set_x(360); b.set_y(240); b.set_scaleX(18.333053588867188); b.set_scaleY(14.66632080078125); b = f.New(q.cmcInstDlg); a.addChild(b); b.set_x(360); b.set_y(243); b = f.New(q.cmcInstructionScreen); a.addChild(b); b.name = "screen1"; b.set_x(157); b.set_y(60); b = f.New(q.cmcInstructionScreen); a.addChild(b); b.name = "screen2"; b.set_x(362); b.set_y(165); b = f.New(q.cmcInstructionScreen); a.addChild(b); b.name = "screen3"; b.set_x(157); b.set_y(269); b = f.New(q.cmcInstructionText); a.addChild(b); b.name = "text1"; b.set_x(441); b.set_y(109); b = f.New(q.cmcInstructionText); a.addChild(b); b.name = "text2"; b.set_x(277); b.set_y(212); b = f.New(q.cmcInstructionText); a.addChild(b); b.name = "text3"; b.set_x(439); b.set_y(320); b = f.New(q.cbtnOK1); a.addChild(b); b.name = "btnOK"; b.set_x(508); b.set_y(410) }; mb.cmcPaused = function(a) { var b = f.New(q.cmcDialogBG); a.addChild(b); b.name = "bg"; b.set_x(360); b.set_y(240); b.set_scaleX(18.333053588867188); b.set_scaleY(14.66632080078125); b = f.New(q.cmcPausedText); a.addChild(b); b.name = "pause"; b.set_x(361); b.set_y(226); b = f.New(q.cbtnResume); a.addChild(b); b.name = "btnPlay"; b.set_x(360); b.set_y(328); b = f.New(q.cbtnSoundOn); a.addChild(b); b.name = "soundOn"; b.set_x(360); b.set_y(131); b = f.New(q.cbtnSoundOff); a.addChild(b); b.name = "soundOff"; b.set_x(360); b.set_y(131) }; mb.cmcPlay = function(a) { var b = f.New(q.cmcBG); a.addChild(b); b.name = "bg"; b = f.New(q.cmcMinimap); a.addChild(b); b.name = "minimap"; b.set_x(672); b.set_y(432); b.set_alpha(0.49); b = f.New(q.ctxtMathFont); a.addChild(b); b.name = "problem"; b.set_x(347); b.set_y(4); b = f.New(q.cbtnPause); a.addChild(b); b.name = "btnPause"; b.set_x(691); b.set_y(29); b.set_scaleX(0.78125); b.set_scaleY(0.78125); b.set_alpha(0.49); b = f.New(q.ctxtWhiteMathFont); a.addChild(b); b.name = "score"; b.set_x(4); b.set_y(4); b = f.New(q.ctxtMathFont); a.addChild(b); b.name = "problem2"; b.set_x(4); b.set_y(442); b = f.New(q.sponsorGGG); a.addChild(b); b.name = "sponsor"; b.set_x(108); b.set_y(450); b.set_scaleX(0.6969757080078125); b.set_scaleY(0.6969757080078125) }; mb.cmcPlayOverlay = function(a) { var b = f.New(q.tileMenuBG); a.addChild(b); b.name = "bg"; b = f.New(q.cmcSuperHoodaTitle); a.addChild(b); b.name = "title"; b.set_x(355); b.set_y(109); b = f.New(q.ctxtMathFont); a.addChild(b); b.name = "best"; b.set_x(347); b.set_y(191); b = f.New(q.ctxtMathFont); a.addChild(b); b.name = "score"; b.set_x(347); b.set_y(154); b = f.New(q.cbtnInstructions); a.addChild(b); b.name = "btnInstructions"; b.set_x(360); b.set_y(358); b = f.New(q.ctxtMathFont); a.addChild(b); b.name = "problem"; b.set_x(347); b.set_y(4); b = f.New(q.cbtnPlay1); a.addChild(b); b.name = "btnPlay"; b.set_x(360); b.set_y(280); b = f.New(q.cbtnSoundOn); a.addChild(b); b.name = "soundOn"; b.set_x(688); b.set_y(30); b.set_scaleX(0.78125); b.set_scaleY(0.78125); b = f.New(q.cbtnSoundOff); a.addChild(b); b.name = "soundOff"; b.set_x(688); b.set_y(30); b.set_scaleX(0.78125); b.set_scaleY(0.78125); b = f.New(q.sponsorGGG); a.addChild(b); b.name = "sponsor"; b.set_x(360); b.set_y(440); b.set_scaleX(0.71221923828125); b.set_scaleY(0.71221923828125); b = f.New(q.cmcMadeBy); a.addChild(b); b.name = "madeBy"; b.set_x(65); b.set_y(464); b = f.New(q.cbtnAddition); a.addChild(b); b.name = "btnAddition"; b.set_x(268); b.set_y(202); b = f.New(q.cbtnSubtraction); a.addChild(b); b.name = "btnSubtraction"; b.set_x(452); b.set_y(202); b = f.New(q.cbtnMultiplication); a.addChild(b); b.name = "btnMultiplication"; b.set_x(268); b.set_y(280); b = f.New(q.cbtnDivision); a.addChild(b); b.name = "btnDivision"; b.set_x(452); b.set_y(280); b = f.New(q.cbtnMixed); a.addChild(b); b.name = "btnMixed"; b.set_x(360); b.set_y(358) }; var ia = function(a, b, c, d) { null == c && (c = !0); this.__sync = 1; this.__transparent = c; this.__revision = 0; this.__rect = new pa(0, 0, a, b); this.component = Zc.createCanvasElement(); this.component.width = a; this.component.height = b; this.context = this.component.getContext("2d"); ia.setSmoothing(this.context, !0); this.__pixelData = this.context.createImageData(1, 1); null == d && (d = -1); c || (d |= -16777216); 0 != (d & -16777216) && this.fillRect(this.__rect, d) }; s["openfl.display.BitmapData"] = ia; ia.__name__ = ["openfl", "display", "BitmapData"]; ia.__interfaces__ = [Pa]; ia.setSmoothing = function(a, b) { a.imageSmoothingEnabled = a.oImageSmoothingEnabled = a.msImageSmoothingEnabled = a.webkitImageSmoothingEnabled = a.mozImageSmoothingEnabled = b }; ia.makeColor = function(a) { return "rgba(" + (a >> 16 & 255) + "," + (a >> 8 & 255) + "," + (a & 255) + "," + ((a >> 24 & 255) / 255).toFixed(4) + ")" }; ia.prototype = { fillRect: function(a, b) { null == a || 0 >= a.width || 0 >= a.height || (a.equals(this.__rect) && this.__transparent && 0 == (b & -16777216) ? this.component.width = this.component.width : (this.__transparent ? -16777216 != (b & -16777216) && this.context.clearRect(a.x, a.y, a.width, a.height) : b |= -16777216, 0 != (b & -16777216) && (this.context.fillStyle = ia.makeColor(b), this.context.fillRect(a.x, a.y, a.width, a.height)), this.__sync |= 5)) }, clone: function() { this.syncCanvas(); var a = new ia(this.component.width, this.component.height, this.__transparent, 0); a.context.drawImage(this.component, 0, 0); a.__sync |= 5; return a }, handle: function() { this.syncCanvas(); 0 != (this.__sync & 4) && (this.__revision++, this.__sync &= -5); return this.component }, drawToSurface: function(a, b, c, d, e, p, f) { b.save(); null != f && b.imageSmoothingEnabled != f && ia.setSmoothing(b, f); null != c && (1 == c.a && 0 == c.b && 0 == c.c && 1 == c.d ? b.translate(c.tx, c.ty) : b.setTransform(c.a, c.b, c.c, c.d, c.tx, c.ty)); b.drawImage(this.handle(), 0, 0); b.restore() }, copyPixels: function(a, b, c, d, e, p) { null == p && (p = !1); this.syncCanvas(); if (null != d) throw new D("alphaBitmapData is not supported yet."); a = a.handle(); var f, g; d = this.component.width; e = this.component.height; var k; null != a ? (f = a.width, k = 0 >= f) : k = !0; k ? k = !0 : (g = a.height, k = 0 >= g); if (!k) { k = ~~c.x; c = ~~c.y; var I, h, w; null != b ? (I = b.x, h = b.y, w = b.width, b = b.height, 0 > I && (w += I, I = 0), 0 > h && (b += h, h = 0), I + w > f && (w = f - I), h + b > g && (b = g - h)) : (I = h = 0, w = f, b = g); 0 > k && (w += k, I -= k, k = 0); 0 > c && (b += c, h -= c, c = 0); k + w > d && (w = d - k); c + b > e && (b = e - c); 0 >= w || 0 >= b || (this.__transparent && !p && this.context.clearRect(k, c, w, b), this.context.drawImage(a, I, h, w, b, k, c, w, b), this.__sync |= 5) } }, draw: function(a, b, c, d, e, p) { this.syncCanvas(); var f = 0; this.context.save(); null != c && (f = c.alphaMultiplier, c.alphaMultiplier = 1, this.context.globalAlpha *= f); null != e && (this.context.beginPath(), this.context.rect(e.x, e.y, e.width, e.height), this.context.clip(), this.context.beginPath()); null != p && ia.setSmoothing(this.context, p); a.drawToSurface(this.handle(), this.context, b, c, d, e, null); this.context.restore(); null != c && (c.alphaMultiplier = f); this.__sync |= 5 }, jeashOnLoad: function(a, b) { var c = a.texture, d = a.image.width, e = a.image.height; c.width = d; c.height = e; c.getContext("2d").drawImage(a.image, 0, 0, d, e); a.bitmapData.width = d; a.bitmapData.height = e; a.bitmapData.__rect = new pa(0, 0, d, e); null != a.inLoader && (c = new fa("complete"), c.set_target(a.inLoader), a.inLoader.dispatchEvent(c)) }, nmeLoadFromFile: function(a, b) { var c = this, d = window.document.createElement("img"); if (null != b) { var e = { image: d, texture: this.component, inLoader: b, bitmapData: this }, p = ea(this, this.jeashOnLoad); d.addEventListener("load", function(a) { p(e, a) }, !1); d.addEventListener("error", function(a) { d.complete || c.jeashOnLoad(e, a) }, !1) } d.src = a }, syncCanvas: function() { 2 == (this.__sync & 3) && (this.context.putImageData(this.__imageData, 0, 0), this.__sync &= -4) }, __class__: ia }; var Mb = function() { this.intervalHandle = null; this.isTouchScreen = !1; this.frameRate = null; ua.call(this); var a = this.component.style, b = window; a.position = "absolute"; a.overflow = "hidden"; a.left = a.top = "0"; a.width = a.height = "100%"; this.mousePos = new xa; b.addEventListener("contextmenu", function(a) { a.preventDefault() }); b.addEventListener("click", ea(this, this.onMouse)); b.addEventListener("mousedown", ea(this, this.onMouse)); b.addEventListener("mouseup", ea(this, this.onMouse)); b.addEventListener("mousemove", ea(this, this.onMouse)); b.addEventListener("mousewheel", ea(this, this.onWheel)); b.addEventListener("DOMMouseScroll", ea(this, this.onWheel)); b.addEventListener("touchmove", this.getOnTouch(0)); b.addEventListener("touchstart", this.getOnTouch(1)); b.addEventListener("touchend", this.getOnTouch(2)); b.addEventListener("touchcancel", this.getOnTouch(2)); this.mouseMtxDepth = []; this.mouseMtxStack = []; this.mouseMtxCache = []; this.mouseTriggered = []; this.mouseUntrigger = []; for (a = -1; 3 > ++a;) this.mouseTriggered[a] = !1, this.mouseUntrigger[a] = this.getMouseUntrigger(a) }; s["openfl.display.Stage"] = Mb; Mb.__name__ = ["openfl", "display", "Stage"]; Mb.__super__ = ua; Mb.prototype = R(ua.prototype, { _broadcastMouseEvent: function(a) { var b = this.mouseOver, c; a.stageX = this.mousePos.x; a.stageY = this.mousePos.y; this.broadcastMouse(this.mouseMtxDepth, a, this.mouseMtxStack, this.mouseMtxCache); this.mouseOver = c = a.relatedObject; b != c && (null != b && b.dispatchEvent(this._alterMouseEvent(a, "mouseOut")), null != c && c.dispatchEvent(this._alterMouseEvent(a, "mouseOver"))) }, _broadcastTouchEvent: function(a, b, c) { a.stageX = b; a.stageY = c; this.broadcastMouse(this.mouseMtxDepth, a, this.mouseMtxStack, this.mouseMtxCache) }, getMouseUntrigger: function(a) { var b = this; return function() { b.mouseTriggered[a] = !1 } }, _alterMouseEvent: function(a, b) { var c = new fb(b, a.bubbles, a.cancelable, a.localX, a.localY, a.relatedObject, a.ctrlKey, a.altKey, a.shiftKey, a.buttonDown, a.delta); c.stageX = a.stageX; c.stageY = a.stageY; return c }, _translateMouseEvent: function(a, b) { return new fb(b, !0, !1, null, null, null, a.ctrlKey, a.altKey, a.shiftKey) }, _translateTouchEvent: function(a, b, c) { b = new lc(c, !0, !1, b.identifier, !1, null, null, b.radiusX, b.radiusY, b.force, null, a.ctrlKey, a.altKey, a.shiftKey); b.__jsEvent = a; return b }, mouseEventPrevent: function(a, b, c) { var d = this.mousePos, d = d.x == b && d.y == c; if (0 <= a && d && this.mouseTriggered[a]) return !0; d || this.mousePos.setTo(b, c); 0 <= a && !this.mouseTriggered[a] && (this.mouseTriggered[a] = !0, window.setTimeout(this.mouseUntrigger[a], 0)); 1 == a ? this.mouseDown ? this._broadcastMouseEvent(this._alterMouseEvent(this.mouseLastEvent, "mouseUp")) : this.mouseDown = !0 : 2 == a && (this.mouseDown ? this.mouseDown = !1 : this._broadcastMouseEvent(new fb("mouseDown"))); return !1 }, getOnTouch: function(a) { var b = this; return function(c) { b.onTouch(c, a) } }, onTouch: function(a, b) { var c = a.targetTouches, d = c.length, e = a.changedTouches, p = e.length, c = 0 < d ? c[0] : 0 < p ? e[0] : null, f; a.preventDefault(); this.isTouchScreen = !0; null != c && (0 == b || 1 == b && d == p || 2 == b && 0 == d && 0 < p) && !this.mouseEventPrevent(b, c.pageX, c.pageY) && (this.mouseLastEvent = new fb(1 == b ? "mouseDown" : 2 == b ? "mouseUp" : "mouseMove"), this.mouseLastEvent.__jsEvent = a, this._broadcastMouseEvent(this.mouseLastEvent), 2 == b && (d = new fb("mouseClick"), d.__jsEvent = a, this._broadcastMouseEvent(d))); if (0 < p) { switch (b) { case 1: c = "touchBegin"; break; case 2: c = "touchEnd"; break; default: c = "touchMove" } for (d = -1; ++d < p;) f = e[d], this._broadcastTouchEvent(this._translateTouchEvent(a, f, c), f.pageX, f.pageY) } }, onWheel: function(a) { var b = this._translateMouseEvent(a, "mouseWheel"), c = a.wheelDelta, c = null != c ? 40 < Math.abs(c) ? Math.round(c / 40) : 0 > c ? -1 : 0 < c ? 1 : 0 : -a.detail; b.delta = c; this.mousePos.setTo(a.pageX, a.pageY); this._broadcastMouseEvent(b) }, onMouse: function(a) { var b = null, c = -1, d; if ("mousemove" == a.type) b = "mouseMove", c = 0; else switch (d = a.button, a.type) { case "click": 0 == d ? b = "mouseClick" : 1 == d ? b = "rightClick" : 2 == d && (b = "middleClick"); break; case "mousedown": 0 == d ? b = "mouseDown" : 1 == d ? b = "middleMouseDown" : 2 == d && (b = "rightMouseDown"); c = 1; break; case "mouseup": 0 == d ? b = "mouseUp" : 1 == d ? b = "middleMouseUp" : 2 == d && (b = "rightMouseUp"); c = 2; break; default: return } this.mouseEventPrevent(c, a.pageX, a.pageY) || (this.mouseLastEvent = new fb(b), this.mouseLastEvent.__jsEvent = a, this._broadcastMouseEvent(this.mouseLastEvent)) }, hitTestLocal: function(a, b, c, d) { return d ? this.visible : !0 }, addEventListener: function(a, b, c, d, e) { null == e && (e = !1); null == d && (d = 0); null == c && (c = !1); var p = this.component; this.component = window; ua.prototype.addEventListener.call(this, a, b, c, d, e); this.component = p }, removeEventListener: function(a, b, c) { null == c && (c = !1); var d = this.component; this.component = window; ua.prototype.removeEventListener.call(this, a, b, c); this.component = d }, get_focus: function() { var a = document.activeElement, b; null != a ? (a = a.node, b = S.__instanceof(a, Wa)) : b = !1; return b ? a : null }, set_focus: function(a) { null != a ? a.giveFocus() : this.component.blur(); return a }, get_stageWidth: function() { return window.innerWidth }, get_stageHeight: function() { return window.innerHeight }, get_stage: function() { return this }, set_frameRate: function(a) { this.frameRate != a && (null != this.intervalHandle && (0 >= this.frameRate ? window._cancelAnimationFrame(this.intervalHandle) : window.clearInterval(this.intervalHandle)), this.intervalHandle = 0 >= (this.frameRate = a) ? window._requestAnimationFrame(ea(this, this.onTimer)) : window.setInterval(ea(this, this.onTimer), Math.max(0, 1E3 / a) | 0)); return a }, onTimer: function() { H.getTimer(); for (var a = -1; ++a < H.schLength;) H.schList[a](), H.schList[a] = null; H.schLength = 0; this.broadcastEvent(new fa("enterFrame")); 0 >= this.frameRate && (this.intervalHandle = window._requestAnimationFrame(ea(this, this.onTimer))) }, __class__: Mb, __properties__: R(ua.prototype.__properties__, { get_stageHeight: "get_stageHeight", get_stageWidth: "get_stageWidth", set_focus: "set_focus", get_focus: "get_focus", set_frameRate: "set_frameRate" }) }); var sc = function(a) { if (null == a) throw new D("Cannot create Transform with no DisplayObject."); this._displayObject = a; this._matrix = new na; this._fullMatrix = new na; this.set_colorTransform(new Vb) }; s["openfl.geom.Transform"] = sc; sc.__name__ = ["openfl", "geom", "Transform"]; sc.prototype = { set_colorTransform: function(a) { return this.colorTransform = a }, get_matrix: function() { var a = this._matrix; return new na(a.a, a.b, a.c, a.d, a.tx, a.ty) }, __class__: sc, __properties__: { get_matrix: "get_matrix", set_colorTransform: "set_colorTransform" } }; var na = function(a, b, c, d, e, p) { this.a = null == a ? 1 : a; this.b = null == b ? 0 : b; this.c = null == c ? 0 : c; this.d = null == d ? 1 : d; this.tx = null == e ? 0 : e; this.ty = null == p ? 0 : p }; s["openfl.geom.Matrix"] = na; na.__name__ = ["openfl", "geom", "Matrix"]; na.create = function() { var a = na.pool; return 0 < a.length ? a.pop() : new na }; na.prototype = { identity: function() { this.a = this.d = 1; this.b = this.c = this.tx = this.ty = 0 }, isIdentity: function() { return 1 == this.a && 1 == this.d && 0 == this.tx && 0 == this.ty && 0 == this.b ? 0 == this.c : !1 }, copy: function(a) { this.a = a.a; this.b = a.b; this.c = a.c; this.d = a.d; this.tx = a.tx; this.ty = a.ty }, invert: function() { var a, b = this.a * this.d - this.b * this.c; 0 == b ? (this.a = this.b = this.c = this.d = 0, this.tx = -this.tx, this.ty = -this.ty) : (b = 1 / b, a = this.d * b, this.d = this.a * b, this.a = a, this.b *= -b, this.c *= -b, a = -this.a * this.tx - this.c * this.ty, this.ty = -this.b * this.tx - this.d * this.ty, this.tx = a) }, translate: function(a, b) { this.tx += a; this.ty += b }, rotate: function(a) { var b = Math.cos(a); a = Math.sin(a); var c = this.a * b - this.b * a; this.b = this.a * a + this.b * b; this.a = c; c = this.c * b - this.d * a; this.d = this.c * a + this.d * b; this.c = c; c = this.tx * b - this.ty * a; this.ty = this.tx * a + this.ty * b; this.tx = c }, scale: function(a, b) { this.a *= a; this.b *= b; this.c *= a; this.d *= b; this.tx *= a; this.ty *= b }, concat: function(a) { var b = this.a * a.a + this.b * a.c; this.b = this.a * a.b + this.b * a.d; this.a = b; b = this.c * a.a + this.d * a.c; this.d = this.c * a.b + this.d * a.d; this.c = b; b = this.tx * a.a + this.ty * a.c + a.tx; this.ty = this.tx * a.b + this.ty * a.d + a.ty; this.tx = b }, __class__: na }; var Vb = function(a, b, c, d, e, p, f, g) { this.redMultiplier = null != a ? a : 1; this.greenMultiplier = null != b ? b : 1; this.blueMultiplier = null != c ? c : 1; this.alphaMultiplier = null != d ? d : 1; this.redOffset = null != e ? e : 0; this.greenOffset = null != p ? p : 0; this.blueOffset = null != f ? f : 0; this.alphaOffset = null != g ? g : 0 }; s["openfl.geom.ColorTransform"] = Vb; Vb.__name__ = ["openfl", "geom", "ColorTransform"]; Vb.prototype = { __class__: Vb }; var dc = function() {}; s["haxe.IMap"] = dc; dc.__name__ = ["haxe", "IMap"]; var Oa = function() { this.h = { __keys__: {} } }; s["haxe.ds.ObjectMap"] = Oa; Oa.__name__ = ["haxe", "ds", "ObjectMap"]; Oa.__interfaces__ = [dc]; Oa.assignId = function(a) { return a.__id__ = ++Oa.count }; Oa.getId = function(a) { return a.__id__ }; Oa.prototype = { set: function(a, b) { var c = a.__id__ || (a.__id__ = ++Oa.count); this.h[c] = b; this.h.__keys__[c] = a }, remove: function(a) { a = a.__id__; if (null == this.h.__keys__[a]) return !1; delete this.h[a]; delete this.h.__keys__[a]; return !0 }, keys: function() { var a = [], b; for (b in this.h.__keys__) this.h.hasOwnProperty(b) && a.push(this.h.__keys__[b]); return J.iter(a) }, __class__: Oa }; var H = function() {}; s["openfl.Lib"] = H; H.__name__ = ["openfl", "Lib"]; H.__properties__ = { get_stage: "get_stage", get_current: "get_current" }; H.__init = function() { H.schList = []; H.schLength = 0; var a = window, b = "equestAnimationFrame"; H.getTimer(); a._requestAnimationFrame = a["r" + b] || a["webkitR" + b] || a["mozR" + b] || a["oR" + b] || a["msR" + b] || function(b) { var d = 700 / H.get_stage().frameRate | 0; return a.setTimeout(b, d) }; b = "ancelAnimationFrame"; a._cancelAnimationFrame = a["c" + b] || a["webkitC" + b] || a["mozC" + b] || a["oC" + b] || a["msC" + b] || function(b) { a.clearTimeout(b) } }; H.getTimer = function() { return new Date - H.qTimeStamp | 0 }; H.getURL = function(a, b) { window.open(a.url, b) }; H.jsNode = function(a) { var b = document.createElement(a), c = b.style; c.position = "absolute"; switch (a) { case "canvas": c.setProperty("-webkit-touch-callout", "none", null); H.setCSSProperties(c, "user-select", "none", 47); break; case "input": case "textarea": c.outline = "none" } return b }; H.get_current = function() { null == H.qCurrent && H.get_stage().addChild(H.qCurrent = new Wb); return H.qCurrent }; H.get_stage = function() { null == H.qStage && document.body.appendChild((H.qStage = new Mb).component); return H.qStage }; H.schedule = function(a) { H.schList[H.schLength++] = a }; H.rgbf = function(a, b) { return "rgba(" + (a >> 16 & 255) + "," + (a >> 8 & 255) + "," + (a & 255) + "," + b.toFixed(4) + ")" }; H.setCSSProperties = function(a, b, c, d) { d || (d = 31); d & 1 && a.setProperty(b, c, null); d & 2 && a.setProperty("-webkit-" + b, c, null); d & 4 && a.setProperty("-moz-" + b, c, null); d & 8 && a.setProperty("-ms-" + b, c, null); d & 16 && a.setProperty("-o-" + b, c, null); d & 32 && a.setProperty("-khtml-" + b, c, null) }; var Wb = function() { ua.call(this); this.enabled = !0; this.qIndex = this.qTotal = 0; this.loaderInfo = kb.create() }; s["openfl.display.MovieClip"] = Wb; Wb.__name__ = ["openfl", "display", "MovieClip"]; Wb.__super__ = Aa; Wb.prototype = R(Aa.prototype, { __class__: Wb }); var kb = function() { this.eventList = new X; this.bytesLoaded = this.bytesTotal = 0; this.childAllowsParent = !0; this.parameters = {} }; s["openfl.display.LoaderInfo"] = kb; kb.__name__ = ["openfl", "display", "LoaderInfo"]; kb.create = function(a) { var b = new kb; null != a ? b.loader = a : b.url = ""; return b }; kb.__super__ = ta; kb.prototype = R(ta.prototype, { __class__: kb }); var K = function() {}; s.Std = K; K.__name__ = ["Std"]; K.string = function(a) { return S.__string_rec(a, "") }; K.parseInt = function(a) { var b = parseInt(a, 10); 0 != b || 120 != J.cca(a, 1) && 88 != J.cca(a, 1) || (b = parseInt(a)); return isNaN(b) ? null : b }; var pa = function(a, b, c, d) { null == d && (d = 0); null == c && (c = 0); null == b && (b = 0); null == a && (a = 0); this.x = a; this.y = b; this.width = c; this.height = d }; s["openfl.geom.Rectangle"] = pa; pa.__name__ = ["openfl", "geom", "Rectangle"]; pa.prototype = { equals: function(a) { return this.x == a.x && this.y == a.y && this.width == a.width ? this.height == a.height : !1 }, setVoid: function() { this.width -= 2147483647 - this.x; this.x = 2147483647; this.width = -2147483648 - this.x; this.height -= 2147483647 - this.y; this.y = 2147483647; this.height = -2147483648 - this.y }, contains: function(a, b) { return 0 <= (a -= this.x) && 0 <= (b -= this.y) && a < this.width ? b < this.height : !1 }, __class__: pa }; var Zc = function() {}; s["openfl.bitfive.NodeTools"] = Zc; Zc.__name__ = ["openfl", "bitfive", "NodeTools"]; Zc.createCanvasElement = function() { var a = window.document.createElement("canvas"), b = a.style; b.position = "absolute"; b.setProperty("-webkit-touch-callout", "none", null); $c.setProperties(b, "user-select", "none", 63); return a }; var $c = function() {}; s["openfl.bitfive.StyleTools"] = $c; $c.__name__ = ["openfl", "bitfive", "StyleTools" ]; $c.setProperties = function(a, b, c, d) { null == d && (d = 31); d & 1 && a.setProperty("" + b, c, null); d & 2 && a.setProperty("-webkit-" + b, c, null); d & 4 && a.setProperty("-moz-" + b, c, null); d & 8 && a.setProperty("-ms-" + b, c, null); d & 16 && a.setProperty("-o-" + b, c, null); d & 32 && a.setProperty("-khtml-" + b, c, null) }; var Ba = function(a, b, c, d) { a = Ba.image; ia.call(this, a.width, a.height, !0, 0); this.context.drawImage(a, 0, 0) }; s.PreloaderLogoBMD = Ba; Ba.__name__ = ["PreloaderLogoBMD"]; Ba.preload = function() { var a = document.createElement("img"); C.loadEmbed(Ba.image = a); a.src = "data:image/png;base64,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" }; Ba.__super__ = ia; Ba.prototype = R(ia.prototype, { __class__: Ba }); var G = function() {}; s["haxe.Log"] = G; G.__name__ = ["haxe", "Log"]; G.trace = function(a, b) { S.__trace(a, b) }; var S = function() {}; s["js.Boot"] = S; S.__name__ = ["js", "Boot"]; S.__unhtml = function(a) { return a.split("&").join("&").split("<").join("<").split(">").join(">") }; S.__trace = function(a, b) { var c = null != b ? b.fileName + ":" + b.lineNumber + ": " : "", c = c + S.__string_rec(a, ""); if (null != b && null != b.customParams) for (var d = 0, e = b.customParams; d < e.length;) { var p = e[d]; ++d; c += "," + S.__string_rec(p, "") } var f; "undefined" != typeof document ? (f = document.getElementById("haxe:trace"), d = null != f) : d = !1; d ? f.innerHTML += S.__unhtml(c) + "
" : "undefined" != typeof console && null != console.log && console.log(c) }; S.getClass = function(a) { if (a instanceof Array && null == a.__enum__) return Array; var b = a.__class__; if (null != b) return b; a = S.__nativeClassName(a); return null != a ? S.__resolveNativeClass(a) : null }; S.__string_rec = function(a, b) { if (null == a) return "null"; if (5 <= b.length) return "<...>"; var c = typeof a; "function" == c && (a.__name__ || a.__ename__) && (c = "object"); switch (c) { case "function": return ""; case "object": if (a instanceof Array) { if (a.__enum__) { if (2 == a.length) return a[0]; c = a[0] + "("; b += "\t"; for (var d = 2, e = a.length; d < e;) var p = d++, c = 2 != p ? c + ("," + S.__string_rec(a[p], b)) : c + S.__string_rec(a[p], b); return c + ")" } c = a.length; d = "["; b += "\t"; for (e = 0; e < c;) p = e++, d += (0 < p ? "," : "") + S.__string_rec(a[p], b); return d + "]" } try { d = a.toString } catch (f) { return "???" } if (null != d && d != Object.toString && "function" == typeof d && (c = a.toString(), "[object Object]" != c)) return c; c = null; d = "{\n"; b += "\t"; e = null != a.hasOwnProperty; for (c in a) e && !a.hasOwnProperty(c) || "prototype" == c || "__class__" == c || "__super__" == c || "__interfaces__" == c || "__properties__" == c || (2 != d.length && (d += ", \n"), d += b + c + " : " + S.__string_rec(a[c], b)); b = b.substring(1); return d + ("\n" + b + "}"); case "string": return a; default: return String(a) } }; S.__interfLoop = function(a, b) { if (null == a) return !1; if (a == b) return !0; var c = a.__interfaces__; if (null != c) for (var d = 0, e = c.length; d < e;) { var p = d++, p = c[p]; if (p == b || S.__interfLoop(p, b)) return !0 } return S.__interfLoop(a.__super__, b) }; S.__instanceof = function(a, b) { if (null == b) return !1; switch (b) { case Array: return a instanceof Array ? null == a.__enum__ : !1; case nd: return "boolean" == typeof a; case Bd: return !0; case od: return "number" == typeof a; case Cd: return "number" == typeof a ? (a | 0) === a : !1; case String: return "string" == typeof a; default: if (null != a) if ("function" == typeof b) { if (a instanceof b || S.__interfLoop(S.getClass(a), b)) return !0 } else { if ("object" == typeof b && S.__isNativeObj(b) && a instanceof b) return !0 } else return !1; return b == pd && null != a.__name__ || b == qd && null != a.__ename__ ? !0 : a.__enum__ == b } }; S.__cast = function(a, b) { if (S.__instanceof(a, b)) return a; throw new D("Cannot cast " + K.string(a) + " to " + K.string(b)); }; S.__nativeClassName = function(a) { a = S.__toStr.call(a).slice(8, -1); return "Object" == a || "Function" == a || "Math" == a || "JSON" == a ? null : a }; S.__isNativeObj = function(a) { return null != S.__nativeClassName(a) }; S.__resolveNativeClass = function(a) { return Yc[a] }; var Ac = function() {}; s["openfl.display.ILoader"] = Ac; Ac.__name__ = ["openfl", "display", "ILoader"]; Ac.prototype = { __class__: Ac }; var ac = function() { ua.call(this); this.contentLoaderInfo = kb.create(this) }; s["openfl.display.Loader"] = ac; ac.__name__ = ["openfl", "display", "Loader"]; ac.__interfaces__ = [Ac]; ac.__super__ = Aa; ac.prototype = R(Aa.prototype, { load: function(a, b) { var c = a.url.split("."); 0 < c.length && c[c.length - 1].toLowerCase(); var c = a.url, d = c.lastIndexOf("."); if (0 > d) throw new D('Extension must be specified, got "' + c + '"'); var e = !0, d = c.substring(d + 1); switch (d) { case "gif": d = "image/gif"; break; case "jpeg": case "jpg": e = !1; d = "image/jpeg"; break; case "png": d = "image/png"; break; case "swf": d = "application/x-shockwave-flash"; break; default: throw new D('Unrecognized extension "' + d + '" in "' + c + '"'); } this.contentLoaderInfo.url = c; this.contentLoaderInfo.contentType = d; this.mImage = new ia(0, 0, e); try { this.contentLoaderInfo.addEventListener("complete", ea(this, this.handleLoad), !1), this.mImage.nmeLoadFromFile(a.url, this.contentLoaderInfo), this.content = new Sa(this.mImage), this.contentLoaderInfo.content = this.content, this.addChild(this.content) } catch (p) { p instanceof D && (p = p.val); G.trace("Error " + K.string(p), { fileName: "Loader.hx", lineNumber: 62, className: "openfl.display.Loader", methodName: "load" }); c = new ec("ioError"); c.set_currentTarget(this); this.contentLoaderInfo.dispatchEvent(c); return } null == this.mShape && (this.mShape = new gb, this.addChild(this.mShape)) }, handleLoad: function(a) { a.set_currentTarget(this); this.contentLoaderInfo.removeEventListener("complete", ea(this, this.handleLoad)) }, __class__: ac }); var Ra = function() {}; s["haxe.Resource"] = Ra; Ra.__name__ = ["haxe", "Resource"]; Ra.listNames = function() { for (var a = [], b = 0, c = Ra.content; b < c.length;) { var d = c[b]; ++b; a.push(d.name) } return a }; Ra.getString = function(a) { for (var b = 0, c = Ra.content; b < c.length;) { var d = c[b]; ++b; if (d.name == a) return null != d.str ? d.str : Ib.decode(d.data).toString() } return null }; var ma = function() {}; s.StringTools = ma; ma.__name__ = ["StringTools"]; ma.htmlEscape = function(a, b) { a = a.split("&").join("&").split("<").join("<").split(">").join(">"); return b ? a.split('"').join(""").split("'").join("'") : a }; ma.startsWith = function(a, b) { return a.length >= b.length ? J.substr(a, 0, b.length) == b : !1 }; ma.isSpace = function(a, b) { var c = J.cca(a, b); return 8 < c && 14 > c ? !0 : 32 == c }; ma.ltrim = function(a) { for (var b = a.length, c = 0; c < b && ma.isSpace(a, c);) ++c; return 0 < c ? J.substr(a, c, b - c) : a }; ma.rtrim = function(a) { for (var b = a.length, c = 0; c < b && ma.isSpace(a, b - c - 1);) ++c; return 0 < c ? J.substr(a, 0, b - c) : a }; ma.trim = function(a) { return ma.ltrim(ma.rtrim(a)) }; ma.replace = function(a, b, c) { return a.split(b).join(c) }; var U = function() {}; s.Type = U; U.__name__ = ["Type"]; U.getClassName = function(a) { a = a.__name__; return null == a ? null : a.join(".") }; U.getEnumName = function(a) { return a.__ename__.join(".") }; U.resolveClass = function(a) { a = s[a]; return null != a && a.__name__ ? a : null }; U.resolveEnum = function(a) { a = s[a]; return null != a && a.__ename__ ? a : null }; U.createInstance = function(a, b) { switch (b.length) { case 0: return new a; case 1: return new a(b[0]); case 2: return new a(b[0], b[1]); case 3: return new a(b[0], b[1], b[2]); case 4: return new a(b[0], b[1], b[2], b[3]); case 5: return new a(b[0], b[1], b[2], b[3], b[4]); case 6: return new a(b[0], b[1], b[2], b[3], b[4], b[5]); case 7: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6]); case 8: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]); case 9: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8]); case 10: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9]); case 11: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10]); case 12: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11]); case 13: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12]); case 14: return new a(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13]); default: throw new D("Too many arguments"); } }; U.createEmptyInstance = function(a) { function b() {} b.prototype = a.prototype; return new b }; U.createEnum = function(a, b, c) { var d = Z.field(a, b); if (null == d) throw new D("No such constructor " + b); if (Z.isFunction(d)) { if (null == c) throw new D("Constructor " + b + " need parameters"); return d.apply(a, c) } if (null != c && 0 != c.length) throw new D("Constructor " + b + " does not need parameters"); return d }; U["typeof"] = function(a) { switch (typeof a) { case "boolean": return aa.TBool; case "function": return a.__name__ || a.__ename__ ? aa.TObject : aa.TFunction; case "number": return Math.ceil(a) == a % 2147483648 ? aa.TInt : aa.TFloat; case "object": if (null == a) return aa.TNull; var b = a.__enum__; if (null != b) return aa.TEnum(b); a = S.getClass(a); return null != a ? aa.TClass(a) : aa.TObject; case "string": return aa.TClass(String); case "undefined": return aa.TNull; default: return aa.TUnknown } }; var ga = function() {}; s["platforms.PlatformHTML5"] = ga; ga.__name__ = ["platforms", "PlatformHTML5"]; ga.hasInside = function(a) { return 0 <= window.location.href.indexOf(a) }; ga.invalidRect = function() { return ga.resizeW == ga.getWidth() ? ga.resizeH != ga.getHeight() : !0 }; ga.getWidth = function() { return window.innerWidth }; ga.getHeight = function() { return window.innerHeight }; ga.resize = function() { var a = window.innerWidth, b = window.innerHeight; G.trace("new size: ", { fileName: "PlatformHTML5.hx", lineNumber: 64, className: "platforms.PlatformHTML5", methodName: "resize", customParams: [a, b] }); ga.resizeW = a; ga.resizeH = b; var c = a, d = b, e = c / d; ga.offsetX = ga.offsetY = 0; var p = 1, p = !0; if (d > c && l.PORTRAIT_HEIGHT_MIN < l.PORTRAIT_HEIGHT_MAX || l.LANDSCAPE_WIDTH_MIN == l.LANDSCAPE_WIDTH_MAX) p = !1; if (p) { var p = 1 * l.LANDSCAPE_WIDTH_MAX / l.LANDSCAPE_HEIGHT, f = 1 * l.LANDSCAPE_WIDTH_MIN / l.LANDSCAPE_HEIGHT; e > p ? (c = d * p, ga.offsetX = (a - c) / 2, l.WIDTH = l.LANDSCAPE_WIDTH_MAX) : e < f ? (d = c / f, ga.offsetY = (b - d) / 2, l.WIDTH = l.LANDSCAPE_WIDTH_MIN) : (ga.offsetY = ga.offsetX = 0, l.WIDTH = Math.round(e * l.LANDSCAPE_HEIGHT)); p = d / l.LANDSCAPE_HEIGHT; l.HEIGHT = l.LANDSCAPE_HEIGHT } else p = 1 * l.PORTRAIT_WIDTH / l.PORTRAIT_HEIGHT_MIN, f = 1 * l.PORTRAIT_WIDTH / l.PORTRAIT_HEIGHT_MAX, e > p ? (c = d * p, ga.offsetX = (a - c) / 2, l.HEIGHT = l.PORTRAIT_HEIGHT_MIN) : e < f ? (d = c / f, ga.offsetY = (b - d) / 2, l.HEIGHT = l.PORTRAIT_HEIGHT_MAX) : (ga.offsetY = ga.offsetX = 0, l.HEIGHT = Math.round(l.PORTRAIT_WIDTH / e)), p = c / l.PORTRAIT_WIDTH, l.WIDTH = l.PORTRAIT_WIDTH; l.instance.set_scaleX(p); l.instance.set_scaleY(p); a = l.instance.rotateDeviceSprite; null != a && a.set_visible(!1); a = $("#oz_game"); b = 0; for (e = a.length; b < e;) p = b++, p = a[p], p.style.width = c + "px", p.style.height = d + "px", p.style.left = ga.offsetX + "px", p.style.top = ga.offsetY + "px", p.style.position = "absolute"; window.scrollTo(0, 1) }; var f = function(a, b) { this.dispatchLock = !1; this.animation = this.eventListeners = null; this.showRight = -1; this.colorTransform = null; this.reset(); this.PoolId = -1; null == b && (b = W.EMPTY); this.mc = a; this.type = null != a ? W.BITMAP : b; b == W.POLYGON ? this.flSprite = new Aa : b == W.TEXT && (this.textAlign = V.LEFT, this.text = "") }; s["oz.OzSprite"] = f; f.__name__ = ["oz", "OzSprite"]; f.StaticInit = function() { f.Sprites = []; for (var a = f.FreeId = 0; 1E3 > a;) { var b = a++; f.Sprites[b] = new f; f.Sprites[b].PoolId = b } f.toRemove = []; f.toRemoveId = 0; f.TilesheetId = -1; f.DrawingAlpha = !1; f.DrawingSmooth = l.DEFAULT_SMOOTH; f.FloatArrays = new va; f.ShowRights = new va; f.DrawArray = []; f.DrawArrayLength = 0; f.Tilesheets = []; f.Bitmaps = []; f.BitmapsIds = []; f.BitmapsNames = []; f.TilesheetFrames = []; f.TilesheetBitmapDatas = []; f.DrawMatrix = new na; f.MainMatrix = new na; f.TileMatrix = new na; f.DrawPoint = new xa; f.DrawRect = new pa; f.AlphaColorTransform = new Vb }; f.appendTilesheetFrame = function(a, b, c, d, e, p, r, g, k) { f.DrawRect.x = d; f.DrawRect.y = e; f.DrawRect.width = p; f.DrawRect.height = r; f.DrawPoint.x = f.DrawPoint.y = 0; c = f.TilesheetFrames[a.tilesheetId].length; b = new M(b, [c], a.tilesheetId); f.TilesheetFrames[a.tilesheetId].push([f.DrawRect.x, f.DrawRect.y, f.DrawRect.width, f.DrawRect.height, g, k]); f.Tilesheets[a.tilesheetId].addTileRect(new pa(f.DrawRect.x, f.DrawRect.y, f.DrawRect.width, f.DrawRect.height), new xa(g, k)); f.Bitmaps.push(b); f.BitmapsIds.push(f.BitmapsIds.length); f.BitmapsNames.push(b.name); return c }; f.ExpandTiles = function(a) { x.SortIdsByName(f.BitmapsIds, f.BitmapsNames); var b = new X, c = null; if (null != a) for (a = a.elementsNamed("objects"); a.hasNext();) { c = a.next(); break } for (c = c.elements(); c.hasNext();) for (a = c.next().elementsNamed("graphics"); a.hasNext();) { var d = a.next(); if ("tile" == d.get("type") && "1" == d.get("spriteTile")) { var e = d.get("src"); if (null != O[e] ? !b.existsReserved(e) : !b.h.hasOwnProperty(e)) if (e = f.GetMCByString(e), null == e) G.trace("ERROR: Cannot expand tile thats not found in bitmaps", { fileName: "OzSprite.hx", lineNumber: 275, className: "oz.OzSprite", methodName: "ExpandTiles" }); else { var p = 40; if (null == d.get("size")) p = K.parseInt("240"); else throw new D("Size shouldn't be defined here, try project.xml"); f.SliceExpandTile(e, p); x.SortIdsByName(f.BitmapsIds, f.BitmapsNames) } } } }; f.SliceExpandTile = function(a, b, c) { null == c && (c = 1); var d = f.TilesheetFrames[a.tilesheetId][a.frames[c - 1]]; c = f.GetTilesheetBitmapData(a.tilesheetId, a.frames[c - 1]); for (var e = Math.ceil((c.component.height - 1) / b), p = Math.ceil((c.component.width - 1) / b), r = c.component.height % b, g = 0; g < e;) for (var k = g++, I = 0, h = p; I < h;) { var w = I++; 0 != r ? 0 == k ? (f.DrawRect.x = w * b, f.DrawRect.y = 0, f.DrawRect.width = Math.min(b, c.component.width - f.DrawRect.x), f.DrawRect.height = Math.min(b, r), f.DrawPoint.x = 0, f.DrawPoint.y = b - r) : (f.DrawRect.x = w * b, f.DrawRect.y = (k - 1) * b + r, f.DrawRect.width = Math.min(b, c.component.width - f.DrawRect.x), f.DrawRect.height = Math.min(b, c.component.height - f.DrawRect.y), f.DrawPoint.x = 0, f.DrawPoint.y = 0) : (f.DrawRect.x = w * b, f.DrawRect.y = k * b, f.DrawRect.width = Math.min(b, c.component.width - f.DrawRect.x), f.DrawRect.height = Math.min(b, c.component.height - f.DrawRect.y), f.DrawPoint.x = 0, f.DrawPoint.y = 0); a.frames.push(f.TilesheetFrames[a.tilesheetId].length); f.TilesheetFrames[a.tilesheetId].push([d[0] + f.DrawRect.x, d[1] + f.DrawRect.y, f.DrawRect.width, f.DrawRect.height, -f.DrawPoint.x, -f.DrawPoint.y]); f.Tilesheets[a.tilesheetId].addTileRect(new pa(d[0] + f.DrawRect.x, d[1] + f.DrawRect.y, f.DrawRect.width, f.DrawRect.height), new xa(-f.DrawPoint.x, -f.DrawPoint.y)) } }; f.RegisterTilesheet = function(a, b, c, d, e, p) { null == p && (p = !1); null == e && (e = !1); var r = d; G.trace("calling get bitmapdata with", { fileName: "OzSprite.hx", lineNumber: 489, className: "oz.OzSprite", methodName: "RegisterTilesheet", customParams: ["assets/" + a] }); null == d && (r = la.getBitmapData("assets/" + a)); G.trace("end of call of getbitmapdata", { fileName: "OzSprite.hx", lineNumber: 495, className: "oz.OzSprite", methodName: "RegisterTilesheet" }); a = new Bc(r); G.trace("end create tilesheet", { fileName: "OzSprite.hx", lineNumber: 497, className: "oz.OzSprite", methodName: "RegisterTilesheet" }); var g = []; d = 0; for (var k = c.length; d < k;) { var I = d++; g[I] = !1 } d = f.Tilesheets.length; G.trace("got through", { fileName: "OzSprite.hx", lineNumber: 503, className: "oz.OzSprite", methodName: "RegisterTilesheet", customParams: [b.length, " clips"] }); k = 0; for (I = b.length; k < I;) { var h = k++; b[h].tilesheetId = d; f.Bitmaps.push(b[h]); f.BitmapsIds.push(f.BitmapsIds.length); f.BitmapsNames.push(b[h].name); var w = 0 == b[h].name.indexOf("tile"); if (!p && !w && 0 != b[h].name.indexOf("bmp") && 0 != b[h].name.indexOf("sys") && 0 != b[h].name.indexOf("_f") && 0 != b[h].name.indexOf("oza")) for (var w = 0, l = b[h].frames.length; w < l;) { var m = w++, m = b[h].frames[m]; g[m] || (g[m] = !0, c[m][0] -= 1, c[m][1] -= 1, c[m][2] += 2, c[m][3] += 2, c[m][4] += 1, c[m][5] += 1) } } b = 0; for (p = c.length; b < p;) g = b++, a.addTileRect(new pa(c[g][0], c[g][1], c[g][2], c[g][3]), new xa(c[g][4], c[g][5])); f.Tilesheets.push(a); f.TilesheetFrames.push(c); f.TilesheetBitmapDatas.push([]); f.TilesheetAssetBMDs.push(r); if (e) for (e = 0, c = c.length; e < c;) r = e++, f.LoadSingleBitmapData(f.TilesheetFrames.length - 1, r); return d }; f.LoadSingleBitmapData = function(a, b) { var c = f.TilesheetFrames[a]; if (1 <= c[b][2] && 1 <= c[b][3]) { var d = f.TilesheetAssetBMDs[a]; f.DrawPoint.x = f.DrawPoint.y = 0; f.DrawRect.x = c[b][0]; f.DrawRect.y = c[b][1]; f.DrawRect.width = c[b][2]; f.DrawRect.height = c[b][3]; if (1 > f.DrawRect.height || 1 > f.DrawRect.width) return !0; c = null; c = new ia(Math.round(f.DrawRect.width), Math.round(f.DrawRect.height), !0, -1); c.copyPixels(d, f.DrawRect, f.DrawPoint, null, null, !1); f.TilesheetBitmapDatas[a][b] = c; return !0 } return !1 }; f.New = function(a, b, c, d) { null == d && (d = !0); null == c && (c = !0); var e = f.Sprites[f.FreeId++]; e.reset(); e.stateBound = c; null == b && (b = W.EMPTY); null != a ? (e.type = W.BITMAP, d && null != t.ext && 0 < t.ext.length && (c = x.FindStringId(f.BitmapsNames, a.name + t.ext), 0 <= c && (a = f.Bitmaps[f.BitmapsIds[c]])), e.mc = a) : e.type = b; b == W.POLYGON ? (e.flSprite = new Aa, e.flSprite.set_visible(!1)) : b == W.TEXT && (e.textAlign = V.LEFT, e.text = ""); return e }; f.GetMCByString = function(a) { a = x.FindStringId(f.BitmapsNames, a); return 0 > a ? null : f.Bitmaps[f.BitmapsIds[a]] }; f.GetTilesheetBitmapData = function(a, b) { null == f.TilesheetBitmapDatas[a][b] && f.LoadSingleBitmapData(a, b); return f.TilesheetBitmapDatas[a][b] }; f.RemoveRequested = function() { for (var a = 0, b = f.toRemoveId; a < b;) { var c = a++, c = f.toRemove[c]; null != c.parent && c.parent.removeChild(c); f.Dispose(c) } f.toRemoveId = 0 }; f.Dispose = function(a) { n.TargetKill(a); null != a.parent && a.parent.removeChild(a); null != a.flSprite && null != a.flSprite.parent && a.flSprite.parent.removeChild(a.flSprite); a.flSprite = null; a.buttonFunc = null; a.funcEnd = null; a.prev = a.next = a; if (0 <= a.PoolId) { var b = f.FreeId - 1, c = a.PoolId, d = f.Sprites[b]; f.Sprites[b] = f.Sprites[c]; f.Sprites[c] = d; a.PoolId = b; f.Sprites[c].PoolId = c; f.FreeId-- } }; f.TextToSprites = function(a, b, c, d, e, p, r) { r = !1; var g = a.numChildren(); if (a.type != W.EMPTY || g != b.length) r = !0; else for (var k = a.child, I = 0; I < g;) { I++; if (k.mc != c) { r = !0; break } k = k.next } if (r) for (a.clear(), a.mouseEnabled = !1, r = (b.length - 1) * e, g = 0, k = b.length; g < k;) { var h = g++, I = f.New(c); I.set_x(h * e); I.set_y(0); p == V.RIGHT ? (h = I, h.set_x(h.get_x() - r)) : p == V.CENTER && (h = I, h.set_x(h.get_x() - r / 2)); a.addChild(I); I.mouseEnabled = !1; I._updateOldValues() } a = a.child; c = 0; for (e = b.length; c < e;) p = c++, p = b.charAt(p), " " == p ? (a.gotoAndStop(1), a.set_visible(!1)) : (p = d.indexOf(p) + 1, a.gotoAndStop(p), a.set_visible(!0)), a = a.next }; f.GetSpriteAtPoint = function(a, b, c, d, e, p, r, g) { null == g && (g = 0); null == r && (r = 1); null == p && (p = 1); null == e && (e = 0); null == d && (d = 0); if (1E-4 > a.get_alpha() || !1 == a.get_visible()) return null; if (null != a.child) for (var k = a.child.prev, I = k;;) { var h = f.GetSpriteAtPoint(k, b, c, d + a.get_x() * p, e + a.get_y() * r, p * a.get_scaleX(), r * a.get_scaleY(), g * a.get_rotation()); if (null != h) return h; k = k.prev; if (k == I) break } return a.type == W.BITMAP && a.mouseEnabled && (g = f.TilesheetFrames[a.mc.tilesheetId][a.mc.frames[a.get_currentFrame() - 1]], k = d + a.get_x() - g[4] * a.get_scaleX() * p, d = d + a.get_x() + (g[2] - g[4]) * a.get_scaleX() * p, k > d && (p = k, k = d, d = p), k <= b && b <= d && (b = e + a.get_y() - g[5] * a.get_scaleY() * r, e = e + a.get_y() + (g[3] - g[5]) * a.get_scaleY() * r, b > e && (r = b, b = e, e = r), b <= c && c <= e)) ? a : null }; f.BGInit = function(a, b) { a.clear(); a.set_x(-(l.WIDTH_MAX - l.WIDTH_MIN) / 2); a.type = W.BACKGROUND; a.arg1 = b; f.UpdateBG(a, 0, 0, 0, 1) }; f.UpdateBG = function(a, b, c, d, e) { null != a && (a.set_x(b), a.set_y(c), f.BGMinY = d, f.BGMaxY = e) }; f.RenderBGImage = function(a, b, c, d, e, p, r, g, k) { null == k && (k = !1); null == g && (g = !0); null == r && (r = -1); null == p && (p = -1); null == e && (e = 1); null == d && (d = 1); f.TilesheetId != a.tilesheetId && (f.Flush(), f.TilesheetId = a.tilesheetId); var I = f.TilesheetFrames[a.tilesheetId][a.frames[0]]; 0 > p && (p = Math.round(I[2] * d)); 0 > r && (r = Math.round(I[3] * d)); b %= p; 0 < b && (b -= p); var h = c; k && (h = c % r, 0 < h && (h -= r)); c = Math.round(b); var w = Math.round(h); null == f.TilesheetBitmapDatas[a.tilesheetId][a.frames[0]] && f.LoadSingleBitmapData(a.tilesheetId, a.frames[0]); for (var m = 0, s = 0;;) { for (var n = 0; ++m, f.BGbmdMatrix.tx = c - I[4] + n * p, f.BGbmdMatrix.ty = w - I[5] + s * r, f.BGbmdMatrix.a = d, f.BGbmdMatrix.b = 0, f.BGbmdMatrix.c = 0, f.BGbmdMatrix.d = d, f.DrawingAlpha ? (f.BGbmdColorTransform.alphaMultiplier = e, l.instance.ScreenBMD.draw(f.TilesheetBitmapDatas[a.tilesheetId][a.frames[0]], f.BGbmdMatrix, f.BGbmdColorTransform)) : l.instance.ScreenBMD.draw(f.TilesheetBitmapDatas[a.tilesheetId][a.frames[0]], f.BGbmdMatrix), ++n, g && n * p + b < l.WIDTH;); ++s; if (!(k && s * r + h < l.HEIGHT)) break } }; f.Flush = function() { if (0 < f.DrawArrayLength) { if (f.DrawingAlpha) for (var a = null == f.CT ? 8 : 11, b = 0, c = f.DrawArrayLength / a | 0; b < c;) { var d = b++ * a, e = null; if (!f.MinimumBMD && (e = f.GetTilesheetBitmapData(f.TilesheetId, f.DrawArray[d + 2] | 0), null == e)) continue; f.DrawMatrix.tx = f.DrawArray[d]; f.DrawMatrix.ty = f.DrawArray[d + 1]; f.DrawMatrix.a = f.DrawArray[d + 3]; f.DrawMatrix.b = f.DrawArray[d + 4]; f.DrawMatrix.c = f.DrawArray[d + 5]; f.DrawMatrix.d = f.DrawArray[d + 6]; f.AlphaColorTransform.alphaMultiplier = f.DrawArray[d + 7]; f.MinimumBMD ? (d = f.TilesheetFrames[f.TilesheetId][f.DrawArray[d + 2] | 0], f.DrawRect.x = d[0], f.DrawRect.y = d[1], f.DrawRect.width = d[2], f.DrawRect.height = d[3], f.DrawPart(l.instance.ScreenBMD, f.TilesheetAssetBMDs[f.TilesheetId], f.DrawMatrix, f.AlphaColorTransform, null, f.DrawRect, f.DrawingSmooth)) : l.instance.ScreenBMD.draw(e, f.DrawMatrix, f.AlphaColorTransform, null, null, f.DrawingSmooth) } else for (a = null == f.CT ? 7 : 10, b = 0, c = f.DrawArrayLength / a | 0; b < c;) if (d = b++ * a, f.DrawMatrix.tx = f.DrawArray[d], f.DrawMatrix.ty = f.DrawArray[d + 1], f.DrawMatrix.a = f.DrawArray[d + 3], f.DrawMatrix.b = f.DrawArray[d + 4], f.DrawMatrix.c = f.DrawArray[d + 5], f.DrawMatrix.d = f.DrawArray[d + 6], f.DrawingSmooth ? e = !1 : (e = f.DrawMatrix.a, e = 0.9999994 <= e ? 1.0000006 >= e : !1), e ? (e = f.DrawMatrix.d, e = 0.9999994 <= e ? 1.0000006 >= e : !1) : e = !1, e ? (e = f.DrawMatrix.c, e = -6E-7 <= e ? 6E-7 >= e : !1) : e = !1, e ? (e = f.DrawMatrix.b, e = -6E-7 <= e ? 6E-7 >= e : !1) : e = !1, e && null == f.CT) f.CopyMcToBmd(l.instance.ScreenBMD, f.TilesheetId, f.DrawArray[d + 2] | 0, f.DrawMatrix.tx, f.DrawMatrix.ty); else { e = null; if (!f.MinimumBMD && (e = f.GetTilesheetBitmapData(f.TilesheetId, f.DrawArray[d + 2] | 0), null == e)) continue; f.MinimumBMD ? (d = f.TilesheetFrames[f.TilesheetId][f.DrawArray[d + 2] | 0], f.DrawRect.x = d[0], f.DrawRect.y = d[1], f.DrawRect.width = d[2], f.DrawRect.height = d[3], f.DrawPart(l.instance.ScreenBMD, f.TilesheetAssetBMDs[f.TilesheetId], f.DrawMatrix, f.CT, null, f.DrawRect, f.DrawingSmooth)) : l.instance.ScreenBMD.draw(e, f.DrawMatrix, f.CT, null, null, f.DrawingSmooth) } f.DrawArrayLength = 0 } f.ShowFlushInfo = -1 }; f.CopyMcToBmd = function(a, b, c, d, e, p, r) { null == r && (r = -1); null == p && (p = !0); c = f.TilesheetFrames[b][c]; 0 > r ? (f.DrawRect.x = c[0], f.DrawRect.y = c[1], f.DrawRect.width = c[2], f.DrawRect.height = c[3], f.DrawPoint.x = Math.round(d + 1E-4), f.DrawPoint.y = Math.round(e + 1E-4), a.copyPixels(f.TilesheetAssetBMDs[b], f.DrawRect, f.DrawPoint, null, null, p)) : (f.TileMatrix.identity(), f.TileMatrix.translate(-c[0], -c[1]), f.TileMatrix.scale(r / c[2], r / c[3]), f.TileMatrix.translate(Math.round(d + 1E-4), Math.round(e + 1E-4)), f.DrawRect.x = Math.round(d + 1E-4), f.DrawRect.y = Math.round(e + 1E-4), f.DrawRect.width = f.DrawRect.height = r, a.draw(f.TilesheetAssetBMDs[b], f.TileMatrix, null, null, f.DrawRect, p)) }; f.DrawPart = function(a, b, c, d, e, p, f) { e = a.context; a.syncCanvas(); e.save(); null != d && (e.globalAlpha *= d.alphaMultiplier); null != f && ia.setSmoothing(e, f); null != c && e.setTransform(c.a, c.b, c.c, c.d, c.tx, c.ty); null != p ? (c = p.width, d = p.height, (1 > d || 1 > c || 0 > p.x || 0 > p.y) && G.trace("ERROR DRAW IMAGE", { fileName: "OzSprite.hx", lineNumber: 2876, className: "oz.OzSprite", methodName: "DrawPart", customParams: [c, d, p.x, p.y] }), e.drawImage(b.handle(), p.x, p.y, c, d, 0, 0, c, d)) : e.drawImage(b.handle(), 0, 0); e.restore(); a.__sync |= 5 }; f.prototype = { tweenScale: function(a) { 0.5 <= a && (a = 1 - a); a *= 2; this.set_scaleX(this.startScaleX * (1 - a) + this.endScaleX * a); this.set_scaleY(this.startScaleY * (1 - a) + this.endScaleY * a) }, makeLink: function(a, b) { null == b && (b = !0); this.buttonMode = !0; b && (this.flags |= 512); if (t.is4399) { if (a == t.solution || a == t.twitter || a == t.facebook || a == t.googleplay || a == t.appstore || a == t.amazon || "crossButton" == this.name || "btnMore" == this.name) { this.set_visible(!1); return } if ("btnMoreChinese" == this.name) G.trace("allowing more", { fileName: "OzSprite.hx", lineNumber: 899, className: "oz.OzSprite", methodName: "makeLink" }); else { G.trace("not allowing this link", { fileName: "OzSprite.hx", lineNumber: 902, className: "oz.OzSprite", methodName: "makeLink" }); return } } this.flags |= 1; this.buttonFunc = a; this.addEventListener(2, ea(this, this.buttonClick)) }, makeButton: function(a, b) { null == b && (b = !0); var c = this; this.buttonMode = !0; b && (this.flags |= 512, this.flags |= 1024); this.gotoAndStop(1); a == t.moreGames ? this.makeLink(a, b) : (this.buttonFunc = a, this.addEventListener(3, function(a) { 1 < c.get_totalFrames() && c.gotoAndStop(2) }), this.addEventListener(4, function(a) { c.gotoAndStop(1) }), this.addEventListener(2, function(a) { 2 < c.get_totalFrames() && c.gotoAndStop(3) }), this.addEventListener(1, function(a) { c.buttonFunc(a) })) }, voidButtonFunc: function() { this.flags &= 16777213; this.buttonFunc(new Hb(this)) }, buttonClick: function(a) { 0 < (this.flags & 2) || (0 < (this.flags & 1) ? this.buttonFunc(a) : (this.flags |= 2, a = P.New(), a.duration = 6, this.startScaleX = this.get_scaleX(), this.endScaleX = 0.95 * this.startScaleX, this.startScaleY = this.get_scaleY(), this.endScaleY = 0.95 * this.startScaleY, a.updateFunc = ea(this, this.tweenScale), a.endFunc = ea(this, this.voidButtonFunc), P.Add(a))) }, hasEventListener: function(a) { return null != this.eventListeners && this.eventListeners.h.hasOwnProperty(a) ? 0 < this.eventListeners.h[a].length : !1 }, addEventListener: function(a, b) { null == this.eventListeners && (this.eventListeners = new va); this.eventListeners.h.hasOwnProperty(a) || (this.eventListeners.h[a] = []); 0 > this.eventListeners.h[a].indexOf(b) && this.eventListeners.h[a].push(b) }, dispatchEvent: function(a) { var b = a.type; if (null != this.eventListeners && this.eventListeners.h.hasOwnProperty(b)) { b = this.eventListeners.h[b]; this.dispatchLock = !0; for (var c = 0; c < b.length;) { if (null != b[c]) b[c](a); ++c } this.dispatchLock = !1; for (a = b.length - 1; 0 <= a;) null == b[a] && b.splice(a, 0), --a } }, reset: function() { this._reset(); this.eventListeners = this.name = null; this.startX = this.startY = this.flags = this.padFlags = this.arg1 = 0; this.stateBound = !0; this.parent = this.child = this.mc = this.funcEnd = null; this.next = this; this.prev = this; this.type = W.EMPTY; this._oldRotation = this._rotation = this._oldY = this._y = this._oldX = this._x = 0; this._oldAlpha = this._alpha = this._oldScaleY = this._scaleY = this._oldScaleX = this._scaleX = 1; this._oldPlaying = this._playing = this._oldVisible = this._visible = !0; this._oldLineLength = this._lineLength = this._oldCurrentFrame = this._currentFrame = 1; this.buttonMode = !1; this.mouseEnabled = !0; this.colorTransform = this.tileMap = null; this.smooth = l.DEFAULT_SMOOTH; this.toBeRemoved = !1; this.animation = null; this.showRight = -1 }, get_totalFrames: function() { return null != this.mc ? this.mc.frames.length : 1 }, gotoAndStop: function(a) { 1 > a || a > this.mc.frames.length ? G.trace("Error! Invalid frame", { fileName: "OzSprite.hx", lineNumber: 1215, className: "oz.OzSprite", methodName: "gotoAndStop", customParams: [a] }) : this.set_currentFrame(a); this.set_playing(!1) }, setFluid: function(a, b, c) { null == c && (c = -1E6); null == b && (b = -1E6); null == a && (a = 0); this.padFlags = a; - 99999 >= b && (b = this.get_x()); - 99999 >= c && (c = this.get_y()); this.startX = b; this.startY = c }, adjustAllLayouts: function() { 0 < this.padFlags && this.adjustLayout(); if (null != this.child) for (var a = this.child; a.adjustAllLayouts(), a = a.next, a != this.child;); }, adjustLayout: function() { var a = l.HEIGHT - l.HEIGHT_MIN; 0 < (this.padFlags & 1) ? this.set_y(Math.round(this.startY + a + f.EPS)) : 0 < (this.padFlags & 2) ? this.set_y(Math.round(this.startY + a / 2 + f.EPS)) : 0 < (this.padFlags & 4) ? this.set_y(Math.round(this.startY - a + f.EPS)) : 0 < (this.padFlags & 8) ? this.set_y(Math.round(this.startY - a / 2 + f.EPS)) : 0 < (this.padFlags & 16) && this.set_y(Math.round(l.HEIGHT / 2 + f.EPS)); a = l.WIDTH - l.WIDTH_MIN; 0 < (this.padFlags & 32) ? this.set_x(Math.round(this.startX + a + f.EPS)) : 0 < (this.padFlags & 64) ? this.set_x(Math.round(this.startX + a / 2 + f.EPS)) : 0 < (this.padFlags & 128) ? this.set_x(Math.round(this.startX - a + f.EPS)) : 0 < (this.padFlags & 256) ? this.set_x(Math.round(this.startX - a / 2 + f.EPS)) : 0 < (this.padFlags & 512) && this.set_x(Math.round(l.WIDTH / 2 + f.EPS)) }, getChild: function(a) { if (null != this.child) for (var b = this.child;;) { if (null != b.name && b.name == a) return b; b = b.next; if (b == this.child) break } return null }, numChildren: function() { var a = 0; if (null != this.child) for (var b = this.child; ++a, b = b.next, b != this.child;); return a }, createLineSegmentGFX: function(a, b, c, d, e, p) { var r = a.component.height, g = Math.atan2(p - d, e - c), r = r / 2, k = Math.cos(g), I = Math.sin(g); f.PathMatrix.identity(); f.PathMatrix.translate(-b, 0); f.PathMatrix.rotate(g); f.PathMatrix.translate(c + r * I, d - r * k); this.flSprite.get_graphics().beginBitmapFill(a, f.PathMatrix, !0, !0); this.flSprite.get_graphics().moveTo(c + r * I, d - r * k); this.flSprite.get_graphics().lineTo(e + r * I, p - r * k); this.flSprite.get_graphics().lineTo(e - r * I, p + r * k); this.flSprite.get_graphics().lineTo(c - r * I, d + r * k); this.flSprite.get_graphics().lineTo(c + r * I, d - r * k); this.flSprite.get_graphics().endFill() }, createLineGFX: function(a, b, c) { null == c && (c = 10); null == b && (b = -1); 0 > b && (b = a.component.height); this.flSprite.get_graphics().clear(); f.DrawMatrix.identity(); f.DrawMatrix.translate(0, b / 2); this.flSprite.get_graphics().beginBitmapFill(a, f.DrawMatrix, !0, !0); this.flSprite.get_graphics().moveTo(-c / 2, -b / 2); this.flSprite.get_graphics().lineTo(c / 2, -b / 2); this.flSprite.get_graphics().lineTo(c / 2, b / 2); this.flSprite.get_graphics().lineTo(-c / 2, b / 2); this.flSprite.get_graphics().lineTo(-c / 2, -b / 2); this.flSprite.get_graphics().endFill(); this.fillLength = c; this.set_lineLength(c) }, dispose: function() { f.Dispose(this) }, removeChild: function(a) { if (null != a && a.parent == this) { this.child == a && (this.child = this.child.next == this.child ? null : this.child.next); var b = a.prev, c = a.next; null != b && (b.next = c); null != c && (c.prev = b); a.prev = a; a.next = a; a.parent = null } }, clear: function() { this.clearChildren(); this.mc = null; this.type = W.EMPTY }, clearChildren: function() { for (; null != this.child;) this.child.clearChildren(), f.Dispose(this.child) }, addChild: function(a, b) { null == b && (b = -1); if (null != a) if (a._oldVisible = !1, null != a.parent && a.parent.removeChild(a), a.parent = this, null == this.child) this.child = a, a.prev = a, a.next = a; else { var c = this.child.prev, d = this.child; if (-1 < b) if (0 == b) this.child = a; else for (; c = c.next, d = d.next, --b, 0 < b && d != this.child;); c.next = a; d.prev = a; a.prev = c; a.next = d } }, setTileLayer: function(a) { this.arg1 = a }, getTileLayer: function() { return this.arg1 }, draw: function(a) { null == a && (a = 1); var b = !1; a *= (1 - f.DeltaT) * this._oldAlpha + f.DeltaT * this._alpha; if (this._oldVisible && !(0.001 > a)) { T.PushMatrix(); if (this.type == W.EMPTY) { b = T.getCurrentMatrix(); b.PostTranslate(this.noInterpolation ? this._x : Math.round(128 * ((1 - f.DeltaT) * this._oldX + f.DeltaT * this._x)) / 128, this.noInterpolation ? this._y : Math.round(128 * ((1 - f.DeltaT) * this._oldY + f.DeltaT * this._y)) / 128); var c; this.noInterpolation ? c = this._rotation : (c = this._rotation - this._oldRotation, 180 < Math.abs(c) && (c = 0 > c ? c + 360 : c - 360), c = this._oldRotation + f.DeltaT * c); b.PostRotate(c); b.PostScale((1 - f.DeltaT) * this._oldScaleX + f.DeltaT * this._scaleX, (1 - f.DeltaT) * this._oldScaleY + f.DeltaT * this._scaleY) } else if (this.type == W.BITMAP) { -1 == f.TilesheetId && (f.TilesheetId = this.mc.tilesheetId); f.TilesheetId != this.mc.tilesheetId && (f.Flush(), f.TilesheetId = this.mc.tilesheetId); if (0.999 > a && !f.DrawingAlpha || 0.999 < a && f.DrawingAlpha) f.Flush(), f.DrawingAlpha = !f.DrawingAlpha; f.DrawingSmooth != this.smooth && (f.Flush(), f.DrawingSmooth = this.smooth); f.CT != this.colorTransform && (f.Flush(), f.CT = this.colorTransform); c = T.getCurrentMatrix(); c.PostTranslate(this.noInterpolation ? this._x : Math.round(128 * ((1 - f.DeltaT) * this._oldX + f.DeltaT * this._x)) / 128, this.noInterpolation ? this._y : Math.round(128 * ((1 - f.DeltaT) * this._oldY + f.DeltaT * this._y)) / 128); var d; this.noInterpolation ? d = this._rotation : (d = this._rotation - this._oldRotation, 180 < Math.abs(d) && (d = 0 > d ? d + 360 : d - 360), d = this._oldRotation + f.DeltaT * d); c.PostRotate(d); c.PostScale((1 - f.DeltaT) * this._oldScaleX + f.DeltaT * this._scaleX, (1 - f.DeltaT) * this._oldScaleY + f.DeltaT * this._scaleY); d = f.TilesheetFrames[this.mc.tilesheetId][this.mc.frames[this.get_currentFrame() - 1]]; var e = this.mc.frames[this.get_currentFrame() - 1]; if (0 <= this.showRight) { var p = Math.min(d[2], Math.round(d[2] * this.showRight)) | 0; 0 < p ? (e = 1E7 * this.mc.tilesheetId + 1E4 * this.mc.frames[this.get_currentFrame() - 1] + p, f.ShowRights.h.hasOwnProperty(e) || (d = f.appendTilesheetFrame(this.mc, this.mc.name + "_" + p, this.get_currentFrame(), Math.round(d[0]), Math.round(d[1]), p, Math.round(d[3]), Math.round(d[4]), Math.round(d[5])), f.ShowRights.h[e] = d, x.SortIdsByName(f.BitmapsIds, f.BitmapsNames)), e = f.ShowRights.h[e], d = f.TilesheetFrames[this.mc.tilesheetId][e]) : b = !0 } p = T.getTemp(1); p.Translation(-d[4], -d[5]); T.Multiply(p, c, p); b || (b = p.outside(d[2], d[3], l.WIDTH, l.HEIGHT, !1)); b || (f.DrawArray[f.DrawArrayLength++] = p.m02, f.DrawArray[f.DrawArrayLength++] = p.m12, f.DrawArray[f.DrawArrayLength++] = e, f.DrawArray[f.DrawArrayLength++] = p.m00, f.DrawArray[f.DrawArrayLength++] = p.m10, f.DrawArray[f.DrawArrayLength++] = p.m01, f.DrawArray[f.DrawArrayLength++] = p.m11, null != this.colorTransform && (f.DrawArray[f.DrawArrayLength++] = this.colorTransform.redMultiplier, f.DrawArray[f.DrawArrayLength++] = this.colorTransform.greenMultiplier, f.DrawArray[f.DrawArrayLength++] = this.colorTransform.blueMultiplier), f.DrawingAlpha && (f.DrawArray[f.DrawArrayLength++] = a)) } else if (this.type == W.POLYGON) { f.Flush(); b = T.getCurrentMatrix(); if (0.999 > a && !f.DrawingAlpha || 0.999 < a && f.DrawingAlpha) f.DrawingAlpha = !f.DrawingAlpha; f.DrawingSmooth != this.smooth && (f.DrawingSmooth = this.smooth); if (0 < (this.flags & 4)) { c = Math.cos(this._oldRotation / 180 * Math.PI); d = Math.sin(this._oldRotation / 180 * Math.PI); c = c * this._oldLineLength / 2; d = d * this._oldLineLength / 2; var p = Math.cos(this._rotation / 180 * Math.PI), e = Math.sin(this._rotation / 180 * Math.PI), r = p * this._lineLength / 2, g = e * this._lineLength / 2, p = (c + this._oldX) * (1 - f.DeltaT) + (r + this._x) * f.DeltaT, e = (d + this._oldY) * (1 - f.DeltaT) + (g + this._y) * f.DeltaT, r = (-c + this._oldX) * (1 - f.DeltaT) + (-r + this._x) * f.DeltaT, g = (-d + this._oldY) * (1 - f.DeltaT) + (-g + this._y) * f.DeltaT; c = (p + r) / 2; d = (e + g) / 2; p -= r; g = e - g; r = p * p + g * g; e = 0; 1E-4 < r && (e = 180 / Math.PI * Math.atan2(g, p)); p = 1; r = Math.sqrt(r); 0 < (this.flags & 8) && (p = r / this.fillLength); b.PostTranslate(c, d); b.PostRotate(e); b.PostScale(p, (1 - f.DeltaT) * this._oldScaleY + f.DeltaT * this._scaleY) } else b.PostTranslate(this.noInterpolation ? this._x : Math.round(128 * ((1 - f.DeltaT) * this._oldX + f.DeltaT * this._x)) / 128, this.noInterpolation ? this._y : Math.round(128 * ((1 - f.DeltaT) * this._oldY + f.DeltaT * this._y)) / 128), this.noInterpolation ? c = this._rotation : (c = this._rotation - this._oldRotation, 180 < Math.abs(c) && (c = 0 > c ? c + 360 : c - 360), c = this._oldRotation + f.DeltaT * c), b.PostRotate(c), b.PostScale((1 - f.DeltaT) * this._oldScaleX + f.DeltaT * this._scaleX, (1 - f.DeltaT) * this._oldScaleY + f.DeltaT * this._scaleY); b.toMatrix(f.DrawMatrix); f.DrawingAlpha ? (f.AlphaColorTransform.alphaMultiplier = a, l.instance.ScreenBMD.draw(this.flSprite, f.DrawMatrix, f.AlphaColorTransform, null, null, !0)) : l.instance.ScreenBMD.draw(this.flSprite, f.DrawMatrix, null, null, null, !0) } else if (this.type == W.TEXT) { -1 == f.TilesheetId && (f.TilesheetId = this.font.tilesheetId); f.TilesheetId != this.font.tilesheetId && (f.Flush(), f.TilesheetId = this.font.tilesheetId); if (0.999 > a && !f.DrawingAlpha || 0.999 < a && f.DrawingAlpha) f.Flush(), f.DrawingAlpha = !f.DrawingAlpha; f.DrawingSmooth != this.smooth && (f.Flush(), f.DrawingSmooth = this.smooth); T.PushMatrix(); b = T.getCurrentMatrix(); e = 0; this.textAlign == V.CENTER ? e = -Math.round(this.getLineLength() / 2) : this.textAlign == V.RIGHT && (e = -this.getLineLength()); p = 0; e *= this.get_scaleX(); c = p *= this.get_scaleY(); d = T.getCurrentMatrix(); d.PostTranslate((this.noInterpolation ? this._x : Math.round(128 * ((1 - f.DeltaT) * this._oldX + f.DeltaT * this._x)) / 128) + e, (this.noInterpolation ? this._y : Math.round(128 * ((1 - f.DeltaT) * this._oldY + f.DeltaT * this._y)) / 128) + p); this.noInterpolation ? e = this._rotation : (e = this._rotation - this._oldRotation, 180 < Math.abs(e) && (e = 0 > e ? e + 360 : e - 360), e = this._oldRotation + f.DeltaT * e); d.PostRotate(e); d.PostScale((1 - f.DeltaT) * this._oldScaleX + f.DeltaT * this._scaleX, (1 - f.DeltaT) * this._oldScaleY + f.DeltaT * this._scaleY); e = 0; for (p = this.text.length; e < p;) { var r = e++, g = J.cca(this.text, r), k = this.font.chars[g], I = k.xOffset + this.font.defaultKern; if (0 < r) { var h = J.cca(this.text, r - 1), I = I + this.font.chars[h].xAdvance; null == this.font.kernings[h] || isNaN(this.font.kernings[h][g]) || (I += this.font.kernings[h][g]) } k = 0 + k.yOffset - c; c += k; d.PostTranslate(I, k); 32 != g && (f.DrawArray[f.DrawArrayLength++] = b.m02, f.DrawArray[f.DrawArrayLength++] = b.m12, f.DrawArray[f.DrawArrayLength++] = this.font.chars[J.cca(this.text, r)].movieClip.frames[0], f.DrawArray[f.DrawArrayLength++] = b.m00, f.DrawArray[f.DrawArrayLength++] = b.m10, f.DrawArray[f.DrawArrayLength++] = b.m01, f.DrawArray[f.DrawArrayLength++] = b.m11, f.DrawingAlpha && (f.DrawArray[f.DrawArrayLength++] = a)) } T.PopMatrix() } else this.type == W.TILEMAP ? (f.Flush(), b = f.DrawingSmooth, c = f.DrawingAlpha, f.DrawingSmooth = !0, f.DrawingAlpha = !1, this.tileMap.draw(this, this.getTileLayer()), f.Flush(), f.DrawingSmooth = b, f.DrawingAlpha = c) : this.type == W.BACKGROUND && (f.Flush(), b = f.DrawingSmooth, c = f.DrawingAlpha, f.DrawingSmooth = !0, f.DrawingAlpha = 0.999 > (1 - f.DeltaT) * this._oldAlpha + f.DeltaT * this._alpha, yb.DrawBG(this.arg1, this.noInterpolation ? this._x : Math.round(128 * ((1 - f.DeltaT) * this._oldX + f.DeltaT * this._x)) / 128, this.noInterpolation ? this._y : Math.round(128 * ((1 - f.DeltaT) * this._oldY + f.DeltaT * this._y)) / 128, this.get_alpha()), f.Flush(), f.DrawingSmooth = b, f.DrawingAlpha = c); if (null != this.child) for (b = this.child; b.draw(a), b = b.next, b != this.child;); T.PopMatrix() } }, getLineLength: function(a) { null == a && (a = 0); for (var b = 0; a < this.text.length && J.cca("\n", 0) != J.cca(this.text, a);) { var c = J.cca(this.text, a), d = this.font.chars[c], d = d.xOffset + d.xAdvance + this.font.defaultKern; if (0 < a) { var e = J.cca(this.text, a - 1); null == this.font.kernings[e] || isNaN(this.font.kernings[e][c]) || (d += this.font.kernings[e][c]) } b += d; ++a } return b }, updateAnimations: function(a) { null == a && (a = -1); null != this.animation && this.animation.Update(a); if (null != this.child) for (a = this.child; a.updateAnimations(), a = a.next, a != this.child;); }, get_x: function() { return this._x }, set_x: function(a) { return this._x = a }, get_y: function() { return this._y }, set_y: function(a) { return this._y = a }, get_rotation: function() { return this._rotation }, set_rotation: function(a) { a %= 360; 0 > a && (a += 360); return this._rotation = a }, get_scaleX: function() { return this._scaleX }, set_scaleX: function(a) { return this._scaleX = a }, get_scaleY: function() { return this._scaleY }, set_scaleY: function(a) { return this._scaleY = a }, get_alpha: function() { return this._alpha }, set_alpha: function(a) { return this._alpha = a }, get_visible: function() { return this._visible }, set_visible: function(a) { return this._visible = a }, get_playing: function() { return this._playing }, set_playing: function(a) { return this._playing = a }, get_currentFrame: function() { return this._currentFrame }, set_currentFrame: function(a) { return this._currentFrame = a }, set_lineLength: function(a) { return this._lineLength = a }, _reset: function() { this._oldPlaying = this._oldVisible = !1 }, _updateOldValues: function() { this._oldX = this._x; this._oldY = this._y; this._oldRotation = this._rotation; this._oldScaleX = this._scaleX; this._oldScaleY = this._scaleY; this._oldAlpha = this._alpha; this._oldVisible = this._visible; this._oldPlaying = this._playing; this._oldCurrentFrame = this._currentFrame; this._oldLineLength = this._lineLength; this.noInterpolation = !1; this.type == W.BITMAP && (this.get_currentFrame() == this.mc.frames.length && null != this.funcEnd && this.funcEnd(), this.get_playing() && this.set_currentFrame(1 + this.get_currentFrame() % this.mc.frames.length)); if (null != this.child) for (var a = this.child; a._updateOldValues(), a = a.next, a != this.child;); }, __class__: f, __properties__: { set_lineLength: "set_lineLength", set_currentFrame: "set_currentFrame", get_currentFrame: "get_currentFrame", set_playing: "set_playing", get_playing: "get_playing", set_visible: "set_visible", get_visible: "get_visible", set_alpha: "set_alpha", get_alpha: "get_alpha", set_scaleY: "set_scaleY", get_scaleY: "get_scaleY", set_scaleX: "set_scaleX", get_scaleX: "get_scaleX", set_rotation: "set_rotation", get_rotation: "get_rotation", set_y: "set_y", get_y: "get_y", set_x: "set_x", get_x: "get_x", get_totalFrames: "get_totalFrames" } }; var x = function() {}; s["oz.OzUtil"] = x; x.__name__ = ["oz", "OzUtil"]; x.Reverse_oz_OzSprite = function(a, b, c) { null == c && (c = 5E6); null == b && (b = 0); c > a.length && (c = a.length); for (var d, e = 0, p = (c - b) / 2 | 0; e < p;) { var f = e++; d = a[b + f]; a[b + f] = a[c - f - 1]; a[c - f - 1] = d } }; x.getURL = function(a) { H.getURL(new Eb(a)) }; x.StringReplace = function(a, b, c) { a = a.split(b); b = null; 0 < a.length && (b = a[0]); for (var d = 1, e = a.length; d < e;) { var p = d++; null == a[p] || 1 > a[p].length || (b = b + c + a[p]) } return b }; x.CommaStringToArray = function(a) { var b = [], c = 0; for (a = a.split(","); c < a.length;) { var d = a[c]; for (++c; " " == d.charAt(0);) d = J.substr(d, 1, null); for (; " " == d.charAt(d.length - 1);) d = J.substr(d, 0, d.length - 1); null != d && 0 < d.length && b.push(d) } return b }; x.BitCount = function(a) { for (var b = 0; 0 != a;) a &= a - 1, ++b; return b }; x.StringToIntArray = function(a) { if (null == a) return []; a = a.split(","); for (var b = 0, c = [], d = 0; d < a.length;) { var e = a[d]; ++d; null != e && 0 < e.length && (c[b] = K.parseInt(e), ++b) } return c }; x.IndexOfInt = function(a, b) { for (var c = 0, d = a.length; c < d;) { var e = c++; if (a[e] == b) return e } return -1 }; x.SortIdsByName = function(a, b) { var c, d; for (c = a.length - 1; 0 <= c;) { for (d = 0; d < c;) { if (b[d] > b[d + 1]) { var e = b[d]; b[d] = b[d + 1]; b[d + 1] = e; e = a[d]; a[d] = a[d + 1]; a[d + 1] = e }++d }--c } }; x.FindStringId = function(a, b) { for (var c = -1, d = a.length; c + 1 < d;) { var e = Math.floor((c + d) / 2); if (a[e] < b) c = e; else if (a[e] > b) d = e; else return e } return -1 }; x.round = function(a, b) { null == b && (b = 2); for (var c = 1, d = 0, e = b; d < e;) d++, c *= 10; return Math.round(a * c) / c }; x.ProjectPointOnLineSegment = function(a, b, c, d, e, p, f) { e -= c; p -= d; a = e * (a - c) + p * (b - d); b = e * e + p * p; f[0] = c + a * e / b; f[1] = d + a * p / b }; x.rotateAroundPoint = function(a, b, c, d, e, p) { var f = Math.sin(c / 180 * Math.PI); c = Math.cos(c / 180 * Math.PI); a -= d; b -= e; p[0] = d + a * c - b * f; p[1] = e + b * c + a * f }; x.DotPoints = function(a, b, c, d, e, p, f, g) { return (c - a) * (f - e) + (d - b) * (g - p) }; x.CrossPoints = function(a, b, c, d, e, p) { return (c - a) * (p - b) - (d - b) * (e - a) }; x.AngleFromSegment = function(a, b, c, d) { a -= c; b -= d; return 1E-6 > a * a + b * b ? 0 : 180 / Math.PI * Math.atan2(b, a) }; x.DistancePoints = function(a, b, c, d) { a -= c; b -= d; return Math.sqrt(a * a + b * b) }; x.PointLineDistance = function(a, b, c, d, e, p, f) { var g = x.CrossPoints(a, b, c, d, e, p) / x.DistancePoints(a, b, c, d); if (f) { if (0 < x.DotPoints(a, b, c, d, c, d, e, p)) return x.PLDNearest = 2, x.DistancePoints(c, d, e, p); if (0 < x.DotPoints(c, d, a, b, a, b, e, p)) return x.PLDNearest = 1, x.DistancePoints(a, b, e, p) } x.PLDNearest = 0; return Math.abs(g) }; x.ReachMaxSpeed2D = function(a, b, c, d, e, p) { var f = c - a, g = d - b, k = Math.sqrt(f * f + g * g); k <= e ? (p[0] = c, p[1] = d) : (c = e / k, p[0] = a + f * c, p[1] = b + g * c) }; x.GenerateControlPointsFromPath = function(a, b) { for (var c = [], d = x.ComputeControlPoints(a), e = x.ComputeControlPoints(b), p = 0, f = d.length; p < f;) { var g = p++; c.push(new Cc(d[g].x, e[g].x, d[g].y, e[g].y)) } return c }; x.ComputeControlPoints = function(a) { var b = [], c = [], d = a.length - 1, e = [], p = [], f = [], g = []; e[0] = 0; p[0] = 2; f[0] = 1; g[0] = a[0] + 2 * a[1]; for (var k = 1, I = d - 1; k < I;) { var h = k++; e[h] = 1; p[h] = 4; f[h] = 1; g[h] = 4 * a[h] + 2 * a[h + 1] } e[d - 1] = 2; p[d - 1] = 7; f[d - 1] = 0; g[d - 1] = 8 * a[d - 1] + a[d]; for (k = 1; k < d;) I = k++, h = e[I] / p[I - 1], p[I] -= h * f[I - 1], g[I] -= h * g[I - 1]; b[d - 1] = g[d - 1] / p[d - 1]; e = 0; for (k = d - 1; e < k;) I = e++, I = d - 2 - I, b[I] = (g[I] - f[I] * b[I + 1]) / p[I]; p = 0; for (f = d - 1; p < f;) g = p++, c[g] = 2 * a[g + 1] - b[g + 1]; c[d - 1] = 0.5 * (a[d] + b[d - 1]); a = []; for (p = 0; p < d;) f = p++, a.push(new xa(b[f], c[f])); return a }; x.ReverseFloats = function(a, b, c) { null == c && (c = 5E7); null == b && (b = 0); 5E7 == c && (c = a.length); for (var d, e = 0, p = (c - b) / 2 | 0; e < p;) { var f = e++; d = a[b + f]; a[b + f] = a[c - f - 1]; a[c - f - 1] = d } }; var X = function() { this.h = {} }; s["haxe.ds.StringMap"] = X; X.__name__ = ["haxe", "ds", "StringMap" ]; X.__interfaces__ = [dc]; X.prototype = { setReserved: function(a, b) { null == this.rh && (this.rh = {}); this.rh["$" + a] = b }, getReserved: function(a) { return null == this.rh ? null : this.rh["$" + a] }, existsReserved: function(a) { return null == this.rh ? !1 : this.rh.hasOwnProperty("$" + a) }, remove: function(a) { if (null != O[a]) { a = "$" + a; if (null == this.rh || !this.rh.hasOwnProperty(a)) return !1; delete this.rh[a] } else { if (!this.h.hasOwnProperty(a)) return !1; delete this.h[a] } return !0 }, keys: function() { return J.iter(this.arrayKeys()) }, arrayKeys: function() { var a = [], b; for (b in this.h) this.h.hasOwnProperty(b) && a.push(b); if (null != this.rh) for (b in this.rh) 36 == b.charCodeAt(0) && a.push(b.substr(1)); return a }, __class__: X }; var W = s["oz.SpriteType"] = { __ename__: ["oz", "SpriteType"], __constructs__: "EMPTY BITMAP TEXT POLYGON TILEMAP BACKGROUND BACKGROUNDIMAGE".split(" ") }; W.EMPTY = ["EMPTY", 0]; W.EMPTY.toString = F; W.EMPTY.__enum__ = W; W.BITMAP = ["BITMAP", 1]; W.BITMAP.toString = F; W.BITMAP.__enum__ = W; W.TEXT = ["TEXT", 2]; W.TEXT.toString = F; W.TEXT.__enum__ = W; W.POLYGON = ["POLYGON", 3]; W.POLYGON.toString = F; W.POLYGON.__enum__ = W; W.TILEMAP = ["TILEMAP", 4]; W.TILEMAP.toString = F; W.TILEMAP.__enum__ = W; W.BACKGROUND = ["BACKGROUND", 5]; W.BACKGROUND.toString = F; W.BACKGROUND.__enum__ = W; W.BACKGROUNDIMAGE = ["BACKGROUNDIMAGE", 6]; W.BACKGROUNDIMAGE.toString = F; W.BACKGROUNDIMAGE.__enum__ = W; var V = s["oz.TextAlign"] = { __ename__: ["oz", "TextAlign"], __constructs__: ["LEFT", "RIGHT", "CENTER", "JUSTIFIED"] }; V.LEFT = ["LEFT", 0]; V.LEFT.toString = F; V.LEFT.__enum__ = V; V.RIGHT = ["RIGHT", 1]; V.RIGHT.toString = F; V.RIGHT.__enum__ = V; V.CENTER = ["CENTER", 2]; V.CENTER.toString = F; V.CENTER.__enum__ = V; V.JUSTIFIED = ["JUSTIFIED", 3]; V.JUSTIFIED.toString = F; V.JUSTIFIED.__enum__ = V; var tc = function() {}; s["platforms.WindowsPhone"] = tc; tc.__name__ = ["platforms", "WindowsPhone"]; tc.ScriptNotify = function(a) {}; var Eb = function(a) { null != a && (this.url = a); this.requestHeaders = []; this.method = "GET"; this.contentType = null }; s["openfl.net.URLRequest"] = Eb; Eb.__name__ = ["openfl", "net", "URLRequest"]; Eb.prototype = { formatRequestHeaders: function() { var a = this.requestHeaders; null == a && (a = []); if ("GET" == this.method || null == this.data) return a; if ("string" == typeof this.data || S.__instanceof(this.data, zb)) a = a.slice(), a.push(new uc("Content-Type", null != this.contentType ? this.contentType : "application/x-www-form-urlencoded")); return a }, __class__: Eb }; var cb = function(a, b, c, d) { a = cb.image; ia.call(this, a.width, a.height, !0, 0); this.context.drawImage(a, 0, 0) }; s.PreloaderBarBMD = cb; cb.__name__ = ["PreloaderBarBMD"]; cb.preload = function() { var a = document.createElement("img"); C.loadEmbed(cb.image = a); a.src = "data:image/png;base64,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" }; cb.__super__ = ia; cb.prototype = R(ia.prototype, { __class__: cb }); var Z = function() {}; s.Reflect = Z; Z.__name__ = ["Reflect"]; Z.field = function(a, b) { try { return a[b] } catch (c) { return null } }; Z.getProperty = function(a, b) { var c; if (null == a) return null; var d; d = a.__properties__ ? c = a.__properties__["get_" + b] : !1; return d ? a[c]() : a[b] }; Z.setProperty = function(a, b, c) { var d, e; e = a.__properties__ ? d = a.__properties__["set_" + b] : !1; if (e) a[d](c); else a[b] = c }; Z.fields = function(a) { var b = []; if (null != a) { var c = Object.prototype.hasOwnProperty, d; for (d in a) "__id__" != d && "hx__closures__" != d && c.call(a, d) && b.push(d) } return b }; Z.isFunction = function(a) { return "function" == typeof a ? !(a.__name__ || a.__ename__) : !1 }; Z.compare = function(a, b) { return a == b ? 0 : a > b ? 1 : -1 }; Z.compareMethods = function(a, b) { return a == b ? !0 : Z.isFunction(a) && Z.isFunction(b) ? a.scope == b.scope && a.method == b.method ? null != a.method : !1 : !1 }; Z.isEnumValue = function(a) { return null != a ? null != a.__enum__ : !1 }; Z.deleteField = function(a, b) { if (!Object.prototype.hasOwnProperty.call(a, b)) return !1; delete a[b]; return !0 }; var nb = function() { this.b = "" }; s.StringBuf = nb; nb.__name__ = ["StringBuf"]; nb.prototype = { __class__: nb }; var aa = s.ValueType = { __ename__: ["ValueType"], __constructs__: "TNull TInt TFloat TBool TObject TFunction TClass TEnum TUnknown".split(" ") }; aa.TNull = ["TNull", 0]; aa.TNull.toString = F; aa.TNull.__enum__ = aa; aa.TInt = ["TInt", 1]; aa.TInt.toString = F; aa.TInt.__enum__ = aa; aa.TFloat = ["TFloat", 2]; aa.TFloat.toString = F; aa.TFloat.__enum__ = aa; aa.TBool = ["TBool", 3]; aa.TBool.toString = F; aa.TBool.__enum__ = aa; aa.TObject = ["TObject", 4]; aa.TObject.toString = F; aa.TObject.__enum__ = aa; aa.TFunction = ["TFunction", 5]; aa.TFunction.toString = F; aa.TFunction.__enum__ = aa; aa.TClass = function(a) { a = ["TClass", 6, a]; a.__enum__ = aa; a.toString = F; return a }; aa.TEnum = function(a) { a = ["TEnum", 7, a]; a.__enum__ = aa; a.toString = F; return a }; aa.TUnknown = ["TUnknown", 8]; aa.TUnknown.toString = F; aa.TUnknown.__enum__ = aa; var B = function(a) { this.nodeType = a; this.children = []; this.attributeMap = new X }; s.Xml = B; B.__name__ = ["Xml"]; B.parse = function(a) { return Ab.parse(a) }; B.createElement = function(a) { var b = new B(B.Element); if (b.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + b.nodeType); b.nodeName = a; return b }; B.createPCData = function(a) { var b = new B(B.PCData); if (b.nodeType == B.Document || b.nodeType == B.Element) throw new D("Bad node type, unexpected " + b.nodeType); b.nodeValue = a; return b }; B.createCData = function(a) { var b = new B(B.CData); if (b.nodeType == B.Document || b.nodeType == B.Element) throw new D("Bad node type, unexpected " + b.nodeType); b.nodeValue = a; return b }; B.createComment = function(a) { var b = new B(B.Comment); if (b.nodeType == B.Document || b.nodeType == B.Element) throw new D("Bad node type, unexpected " + b.nodeType); b.nodeValue = a; return b }; B.createDocType = function(a) { var b = new B(B.DocType); if (b.nodeType == B.Document || b.nodeType == B.Element) throw new D("Bad node type, unexpected " + b.nodeType); b.nodeValue = a; return b }; B.createProcessingInstruction = function(a) { var b = new B(B.ProcessingInstruction); if (b.nodeType == B.Document || b.nodeType == B.Element) throw new D("Bad node type, unexpected " + b.nodeType); b.nodeValue = a; return b }; B.createDocument = function() { return new B(B.Document) }; B.prototype = { get: function(a) { if (this.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + this.nodeType); var b = this.attributeMap; return null != O[a] ? b.getReserved(a) : b.h[a] }, set: function(a, b) { if (this.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + this.nodeType); var c = this.attributeMap; null != O[a] ? c.setReserved(a, b) : c.h[a] = b }, exists: function(a) { if (this.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + this.nodeType); var b = this.attributeMap; return null != O[a] ? b.existsReserved(a) : b.h.hasOwnProperty(a) }, attributes: function() { if (this.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + this.nodeType); return this.attributeMap.keys() }, elements: function() { if (this.nodeType != B.Document && this.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + this.nodeType); for (var a = [], b = 0, c = this.children; b < c.length;) { var d = c[b]; ++b; d.nodeType == B.Element && a.push(d) } return J.iter(a) }, elementsNamed: function(a) { if (this.nodeType != B.Document && this.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + this.nodeType); for (var b = [], c = 0, d = this.children; c < d.length;) { var e = d[c]; ++c; var p; if (e.nodeType == B.Element) { if (e.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + e.nodeType); p = e.nodeName == a } else p = !1; p && b.push(e) } return J.iter(b) }, firstElement: function() { if (this.nodeType != B.Document && this.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + this.nodeType); for (var a = 0, b = this.children; a < b.length;) { var c = b[a]; ++a; if (c.nodeType == B.Element) return c } return null }, addChild: function(a) { if (this.nodeType != B.Document && this.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + this.nodeType); null != a.parent && a.parent.removeChild(a); this.children.push(a); a.parent = this }, removeChild: function(a) { if (this.nodeType != B.Document && this.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + this.nodeType); return J.remove(this.children, a) ? (a.parent = null, !0) : !1 }, __class__: B }; var Dc = function(a, b) { this.high = a; this.low = b }; s["haxe._Int64.___Int64"] = Dc; Dc.__name__ = ["haxe", "_Int64", "___Int64"]; Dc.prototype = { __class__: Dc }; var Ia = function() { this.buf = new nb; this.cache = []; this.useCache = Ia.USE_CACHE; this.useEnumIndex = Ia.USE_ENUM_INDEX; this.shash = new X; this.scount = 0 }; s["haxe.Serializer"] = Ia; Ia.__name__ = ["haxe", "Serializer"]; Ia.run = function(a) { var b = new Ia; b.serialize(a); return b.toString() }; Ia.prototype = { toString: function() { return this.buf.b }, serializeString: function(a) { var b = this.shash, b = null != O[a] ? b.getReserved(a) : b.h[a]; if (null != b) this.buf.b += "R", this.buf.b += null == b ? "null" : "" + b; else { var b = this.shash, c = this.scount++; null != O[a] ? b.setReserved(a, c) : b.h[a] = c; this.buf.b += "y"; a = encodeURIComponent(a); this.buf.b += K.string(a.length); this.buf.b += ":"; this.buf.b += null == a ? "null" : "" + a } }, serializeRef: function(a) { for (var b = typeof a, c = 0, d = this.cache.length; c < d;) { var e = c++, p = this.cache[e]; if (typeof p == b && p == a) return this.buf.b += "r", this.buf.b += null == e ? "null" : "" + e, !0 } this.cache.push(a); return !1 }, serializeFields: function(a) { for (var b = 0, c = Z.fields(a); b < c.length;) { var d = c[b]; ++b; this.serializeString(d); this.serialize(Z.field(a, d)) } this.buf.b += "g" }, serialize: function(a) { var b = U["typeof"](a); switch (b[1]) { case 0: this.buf.b += "n"; break; case 1: if (0 == a) { this.buf.b += "z"; break } this.buf.b += "i"; this.buf.b += null == a ? "null" : "" + a; break; case 2: isNaN(a) ? this.buf.b += "k" : isFinite(a) ? (this.buf.b += "d", this.buf.b += null == a ? "null" : "" + a) : this.buf.b += 0 > a ? "m" : "p"; break; case 3: this.buf.b += a ? "t" : "f"; break; case 4: if (S.__instanceof(a, pd)) a = U.getClassName(a), this.buf.b += "A", this.serializeString(a); else if (S.__instanceof(a, qd)) this.buf.b += "B", this.serializeString(U.getEnumName(a)); else { if (this.useCache && this.serializeRef(a)) break; this.buf.b += "o"; this.serializeFields(a) } break; case 5: throw new D("Cannot serialize function"); case 6: b = b[2]; if (b == String) { this.serializeString(a); break } if (this.useCache && this.serializeRef(a)) break; switch (b) { case Array: b = 0; this.buf.b += "a"; for (var c = 0, d = a.length; c < d;) { var e = c++; null == a[e] ? ++b : (0 < b && (1 == b ? this.buf.b += "n" : (this.buf.b += "u", this.buf.b += null == b ? "null" : "" + b), b = 0), this.serialize(a[e])) } 0 < b && (1 == b ? this.buf.b += "n" : (this.buf.b += "u", this.buf.b += null == b ? "null" : "" + b)); this.buf.b += "h"; break; case Date: this.buf.b += "v"; this.buf.b += K.string(a.getTime()); break; case cc: this.buf.b += "l"; for (a = a.h; null != a;) b = a.item, a = a.next, this.serialize(b); this.buf.b += "h"; break; case va: this.buf.b += "q"; for (b = a.keys(); b.hasNext();) c = b.next(), this.buf.b += ":", this.buf.b += null == c ? "null" : "" + c, this.serialize(a.h[c]); this.buf.b += "h"; break; case Oa: this.buf.b += "M"; for (b = a.keys(); b.hasNext();) c = b.next(), d = Z.field(c, "__id__"), Z.deleteField(c, "__id__"), this.serialize(c), c.__id__ = d, this.serialize(a.h[c.__id__]); this.buf.b += "h"; break; case X: this.buf.b += "b"; for (b = a.keys(); b.hasNext();) c = b.next(), this.serializeString(c), this.serialize(null != O[c] ? a.getReserved(c) : a.h[c]); this.buf.b += "h"; break; case Ja: this.buf.b += "s"; this.buf.b += K.string(Math.ceil(8 * a.length / 6)); this.buf.b += ":"; c = 0; d = a.length - 2; b = Ia.BASE64_CODES; if (null == b) { for (var b = Array(Ia.BASE64.length), e = 0, p = Ia.BASE64.length; e < p;) { var f = e++; b[f] = J.cca(Ia.BASE64, f) } Ia.BASE64_CODES = b } for (; c < d;) e = a.b[c++], p = a.b[c++], f = a.b[c++], this.buf.b += String.fromCharCode(b[e >> 2]), this.buf.b += String.fromCharCode(b[(e << 4 | p >> 4) & 63]), this.buf.b += String.fromCharCode(b[(p << 2 | f >> 6) & 63]), this.buf.b += String.fromCharCode(b[f & 63]); c == d ? (d = a.b[c++], a = a.b[c++], this.buf.b += String.fromCharCode(b[d >> 2]), this.buf.b += String.fromCharCode(b[(d << 4 | a >> 4) & 63]), this.buf.b += String.fromCharCode(b[a << 2 & 63])) : c == d + 1 && (a = a.b[c++], this.buf.b += String.fromCharCode(b[a >> 2]), this.buf.b += String.fromCharCode(b[a << 4 & 63])); break; default: this.useCache && this.cache.pop(), null != a.hxSerialize ? (this.buf.b += "C", this.serializeString(U.getClassName(b)), this.useCache && this.cache.push(a), a.hxSerialize(this), this.buf.b += "g") : (this.buf.b += "c", this.serializeString(U.getClassName(b)), this.useCache && this.cache.push(a), this.serializeFields(a)) } break; case 7: b = b[2]; if (this.useCache) { if (this.serializeRef(a)) break; this.cache.pop() } this.buf.b += K.string(this.useEnumIndex ? "j" : "w"); this.serializeString(U.getEnumName(b)); this.useEnumIndex ? (this.buf.b += ":", this.buf.b += K.string(a[1])) : this.serializeString(a[0]); this.buf.b += ":"; b = a.length; this.buf.b += K.string(b - 2); for (c = 2; c < b;) d = c++, this.serialize(a[d]); this.useCache && this.cache.push(a); break; default: throw new D("Cannot serialize " + K.string(a)); } }, __class__: Ia }; var wb = function(a) { var b = this; this.id = setInterval(function() { b.run() }, a) }; s["haxe.Timer"] = wb; wb.__name__ = ["haxe", "Timer"]; wb.stamp = function() { return (new Date).getTime() / 1E3 }; wb.prototype = { run: function() {}, __class__: wb }; var Xb = function() {}; s["haxe._Unserializer.DefaultResolver"] = Xb; Xb.__name__ = ["haxe", "_Unserializer", "DefaultResolver"]; Xb.prototype = { resolveClass: function(a) { return U.resolveClass(a) }, resolveEnum: function(a) { return U.resolveEnum(a) }, __class__: Xb }; var Qa = function(a) { this.buf = a; this.length = a.length; this.pos = 0; this.scache = []; this.cache = []; a = Qa.DEFAULT_RESOLVER; null == a && (a = new Xb, Qa.DEFAULT_RESOLVER = a); this.resolver = a }; s["haxe.Unserializer"] = Qa; Qa.__name__ = ["haxe", "Unserializer"]; Qa.initCodes = function() { for (var a = [], b = 0, c = Qa.BASE64.length; b < c;) { var d = b++; a[Qa.BASE64.charCodeAt(d)] = d } return a }; Qa.prototype = { setResolver: function(a) { null == a ? (null == ob.instance && (ob.instance = new ob), this.resolver = ob.instance) : this.resolver = a }, readDigits: function() { for (var a = 0, b = !1, c = this.pos;;) { var d = this.buf.charCodeAt(this.pos); if (d != d) break; if (45 == d) { if (this.pos != c) break; b = !0 } else { if (48 > d || 57 < d) break; a = 10 * a + (d - 48) } this.pos++ } b && (a *= -1); return a }, readFloat: function() { for (var a = this.pos;;) { var b = this.buf.charCodeAt(this.pos); if (b != b) break; if (43 <= b && 58 > b || 101 == b || 69 == b) this.pos++; else break } return parseFloat(J.substr(this.buf, a, this.pos - a)) }, unserializeObject: function(a) { for (;;) { if (this.pos >= this.length) throw new D("Invalid object"); if (103 == this.buf.charCodeAt(this.pos)) break; var b = this.unserialize(); if ("string" != typeof b) throw new D("Invalid object key"); var c = this.unserialize(); a[b] = c } this.pos++ }, unserializeEnum: function(a, b) { if (58 != this.buf.charCodeAt(this.pos++)) throw new D("Invalid enum format"); var c = this.readDigits(); if (0 == c) return U.createEnum(a, b); for (var d = []; 0 < c--;) d.push(this.unserialize()); return U.createEnum(a, b, d) }, unserialize: function() { switch (this.buf.charCodeAt(this.pos++)) { case 65: var a = this.unserialize(), b = this.resolver.resolveClass(a); if (null == b) throw new D("Class not found " + a); return b; case 66: a = this.unserialize(); b = this.resolver.resolveEnum(a); if (null == b) throw new D("Enum not found " + a); return b; case 67: a = this.unserialize(); b = this.resolver.resolveClass(a); if (null == b) throw new D("Class not found " + a); a = U.createEmptyInstance(b); this.cache.push(a); a.hxUnserialize(this); if (103 != this.buf.charCodeAt(this.pos++)) throw new D("Invalid custom data"); return a; case 77: a = new Oa; for (this.cache.push(a); 104 != this.buf.charCodeAt(this.pos);) b = this.unserialize(), a.set(b, this.unserialize()); this.pos++; return a; case 82: a = this.readDigits(); if (0 > a || a >= this.scache.length) throw new D("Invalid string reference"); return this.scache[a]; case 97: a = []; for (this.cache.push(a);;) { b = this.buf.charCodeAt(this.pos); if (104 == b) { this.pos++; break } 117 == b ? (this.pos++, b = this.readDigits(), a[a.length + b - 1] = null) : a.push(this.unserialize()) } return a; case 98: a = new X; for (this.cache.push(a); 104 != this.buf.charCodeAt(this.pos);) { var b = this.unserialize(), c = this.unserialize(); null != O[b] ? a.setReserved(b, c) : a.h[b] = c } this.pos++; return a; case 99: a = this.unserialize(); b = this.resolver.resolveClass(a); if (null == b) throw new D("Class not found " + a); a = U.createEmptyInstance(b); this.cache.push(a); this.unserializeObject(a); return a; case 100: return this.readFloat(); case 102: return !1; case 105: return this.readDigits(); case 106: a = this.unserialize(); b = this.resolver.resolveEnum(a); if (null == b) throw new D("Enum not found " + a); this.pos++; var c = this.readDigits(), d = b.__constructs__.slice()[c]; if (null == d) throw new D("Unknown enum index " + a + "@" + c); a = this.unserializeEnum(b, d); this.cache.push(a); return a; case 107: return NaN; case 108: a = new cc; for (this.cache.push(a); 104 != this.buf.charCodeAt(this.pos);) a.add(this.unserialize()); this.pos++; return a; case 109: return -Infinity; case 110: return null; case 111: return a = {}, this.cache.push(a), this.unserializeObject(a), a; case 112: return Infinity; case 113: a = new va; this.cache.push(a); for (b = this.buf.charCodeAt(this.pos++); 58 == b;) b = this.readDigits(), c = this.unserialize(), a.h[b] = c, b = this.buf.charCodeAt(this.pos++); if (104 != b) throw new D("Invalid IntMap format"); return a; case 114: a = this.readDigits(); if (0 > a || a >= this.cache.length) throw new D("Invalid reference"); return this.cache[a]; case 115: a = this.readDigits(); d = this.buf; if (58 != this.buf.charCodeAt(this.pos++) || this.length - this.pos < a) throw new D("Invalid bytes length"); var e = Qa.CODES; null == e && (e = Qa.initCodes(), Qa.CODES = e); for (var p = this.pos, f = a & 3, g = p + (a - f), b = new Ja(new Nb(3 * (a >> 2) + (2 <= f ? f - 1 : 0))), c = 0; p < g;) { var k = e[d.charCodeAt(p++)], I = e[d.charCodeAt(p++)]; b.b[c++] = (k << 2 | I >> 4) & 255; k = e[d.charCodeAt(p++)]; b.b[c++] = (I << 4 | k >> 2) & 255; I = e[d.charCodeAt(p++)]; b.b[c++] = (k << 6 | I) & 255 } 2 <= f && (I = e[d.charCodeAt(p++)], g = e[d.charCodeAt(p++)], b.b[c++] = (I << 2 | g >> 4) & 255, 3 == f && (d = e[d.charCodeAt(p++)], b.b[c++] = (g << 4 | d >> 2) & 255)); this.pos += a; this.cache.push(b); return b; case 116: return !0; case 118: return 48 <= this.buf.charCodeAt(this.pos) && 57 >= this.buf.charCodeAt(this.pos) && 48 <= this.buf.charCodeAt(this.pos + 1) && 57 >= this.buf.charCodeAt(this.pos + 1) && 48 <= this.buf.charCodeAt(this.pos + 2) && 57 >= this.buf.charCodeAt(this.pos + 2) && 48 <= this.buf.charCodeAt(this.pos + 3) && 57 >= this.buf.charCodeAt(this.pos + 3) && 45 == this.buf.charCodeAt(this.pos + 4) ? (a = J.strDate(J.substr(this.buf, this.pos, 19)), this.pos += 19) : (a = this.readFloat(), a = new Date(a)), this.cache.push(a), a; case 119: a = this.unserialize(); b = this.resolver.resolveEnum(a); if (null == b) throw new D("Enum not found " + a); a = this.unserializeEnum(b, this.unserialize()); this.cache.push(a); return a; case 120: throw D.wrap(this.unserialize()); case 121: a = this.readDigits(); if (58 != this.buf.charCodeAt(this.pos++) || this.length - this.pos < a) throw new D("Invalid string length"); b = J.substr(this.buf, this.pos, a); this.pos += a; b = decodeURIComponent(b.split("+").join(" ")); this.scache.push(b); return b; case 122: return 0 } this.pos--; throw new D("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos); }, __class__: Qa }; var ob = function() {}; s["haxe._Unserializer.NullResolver"] = ob; ob.__name__ = ["haxe", "_Unserializer", "NullResolver"]; ob.prototype = { resolveClass: function(a) { return null }, resolveEnum: function(a) { return null }, __class__: ob }; var Ja = function(a) { this.length = a.byteLength; this.b = new hb(a); this.b.bufferValue = a; a.hxBytes = this; a.bytes = this.b }; s["haxe.io.Bytes"] = Ja; Ja.__name__ = ["haxe", "io", "Bytes"]; Ja.alloc = function(a) { return new Ja(new Nb(a)) }; Ja.ofString = function(a) { for (var b = [], c = 0; c < a.length;) { var d = a.charCodeAt(c++); 55296 <= d && 56319 >= d && (d = d - 55232 << 10 | a.charCodeAt(c++) & 1023); 127 >= d ? b.push(d) : (2047 >= d ? b.push(192 | d >> 6) : (65535 >= d ? b.push(224 | d >> 12) : (b.push(240 | d >> 18), b.push(128 | d >> 12 & 63)), b.push(128 | d >> 6 & 63)), b.push(128 | d & 63)) } return new Ja((new hb(b)).buffer) }; Ja.ofData = function(a) { var b = a.hxBytes; return null != b ? b : new Ja(a) }; Ja.fastGet = function(a, b) { return a.bytes[b] }; Ja.prototype = { getString: function(a, b) { if (0 > a || 0 > b || a + b > this.length) throw new D(Ka.OutsideBounds); for (var c = "", d = this.b, e = String.fromCharCode, p = a, f = a + b; p < f;) { var g = d[p++]; if (128 > g) { if (0 == g) break; c += e(g) } else if (224 > g) c += e((g & 63) << 6 | d[p++] & 127); else if (240 > g) var k = d[p++], c = c + e((g & 31) << 12 | (k & 127) << 6 | d[p++] & 127); else var k = d[p++], I = d[p++], g = (g & 15) << 18 | (k & 127) << 12 | (I & 127) << 6 | d[p++] & 127, c = c + e((g >> 10) + 55232), c = c + e(g & 1023 | 56320) } return c }, toString: function() { return this.getString(0, this.length) }, __class__: Ja }; var Ib = function() {}; s["haxe.crypto.Base64"] = Ib; Ib.__name__ = ["haxe", "crypto", "Base64"]; Ib.decode = function(a, b) { null == b && (b = !0); if (b) for (; 61 == J.cca(a, a.length - 1);) a = J.substr(a, 0, -1); return (new Nc(Ib.BYTES)).decodeBytes(Ja.ofString(a)) }; var Nc = function(a) { for (var b = a.length, c = 1; b > 1 << c;) ++c; if (8 < c || b != 1 << c) throw new D("BaseCode : base length must be a power of two."); this.base = a; this.nbits = c }; s["haxe.crypto.BaseCode"] = Nc; Nc.__name__ = ["haxe", "crypto", "BaseCode"]; Nc.prototype = { initTable: function() { for (var a = [], b = 0; 256 > b;) { var c = b++; a[c] = -1 } b = 0; for (c = this.base.length; b < c;) { var d = b++; a[this.base.b[d]] = d } this.tbl = a }, decodeBytes: function(a) { var b = this.nbits; null == this.tbl && this.initTable(); for (var c = this.tbl, d = a.length * b >> 3, e = new Ja(new Nb(d)), p = 0, f = 0, g = 0, k = 0; k < d;) { for (; 8 > f;) { var f = f + b, p = p << b, I = c[a.b[g++]]; if (-1 == I) throw new D("BaseCode : invalid encoded char"); p |= I } f -= 8; e.b[k++] = p >> f & 255 } return e }, __class__: Nc }; var fc = function() {}; s["haxe.ds.BalancedTree"] = fc; fc.__name__ = ["haxe", "ds", "BalancedTree"]; fc.prototype = { set: function(a, b) { this.root = this.setLoop(a, b, this.root) }, get: function(a) { for (var b = this.root; null != b;) { var c = this.compare(a, b.key); if (0 == c) return b.value; b = 0 > c ? b.left : b.right } return null }, exists: function(a) { for (var b = this.root; null != b;) { var c = this.compare(a, b.key); if (0 == c) return !0; b = 0 > c ? b.left : b.right } return !1 }, setLoop: function(a, b, c) { if (null == c) return new wa(null, a, b, null); var d = this.compare(a, c.key); if (0 == d) return new wa(c.left, a, b, c.right, null == c ? 0 : c._height); if (0 > d) return a = this.setLoop(a, b, c.left), this.balance(a, c.key, c.value, c.right); a = this.setLoop(a, b, c.right); return this.balance(c.left, c.key, c.value, a) }, balance: function(a, b, c, d) { var e = null == a ? 0 : a._height, p = null == d ? 0 : d._height; return e > p + 2 ? (e = a.left, p = a.right, (null == e ? 0 : e._height) >= (null == p ? 0 : p._height) ? new wa(a.left, a.key, a.value, new wa(a.right, b, c, d)) : new wa(new wa(a.left, a.key, a.value, a.right.left), a.right.key, a.right.value, new wa(a.right.right, b, c, d))) : p > e + 2 ? (e = d.right, p = d.left, (null == e ? 0 : e._height) > (null == p ? 0 : p._height) ? new wa(new wa(a, b, c, d.left), d.key, d.value, d.right) : new wa(new wa(a, b, c, d.left.left), d.left.key, d.left.value, new wa(d.left.right, d.key, d.value, d.right))) : new wa(a, b, c, d, (e > p ? e : p) + 1) }, compare: function(a, b) { return Z.compare(a, b) }, __class__: fc }; var wa = function(a, b, c, d, e) { null == e && (e = -1); this.left = a; this.key = b; this.value = c; this.right = d; - 1 == e ? (a = this.left, b = this.right, a = (null == a ? 0 : a._height) > (null == b ? 0 : b._height) ? this.left : this.right, a = null == a ? 0 : a._height, this._height = a + 1) : this._height = e }; s["haxe.ds.TreeNode"] = wa; wa.__name__ = ["haxe", "ds", "TreeNode"]; wa.prototype = { __class__: wa }; var Jb = function() {}; s["haxe.ds.EnumValueMap"] = Jb; Jb.__name__ = ["haxe", "ds", "EnumValueMap"]; Jb.__interfaces__ = [dc]; Jb.__super__ = fc; Jb.prototype = R(fc.prototype, { compare: function(a, b) { var c = a[1] - b[1]; if (0 != c) return c; var c = a.slice(2), d = b.slice(2); return 0 == c.length && 0 == d.length ? 0 : this.compareArgs(c, d) }, compareArgs: function(a, b) { var c = a.length - b.length; if (0 != c) return c; for (var c = 0, d = a.length; c < d;) { var e = c++, e = this.compareArg(a[e], b[e]); if (0 != e) return e } return 0 }, compareArg: function(a, b) { return Z.isEnumValue(a) && Z.isEnumValue(b) ? this.compare(a, b) : a instanceof Array && null == a.__enum__ && b instanceof Array && null == b.__enum__ ? this.compareArgs(a, b) : Z.compare(a, b) }, __class__: Jb }); var va = function() { this.h = {} }; s["haxe.ds.IntMap"] = va; va.__name__ = ["haxe", "ds", "IntMap"]; va.__interfaces__ = [dc]; va.prototype = { remove: function(a) { if (!this.h.hasOwnProperty(a)) return !1; delete this.h[a]; return !0 }, keys: function() { var a = [], b; for (b in this.h) this.h.hasOwnProperty(b) && a.push(b | 0); return J.iter(a) }, __class__: va }; var ad = function() {}; s["haxe.io.Eof"] = ad; ad.__name__ = ["haxe", "io", "Eof"]; ad.prototype = { toString: function() { return "Eof" }, __class__: ad }; var Ka = s["haxe.io.Error"] = { __ename__: ["haxe", "io", "Error"], __constructs__: ["Blocked", "Overflow", "OutsideBounds", "Custom"] }; Ka.Blocked = ["Blocked", 0]; Ka.Blocked.toString = F; Ka.Blocked.__enum__ = Ka; Ka.Overflow = ["Overflow", 1]; Ka.Overflow.toString = F; Ka.Overflow.__enum__ = Ka; Ka.OutsideBounds = ["OutsideBounds", 2]; Ka.OutsideBounds.toString = F; Ka.OutsideBounds.__enum__ = Ka; Ka.Custom = function(a) { a = ["Custom", 3, a]; a.__enum__ = Ka; a.toString = F; return a }; var Ua = function() {}; s["haxe.io.FPHelper"] = Ua; Ua.__name__ = ["haxe", "io", "FPHelper"]; Ua.i32ToFloat = function(a) { var b = a >>> 23 & 255, c = a & 8388607; return 0 == c && 0 == b ? 0 : (1 - (a >>> 31 << 1)) * (1 + Math.pow(2, -23) * c) * Math.pow(2, b - 127) }; Ua.floatToI32 = function(a) { if (0 == a) return 0; var b = 0 > a ? -a : a, c = Math.floor(Math.log(b) / 0.6931471805599453); - 127 > c ? c = -127 : 128 < c && (c = 128); b = Math.round(8388608 * (b / Math.pow(2, c) - 1)); 8388608 == b && 128 > c && (b = 0, ++c); return (0 > a ? -2147483648 : 0) | c + 127 << 23 | b }; Ua.i64ToDouble = function(a, b) { var c = (b >> 20 & 2047) - 1023, d = 4294967296 * (b & 1048575) + 2147483648 * (a >>> 31) + (a & 2147483647); return 0 == d && -1023 == c ? 0 : (1 - (b >>> 31 << 1)) * (1 + Math.pow(2, -52) * d) * Math.pow(2, c) }; Ua.doubleToI64 = function(a) { var b = Ua.i64tmp; if (0 == a) b.low = 0, b.high = 0; else if (isFinite(a)) { var c = 0 > a ? -a : a, d = Math.floor(Math.log(c) / 0.6931471805599453), c = Math.round(4503599627370496 * (c / Math.pow(2, d) - 1)); b.low = c | 0; b.high = (0 > a ? -2147483648 : 0) | d + 1023 << 20 | c / 4294967296 | 0 } else 0 < a ? (b.low = 0, b.high = 2146435072) : (b.low = 0, b.high = -1048576); return b }; var qa = function(a, b, c) { this.xml = b; this.message = a; this.position = c; this.lineNumber = 1; for (a = this.positionAtLine = 0; a < c;) { var d = a++, d = b.charCodeAt(d); 10 == d ? (this.lineNumber++, this.positionAtLine = 0) : 13 != d && this.positionAtLine++ } }; s["haxe.xml.XmlParserException"] = qa; qa.__name__ = ["haxe", "xml", "XmlParserException"]; qa.prototype = { toString: function() { return U.getClassName(S.getClass(this)) + ": " + this.message + " at line " + this.lineNumber + " char " + this.positionAtLine }, __class__: qa }; var Ab = function() {}; s["haxe.xml.Parser"] = Ab; Ab.__name__ = ["haxe", "xml", "Parser"]; Ab.parse = function(a, b) { null == b && (b = !1); var c = B.createDocument(); Ab.doParse(a, b, 0, c); return c }; Ab.doParse = function(a, b, c, d) { null == c && (c = 0); for (var e = null, p = 1, f = 1, g = null, k = 0, I = 0, h = 0, w = a.charCodeAt(c), m = new nb, l = 1, s = -1; w == w;) { switch (p) { case 0: switch (w) { case 9: case 10: case 13: case 32: break; default: p = f; continue } break; case 1: if (60 == w) p = 0, f = 2; else { k = c; p = 13; continue } break; case 2: switch (w) { case 33: if (91 == a.charCodeAt(c + 1)) { c += 2; if ("CDATA[" != J.substr(a, c, 6).toUpperCase()) throw new D(new qa("Expected = w || 65 <= w && 90 >= w || 48 <= w && 57 >= w || 58 == w || 46 == w || 95 == w || 45 == w)) { if (c == k) throw new D(new qa("Expected node name", a, c)); e = B.createElement(J.substr(a, k, c - k)); d.addChild(e); ++I; p = 0; f = 4; continue } break; case 4: switch (w) { case 47: p = 11; break; case 62: p = 9; break; default: p = 5; k = c; continue } break; case 5: if (!(97 <= w && 122 >= w || 65 <= w && 90 >= w || 48 <= w && 57 >= w || 58 == w || 46 == w || 95 == w || 45 == w)) { if (k == c) throw new D(new qa("Expected attribute name", a, c)); g = J.substr(a, k, c - k); if (e.exists(g)) throw new D(new qa("Duplicate attribute [" + g + "]", a, c)); p = 0; f = 6; continue } break; case 6: if (61 == w) p = 0, f = 7; else throw new D(new qa("Expected =", a, c)); break; case 7: switch (w) { case 34: case 39: m = new nb; p = 8; k = c + 1; s = w; break; default: throw new D(new qa('Expected "', a, c)); } break; case 8: switch (w) { case 38: l = c - k; m.b += null == l ? J.substr(a, k, null) : J.substr(a, k, l); p = 18; l = 8; k = c + 1; break; case 60: case 62: if (b) throw new D(new qa("Invalid unescaped " + String.fromCharCode(w) + " in attribute value", a, c)); w == s && (f = c - k, m.b += null == f ? J.substr(a, k, null) : J.substr(a, k, f), f = m.b, m = new nb, e.set(g, f), p = 0, f = 4); break; default: w == s && (f = c - k, m.b += null == f ? J.substr(a, k, null) : J.substr(a, k, f), f = m.b, m = new nb, e.set(g, f), p = 0, f = 4) } break; case 9: k = c = Ab.doParse(a, b, c, e); p = 1; break; case 10: if (!(97 <= w && 122 >= w || 65 <= w && 90 >= w || 48 <= w && 57 >= w || 58 == w || 46 == w || 95 == w || 45 == w)) { if (k == c) throw new D(new qa("Expected node name", a, c)); f = J.substr(a, k, c - k); if (d.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + d.nodeType); if (f != d.nodeName) { if (d.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + d.nodeType); throw new D(new qa("Expected ", a, c)); } p = 0; f = 12; continue } break; case 11: if (62 == w) p = 1; else throw new D(new qa("Expected >", a, c)); break; case 12: if (62 == w) return 0 == I && d.addChild(B.createPCData("")), c; throw new D(new qa("Expected >", a, c)); case 13: 60 == w ? (f = c - k, m.b += null == f ? J.substr(a, k, null) : J.substr(a, k, f), f = B.createPCData(m.b), m = new nb, d.addChild(f), ++I, p = 0, f = 2) : 38 == w && (l = c - k, m.b += null == l ? J.substr(a, k, null) : J.substr(a, k, l), p = 18, l = 13, k = c + 1); break; case 14: 63 == w && 62 == a.charCodeAt(c + 1) && (++c, w = J.substr(a, k + 1, c - k - 2), d.addChild(B.createProcessingInstruction(w)), ++I, p = 1); break; case 15: 45 == w && 45 == a.charCodeAt(c + 1) && 62 == a.charCodeAt(c + 2) && (d.addChild(B.createComment(J.substr(a, k, c - k))), ++I, c += 2, p = 1); break; case 16: 91 == w ? ++h : 93 == w ? --h : 62 == w && 0 == h && (d.addChild(B.createDocType(J.substr(a, k, c - k))), ++I, p = 1); break; case 17: 93 == w && 93 == a.charCodeAt(c + 1) && 62 == a.charCodeAt(c + 2) && (w = B.createCData(J.substr(a, k, c - k)), d.addChild(w), ++I, c += 2, p = 1); break; case 18: if (59 == w) { k = J.substr(a, k, c - k); if (35 == k.charCodeAt(0)) k = 120 == k.charCodeAt(1) ? K.parseInt("0" + J.substr(k, 1, k.length - 1)) : K.parseInt(J.substr(k, 1, k.length - 1)), m.b += String.fromCharCode(k); else if (w = Ab.escapes, null != O[k] ? w.existsReserved(k) : w.h.hasOwnProperty(k)) w = Ab.escapes, k = null != O[k] ? w.getReserved(k) : w.h[k], m.b += K.string(k); else { if (b) throw new D(new qa("Undefined entity: " + k, a, c)); m.b += K.string("&" + k + ";") } k = c + 1; p = l } else if (!(97 <= w && 122 >= w || 65 <= w && 90 >= w || 48 <= w && 57 >= w || 58 == w || 46 == w || 95 == w || 45 == w) && 35 != w) { if (b) throw new D(new qa("Invalid character in entity: " + String.fromCharCode(w), a, c)); m.b += "&"; w = c - k; m.b += null == w ? J.substr(a, k, null) : J.substr(a, k, w); k = c--; p = l } } w = a.charCodeAt(++c) } 1 == p && (k = c, p = 13); if (13 == p) { if (c != k || 0 == I) b = c - k, m.b += null == b ? J.substr(a, k, null) : J.substr(a, k, b), d.addChild(B.createPCData(m.b)); return c } if (!b && 18 == p && 13 == l) return m.b += "&", b = c - k, m.b += null == b ? J.substr(a, k, null) : J.substr(a, k, b), d.addChild(B.createPCData(m.b)), c; throw new D(new qa("Unexpected end", a, c)); }; var db = function(a) { this.output = new nb; this.pretty = a }; s["haxe.xml.Printer"] = db; db.__name__ = ["haxe", "xml", "Printer"]; db.print = function(a, b) { null == b && (b = !1); var c = new db(b); c.writeNode(a, ""); return c.output.b }; db.prototype = { writeNode: function(a, b) { switch (a.nodeType) { case 0: this.output.b += K.string(b + "<"); if (a.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + a.nodeType); this.output.b += K.string(a.nodeName); for (var c = a.attributes(); c.hasNext();) { var d = c.next(); this.output.b += K.string(" " + d + '="'); d = ma.htmlEscape(a.get(d), !0); this.output.b += K.string(d); this.output.b += '"' } if (this.hasChildren(a)) { this.output.b += ">"; this.pretty && (this.output.b += "\n"); if (a.nodeType != B.Document && a.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + a.nodeType); for (c = J.iter(a.children); c.hasNext();) d = c.next(), this.writeNode(d, this.pretty ? b + "\t" : b); this.output.b += K.string(b + "" } else this.output.b += "/>"; this.pretty && (this.output.b += "\n"); break; case 1: if (a.nodeType == B.Document || a.nodeType == B.Element) throw new D("Bad node type, unexpected " + a.nodeType); c = a.nodeValue; 0 != c.length && (c = b + ma.htmlEscape(c), this.output.b += K.string(c), this.pretty && (this.output.b += "\n")); break; case 2: this.output.b += K.string(b + ""); this.pretty && (this.output.b += "\n"); break; case 5: if (a.nodeType == B.Document || a.nodeType == B.Element) throw new D("Bad node type, unexpected " + a.nodeType); this.output.b += K.string(""); this.pretty && (this.output.b += "\n"); break; case 6: if (a.nodeType != B.Document && a.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + a.nodeType); for (c = J.iter(a.children); c.hasNext();) d = c.next(), this.writeNode(d, b) } }, hasChildren: function(a) { if (a.nodeType != B.Document && a.nodeType != B.Element) throw new D("Bad node type, expected Element or Document but found " + a.nodeType); for (a = J.iter(a.children); a.hasNext();) { var b = a.next(); switch (b.nodeType) { case 0: case 1: return !0; case 2: case 3: if (b.nodeType == B.Document || b.nodeType == B.Element) throw new D("Bad node type, unexpected " + b.nodeType); if (0 != ma.ltrim(b.nodeValue).length) return !0 } } return !1 }, __class__: db }; var D = function(a) { Error.call(this); this.val = a; this.message = String(a); Error.captureStackTrace && Error.captureStackTrace(this, D) }; s["js._Boot.HaxeError"] = D; D.__name__ = ["js", "_Boot", "HaxeError"]; D.wrap = function(a) { return a instanceof Error ? a : new D(a) }; D.__super__ = Error; D.prototype = R(Error.prototype, { __class__: D }); var bd = function() {}; s["js.Browser"] = bd; bd.__name__ = ["js", "Browser"]; bd.getLocalStorage = function() { try { var a = window.localStorage; a.getItem(""); return a } catch (b) { return null } }; var Za = function(a) { if (a instanceof Array && null == a.__enum__) this.a = a, this.byteLength = a.length; else { this.a = []; for (var b = 0; b < a;) { var c = b++; this.a[c] = 0 } this.byteLength = a } }; s["js.html.compat.ArrayBuffer"] = Za; Za.__name__ = ["js", "html", "compat", "ArrayBuffer"]; Za.sliceImpl = function(a, b) { var c = new hb(this, a, null == b ? null : b - a), d = new Nb(c.byteLength); (new hb(d)).set(c); return d }; Za.prototype = { slice: function(a, b) { return new Za(this.a.slice(a, b)) }, __class__: Za }; var Oc = function(a, b, c) { this.buf = a; this.offset = null == b ? 0 : b; this.length = null == c ? a.byteLength - this.offset : c; if (0 > this.offset || 0 > this.length || this.offset + this.length > a.byteLength) throw new D(Ka.OutsideBounds); this.byteLength = this.length; this.byteOffset = this.offset; this.buffer = this.buf }; s["js.html.compat.DataView"] = Oc; Oc.__name__ = ["js", "html", "compat", "DataView"]; Oc.prototype = { getInt8: function(a) { a = this.buf.a[this.offset + a]; return 128 <= a ? a - 256 : a }, getUint8: function(a) { return this.buf.a[this.offset + a] }, getInt16: function(a, b) { var c = this.getUint16(a, b); return 32768 <= c ? c - 65536 : c }, getUint16: function(a, b) { return b ? this.buf.a[this.offset + a] | this.buf.a[this.offset + a + 1] << 8 : this.buf.a[this.offset + a] << 8 | this.buf.a[this.offset + a + 1] }, getInt32: function(a, b) { var c = this.offset + a, d = this.buf.a[c++], e = this.buf.a[c++], f = this.buf.a[c++], c = this.buf.a[c++]; return b ? d | e << 8 | f << 16 | c << 24 : c | f << 8 | e << 16 | d << 24 }, getUint32: function(a, b) { var c = this.getInt32(a, b); return 0 > c ? c + 4294967296 : c }, getFloat32: function(a, b) { return Ua.i32ToFloat(this.getInt32(a, b)) }, getFloat64: function(a, b) { var c = this.getInt32(a, b), d = this.getInt32(a + 4, b); return Ua.i64ToDouble(b ? c : d, b ? d : c) }, setInt8: function(a, b) { this.buf.a[a + this.offset] = 0 > b ? b + 128 & 255 : b & 255 }, setUint8: function(a, b) { this.buf.a[a + this.offset] = b & 255 }, setInt16: function(a, b, c) { this.setUint16(a, 0 > b ? b + 65536 : b, c) }, setUint16: function(a, b, c) { a += this.offset; c ? (this.buf.a[a] = b & 255, this.buf.a[a++] = b >> 8 & 255) : (this.buf.a[a++] = b >> 8 & 255, this.buf.a[a] = b & 255) }, setInt32: function(a, b, c) { this.setUint32(a, b, c) }, setUint32: function(a, b, c) { a += this.offset; c ? (this.buf.a[a++] = b & 255, this.buf.a[a++] = b >> 8 & 255, this.buf.a[a++] = b >> 16 & 255, this.buf.a[a++] = b >>> 24) : (this.buf.a[a++] = b >>> 24, this.buf.a[a++] = b >> 16 & 255, this.buf.a[a++] = b >> 8 & 255, this.buf.a[a++] = b & 255) }, setFloat32: function(a, b, c) { this.setUint32(a, Ua.floatToI32(b), c) }, setFloat64: function(a, b, c) { b = Ua.doubleToI64(b); c ? (this.setUint32(a, b.low), this.setUint32(a, b.high)) : (this.setUint32(a, b.high), this.setUint32(a, b.low)) }, __class__: Oc }; var pb = function() {}; s["js.html.compat.Uint8Array"] = pb; pb.__name__ = ["js", "html", "compat", "Uint8Array"]; pb._new = function(a, b, c) { if ("number" == typeof a) { c = []; for (b = 0; b < a;) { var d = b++; c[d] = 0 } c.byteLength = c.length; c.byteOffset = 0; c.buffer = new Za(c) } else if (S.__instanceof(a, Za)) null == b && (b = 0), null == c && (c = a.byteLength - b), c = 0 == b ? a.a : a.a.slice(b, b + c), c.byteLength = c.length, c.byteOffset = b, c.buffer = a; else if (a instanceof Array && null == a.__enum__) c = a.slice(), c.byteLength = c.length, c.byteOffset = 0, c.buffer = new Za(c); else throw new D("TODO " + K.string(a)); c.subarray = pb._subarray; c.set = pb._set; return c }; pb._set = function(a, b) { if (S.__instanceof(a.buffer, Za)) { if (a.byteLength + b > this.byteLength) throw new D("set() outside of range"); for (var c = 0, d = a.byteLength; c < d;) { var e = c++; this[e + b] = a[e] } } else if (a instanceof Array && null == a.__enum__) { if (a.length + b > this.byteLength) throw new D("set() outside of range"); c = 0; for (d = a.length; c < d;) e = c++, this[e + b] = a[e] } else throw new D("TODO"); }; pb._subarray = function(a, b) { var c = pb._new(this.slice(a, b)); c.byteOffset = a; return c }; var Pc = function() { this.__enabled = !0; this.bitmapData = new X; this.font = new X; this.sound = new X }; s["openfl.AssetCache"] = Pc; Pc.__name__ = ["openfl", "AssetCache"]; Pc.prototype = { get_enabled: function() { return this.__enabled }, __class__: Pc, __properties__: { get_enabled: "get_enabled" } }; var la = function() {}; s["openfl.Assets"] = la; la.__name__ = ["openfl", "Assets"]; la.getBitmapData = function(a, b) { null == b && (b = !0); la.initialize(); var c = null, d, e, f; b ? (d = la.cache, f = d.get_enabled()) : f = !1; f ? (f = d.bitmapData, f = null != O[a] ? f.existsReserved(a) : f.h.hasOwnProperty(a)) : f = !1; f ? (e = la.cache.bitmapData, e = null != O[a] ? e.getReserved(a) : e.h[a], f = !0) : f = !1; if (f) return e; f = a.indexOf(":"); e = a.substring(0, f); f = a.substring(f + 1); e = la.getLibrary(e); null != e && e.exists(f, Y.IMAGE) && (c = e.getBitmapData(f), b ? d.get_enabled() && (d = d.bitmapData, null != O[a] ? d.setReserved(a, c) : d.h[a] = c) : c = c.clone()); return c }; la.getLibrary = function(a) { var b = la.libraries; a = null == a || "" == a ? "default" : a; return null != O[a] ? b.getReserved(a) : b.h[a] }; la.initialize = function() { la.initialized || (la.registerLibrary("default", new Ub), la.initialized = !0) }; la.registerLibrary = function(a, b) { var c = la.libraries; (null != O[a] ? c.existsReserved(a) : c.h.hasOwnProperty(a)) && la.unloadLibrary(a); c = la.libraries; null != O[a] ? c.setReserved(a, b) : c.h[a] = b }; la.unloadLibrary = function(a) { la.initialize(); for (var b = la.cache.bitmapData.keys(); b.hasNext();) { var c = b.next(); c.substring(0, c.indexOf(":")) == a && la.cache.bitmapData.remove(c) } la.libraries.remove(a) }; var Y = s["openfl.AssetType"] = { __ename__: ["openfl", "AssetType"], __constructs__: "BINARY FONT IMAGE MOVIE_CLIP MUSIC SOUND TEMPLATE TEXT".split(" ") }; Y.BINARY = ["BINARY", 0]; Y.BINARY.toString = F; Y.BINARY.__enum__ = Y; Y.FONT = ["FONT", 1]; Y.FONT.toString = F; Y.FONT.__enum__ = Y; Y.IMAGE = ["IMAGE", 2]; Y.IMAGE.toString = F; Y.IMAGE.__enum__ = Y; Y.MOVIE_CLIP = ["MOVIE_CLIP", 3]; Y.MOVIE_CLIP.toString = F; Y.MOVIE_CLIP.__enum__ = Y; Y.MUSIC = ["MUSIC", 4]; Y.MUSIC.toString = F; Y.MUSIC.__enum__ = Y; Y.SOUND = ["SOUND", 5]; Y.SOUND.toString = F; Y.SOUND.__enum__ = Y; Y.TEMPLATE = ["TEMPLATE", 6]; Y.TEMPLATE.toString = F; Y.TEMPLATE.__enum__ = Y; Y.TEXT = ["TEXT", 7]; Y.TEXT.toString = F; Y.TEXT.__enum__ = Y; var Sa = function(a, b, c) { Fa.call(this); this.set_bitmapData(a) }; s["openfl.display.Bitmap"] = Sa; Sa.__name__ = ["openfl", "display", "Bitmap"]; Sa.__interfaces__ = [Pa]; Sa.__super__ = Fa; Sa.prototype = R(Fa.prototype, { set_bitmapData: function(a) { null != this.bitmapData && this.component.removeChild(this.bitmapData.component); null != a && this.component.appendChild(a.handle()); return this.bitmapData = a }, get_width: function() { return null != this.__width ? this.__width : null != this.bitmapData ? this.bitmapData.component.width : 0 }, get_height: function() { return null != this.__height ? this.__height : null != this.bitmapData ? this.bitmapData.component.height : 0 }, drawToSurface: function(a, b, c, d, e, f, r) { this.bitmapData.drawToSurface(a, b, c, d, e, f, r) }, hitTestLocal: function(a, b, c, d) { return (!d || this.visible) && null != this.bitmapData && 0 <= a && 0 <= b && a < this.bitmapData.component.width ? b < this.bitmapData.component.height : !1 }, __class__: Sa, __properties__: R(Fa.prototype.__properties__, { set_bitmapData: "set_bitmapData" }) }); var cd = function() {}; s["openfl.display.IGraphics"] = cd; cd.__name__ = ["openfl", "display", "IGraphics"]; cd.__interfaces__ = [Pa]; var ub = function() { this.rgPending = !1; this.synced = !0; this.component = H.jsNode("canvas"); this.context = this.component.getContext("2d", null); this.context.save(); this.bounds = new pa; this.resetBounds(); this.irec = []; this.frec = []; this.arec = []; this.lineWidth = this.ilen = this.flen = this.alen = 0 }; s["openfl.display.Graphics"] = ub; ub.__name__ = ["openfl", "display", "Graphics"]; ub.__interfaces__ = [cd, Pa]; ub.prototype = { regenerate: function() { var a = this.component, b = this.component.style, c = this.context, d = this.bounds, e = ~~(d.x - 2), f = ~~(d.y - 2), r = Math.ceil(d.width + 4), g = Math.ceil(d.height + 4); this.synced = !0; this.rgPending = !1; if (0 >= d.width || 0 >= d.height) a.width = a.height = 1, b.top = b.left = "0"; else { if (this.offsetX != e || this.offsetY != f) b.left = (this.offsetX = e) + "px", b.top = (this.offsetY = f) + "px"; r != a.width || g != a.height ? (a.width = r, a.height = g) : c.clearRect(0, 0, r, g); c.save(); c.translate(-e, -f); this.render(a, c); c.restore() } }, regenerateTask: function() { this.rgPending && this.regenerate() }, requestRegeneration: function() { H.schedule(ea(this, this.regenerateTask)); this.rgPending = !0 }, set_displayObject: function(a) { this.displayObject != a && (this.displayObject = a, this.synced || this.requestRegeneration()); return a }, resetBounds: function() { this.bounds.setVoid(); this.invalidate() }, grab: function(a, b, c, d) { var e = this.bounds.x; a < e && (e -= a, this.bounds.x -= e, this.bounds.width += e); e = this.bounds.y; b < e && (e -= b, this.bounds.y -= e, this.bounds.height += e); a = this.bounds; e = a.x + a.width; c > e && (this.bounds.width += c - e); c = this.bounds; e = c.y + c.height; d > e && (this.bounds.height += d - e); this.invalidate() }, invalidate: function() { this.synced && (this.synced = !1, this.rgPending || null == this.displayObject || null == this.displayObject.get_stage() || this.requestRegeneration()) }, clear: function() { for (var a = 0; a < this.alen;) this.arec[a++] = null; this.lineWidth = this.ilen = this.flen = this.alen = 0; this.resetBounds(); this.invalidate() }, lineStyle: function(a, b, c, d, e, f, r, g) { this.irec[this.ilen++] = 1; this.frec[this.flen++] = this.lineWidth = 0 < a ? a : 0; 0 < a && (a = H.rgbf(null != b ? b : 0, null != c ? c : 1), this.arec[this.alen++] = a, this.irec[this.ilen++] = "none" == f ? 2 : "square" == f ? 1 : 0, this.irec[this.ilen++] = "bevel" == r ? 2 : "miter" == r ? 1 : 0) }, beginFill: function(a, b) { this.irec[this.ilen++] = 2; var c = H.rgbf(null != a ? a : 0, null != b ? b : 1); this.arec[this.alen++] = c }, beginBitmapFill: function(a, b, c, d) { this.irec[this.ilen++] = 3; this.arec[this.alen++] = a; this.irec[this.ilen++] = !1 != c ? 1 : 0; a = null != b ? 1 : 0; if (this.irec[this.ilen++] = a) a = this.frec, c = this.flen, a[c++] = b.a, a[c++] = b.b, a[c++] = b.c, a[c++] = b.d, a[c++] = b.tx, a[c++] = b.ty, this.flen = c }, endFill: function() { this.irec[this.ilen++] = 9; this.invalidate() }, moveTo: function(a, b) { this.irec[this.ilen++] = 10; this.frec[this.flen++] = a; this.frec[this.flen++] = b; var c = this.lineWidth / 2; this.grab(a - c, b - c, a + c, b + c) }, lineTo: function(a, b) { this.irec[this.ilen++] = 11; this.frec[this.flen++] = a; this.frec[this.flen++] = b; var c = this.lineWidth / 2; this.grab(a - c, b - c, a + c, b + c) }, drawRect: function(a, b, c, d) { this.irec[this.ilen++] = 13; var e = this.frec, f = this.flen; e[f++] = a; e[f++] = b; e[f++] = c; e[f++] = d; this.flen = f; e = this.lineWidth / 2; this.grab(a - e, b - e, a + c + e, b + d + e) }, drawCircle: function(a, b, c) { this.irec[this.ilen++] = 14; var d = this.frec, e = this.flen; d[e++] = a; d[e++] = b; d[e++] = c; this.flen = e; c += this.lineWidth / 2; this.grab(a - c, b - c, a + c, b + c) }, drawToSurface: function(a, b, c, d, e, f, r) { b.save(); null != c && b.transform(c.a, c.b, c.c, c.d, c.tx, c.ty); this.render(a, b); b.restore() }, hitTestLocal: function(a, b, c) { if (this.bounds.contains(a, b)) { if (c) { this.synced || this.regenerate(); try { return 0 != this.context.getImageData(a - this.offsetX, b - this.offsetY, 1, 1).data[3] } catch (d) {} } return !0 } return !1 }, _closePath: function(a, b, c, d, e) { c & 1 && (b.closePath(), c & 4 ? (b.save(), b.transform(d.a, d.b, d.c, d.d, d.tx, d.ty), b.fillStyle = b.createPattern(e, c & 8 ? "repeat" : "no-repeat"), b.fill(), b.restore()) : b.fill()); c & 2 && b.stroke(); b.beginPath(); return c }, render: function(a, b) { var c = 0, d = this._drawMatrix, e, f, r, g = 0, k = null, h = this.irec, m = -1, w = this.ilen - 1, l = this.arec, s = -1, n = this.frec, q = -1; null == d && (this._drawMatrix = d = new na); b.save(); try { for (; m < w;) switch (f = h[++m], f) { case 0: throw "__break__"; case 1: 0 < g && (c = this._closePath(a, b, c, d, k)); r = n[++q]; b.lineWidth = r; 0 < r ? (c |= 2, b.strokeStyle = l[++s], f = h[++m], b.lineCap = 2 == f ? "butt" : 1 == f ? "square" : "round", f = h[++m], b.lineJoin = 2 == f ? "bevel" : 1 == f ? "miter" : "round") : (c &= -3, b.strokeStyle = null); break; case 2: case 3: case 4: 0 < g && (c = this._closePath(a, b, c, d, k)); c |= 1; 3 == f ? (k = l[++s].handle(), f = h[++m], 0 != h[++m] ? (c = 0 != f ? c | 8 : c & -9, d.a = n[++q], d.b = n[++q], d.c = n[++q], d.d = n[++q], d.tx = n[++q], d.ty = n[++q], c |= 4) : (b.fillStyle = b.createPattern(k, 0 != f ? "repeat" : "no-repeat"), c &= -5)) : (b.fillStyle = l[++s], c &= -5); g = 0; break; case 9: 0 < g && (c = this._closePath(a, b, c, d, k), g = 0); c &= -2; break; case 10: b.moveTo(n[++q], n[++q]); ++g; break; case 11: b.lineTo(n[++q], n[++q]); ++g; break; case 12: b.quadraticCurveTo(n[++q], n[++q], n[++q], n[++q]); ++g; break; case 13: b.rect(n[++q], n[++q], n[++q], n[++q]); ++g; break; case 14: var v = n[++q], x = n[++q], u = n[++q]; 0 > u && (u = -u); b.moveTo(v + u, x); 0 != u && b.arc(v, x, u, 0, 2 * Math.PI, !0); ++g; break; case 15: var t = n[++q], y = n[++q], A = n[++q], z = n[++q], B = n[++q], E = n[++q]; null == E ? (b.moveTo(t + B, y + z), b.arcTo(t + A - B, y + z - B, t + A, y + z - B, B), b.arcTo(t + A, y + B, t + A - B, y, B), b.arcTo(t + B, y, t, y + B, B), b.arcTo(t + B, y + z - B, t + B, y + z, B)) : (b.moveTo(t + B, y + z), b.lineTo(t + A - B, y + z), b.quadraticCurveTo(t + A, y + z, t + A, y + z - E), b.lineTo(t + A, y + E), b.quadraticCurveTo(t + A, y, t + A - B, y), b.lineTo(t + B, y), b.quadraticCurveTo(t, y, t, y + E), b.lineTo(t, y + z - E), b.quadraticCurveTo(t, y + z, t + B, y + z)); ++g; break; case 16: var F = l[++s].handle(), C = h[++m], G = 0 != (C & 1), H = 0 != (C & 2), J = 0 != (C & 8), K = 0 != (C & 16), L = h[++m], M, Q, O, T, W, N, P, R; b.save(); for (b.globalCompositeOperation = 0 != (C & 65536) ? "lighter" : "source-over"; 0 <= --L;) M = n[++q], Q = n[++q], O = n[++q], T = n[++q], W = n[++q], N = n[++q], P = n[++q], R = n[++q], b.save(), K ? b.transform(n[++q], n[++q], n[++q], n[++q], M, Q) : (b.translate(M, Q), G && (e = n[++q], b.scale(e, e)), H && b.rotate(n[++q])), J && (b.globalAlpha = n[++q]), b.drawImage(F, W, N, P, R, -O, -T, P, R), b.restore(); b.restore(); break; case 17: var S = n[++q], aa = n[++q], ca = n[++q], Y = n[++q], G = S + ca / 2, H = aa + Y / 2, J = S + ca, K = aa + Y, Z = 0.275892 * ca, da = 0.275892 * Y; b.moveTo(G, aa); b.bezierCurveTo(G + Z, aa, J, H - da, J, H); b.bezierCurveTo(J, H + da, G + Z, K, G, K); b.bezierCurveTo(G - Z, K, S, H + da, S, H); b.bezierCurveTo(S, H - da, G - Z, aa, G, aa); ++g; break; default: throw new D(4E3 + f); } } catch (X) { if ("__break__" != X) throw X; } 0 < g && this._closePath(a, b, c, d, k); b.restore() }, __class__: ub, __properties__: { set_displayObject: "set_displayObject" } }; var Xa = s["openfl.display.PixelSnapping"] = { __ename__: ["openfl", "display", "PixelSnapping"], __constructs__: ["ALWAYS", "AUTO", "NEVER"] }; Xa.ALWAYS = ["ALWAYS", 0]; Xa.ALWAYS.toString = F; Xa.ALWAYS.__enum__ = Xa; Xa.AUTO = ["AUTO", 1]; Xa.AUTO.toString = F; Xa.AUTO.__enum__ = Xa; Xa.NEVER = ["NEVER", 2]; Xa.NEVER.toString = F; Xa.NEVER.__enum__ = Xa; var gb = function() { (this.graphics = new ub).set_displayObject(this); this.component = this.graphics.component; Fa.call(this) }; s["openfl.display.Shape"] = gb; gb.__name__ = ["openfl", "display", "Shape"]; gb.__interfaces__ = [Pa]; gb.__super__ = Fa; gb.prototype = R(Fa.prototype, { drawToSurface: function(a, b, c, d, e, f, r) { this.graphics.drawToSurface(a, b, c, d, e, f, r) }, set_stage: function(a) { var b = null == this.get_stage() && null != a; a = Fa.prototype.set_stage.call(this, a); b && this.graphics.invalidate(); return a }, hitTestLocal: function(a, b, c, d) { return !d || this.visible ? this.graphics.hitTestLocal(a, b, c) : !1 }, __class__: gb }); var Bc = function(a) { this.nmeBitmap = a; this.qOffsets = []; this.qRects = []; this.bounds = new pa; this.tile = new pa; this.matrix = new na }; s["openfl.display.Tilesheet"] = Bc; Bc.__name__ = ["openfl", "display", "Tilesheet"]; Bc.prototype = { addTileRect: function(a, b) { null == b && (b = new xa); this.qRects.push(a); this.qOffsets.push(b); return this.qRects.length - 1 }, __class__: Bc }; var Bb = function(a, b) { null == b && (b = 0); null == a && (a = ""); this.message = a; this.errorID = b }; s["openfl.errors.Error"] = Bb; Bb.__name__ = ["openfl", "errors", "Error"]; Bb.prototype = { toString: function() { return null != this.message ? this.message : "Error" }, __class__: Bb }; var fa = function(a, b, c) { null == c && (c = !1); null == b && (b = !1); this.type = a; this.bubbles = b; this.cancelable = c }; s["openfl.events.Event"] = fa; fa.__name__ = ["openfl", "events", "Event"]; fa.prototype = { get_target: function() { return this._target || this.target }, set_target: function(a) { return this._target = a }, set_currentTarget: function(a) { return this._current = a }, __class__: fa, __properties__: { set_currentTarget: "set_currentTarget", set_target: "set_target", get_target: "get_target" } }; var Ob = function(a, b, c, d) { null == d && (d = ""); null == c && (c = !1); null == b && (b = !1); fa.call(this, a, b, c); this.text = d }; s["openfl.events.TextEvent"] = Ob; Ob.__name__ = ["openfl", "events", "TextEvent"]; Ob.__super__ = fa; Ob.prototype = R(fa.prototype, { __class__: Ob }); var Cb = function(a, b, c, d) { Ob.call(this, a, b, c); this.text = d }; s["openfl.events.ErrorEvent"] = Cb; Cb.__name__ = ["openfl", "events", "ErrorEvent"]; Cb.__super__ = Ob; Cb.prototype = R(Ob.prototype, { __class__: Cb }); var qb = function(a, b, c, d) { null == d && (d = 0); null == c && (c = !1); null == b && (b = !1); this.status = d; fa.call(this, a, b, c) }; s["openfl.events.HTTPStatusEvent"] = qb; qb.__name__ = ["openfl", "events", "HTTPStatusEvent"]; qb.__super__ = fa; qb.prototype = R(fa.prototype, { __class__: qb }); var ec = function(a, b, c, d) { null == d && (d = ""); null == c && (c = !1); null == b && (b = !1); fa.call(this, a, b, c); this.text = d }; s["openfl.events.IOErrorEvent"] = ec; ec.__name__ = ["openfl", "events", "IOErrorEvent"]; ec.__super__ = fa; ec.prototype = R(fa.prototype, { __class__: ec }); var Qc = function(a, b, c, d, e) { null == e && (e = 0); null == d && (d = 0); null == c && (c = !1); null == b && (b = !0); fa.call(this, a, b, c); this.keyCode = e; this.charCode = d }; s["openfl.events.KeyboardEvent"] = Qc; Qc.__name__ = ["openfl", "events", "KeyboardEvent"]; Qc.__super__ = fa; Qc.prototype = R(fa.prototype, { __class__: Qc }); var rb = function(a, b, c) { fa.call(this, a, b, c) }; s["openfl.events.UIEvent"] = rb; rb.__name__ = ["openfl", "events", "UIEvent"]; rb.__super__ = fa; rb.prototype = R(fa.prototype, { __class__: rb }); var fb = function(a, b, c, d, e, f, r, g, k, h, m) { fa.call(this, a, null != b ? b : !0, null != c && c); this.ctrlKey = null != r && r; this.altKey = null != g && g; this.shiftKey = null != k && k; this.relatedObject = f; this.buttonDown = null != h && h; this.delta = null != m ? m : 0 }; s["openfl.events.MouseEvent"] = fb; fb.__name__ = ["openfl", "events", "MouseEvent"]; fb.__super__ = rb; fb.prototype = R(rb.prototype, { __class__: fb }); var Yb = function(a, b, c, d, e) { null == e && (e = 0); null == d && (d = 0); null == c && (c = !1); null == b && (b = !1); fa.call(this, a, b, c); this.bytesLoaded = d; this.bytesTotal = e }; s["openfl.events.ProgressEvent"] = Yb; Yb.__name__ = ["openfl", "events", "ProgressEvent"]; Yb.__super__ = fa; Yb.prototype = R(fa.prototype, { __class__: Yb }); var Pb = function(a, b, c, d) { null == d && (d = ""); null == c && (c = !1); null == b && (b = !1); Cb.call(this, a, b, c); this.text = d }; s["openfl.events.SecurityErrorEvent"] = Pb; Pb.__name__ = ["openfl", "events", "SecurityErrorEvent"]; Pb.__super__ = Cb; Pb.prototype = R(Cb.prototype, { __class__: Pb }); var lc = function(a, b, c, d, e, f, r, g, k, h, m, w, l, n) { fa.call(this, a, b, c); this.altKey = l; this.shiftKey = n; this.ctrlKey = w; this.touchPointID = d; this.sizeX = g; this.sizeY = k; this.pressure = h }; s["openfl.events.TouchEvent"] = lc; lc.__name__ = ["openfl", "events", "TouchEvent"]; lc.__super__ = rb; lc.prototype = R(rb.prototype, { __class__: lc }); var rd = function() {}; s["openfl.filters.BitmapFilter"] = rd; rd.__name__ = ["openfl", "filters", "BitmapFilter"]; var sb = function(a, b) { this.eventList = new X; null != a && this.load(a, b) }; s["openfl.media.Sound"] = sb; sb.__name__ = ["openfl", "media", "Sound"]; sb.__super__ = ta; sb.prototype = R(ta.prototype, { load: function(a, b) { var c = a.url, d = sb.library; if (null != d && (null != O[c] ? d.existsReserved(c) : d.h.hasOwnProperty(c))) { this.component = null != O[c] ? d.getReserved(c) : d.h[c]; var d = sb.library, e = this.component.cloneNode(!0); null != O[c] ? d.setReserved(c, e) : d.h[c] = e } else this.component = new u(c); this.qCache = [] }, __class__: sb }); var Rc = function() { this.eventList = new X }; s["openfl.media.SoundChannel"] = Rc; Rc.__name__ = ["openfl", "media", "SoundChannel"]; Rc.__super__ = ta; Rc.prototype = R(ta.prototype, { __class__: Rc }); var sd = function() {}; s["openfl.media.SoundLoaderContext"] = sd; sd.__name__ = ["openfl", "media", "SoundLoaderContext"]; var gc = function() {}; s["openfl.net.IURLLoader"] = gc; gc.__name__ = ["openfl", "net", "IURLLoader"]; gc.__interfaces__ = [Sb]; gc.prototype = { __class__: gc }; var ya = function() { this.eventList = new X }; s["openfl.net.SharedObject"] = ya; ya.__name__ = ["openfl", "net", "SharedObject"]; ya.getLocal = function(a, b, c) { null == b && (b = window.location.href); c = new ya; c.nmeKey = b + ":" + a; a = null; try { a = ya.nmeGetLocalStorage().getItem(c.nmeKey) } catch (d) {} c.data = {}; null != a && "" != a && (a = new Qa(a), a.setResolver({ resolveEnum: U.resolveEnum, resolveClass: ya.resolveClass }), c.data = a.unserialize()); null == c.data && (c.data = {}); return c }; ya.nmeGetLocalStorage = function() { var a = bd.getLocalStorage(); if (null == a) throw new D(new Bb("SharedObject not supported")); return a }; ya.resolveClass = function(a) { return null != a ? U.resolveClass(ma.replace(ma.replace(a, "jeash.", "openfl."), "browser.", "openfl.")) : null }; ya.__super__ = ta; ya.prototype = R(ta.prototype, { flush: function() { var a = Ia.run(this.data); try { ya.nmeGetLocalStorage().removeItem(this.nmeKey), ya.nmeGetLocalStorage().setItem(this.nmeKey, a) } catch (b) { return eb.PENDING } return eb.FLUSHED }, __class__: ya }); var eb = s["openfl.net.SharedObjectFlushStatus"] = { __ename__: ["openfl", "net", "SharedObjectFlushStatus" ], __constructs__: ["FLUSHED", "PENDING"] }; eb.FLUSHED = ["FLUSHED", 0]; eb.FLUSHED.toString = F; eb.FLUSHED.__enum__ = eb; eb.PENDING = ["PENDING", 1]; eb.PENDING.toString = F; eb.PENDING.__enum__ = eb; var Zb = function(a) { this.eventList = new X; this.bytesLoaded = this.bytesTotal = 0; this.set_dataFormat(1); null != a && this.load(a) }; s["openfl.net.URLLoader"] = Zb; Zb.__name__ = ["openfl", "net", "URLLoader"]; Zb.__interfaces__ = [gc]; Zb.__super__ = ta; Zb.prototype = R(ta.prototype, { set_dataFormat: function(a) { return this.dataFormat = 0 == a && null == window.ArrayBuffer ? 1 : a }, getData: function() { return null }, load: function(a) { this.requestUrl(a.url, a.method, a.data, a.formatRequestHeaders()) }, registerEvents: function(a) { var b = this; "undefined" != typeof XMLHttpRequestProgressEvent && a.addEventListener("progress", ea(this, this.onProgress), !1); a.onreadystatechange = function() { if (4 == a.readyState) { var c; try { c = a.status } catch (d) { c = null } if (null != c) b.onStatus(c); if (null == c) b.onError("Failed to connect or resolve host"); else if (200 <= c && 400 > c) b.onData(a.response); else if (12029 == c) b.onError("Failed to connect to host"); else if (12007 == c) b.onError("Unknown host"); else if (0 == c) b.onError("Unable to make request (may be blocked due to cross-domain permissions)"), b.onSecurityError("Unable to make request (may be blocked due to cross-domain permissions)"); else b.onError("Http Error #" + a.status) } } }, requestUrl: function(a, b, c, d) { var e = new XMLHttpRequest; this.getData = function() { return null != e.response ? e.response : e.responseText }; this.registerEvents(e); var f = ""; if (S.__instanceof(c, zb)) f = 0 == this.dataFormat ? c.data.buffer : c.readUTFBytes(c.length); else if (S.__instanceof(c, ld)) for (var r = 0, g = Z.fields(c); r < g.length;) { var k = g[r]; ++r; 0 != f.length && (f += "&"); var h = encodeURIComponent(k) + "=", k = Z.field(c, k), f = f + (h + encodeURIComponent(k)) } else null != c && (f = c.toString()); try { if ("GET" == b && null != f && "" != f) { var m = 1 >= a.split("?").length; e.open(b, a + (m ? "?" : "&") + K.string(f), !0); f = "" } else e.open(b, a, !0) } catch (w) { w instanceof D && (w = w.val); this.onError(w.toString()); return } 0 == this.dataFormat && (e.responseType = "arraybuffer"); for (a = 0; a < d.length;) b = d[a], ++a, e.setRequestHeader(b.name, b.value); e.send(f); this.onOpen() }, onData: function(a) { a = a ? a : this.getData(); this.data = 0 == this.dataFormat ? zb.nmeOfBuffer(a) : K.string(a); a = new fa("complete"); a.set_currentTarget(this); this.dispatchEvent(a) }, onError: function(a) { var b = new ec("ioError"); b.text = a; b.set_currentTarget(this); this.dispatchEvent(b) }, onOpen: function() { var a = new fa("open"); a.set_currentTarget(this); this.dispatchEvent(a) }, onProgress: function(a) { var b = new Yb("progress"); b.set_currentTarget(this); b.bytesLoaded = a.loaded; b.bytesTotal = a.total; this.dispatchEvent(b) }, onSecurityError: function(a) { var b = new Pb("securityError"); b.text = a; b.set_currentTarget(this); this.dispatchEvent(b) }, onStatus: function(a) { a = new qb("httpStatus", !1, !1, a); a.set_currentTarget(this); this.dispatchEvent(a) }, __class__: Zb, __properties__: { set_dataFormat: "set_dataFormat" } }); var uc = function(a, b) { null == b && (b = ""); null == a && (a = ""); this.name = a; this.value = b }; s["openfl.net.URLRequestHeader"] = uc; uc.__name__ = ["openfl", "net", "URLRequestHeader"]; uc.prototype = { __class__: uc }; var ld = function() {}; s["openfl.net.URLVariables"] = ld; ld.__name__ = ["openfl", "net", "URLVariables"]; var td = function() {}; s["openfl.text.Font"] = td; td.__name__ = ["openfl", "text", "Font"]; var kd = function() {}; s["openfl.ui.Multitouch"] = kd; kd.__name__ = ["openfl", "ui", "Multitouch"]; var Ta = s["openfl.ui.MultitouchInputMode"] = { __ename__: ["openfl", "ui", "MultitouchInputMode"], __constructs__: ["GESTURE", "NONE", "TOUCH_POINT"] }; Ta.GESTURE = ["GESTURE", 0]; Ta.GESTURE.toString = F; Ta.GESTURE.__enum__ = Ta; Ta.NONE = ["NONE", 1]; Ta.NONE.toString = F; Ta.NONE.__enum__ = Ta; Ta.TOUCH_POINT = ["TOUCH_POINT", 2]; Ta.TOUCH_POINT.toString = F; Ta.TOUCH_POINT.__enum__ = Ta; var zb = function() { this.length = 0; this._nmeResizeBuffer(this.allocated = this.position = 0) }; s["openfl.utils.ByteArray"] = zb; zb.__name__ = ["openfl", "utils", "ByteArray"]; zb.fromBytes = function(a) { var b = new zb; b.byteView = new hb(a.b.bufferValue); b.set_length(b.byteView.length); b.allocated = b.length; return b }; zb.nmeOfBuffer = function(a) { var b = new zb; b.set_length(b.allocated = a.byteLength); b.data = new ud(a); b.byteView = new hb(a); return b }; zb.prototype = { _nmeResizeBuffer: function(a) { var b = this.byteView, c = new hb(a); null != b && (b.length <= a ? c.set(b) : c.set(b.subarray(0, a))); this.byteView = c; this.data = new ud(c.buffer) }, readUTFBytes: function(a) { var b = ""; for (a = this.position + a; this.position < a;) { var c = this.data.getUint8(this.position++); if (128 > c) { if (0 == c) break; b += String.fromCharCode(c) } else if (224 > c) b += String.fromCharCode((c & 63) << 6 | this.data.getUint8(this.position++) & 127); else if (240 > c) var d = this.data.getUint8(this.position++), b = b + String.fromCharCode((c & 31) << 12 | (d & 127) << 6 | this.data.getUint8(this.position++) & 127); else var d = this.data.getUint8(this.position++), e = this.data.getUint8(this.position++), b = b + String.fromCharCode((c & 15) << 18 | (d & 127) << 12 | e << 6 & 127 | this.data.getUint8(this.position++) & 127) } return b }, set_length: function(a) { this.allocated < a ? this._nmeResizeBuffer(this.allocated = Math.max(a, 2 * this.allocated) | 0) : this.allocated > a && this._nmeResizeBuffer(this.allocated = a); return this.length = a }, __class__: zb, __properties__: { set_length: "set_length" } }; var dd = function() {}; s["haxe.lang.Iterator"] = dd; dd.__name__ = ["haxe", "lang", "Iterator"]; dd.prototype = { __class__: dd }; var ed = function() {}; s["haxe.lang.Iterable"] = ed; ed.__name__ = ["haxe", "lang", "Iterable"]; ed.prototype = { __class__: ed }; var fd = function() { this.time = 0; this.frameRate = l.FPS; this.isLooping = !1; this.doc = null; this.frameRate = l.FPS; this.time = 0 }; s["oz.Animation2D"] = fd; fd.__name__ = ["oz", "Animation2D"]; fd.prototype = { Update: function(a) { null == a && (a = -1); - 0.5 > a && (a = 1 / l.FPS); var b = Math.floor(this.time * this.frameRate + 1E-4); b >= this.frames && (b = this.isLooping ? b % this.frames : this.frames - 1); for (var c = 0, d = this.elements.length; c < d;) { var e = c++; this.elements[e].Update(this.doc.getChild(this.elements[e].name), b) } this.time += a }, __class__: fd }; var hc = function() {}; s["oz.Easing"] = hc; hc.__name__ = ["oz", "Easing"]; hc.prototype = { __class__: hc }; var Qb = function() {}; s["oz.LinearEaseNone"] = Qb; Qb.__name__ = ["oz", "LinearEaseNone"]; Qb.__interfaces__ = [hc]; Qb.prototype = { calculate: function(a) { return a }, __class__: Qb }; var mc = function() {}; s["oz.QuadEaseIn"] = mc; mc.__name__ = ["oz", "QuadEaseIn"]; mc.__interfaces__ = [hc]; mc.prototype = { calculate: function(a) { return a * a }, __class__: mc }; var Ec = function() {}; s["oz.QuadEaseOut"] = Ec; Ec.__name__ = ["oz", "QuadEaseOut"]; Ec.__interfaces__ = [hc]; Ec.prototype = { calculate: function(a) { return -a * (a - 2) }, __class__: Ec }; var Ca = function() {}; s["oz.Ease"] = Ca; Ca.__name__ = ["oz", "Ease"]; var gd = function(a, b, c, d, e, f, r, g, k, h, m, w, l) { this.name = this.mcName = null; this.keyframes = []; this.mcName = b; this.name = c; this.x = d; this.y = e; this.scaleX = f; this.scaleY = r; this.rotation = g; this.r = k; this.g = h; this.b = m; this.a = w }; s["oz.Element2D"] = gd; gd.__name__ = ["oz", "Element2D"]; gd.prototype = { Update: function(a, b) { for (var c = null, d = null, e = 0, f = this.keyframes.length; e < f;) { var r = e++, r = this.keyframes[r]; r.frame <= b && (c = r); r.frame > b && null == d && (d = r) } null == d ? (d = c, e = 1) : e = (b - c.frame) / (d.frame - c.frame); f = c.y + e * (d.y - c.y); a.set_x(c.x + e * (d.x - c.x)); a.set_y(f); a.set_scaleX(c.scaleX + e * (d.scaleX - c.scaleX)); a.set_scaleY(c.scaleY + e * (d.scaleY - c.scaleY)); f = c.rotation; for (r = d.rotation; 0 > f;) f += 360; for (; 0 > r;) r += 360; var g = r - 360; Math.abs(r - f) > Math.abs(g - f) && (r = g); g = r + 360; Math.abs(r - f) > Math.abs(g - f) && (r = g); a.set_rotation(f + e * (r - f)); a.set_alpha(c.a + e * (d.a - c.a)) }, __class__: gd }; var hd = function(a, b, c, d, e, f, r, g, k, h) { this.frame = a; this.x = b; this.y = c; this.scaleX = d; this.scaleY = e; this.rotation = f; this.r = r; this.g = g; this.b = k; this.a = h }; s["oz.Keyframe2D"] = hd; hd.__name__ = ["oz", "Keyframe2D"]; hd.prototype = { __class__: hd }; var Hb = function(a, b) { null == b && (b = 1); this.target = a; this.type = b }; s["oz.OzEvent"] = Hb; Hb.__name__ = ["oz", "OzEvent"]; Hb.prototype = { txy: function(a, b, c) { this.target = a; this.eventX = b; this.eventY = c; return this }, __class__: Hb }; var Jc = function() { this.defaultKern = 0; this.chars = []; this.kernings = []; this.registered = !1 }; s["oz.OzFont"] = Jc; Jc.__name__ = ["oz", "OzFont"]; Jc.prototype = { RegisterCharacters: function() { if (!this.registered) { this.registered = !0; this.frames = []; this.movieClips = []; for (var a = 0, b = 0, c = this.chars.length; b < c;) { var d = b++; null != this.chars[d] && 32 != d && (this.frames.push([this.chars[d].x, this.chars[d].y, this.chars[d].width, this.chars[d].height, 0, 0]), this.movieClips.push(new M("_f" + this.face + "-" + this.chars[d].letter, [a], -1)), this.chars[d].movieClip = this.movieClips[this.movieClips.length - 1], ++a) } f.RegisterTilesheet(this.bitmapName, this.movieClips, this.frames); this.tilesheetId = this.movieClips[0].tilesheetId } }, __class__: Jc }; var T = function() { this.identity() }; s["oz.OzMatrix"] = T; T.__name__ = ["oz", "OzMatrix"]; T.getCurrentMatrix = function() { return T.matrixStack[T.matrixId] }; T.InitPool = function() { T.matrixStack = []; for (var a = 0; 200 > a;) { var b = a++; T.matrixStack[b] = new T } T.matrixId = 0; T.DEG2RAD = Math.PI / 180; T.RAD2DEG = 180 / Math.PI; T.um = new T }; T.PushMatrix = function() { T.matrixStack[T.matrixId + 1].copy(T.matrixStack[T.matrixId]); T.matrixId++ }; T.PopMatrix = function() { T.matrixId-- }; T.getTemp = function(a) { return T.matrixStack[T.matrixId + a] }; T.Multiply = function(a, b, c) { var d = b.m00 * c.m01 + b.m01 * c.m11 + b.m02 * c.m21, e = b.m00 * c.m02 + b.m01 * c.m12 + b.m02 * c.m22, f = b.m10 * c.m00 + b.m11 * c.m10 + b.m12 * c.m20, r = b.m10 * c.m01 + b.m11 * c.m11 + b.m12 * c.m21, g = b.m10 * c.m02 + b.m11 * c.m12 + b.m12 * c.m22, k = b.m20 * c.m00 + b.m21 * c.m10 + b.m22 * c.m20, h = b.m20 * c.m01 + b.m21 * c.m11 + b.m22 * c.m21, m = b.m20 * c.m02 + b.m21 * c.m12 + b.m22 * c.m22; a.m00 = b.m00 * c.m00 + b.m01 * c.m10 + b.m02 * c.m20; a.m01 = d; a.m02 = e; a.m10 = f; a.m11 = r; a.m12 = g; a.m20 = k; a.m21 = h; a.m22 = m; a.transformed = !0 }; T.prototype = { identity: function() { this.m00 = 1; this.m10 = this.m02 = this.m01 = 0; this.m11 = 1; this.m21 = this.m20 = this.m12 = 0; this.m22 = 1; this.transformed = !1 }, copy: function(a) { this.m00 = a.m00; this.m01 = a.m01; this.m02 = a.m02; this.m10 = a.m10; this.m11 = a.m11; this.m12 = a.m12; this.m20 = a.m20; this.m21 = a.m21; this.m22 = a.m22 }, PostTranslate: function(a, b) { T.um.Translation(a, b); T.Multiply(this, this, T.um) }, PostScale: function(a, b) { T.um.Scaling(a, b); T.Multiply(this, this, T.um) }, PostRotate: function(a) { T.um.Rotation(a); T.Multiply(this, this, T.um) }, toString: function() { var a = "Mtrans=" + K.string(this.transformed) + "\n", a = a + ("{" + this.m00 + ":" + this.m01 + ":" + this.m02 + "}\n"), a = a + ("{" + this.m10 + ":" + this.m11 + ":" + this.m12 + "}\n"); return a += "{" + this.m20 + ":" + this.m21 + ":" + this.m22 + "}\n" }, Rotation: function(a) { a *= T.DEG2RAD; this.m00 = Math.cos(a); this.m01 = -Math.sin(a); this.m02 = 0; this.m10 = -this.m01; this.m11 = this.m00; this.m21 = this.m20 = this.m12 = 0; this.m22 = 1; this.transformed = !0 }, Translation: function(a, b) { this.m00 = 1; this.m01 = 0; this.m02 = a; this.m10 = 0; this.m11 = 1; this.m12 = b; this.m21 = this.m20 = 0; this.m22 = 1; this.transformed = !1 }, Scaling: function(a, b) { this.m00 = a; this.m10 = this.m02 = this.m01 = 0; this.m11 = b; this.m21 = this.m20 = this.m12 = 0; this.m22 = 1; this.transformed = !0 }, toMatrix: function(a) { a.a = this.m00; a.c = this.m01; a.tx = this.m02; a.b = this.m10; a.d = this.m11; a.ty = this.m12 }, outside: function(a, b, c, d, e, f, r) { null == r && (r = 0); null == f && (f = 0); null == e && (e = !1); var g = null; e ? (T.um.Translation(f, r), T.Multiply(T.um, this, T.um), g = T.um) : g = this; var k = g.m02; e = g.m12; var h = a * g.m00 + g.m02; f = a * g.m10 + g.m12; var m = b * g.m01 + g.m02; r = b * g.m11 + g.m12; var w = a * g.m00 + b * g.m01 + g.m02, g = a * g.m10 + b * g.m11 + g.m12; a = Math.min(Math.min(k, h), Math.min(m, w)); b = Math.min(Math.min(e, f), Math.min(r, g)); k = Math.max(Math.max(k, h), Math.max(m, w)); e = Math.max(Math.max(e, f), Math.max(r, g)); return 0 > k || 0 > e || a > c ? !0 : b > d }, __class__: T }; var tb = function() {}; s["oz.OzMobileUtils"] = tb; tb.__name__ = ["oz", "OzMobileUtils"]; tb.HideLivesDialog = function(a) { u.LocallyUnmute() }; tb.HideRateDialog = function(a) {}; var ca = function() {}; s["oz.OzParticle"] = ca; ca.__name__ = ["oz", "OzParticle"]; ca.StaticInit = function() { ca.Particles = []; for (var a = ca.FreeId = 0; 400 > a;) { var b = a++; ca.Particles[b] = new ca; ca.Particles[b].PoolId = b } ca.Head = ca.New(); ca.Head.type = -1; ca.Head.prev = ca.Head.next = ca.Head }; ca.New = function() { var a = ca.Particles[ca.FreeId++]; a.reset(); return a }; ca.Dispose = function(a) { f.Dispose(a.sprite); a.sprite = null; a.prev.next = a.next; a.next.prev = a.prev; if (0 <= a.PoolId) { var b = ca.FreeId - 1, c = a.PoolId, d = ca.Particles[b]; ca.Particles[b] = ca.Particles[c]; ca.Particles[c] = d; a.PoolId = b; ca.Particles[c].PoolId = c; ca.FreeId-- } }; ca.Add = function(a) { a.prev = ca.Head.prev; a.next = ca.Head; ca.Head.prev.next = a; ca.Head.prev = a }; ca.UpdateAll = function() { for (var a = ca.Head.next; a != ca.Head;) { var b = a, a = a.next; b.update() } }; ca.EmitInCircle = function(a, b, c, d, e, p, r, g, k, h) { null == h && (h = 1); null == k && (k = -1); r /= g; for (var m = 0; m < p;) { var w = m++/p*2*Math.PI,l=ca.New();l.duration=g;l.sprite=f.New(b);a.addChild(l.sprite);l.sprite.set_x(c);l.sprite.set_y(d);l.sprite.set_rotation(e);l.sprite.mouseEnabled=!1;l.velX=Math.cos(w)*r;l.velY=Math.sin(w)*r;0<=k&&(l.velAlpha=(k-h)/g); ca.Add(l) } }; ca.prototype = { reset: function() { this.type = 0; this.next = this.prev = null; this.duration = this.cnt = 0; this.sprite = null; this.velScaleX = this.velScaleY = this.velRot = this.velAlpha = this.velX = this.velY = this.accelX = this.accelY = 0; this.updateFunc = null }, update: function() { if (0 < this.duration && this.cnt > this.duration) ca.Dispose(this); else { if (null != this.updateFunc) this.updateFunc(); else { var a = this.sprite; a.set_x(a.get_x() + this.velX); a = this.sprite; a.set_y(a.get_y() + this.velY); this.velX += this.accelX; this.velY += this.accelY; a = this.sprite; a.set_alpha(a.get_alpha() + this.velAlpha); a = this.sprite; a.set_rotation(a.get_rotation() + this.velRot); a = this.sprite; a.set_scaleX(a.get_scaleX() + this.velScaleX); a = this.sprite; a.set_scaleY(a.get_scaleY() + this.velScaleY) } this.cnt++ } }, __class__: ca }; var v = function(a, b, c, d, e, f, r, g, k, h) { null == h && (h = -1); null == k && (k = -1); null == g && (g = !1); null == r && (r = 0); null == f && (f = 1); this.mapTileObject = null; this.minScaledTileSize = this.maxScaledTileSize = -1; this.canZoom = !1; this.data = this.data = this.colData = this.DSI = this.DSJ = this.DEI = this.DEJ = null; this.offsetX = c; this.offsetY = d; this.scaledTileSize = this.tileSize = e; this.allocRows = b; this.allocCols = a; this.numLayers = f; this.depthOffset = r; this.canZoom = g; - 1 == k && (k = e); - 1 == h && (h = e); this.minScaledTileSize = k; this.maxScaledTileSize = h; this.clearRect = new pa; this.filledRect = new pa; this.bmdRect = new pa; this.bmdPoint = new xa; this.MaxBufferPixelW = (Math.ceil(l.instance.ScreenBMD.component.width / e) + 1) * e; this.MaxBufferPixelH = (Math.ceil(l.instance.ScreenBMD.component.height / e) + 1) * e; if (this.canZoom) for (a = k, h += 1; a < h;) b = a++, this.MaxBufferPixelW = Math.max(this.MaxBufferPixelW, (Math.ceil(l.instance.ScreenBMD.component.width / b) + 1) * b) | 0, this.MaxBufferPixelH = Math.max(this.MaxBufferPixelH, (Math.ceil(l.instance.ScreenBMD.component.height / b) + 1) * b) | 0; this.adjustBuffer(); this.bmdBuffers = Array(f); for (h = 0; h < f;) a = h++, this.bmdBuffers[a] = new ia(this.MaxBufferPixelW, this.MaxBufferPixelH, !0, 16777215); this.reset() }; s["oz.OzTileMap"] = v; v.__name__ = ["oz", "OzTileMap"]; v.GetSpriteTileFrame = function(a, b, c, d) { return 2 + a % c * d + b % d }; v.GetScale9Frame = function(a, b, c, d) { return 1 == c ? 0 == b ? 22 : b == d - 1 ? 24 : 23 : 0 == a ? 0 == b ? 1 : b == d - 1 ? 3 : 2 : a == c - 1 ? 0 == b ? 7 : b == d - 1 ? 9 : 8 : 0 == b ? 4 : b == d - 1 ? 6 : 5 }; v.PTInit = function() { v.shouldFillRight = [!1, !0, !0, !1, !0, !0, !1, !0, !0, !1, !0, !0, !1, !1, !0, !0, !0, !1, !1, !1, !0, !0, !0, !0, !1, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !1, !0, !0, !0].slice(0); v.ptVX = Array(1E3); v.ptVY = Array(1E3); v.ptHors = Array(101); for (var a = 0, b = v.ptHors.length; a < b;) { var c = a++; v.ptHors[c] = Array(102) } v.ptVers = Array(102); a = 0; for (b = v.ptVers.length; a < b;) c = a++, v.ptVers[c] = Array(101); v.ptDiags = Array(101); a = 0; for (b = v.ptDiags.length; a < b;) c = a++, v.ptDiags[c] = Array(101); v.ptTiles = Array(101); a = 0; for (b = v.ptTiles.length; a < b;) c = a++, v.ptTiles[c] = Array(101); v.PTClear(101, 101); v.initPoly2Tiles = !0 }; v.PTFrameToTile = function(a, b, c) { if (0 == c) return 0; switch (v.ptTiles[a][b]) { case 2: return 2 == c ? 9 : 0 < b && (10 == v.ptTiles[a][b - 1] || 15 == v.ptTiles[a][b - 1]) ? 8 : b + 1 < v.ptTiles[a].length && (12 == v.ptTiles[a][b + 1] || 18 == v.ptTiles[a][b + 1]) ? 8 : 1; case 10: return 3; case 11: return 8; case 12: return 2; case 13: return 8; case 14: return 7; case 15: return 6; case 16: return 8; case 17: return 5; case 18: return 4; case 19: return 8; default: return 2 == c ? 0 == a || 0 == v.ptTiles[a - 1][b] ? 9 : 0 : 1 } }; v.PTClear = function(a, b) { null == b && (b = -1); null == a && (a = -1); 0 > a && (a = v.ptN + 1); 0 > b && (b = v.ptM + 1); for (var c = 0, d = a; c < d;) for (var e = c++, f = 0, r = b; f < r;) { var g = f++; v.ptHors[e][g] = 0; v.ptVers[e][g] = 0; v.ptDiags[e][g] = 0; v.ptTiles[e][g] = 0 } v.ptN = v.ptM = 0 }; v.getPtTile = function(a, b) { return 0 > a || 100 < a || 0 > b || 100 < b ? 0 : v.ptTiles[a][b] }; v.getPtDiag = function(a, b) { return 0 > a || 100 < a || 0 > b || 100 < b ? 0 : v.ptDiags[a][b] }; v.getPtHor = function(a, b) { return 0 > a || 100 < a || 0 > b || 100 < b ? 0 : v.ptHors[a][b] }; v.PolyToTiles = function(a, b) { if (3 == a.type) { v.initPoly2Tiles ? v.PTClear() : v.PTInit(); var c = 1E6, d = 1E6, e = -1, f = -1; v.ptNVertices = a.vx.length; for (var r = 0, g = v.ptNVertices; r < g;) { var k = r++; v.ptVX[k] = Math.round(a.vx[k] / b) | 0; v.ptVY[k] = Math.round(a.vy[k] / b) | 0; c = Math.min(c, v.ptVY[k]) | 0; d = Math.min(d, v.ptVX[k]) | 0; e = Math.max(e, v.ptVY[k]) | 0; f = Math.max(f, v.ptVX[k]) | 0 } if (0 != c || 0 != d || 100 < e || 100 < f) throw new D(new Bb("You're passing an invalide poly to tile!")); c = 0; for (d = v.ptNVertices; c < d;) r = c++, g = (r + 1) % v.ptNVertices, v.SetSideSegmentData(v.ptVX[r], v.ptVY[r], v.ptVX[g], v.ptVY[g]); v.ptN = e; v.ptM = f; e = 0; for (f = v.ptN; e < f;) for (var c = e++, k = !1, h = 0, d = 0, r = v.ptM; d < r;) { var g = d++, m = ((v.ptHors[c][g] & 2) >> 1) + ((v.ptVers[c][g + 1] & 1) << 1) + ((v.ptHors[c + 1][g] & 1) << 2) + ((v.ptVers[c][g] & 2) << 2), l = x.BitCount(m); 0 == l ? 0 == v.ptDiags[c][g] ? (h = v.getPtTile(c - 1, g), 10 == h ? v.ptTiles[c][g] = 11 : 12 == h ? v.ptTiles[c][g] = 13 : 14 == h ? v.ptTiles[c][g] = 16 : 17 == h ? v.ptTiles[c][g] = 19 : k && (100 > c && 68 == v.ptDiags[c + 1][g] || 100 > g && 68 == v.ptDiags[c][g + 1]) ? v.ptTiles[c][g] = 38 : k && (100 > c && 257 == v.ptDiags[c + 1][g] || 0 < g && 257 == v.ptDiags[c][g - 1]) ? v.ptTiles[c][g] = 40 : k ? 0 < (v.getPtHor(c, g - 1) & 2) || 0 < (v.getPtDiag(c - 1, g - 1) & 256) || 0 < (v.getPtDiag(c, g - 1) & 4) ? 0 < (v.getPtHor(c + 1, g - 1) & 1) ? v.ptTiles[c][g] = 36 : v.ptTiles[c][g] = 21 : 0 < (v.getPtHor(c, g + 1) & 2) || 0 < (v.getPtDiag(c - 1, g + 1) & 64) || 0 < (v.getPtDiag(c, g + 1) & 1) ? 0 < (v.getPtHor(c + 1, g + 1) & 1) ? v.ptTiles[c][g] = 35 : v.ptTiles[c][g] = 20 : 0 < (v.getPtHor(c + 1, g - 1) & 1) ? v.ptTiles[c][g] = 32 : 0 < (v.getPtHor(c + 1, g + 1) & 1) ? v.ptTiles[c][g] = 31 : v.ptTiles[c][g] = 5 : v.ptTiles[c][g] = 0) : v.ptTiles[c][g] = 68 == v.ptDiags[c][g] ? 0 != h ? 37 : 10 : 257 == v.ptDiags[c][g] ? 0 != h ? 12 : 39 : 96 == v.ptDiags[c][g] ? 14 : 12 == v.ptDiags[c][g] ? 15 : 264 == v.ptDiags[c][g] ? 17 : 33 == v.ptDiags[c][g] ? 18 : 5 : 1 == l ? 1 == m ? 0 < (v.getPtHor(c + 1, g - 1) & 1) ? v.ptTiles[c][g] = 34 : 0 < (v.getPtHor(c + 1, g + 1) & 1) ? v.ptTiles[c][g] = 33 : v.ptTiles[c][g] = 2 : 2 == m ? v.ptTiles[c][g] = 6 : 4 == m ? (k = v.getPtTile(c - 1, g), 10 == k ? v.ptTiles[c][g] = 25 : 12 == k ? v.ptTiles[c][g] = 26 : 14 == k ? v.ptTiles[c][g] = 27 : 17 == k ? v.ptTiles[c][g] = 28 : 0 < (v.getPtHor(c, g - 1) & 2) || 0 < (v.getPtDiag(c - 1, g - 1) & 256) || 0 < (v.getPtDiag(c, g - 1) & 4) ? v.ptTiles[c][g] = 30 : 0 < (v.getPtHor(c, g + 1) & 2) || 0 < (v.getPtDiag(c - 1, g + 1) & 64) || 0 < (v.getPtDiag(c, g + 1) & 1) ? v.ptTiles[c][g] = 29 : v.ptTiles[c][g] = 8) : v.ptTiles[c][g] = 4 : v.ptTiles[c][g] = 2 == l ? 9 == m ? 1 : 3 == m ? 3 : 6 == m ? 9 : 12 == m ? 7 : 5 == m ? 23 : 5 : 3 == l ? 13 == m ? 22 : 7 == m ? 24 : 5 : 5; k = v.shouldFillRight[v.ptTiles[c][g]]; h = v.ptTiles[c][g] } } }; v.SetSideSegmentData = function(a, b, c, d) { a *= 2; b *= 2; c = 2 * c - a; var e = 2 * d - b; d = Math.max(Math.abs(c) | 0, Math.abs(e) | 0) / 2 | 0; c = c / d | 0; for (var e = e / d | 0, f = 0; f < d;) { f++; var r = b / 2 | 0, g = a / 2 | 0; 0 == c ? 0 < e ? v.ptVers[r][g] |= 1 : v.ptVers[r - 1][g] |= 2 : 0 == e ? 0 < c ? v.ptHors[r][g] |= 2 : v.ptHors[r][g - 1] |= 1 : (0 > e && (r = (b + e) / 2 | 0), 0 > c && (g = (a + c) / 2 | 0), v.ptDiags[r][g] |= 1 << a - 2 * g + 3 * (b - 2 * r), v.ptDiags[r][g] |= 1 << a + c - 2 * g + 3 * (b + e - 2 * r)); a += c; b += e } }; v.prototype = { setTileObject: function(a, b, c) { a.aI.push(b); a.aJ.push(c); this.mapTileObject.h[b * this.allocCols + c] = a }, getTileObject: function(a, b) { return this.mapTileObject.h[a * this.allocCols + b] }, adjustBuffer: function() { this.BufferTileW = Math.ceil(l.instance.ScreenBMD.component.width / this.scaledTileSize) + 1; this.BufferTileH = Math.ceil(l.instance.ScreenBMD.component.height / this.scaledTileSize) + 1; this.BufferPixelW = Math.round(this.scaledTileSize * this.BufferTileW); this.BufferPixelH = Math.round(this.scaledTileSize * this.BufferTileH) }, reset: function() { this.mapTileObject = new va; if (null == this.data) { this.data = Array(this.numLayers); this.DSI = Array(this.numLayers); this.DEI = Array(this.numLayers); this.DSJ = Array(this.numLayers); this.DEJ = Array(this.numLayers); for (var a = 0, b = this.numLayers; a < b;) { var c = a++; this.data[c] = Array(this.allocRows); for (var d = 0, e = this.allocRows; d < e;) { var f = d++; this.data[c][f] = Array(this.allocCols); for (var r = 0, g = this.allocCols; r < g;) { var k = r++; this.data[c][f][k] = 0 } } } } else for (a = 0, b = this.numLayers; a < b;) for (c = a++, d = 0, e = this.allocRows; d < e;) for (f = d++, r = 0, g = this.allocCols; r < g;) k = r++, this.data[c][f][k] = 0; this.makeDirty(); this.colData = this.data[0] }, makeDirty: function() { for (var a = 0, b = this.numLayers; a < b;) { var c = a++; this.DSI[c] = 0; this.DEI[c] = -1; this.DSJ[c] = 0; this.DEJ[c] = -1 } }, setTileBlock: function(a, b, c, d, e, f, r, g, k, h) { null == h && (h = 1); null == k && (k = !1); c = Math.round((c - this.offsetY) / this.tileSize) | 0; b = Math.round((b - this.offsetX) / this.tileSize) | 0; for (var m = 0; m < e;) for (var l = m++, n = 0, q = d; n < q;) { var s = n++, x = l + c, t = s + b, u; switch (h) { case 0: u = 0; break; case 2: u = 0 == l ? 9 : 0; break; default: u = f } 0 <= x && 0 <= t && x < this.colData.length && t < this.colData[0].length && this.setTile(a, l + c, s + b, u, r, k ? v.GetScale9Frame(l, s, e, d) : g) } }, setTileObjectBlock: function(a, b, c, d, e) { c = Math.round((c - this.offsetY) / this.tileSize); b = Math.round((b - this.offsetX) / this.tileSize); for (var f = 0; f < e;) for (var r = f++, g = 0, k = d; g < k;) { var h = g++; this.setTileObject(a, r + c, h + b) } }, setTile: function(a, b, c, d, e, f) { null == f && (f = 1); 0 <= b && 0 <= c && b < this.colData.length && c < this.colData[0].length && (this.data[a][b][c] = null != e ? (e.tilesheetId << 10) + e.frames[f - 1] : 0, 0 < d && (this.colData[b][c] = this.colData[b][c] & -983041 | d << 16), this.bmdRect.width = this.scaledTileSize, this.bmdRect.height = this.scaledTileSize, this.updateTileGFX(a, b, c, !0)) }, draw: function(a, b) { f.Flush(); var c = this.scaledTileSize, d = oa.instance.camera.gameScreenEdgeX() - this.offsetX, e = oa.instance.camera.gameScreenEdgeY() - this.offsetY; this.canZoom && (c = Math.floor(this.tileSize * oa.instance.camera.getZoomX()), c = Math.min(this.maxScaledTileSize, Math.max(this.minScaledTileSize, c)) | 0); this.canZoom && c != this.scaledTileSize && (this.scaledTileSize = c, G.trace("GOT NEW SCALEDTILESIZE ", { fileName: "OzTileMap.hx", lineNumber: 349, className: "oz.OzTileMap", methodName: "draw", customParams: [this.scaledTileSize, d, e] }), this.adjustBuffer(), this.makeDirty()); var p = (d % this.tileSize + this.tileSize) % this.tileSize, r = (e % this.tileSize + this.tileSize) % this.tileSize, p = this.scaledTileSize / this.tileSize * p, r = this.scaledTileSize / this.tileSize * r, c = Math.floor(d / this.tileSize), g = Math.floor(e / this.tileSize), p = Math.ceil((p + l.WIDTH) / this.scaledTileSize), r = Math.ceil((r + l.HEIGHT) / this.scaledTileSize), k = this.scaledTileSize / this.tileSize; this.bmdRect.width = this.bmdRect.height = this.scaledTileSize; for (var h = 0, m = 0; m < r;) for (var w = m++, w = g + w, n = 0, q = p; n < q;) { var s = n++, s = c + s; 0 <= w && 0 <= s && w < this.colData.length && s < this.colData[0].length ? this.updateTileGFX(b, w, s) || ++h : (this.bmdRect.x = (s % this.BufferTileW + this.BufferTileW) % this.BufferTileW * this.scaledTileSize, this.bmdRect.y = (w % this.BufferTileH + this.BufferTileH) % this.BufferTileH * this.scaledTileSize, this.bmdRect.width = this.bmdRect.height = this.scaledTileSize, this.bmdBuffers[b].fillRect(this.bmdRect, 16777215)) } d = ((d * k | 0) % this.BufferPixelW + this.BufferPixelW) % this.BufferPixelW; e = ((e * k | 0) % this.BufferPixelH + this.BufferPixelH) % this.BufferPixelH; k = Math.min(l.WIDTH, this.BufferPixelW - d) | 0; h = Math.min(l.HEIGHT, this.BufferPixelH - e) | 0; m = l.WIDTH - k; w = l.HEIGHT - h; this.bmdPoint.x = 0; this.bmdPoint.y = 0; this.bmdRect.x = d; this.bmdRect.y = e; this.bmdRect.width = k; this.bmdRect.height = h; l.instance.ScreenBMD.copyPixels(this.bmdBuffers[b], this.bmdRect, this.bmdPoint, null, null, !0); 0 < m && (this.bmdPoint.x = k, this.bmdPoint.y = 0, this.bmdRect.x = 0, this.bmdRect.y = e, this.bmdRect.width = m, this.bmdRect.height = h, l.instance.ScreenBMD.copyPixels(this.bmdBuffers[b], this.bmdRect, this.bmdPoint, null, null, !0)); 0 < h && (this.bmdPoint.x = 0, this.bmdPoint.y = h, this.bmdRect.x = d, this.bmdRect.y = 0, this.bmdRect.width = k, this.bmdRect.height = w, l.instance.ScreenBMD.copyPixels(this.bmdBuffers[b], this.bmdRect, this.bmdPoint, null, null, !0)); 0 < h && 0 < k && (this.bmdPoint.x = k, this.bmdPoint.y = h, this.bmdRect.x = 0, this.bmdRect.y = 0, this.bmdRect.width = m, this.bmdRect.height = w, l.instance.ScreenBMD.copyPixels(this.bmdBuffers[b], this.bmdRect, this.bmdPoint, null, null, !0)); this.DSI[b] = g; this.DEI[b] = g + r; this.DSJ[b] = c; this.DEJ[b] = c + p }, updateTileGFX: function(a, b, c, d) { null == d && (d = !1); var e = c >= this.DEJ[a] || b >= this.DEI[a] || c < this.DSJ[a] || b < this.DSI[a]; d && (e = !e); if (e) { d = this.data[a][b][c]; e = d & 1023; if (0 != e) { var p = f.TilesheetFrames[d >> 10 & 63][e]; this.bmdRect.x = (c % this.BufferTileW + this.BufferTileW) % this.BufferTileW * this.scaledTileSize; this.bmdRect.y = (b % this.BufferTileH + this.BufferTileH) % this.BufferTileH * this.scaledTileSize; this.bmdRect.width = this.bmdRect.height = this.scaledTileSize; this.bmdBuffers[a].fillRect(this.bmdRect, 16777215); f.CopyMcToBmd(this.bmdBuffers[a], d >> 10 & 63, e, -p[4] + c % this.BufferTileW * this.scaledTileSize, -p[5] + b % this.BufferTileH * this.scaledTileSize, !1, this.scaledTileSize == this.tileSize ? -1 : this.scaledTileSize) } else this.bmdRect.x = (c % this.BufferTileW + this.BufferTileW) % this.BufferTileW * this.scaledTileSize, this.bmdRect.y = (b % this.BufferTileH + this.BufferTileH) % this.BufferTileH * this.scaledTileSize, this.bmdRect.width = this.bmdRect.height = this.scaledTileSize, this.bmdBuffers[a].fillRect(this.bmdRect, 16777215); return !0 } return !1 }, horSideHit: function(a, b, c, d, e) { var f = Math.floor((-this.offsetY + b - d + 1) / this.tileSize); b = Math.ceil((-this.offsetY + b + d - 1) / this.tileSize); for (a = Math.floor((-this.offsetX + a + (c + 0.01) * e) / this.tileSize); f < b;) if (c = f++, 0 <= c && 0 <= a && c < this.colData.length && a < this.colData[0].length && 1 == (this.colData[c][a] >> 16 & 15)) return !0; return !1 }, verSideHit: function(a, b, c, d, e, f) { null == f && (f = !1); var r = Math.floor((-this.offsetX + a - c + 1) / this.tileSize); a = Math.ceil((-this.offsetX + a + c - 1) / this.tileSize); for (b = Math.floor((-this.offsetY + b + (d + 0.01) * e) / this.tileSize); r < a;) if (d = r++, 0 <= b && 0 <= d && b < this.colData.length && d < this.colData[0].length && (1 == (this.colData[b][d] >> 16 & 15) || 1 == e && f && 9 == (this.colData[b][d] >> 16 & 15))) return !0; return !1 }, horHitSet: function(a, b, c) { return (Math.floor((a + (b + 0.01) * c) / this.tileSize) + (0 > c ? 1 : 0)) * this.tileSize - b * c }, verHitSet: function(a, b, c) { return (Math.floor((a + (b + 0.01) * c) / this.tileSize) + (0 > c ? 1 : 0)) * this.tileSize - b * c }, GetMaxUpDY: function(a, b, c, d, e) { a -= this.offsetX; b -= this.offsetX; c -= this.offsetY; d /= e; for (var f = Math.floor((c + e) / this.tileSize), r = Math.floor((c + 1) / this.tileSize) - 1;;) { for (var g = (r + 1) * this.tileSize - c, k = g * d, h = Math.floor((a + k) / this.tileSize), k = Math.floor((b + k) / this.tileSize) + 1; h < k;) { var m = h++; if (1 == (this.colData[r][m] >> 16 & 15)) return g }--r; if (!(r >= f)) break } return e }, getSlope: function(a, b, c) { var d = -this.offsetY + b + c, e = -this.offsetX + a; a = Math.floor(e / this.tileSize); for (var e = e % this.tileSize, f = Math.floor((d - c) / this.tileSize), d = Math.floor(d / this.tileSize) + 1; f < d;) { var r = f++; if (0 <= r && 0 <= a && r < this.colData.length && a < this.colData[0].length) { var g = this.colData[r][a] >> 16 & 15; if (0 != g && 9 != g && 1 != g) { var r = r * this.tileSize, k; switch (g) { case 2: k = e; break; case 3: k = this.tileSize - e; break; case 4: k = e / 2; break; case 5: k = this.tileSize / 2 + e / 2; break; case 6: k = (this.tileSize - e) / 2; break; case 7: k = this.tileSize / 2 + (this.tileSize - e) / 2; break; default: k = 0 } if (r + k + this.offsetY - c < b) switch (g) { case 2: return 1; case 3: return -1; case 4: return 0.5; case 5: return 0.5; case 6: return -0.5; case 7: return -0.5; default: return 0 } } } } return 0 }, downHitSpecialSet: function(a, b, c) { var d = -this.offsetY + b + c, e = -this.offsetX + a; a = Math.floor(e / this.tileSize); for (var e = e % this.tileSize, f = Math.floor((d - c) / this.tileSize), d = Math.floor(d / this.tileSize) + 1; f < d;) { var r = f++; if (0 <= r && 0 <= a && r < this.colData.length && a < this.colData[0].length) { var g = this.colData[r][a] >> 16 & 15; if (0 != g && 9 != g && 1 != g) { r *= this.tileSize; switch (g) { case 2: g = e; break; case 3: g = this.tileSize - e; break; case 4: g = e / 2; break; case 5: g = this.tileSize / 2 + e / 2; break; case 6: g = (this.tileSize - e) / 2; break; case 7: g = this.tileSize / 2 + (this.tileSize - e) / 2; break; default: g = 0 } g = r + g; if (g + this.offsetY - c < b) return g + this.offsetY - c } } } return NaN }, __class__: v }; var P = function() {}; s["oz.OzTween"] = P; P.__name__ = ["oz", "OzTween"]; P.Init = function() { P.Tweens = []; for (var a = 0; 400 > a;) { var b = a++; P.Tweens[b] = new P; P.Tweens[b].PoolId = b } P.Head = null; P.FreeId = 0; P.NumTweens = 0 }; P.UpdateAll = function() { if (null != P.Head) { for (var a = P.Head; a.remove || (0 <= a.cnt && null != a.updateFunc && a.updateFunc(a.cnt / a.duration), a.cnt == a.duration && (null != a.endFunc && a.endFunc(), 0 == a.repeat ? a.remove = !0 : (0 < a.repeat && a.repeat--, a.cnt = 0)), a.cnt++), a = a.next, a != P.Head;); P.RemoveRemove() } }; P.RemoveRemove = function() { for (var a = P.Head, b = 0, c = P.NumTweens; b < c;) { b++; var d = a.next; a.remove && P.Remove(a); a = d } }; P.New = function() { var a = P.Tweens[P.FreeId++]; a.reset(); return a }; P.Dispose = function(a) { a.updateFunc = null; a.endFunc = null; var b = P.FreeId - 1, c = a.PoolId, d = P.Tweens[b]; P.Tweens[b] = P.Tweens[c]; P.Tweens[c] = d; a.PoolId = b; P.Tweens[c].PoolId = c; P.FreeId-- }; P.Add = function(a) { if (null == P.Head) P.Head = a, a.next = a.prev = a; else { var b = P.Head.prev; b.next = a; a.prev = b; P.Head.prev = a; a.next = P.Head } P.NumTweens++ }; P.Remove = function(a) { if (P.Head == a) if (a.next == a) P.Head = null; else { var b = P.Head.next, c = P.Head.prev; c.next = b; b.prev = c; P.Head = b } else b = a.next, c = a.prev, c.next = b, b.prev = c; P.NumTweens--; P.Dispose(a) }; P.prototype = { reset: function() { this.remove = !1; this.next = this.prev = this; this.endFunc = this.updateFunc = null; this.gameBound = this.stateBound = !0; this.cnt = this.repeat = this.duration = 0 }, __class__: P }; var Cc = function(a, b, c, d) { this.x1 = a; this.y1 = b; this.x2 = c; this.y2 = d }; s["oz.Point2"] = Cc; Cc.__name__ = ["oz", "Point2"]; Cc.prototype = { __class__: Cc }; var Sc = function(a, b, c, d, e) { null == e && (e = !0); this.target = a; this.name = b; this.start = c; this.end = d; this.change = this.end - this.start; this.isField = e }; s["oz.Property"] = Sc; Sc.__name__ = ["oz", "Property"]; Sc.prototype = { __class__: Sc }; var n = function(a, b, c) { null == b && (b = 1); n.Initted || n.Init(); this.initialized = !1; this.alive = !0; this.paused = !1; this.target = a; this.duration = Math.max(1, Math.round(1E3 * b)) | 0; this.propertiesObject = c; this.properties = []; this._repeat = this.initialRepeat = 0; this.special = this._snapping = this._smartRotation = this._reflect = this._reverse = !1; this.toggleVisible = !0; this.tweenPrev = this.tweenNext = this; this.eventPrev = this.eventNext = this; this.targetPrev = this.targetNext = this; this.active = !1; this.timeDelay = 0; this.easing = Ca.Linear; this._level = n.CurLevel; this._onUpdate = this._onComplete = this._onPause = this._onResume = this._onRepeat = this._onStop = null }; s["oz.TweenOz"] = n; n.__name__ = ["oz", "TweenOz"]; n.GetTimeMS = function() { return n.CurTimeMS }; n.IncreaseLevel = function() { n.CurLevel++ }; n.SetCurrentLevel = function(a) { n.CurLevel = a }; n.GetCurrentLevel = function() { return n.CurLevel }; n.Init = function(a, b, c) { null == b && (b = -1); null == a && (a = -1); n.Initted || (n.Initted = !0, 0 < b && (n.NumMSBuckets = b), n.MSBuckets = [], n.CurLevel = 2, n.CurTimeMS = 0, n.CustomElapsedMS = n.FrameElapsedMS = 0, n.ActiveTweensHead = new n, n.ProcessedTweensHead = new n, n.ProcessedEventsHead = new n, n.ProcessedTargetHead = new n, n.LevelPauses = [], n.TargetMap = new Oa, n.ResetMSPrecision(a)) }; n.ResetMSPrecision = function(a) { null == a && (a = -1); n.CustomElapsedMS += n.FrameElapsedMS; n.FrameElapsedMS = 0; 0 > a && (a = 60); n.FPS = a; n.NumFrameUpdates = 0; a = 1E3; for (var b = n.FPS, c; 0 != b;) c = b, b = a % b, a = c; n.FPS_MOD = n.FPS / a | 0; n.FPS_MOD_TIME = 1E3 / a | 0 }; n.Update = function(a) { null == a && (a = -1); 0 > a ? (n.NumFrameUpdates++, a = Math.floor(n.NumFrameUpdates / n.FPS_MOD) * n.FPS_MOD_TIME + 1E3 / n.FPS * Math.floor(n.NumFrameUpdates % n.FPS_MOD) - n.FrameElapsedMS | 0, n.FrameElapsedMS += a) : n.CustomElapsedMS += a; for (var b = 0; b < a;) { b++; var c = n.MSBuckets[n.CurTimeMS % n.NumMSBuckets]; if (null != c) { for (; c.eventNext != c;) { var d = c.eventNext; d.timeEnd == n.CurTimeMS && d.processEndEvent(n.CurTimeMS); d.eventPrev == c && n.ProcessedEventsHead.listAppendEvent(d) } c = n.MSBuckets[n.CurTimeMS % n.NumMSBuckets]; n.MSBuckets[n.CurTimeMS % n.NumMSBuckets] = n.ProcessedEventsHead; n.ProcessedEventsHead = c } n.CurTimeMS++ } for (; n.ActiveTweensHead.tweenNext != n.ActiveTweensHead;) b = n.ActiveTweensHead.tweenNext, n.CurTimeMS >= b.timeOffset && b.update(n.CurTimeMS), b.tweenPrev == n.ActiveTweensHead && n.ProcessedTweensHead.listAppendTween(b); b = n.ActiveTweensHead; n.ActiveTweensHead = n.ProcessedTweensHead; n.ProcessedTweensHead = b }; n.Reset = function(a) { null == a && (a = 1); n.StopAll(a); n.SetCurrentLevel(a) }; n.StopAll = function(a) { null == a && (a = 1); for (n.Initted || n.Init(); n.ActiveTweensHead.tweenNext != n.ActiveTweensHead;) { var b = n.ActiveTweensHead.tweenNext; b._level >= a && b.stop(); b.tweenPrev == n.ActiveTweensHead && n.ProcessedTweensHead.listAppendTween(b) } a = n.ActiveTweensHead; n.ActiveTweensHead = n.ProcessedTweensHead; n.ProcessedTweensHead = a }; n.PauseActiveAndIncreaseLevel = function() { var a = n.GetCurrentLevel(); n.LevelPauses[a] = n.PauseAndGetAllActive(); n.IncreaseLevel() }; n.PauseAndGetAllActive = function(a) { null == a && (a = -1); n.Initted || n.Init(); 0 > a && (a = n.CurLevel); for (var b = []; n.ActiveTweensHead.tweenNext != n.ActiveTweensHead;) { var c = n.ActiveTweensHead.tweenNext; c._level == a && (c.pause(), b.push(c)); c.tweenPrev == n.ActiveTweensHead && n.ProcessedTweensHead.listAppendTween(c) } a = n.ActiveTweensHead; n.ActiveTweensHead = n.ProcessedTweensHead; n.ProcessedTweensHead = a; return b }; n.TargetKill = function(a) { if (null != n.TargetMap.h.__keys__[a.__id__]) for (a = n.TargetMap.h[a.__id__]; a.targetNext != a;) a.targetNext.kill() }; n.AddToTarget = function(a) { null != a.target && (null == n.TargetMap.h.__keys__[a.target.__id__] && n.TargetMap.set(a.target, new n), n.TargetMap.h[a.target.__id__].listAppendTarget(a)) }; n.DelayedCall = function(a, b, c, d) { a = new n(d, a, null); a.onComplete(b, c); a.onRepeat(b, c); a.start(); return a }; n.To = function(a, b, c) { a = new n(a, b, c); a.start(); return a }; n.AddToEventQueue = function(a) { var b = a.timeEnd % n.NumMSBuckets; null == n.MSBuckets[b] && (n.MSBuckets[b] = new n); n.MSBuckets[b].listAppendEvent(a) }; n.CallMethod = function(a, b) { if (null == a) return null; null == b && (b = []); return a.apply(a, b) }; n.prototype = { kill: function() { this.stop(); this.alive = !1 }, listRemoveTarget: function() { null != this.target && this.targetPrev != this && (this.targetPrev.targetNext = this.targetNext, this.targetNext.targetPrev = this.targetPrev, this.targetPrev = this.targetNext = this, n.TargetMap.h[this.target.__id__].targetNext == n.TargetMap.h[this.target.__id__] && n.TargetMap.remove(this.target)) }, listAppendTarget: function(a) { a.listRemoveTarget(); a.targetPrev = this.targetPrev; a.targetNext = this; this.targetPrev = this.targetPrev.targetNext = a }, listRemoveTween: function() { this.tweenPrev.tweenNext = this.tweenNext; this.tweenNext.tweenPrev = this.tweenPrev; this.tweenPrev = this.tweenNext = this }, listAppendTween: function(a) { a.listRemoveTween(); a.tweenPrev = this.tweenPrev; a.tweenNext = this; this.tweenPrev = this.tweenPrev.tweenNext = a }, listRemoveEvent: function() { this.eventPrev.eventNext = this.eventNext; this.eventNext.eventPrev = this.eventPrev; this.eventPrev = this.eventNext = this }, listAppendEvent: function(a) { a.listRemoveEvent(); a.eventPrev = this.eventPrev; a.eventNext = this; this.eventPrev = this.eventPrev.eventNext = a }, setStartEndTimes: function() { this.timeOffset = this.timeStart + this.timeDelay; this.timeEnd = this.timeOffset + this.duration }, ease: function(a) { this.easing = a; return this }, update: function(a) { if (null != this.target) { var b; a = (a - this.timeOffset) / this.duration; 1 < a ? a = 1 : 0 > a && (a = 0); this.initialized || this.initialize(); if (this.special) { a = this.easing.calculate(this._reverse ? 1 - a : a); for (var c, d = 0, e = this.properties.length; d < e;) b = d++, b = this.properties[b], !this._smartRotation || "rotation" != b.name && "rotationX" != b.name && "rotationY" != b.name && "rotationZ" != b.name ? c = b.start + b.change * a : (c = b.change % 360, 180 < c ? c -= 360 : -180 > c && (c += 360), c = b.start + c * a), c = this._snapping ? Math.round(c) : c, b.isField ? b.target[b.name] = c : Z.setProperty(b.target, b.name, c) } else for (a = this.easing.calculate(this._reverse ? 1 - a : a), d = 0, e = this.properties.length; d < e;) b = d++, b = this.properties[b], c = b.start + b.change * a, b.isField ? b.target[b.name] = c : Z.setProperty(b.target, b.name, c) } n.CallMethod(this._onUpdate, this._onUpdateParams) }, processEndEvent: function(a) { if (0 == this._repeat) { if (null != this.target && this.toggleVisible) { a = this.target; var b = null, b = Object.prototype.hasOwnProperty.call(a, "alpha") ? Z.field(a, "alpha") : Z.getProperty(a, "alpha"); a = 0 == b } else a = !1; a && (a = this.target, !Object.prototype.hasOwnProperty.call(a, "visible") || a.__properties__ && a.__properties__.set_visible ? Z.setProperty(a, "visible", !1) : a.visible = !1); this.complete(!0) } else this._reflect && (this._reverse = !this._reverse), 0 < this._repeat && this._repeat--, n.CallMethod(this._onRepeat, this._onRepeatParams), this.timeStart = a, this.setStartEndTimes(), n.AddToEventQueue(this) }, complete: function(a) { null == a && (a = !0); a && (n.CallMethod(this._onUpdate, this._onUpdateParams), n.CallMethod(this._onComplete, this._onCompleteParams)); this.stop() }, start: function() { !this.alive || this.active && !this.paused || (this.active = !0, this.paused = !1, this._repeat = this.initialRepeat, this.timeStart = n.GetTimeMS(), this.setStartEndTimes(), n.ActiveTweensHead.listAppendTween(this), n.AddToEventQueue(this), n.AddToTarget(this)) }, stop: function() { this.active && (this.paused = this.active = !1, n.CallMethod(this._onStop, this._onStopParams), this.listRemoveTween(), this.listRemoveEvent(), this.listRemoveTarget()) }, pause: function() { !this.paused && this.active && (this.paused = !0, this.timePaused = n.GetTimeMS(), n.CallMethod(this._onPause, this._onPauseParams), this.listRemoveEvent(), this.listRemoveTween(), this.listRemoveTarget()) }, reflect: function(a) { null == a && (a = !0); 0 == this._repeat && this.repeat(1); this._reflect = a; return this }, repeat: function(a) { null == a && (a = -1); this._repeat = this.initialRepeat = a; return this }, onUpdate: function(a, b) { this._onUpdate = a; this._onUpdateParams = b; return this }, onRepeat: function(a, b) { this._onRepeat = a; this._onRepeatParams = b; return this }, onComplete: function(a, b) { this._onComplete = a; this._onCompleteParams = b; return this }, initialize: function() { for (var a, b = 0, c = Z.fields(this.propertiesObject); b < c.length;) { var d = c[b]; ++b; var e = !0; !Object.prototype.hasOwnProperty.call(this.target, d) || this.target.__properties__ && this.target.__properties__["set_" + d] ? (e = !1, a = Z.getProperty(this.target, d)) : a = Z.field(this.target, d); if ("number" == typeof a) { var f = this.propertiesObject, r = null, f = r = Object.prototype.hasOwnProperty.call(f, d) ? Z.field(f, d) : Z.getProperty(f, d); null == a && (a = 0); null == f && (f = 0); a = new Sc(this.target, d, a, f, e); this.properties.push(a) } } this.initialized = !0 }, __class__: n }; var L = s["ozity.Message"] = { __ename__: ["ozity", "Message"], __constructs__: "PLAYER_DIE PLAYER_WIN PLAYER_JUMP SMASH_BRICK ENEMY_DIE SHOW_JUMP GET_COIN GET_KEY GET_BANANA OPEN_DOOR SPRING_JUMP BARREL_SHOT ENTER_BARREL TELEPORT TRIGGER".split(" ") }; L.PLAYER_DIE = ["PLAYER_DIE", 0]; L.PLAYER_DIE.toString = F; L.PLAYER_DIE.__enum__ = L; L.PLAYER_WIN = ["PLAYER_WIN", 1]; L.PLAYER_WIN.toString = F; L.PLAYER_WIN.__enum__ = L; L.PLAYER_JUMP = ["PLAYER_JUMP", 2]; L.PLAYER_JUMP.toString = F; L.PLAYER_JUMP.__enum__ = L; L.SMASH_BRICK = ["SMASH_BRICK", 3]; L.SMASH_BRICK.toString = F; L.SMASH_BRICK.__enum__ = L; L.ENEMY_DIE = ["ENEMY_DIE", 4]; L.ENEMY_DIE.toString = F; L.ENEMY_DIE.__enum__ = L; L.SHOW_JUMP = ["SHOW_JUMP", 5]; L.SHOW_JUMP.toString = F; L.SHOW_JUMP.__enum__ = L; L.GET_COIN = ["GET_COIN", 6]; L.GET_COIN.toString = F; L.GET_COIN.__enum__ = L; L.GET_KEY = function(a) { a = ["GET_KEY", 7, a]; a.__enum__ = L; a.toString = F; return a }; L.GET_BANANA = ["GET_BANANA", 8]; L.GET_BANANA.toString = F; L.GET_BANANA.__enum__ = L; L.OPEN_DOOR = ["OPEN_DOOR", 9]; L.OPEN_DOOR.toString = F; L.OPEN_DOOR.__enum__ = L; L.SPRING_JUMP = ["SPRING_JUMP", 10]; L.SPRING_JUMP.toString = F; L.SPRING_JUMP.__enum__ = L; L.BARREL_SHOT = ["BARREL_SHOT", 11]; L.BARREL_SHOT.toString = F; L.BARREL_SHOT.__enum__ = L; L.ENTER_BARREL = ["ENTER_BARREL", 12]; L.ENTER_BARREL.toString = F; L.ENTER_BARREL.__enum__ = L; L.TELEPORT = ["TELEPORT", 13]; L.TELEPORT.toString = F; L.TELEPORT.__enum__ = L; L.TRIGGER = ["TRIGGER", 14]; L.TRIGGER.toString = F; L.TRIGGER.__enum__ = L; var Q = s["ozity.ColType"] = { __ename__: ["ozity", "ColType"], __constructs__: "Player Dispatcher Enemy Key Banana Door TeleportIn AnyType Shuryken Spikes Barrel Bumpy Collector".split(" ") }; Q.Player = ["Player", 0]; Q.Player.toString = F; Q.Player.__enum__ = Q; Q.Dispatcher = ["Dispatcher", 1]; Q.Dispatcher.toString = F; Q.Dispatcher.__enum__ = Q; Q.Enemy = ["Enemy", 2]; Q.Enemy.toString = F; Q.Enemy.__enum__ = Q; Q.Key = ["Key", 3]; Q.Key.toString = F; Q.Key.__enum__ = Q; Q.Banana = ["Banana", 4]; Q.Banana.toString = F; Q.Banana.__enum__ = Q; Q.Door = ["Door", 5]; Q.Door.toString = F; Q.Door.__enum__ = Q; Q.TeleportIn = ["TeleportIn", 6]; Q.TeleportIn.toString = F; Q.TeleportIn.__enum__ = Q; Q.AnyType = ["AnyType", 7]; Q.AnyType.toString = F; Q.AnyType.__enum__ = Q; Q.Shuryken = ["Shuryken", 8]; Q.Shuryken.toString = F; Q.Shuryken.__enum__ = Q; Q.Spikes = ["Spikes", 9]; Q.Spikes.toString = F; Q.Spikes.__enum__ = Q; Q.Barrel = ["Barrel", 10]; Q.Barrel.toString = F; Q.Barrel.__enum__ = Q; Q.Bumpy = ["Bumpy", 11]; Q.Bumpy.toString = F; Q.Bumpy.__enum__ = Q; Q.Collector = ["Collector", 12]; Q.Collector.toString = F; Q.Collector.__enum__ = Q; var Ma = s["ozity.BlockColor"] = { __ename__: ["ozity", "BlockColor"], __constructs__: ["Purple", "Orange", "Red", "Teal"] }; Ma.Purple = ["Purple", 0]; Ma.Purple.toString = F; Ma.Purple.__enum__ = Ma; Ma.Orange = ["Orange", 1]; Ma.Orange.toString = F; Ma.Orange.__enum__ = Ma; Ma.Red = ["Red", 2]; Ma.Red.toString = F; Ma.Red.__enum__ = Ma; Ma.Teal = ["Teal", 3]; Ma.Teal.toString = F; Ma.Teal.__enum__ = Ma; var ba = s["ozity.RightAngle"] = { __ename__: ["ozity", "RightAngle"], __constructs__: ["TopLeft", "TopRight", "BottomLeft", "BottomRight"] }; ba.TopLeft = ["TopLeft", 0]; ba.TopLeft.toString = F; ba.TopLeft.__enum__ = ba; ba.TopRight = ["TopRight", 1]; ba.TopRight.toString = F; ba.TopRight.__enum__ = ba; ba.BottomLeft = ["BottomLeft", 2]; ba.BottomLeft.toString = F; ba.BottomLeft.__enum__ = ba; ba.BottomRight = ["BottomRight", 3]; ba.BottomRight.toString = F; ba.BottomRight.__enum__ = ba; var Db = s["ozity.Axis2D"] = { __ename__: ["ozity", "Axis2D"], __constructs__: ["Vertical", "Horizontal" ] }; Db.Vertical = ["Vertical", 0]; Db.Vertical.toString = F; Db.Vertical.__enum__ = Db; Db.Horizontal = ["Horizontal", 1]; Db.Horizontal.toString = F; Db.Horizontal.__enum__ = Db; var yb = function() {}; s["ozity.OzBG"] = yb; yb.__name__ = ["ozity", "OzBG"]; yb.DrawBG = function(a, b, c, d) { Math.abs(f.BGMaxY - f.BGMinY); var e = 1; d = 1; null != oa.instance && null != oa.instance.camera ? (e = oa.instance.camera, b = -e.gameScreenEdgeX(), c = -e.gameScreenEdgeY(), d = e.getZoomX(), e = e.getZoomY()) : (b = -yb.X, c = -yb.Y); switch (a) { case 0: f.RenderBGImage(q.tileBGRect, b % 256 * d, c % 256 * e, d, 1, Math.floor(256 * d), Math.floor(256 * e), !0, !0) } }; var N = function(a, b, c) { this.gameObject = null; this.gameObject = a; this.compPrefab = b; this.compLevel = c }; s["ozity.OzComponent"] = N; N.__name__ = ["ozity", "OzComponent"]; N.GetClass = function(a) { var b = N.StringToClass; if (null != O[a] ? !b.existsReserved(a) : !b.h.hasOwnProperty(a)) { var b = N.StringToClass, c = U.resolveClass("ozity." + a); null != O[a] ? b.setReserved(a, c) : b.h[a] = c } b = N.StringToClass; return null != O[a] ? b.getReserved(a) : b.h[a] }; N.Init = function(a) { if (null == N.StringToXml) { N.StringToXml = new X; for (a = a.elementsNamed("c"); a.hasNext();) { var b = a.next(), c = N.StringToXml, d = b.get("n"); null != O[d] ? c.setReserved(d, b) : c.h[d] = b } N.StringToClass = new X } }; N.prototype = { DontCallMe: function() {}, init: function() {}, postInit: function() {}, update: function() {}, postUpdate: function() {}, destroy: function() { n.TargetKill(this) }, directMessage: function(a) {}, __class__: N }; var Ga = function(a, b, c) { this.num = 0; this.BubbleDuration = 30; N.call(this, a, b, c); null != b.get("BubbleDuration") && (this.BubbleDuration = K.parseInt(b.get("BubbleDuration"))) }; s["ozity.OzBanana"] = Ga; Ga.__name__ = ["ozity", "OzBanana"]; Ga.StaticInit = function() { Ga.NumBananas = 0; m.AddCollisionListener(Q.Collector, Q.Banana, Ga.GetBanana) }; Ga.GetBanana = function(a, b) { var c = a.getComponent(z); if (c.isPlayer) { var d = b.getComponent(Ga); z.ProblemSolution == d.num ? (d = b.graphics.getGameSprite(), ca.EmitInCircle(d.parent, q.cmcStarGold, d.get_x() + b.geometry.x, d.get_y() + b.geometry.y, 0.1, 5, 30, 15, 0.1), b.kill(), c.eatCircle(), oa.instance.sendMessage(L.GET_BANANA)) : c.die() } }; Ga.__super__ = N; Ga.prototype = R(N.prototype, { postInit: function() { N.prototype.postInit.call(this); Ga.NumBananas++; z.Bananas.push(this); var a = this.sprNum = f.New(q.ctxtMathFont); a.set_x(-14); a.set_y(-16); this.gameObject.graphics.getGameSprite().addChild(this.sprNum); this.setNumber(z.GetPossibleAnswer()) }, setNumber: function(a) { null == a && (a = 0); this.num = a; t.TextMath(this.sprNum, "" + a, V.CENTER) }, destroy: function() { N.prototype.destroy.call(this); for (var a = 0, b = z.Bananas.length; a < b;) { var c = a++; if (z.Bananas[c] == this) { z.Bananas.splice(c, 1); Ga.NumBananas--; break } } }, __class__: Ga }); var Da = s["ozity.CameraState"] = { __ename__: ["ozity", "CameraState"], __constructs__: ["NORMAL", "SLOW"] }; Da.NORMAL = ["NORMAL", 0]; Da.NORMAL.toString = F; Da.NORMAL.__enum__ = Da; Da.SLOW = ["SLOW", 1]; Da.SLOW.toString = F; Da.SLOW.__enum__ = Da; var ka = function(a) { this.rightCCs = new va; this.leftCCs = new va; this.bottomCCs = new va; this.topCCs = new va; this.customUpdate = !1; this.watchable = null; this.lastWatchableX = this.horizontalOffset = this.curX = this.curY = this.targetX = this.targetY = 0; this.cameraState = Da.NORMAL; this.started = !1; this.earthQuakeDuration = this.earthQuakeMagnitude = 0; this.screenSprite = a; this.topYOffset = l.HEIGHT_MIN / 3; this.bottomYOffSet = 2 * l.HEIGHT_MIN / 3; ka.HORIZONTAL_OFFSET_DISTANCE = l.WIDTH_MIN / 4; this.horizontalOffset = ka.HORIZONTAL_OFFSET_DISTANCE / 2; this.isCenterFixed = !1 }; s["ozity.OzCamera"] = ka; ka.__name__ = ["ozity", "OzCamera"]; ka.sortHorizontal = function(a, b) { return a.j - b.j }; ka.sortVertical = function(a, b) { return a.i - b.i }; ka.prototype = { makeCenterFixed: function() { this.isCenterFixed = !0 }, setWatchable: function(a) { this.watchable = a; this.targetX = a.physics.x - l.WIDTH_MIN / 2; this.targetY = a.physics.y - l.HEIGHT_MIN / 2; this.lastWatchableX = a.physics.x }, getAdjustedCamX: function(a, b, c) { a + b > this.rightX && (a = this.rightX - b); a < this.leftX && (a = this.leftX); this.rightX - this.leftX < b && (a = this.leftX - (b - (this.rightX - this.leftX)) / 2); a + b > this.boundsRightX && (a = this.boundsRightX - b); a < this.boundsLeftX && (a = this.boundsLeftX); return a }, getAdjustedCamY: function(a, b, c) { a + b > this.bottomY && (a = this.bottomY - b); a < this.topY && (a = this.topY); this.bottomY - this.topY < b && (a = this.topY - (b - (this.bottomY - this.topY)) / 2); a + b > this.boundsBottomY && (a = this.boundsBottomY - b); a < this.boundsTopY && (a = this.boundsTopY); return a }, update: function() { if (!this.customUpdate) { var a = oa.instance.tileMap, b = this.getZoomX(), c = this.getZoomY(); if (null != this.watchable) { var d = ka.MAX_CAMERA_SPEED; this.started ? this.cameraState == Da.SLOW && (d /= 3) : (this.started = !0, d = 1E5, this.curX = this.targetX, this.curY = this.targetY); var e = this.watchable.physics.x, p = this.watchable.physics.y, r = this.watchable.geometry.getVerticalBoundary(-1), g = this.watchable.geometry.getVerticalBoundary(1); this.isCenterFixed ? (this.targetX = e - l.WIDTH / 2, this.targetY = p - l.HEIGHT / 2) : (p + r < this.targetY + this.topYOffset && (this.targetY = p + r - this.topYOffset), p + g > this.targetY + this.bottomYOffSet && (this.targetY = p + g - this.bottomYOffSet), this.horizontalOffset += 0.8 * (this.watchable.physics.x - this.lastWatchableX), this.horizontalOffset = Math.max(-ka.HORIZONTAL_OFFSET_DISTANCE / 2, Math.min(this.horizontalOffset, ka.HORIZONTAL_OFFSET_DISTANCE / 2)), this.targetX = this.watchable.physics.x - l.WIDTH / 2 + this.horizontalOffset); this.lastWatchableX = this.watchable.physics.x; p = Math.floor((p + this.watchable.geometry.y - a.offsetY) / a.tileSize); e = Math.floor((e + this.watchable.geometry.x - a.offsetX) / a.tileSize); this.boundsTopY = 0 * a.tileSize + a.offsetY; this.boundsBottomY = a.allocRows * a.tileSize + a.offsetY; this.boundsLeftX = 0 * a.tileSize + a.offsetX; this.boundsRightX = a.allocCols * a.tileSize + a.offsetX; this.topY = this.boundsTopY; for (r = this.topCCs.keys(); r.hasNext();) for (var g = r.next(), k = this.topCCs.h[g], h = 0, m = k.length; h < m;) { var w = h++, n = k[w]; if (w + 1 == k.length) if (n.j <= e && n.rightAngle == ba.BottomRight) { if (g == p ? n.crossed = !0 : g < p && (n.crossed = !1), g <= p || n.crossed && !n.allowDisable) this.topY = Math.max(this.topY, g * a.tileSize + a.offsetY + n.offset) } else n.crossed = !1; else if (w = k[w + 1], n.j <= e && w.j >= e && n.rightAngle == ba.BottomRight && w.rightAngle == ba.BottomLeft) { if (g == p ? n.crossed = !0 : g < p && (n.crossed = !1), g <= p || n.crossed && !n.allowDisable) this.topY = Math.max(this.topY, g * a.tileSize + a.offsetY + n.offset) } else n.crossed = !1 } this.bottomY = this.boundsBottomY; for (r = this.bottomCCs.keys(); r.hasNext();) for (g = r.next(), k = this.bottomCCs.h[g], h = 0, m = k.length; h < m;) if (w = h++, n = k[w], w + 1 == k.length) if (n.j <= e && n.rightAngle == ba.TopRight) { if (g == p ? n.crossed = !0 : g > p && (n.crossed = !1), g >= p || n.crossed && !n.allowDisable) this.bottomY = Math.min(this.bottomY, (g + 1) * a.tileSize + a.offsetY + n.offset) } else n.crossed = !1; else if (w = k[w + 1], n.j <= e && w.j >= e && n.rightAngle == ba.TopRight && w.rightAngle == ba.TopLeft) { if (g == p ? n.crossed = !0 : g > p && (n.crossed = !1), g >= p || n.crossed && !n.allowDisable) this.bottomY = Math.min(this.bottomY, (g + 1) * a.tileSize + a.offsetY + n.offset) } else n.crossed = !1; this.leftX = this.boundsLeftX; for (r = this.leftCCs.keys(); r.hasNext();) for (g = r.next(), k = this.leftCCs.h[g], h = 0, m = k.length; h < m;) if (w = h++, n = k[w], w + 1 == k.length) if (n.i <= p && n.rightAngle == ba.BottomRight) { if (g == e ? n.crossed = !0 : g < e && (n.crossed = !1), g <= e || n.crossed && !n.allowDisable) this.leftX = Math.max(this.leftX, g * a.tileSize + a.offsetX + n.offset) } else n.crossed = !1; else if (w = k[w + 1], n.i <= p && w.i >= p && n.rightAngle == ba.BottomRight && w.rightAngle == ba.TopRight) { if (g == e ? n.crossed = !0 : g < e && (n.crossed = !1), g <= e || n.crossed && !n.allowDisable) this.leftX = Math.max(this.leftX, g * a.tileSize + a.offsetX + n.offset) } else n.crossed = !1; this.rightX = this.boundsRightX; for (r = this.rightCCs.keys(); r.hasNext();) for (g = r.next(), k = this.rightCCs.h[g], h = 0, m = k.length; h < m;) if (w = h++, n = k[w], w + 1 == k.length) if (n.i <= p && n.rightAngle == ba.BottomLeft) { if (g == e ? n.crossed = !0 : g > e && (n.crossed = !1), g >= e || n.crossed && !n.allowDisable) this.rightX = Math.min(this.rightX, (g + 1) * a.tileSize + a.offsetX + n.offset) } else n.crossed = !1; else if (w = k[w + 1], n.i <= p && w.i >= p && n.rightAngle == ba.BottomLeft && w.rightAngle == ba.TopLeft) { if (g == e ? n.crossed = !0 : g > e && (n.crossed = !1), g >= e || n.crossed && !n.allowDisable) this.rightX = Math.min(this.rightX, (g + 1) * a.tileSize + a.offsetX + n.offset) } else n.crossed = !1; this.slackX = Math.floor((l.WIDTH - l.WIDTH_MIN) / 2); this.slackY = Math.floor((l.HEIGHT - l.HEIGHT_MIN) / 2); p = l.WIDTH / b; e = l.HEIGHT / c; r = (l.WIDTH - p) / 2; g = (l.HEIGHT - e) / 2; this.targetX = this.getAdjustedCamX(this.targetX + r, p); this.targetY = this.getAdjustedCamY(this.targetY + g, e); this.targetX = this.targetX - r + this.slackX / b; this.targetY = this.targetY - g + this.slackY / c; x.ReachMaxSpeed2D(this.curX, this.curY, this.targetX, this.targetY, d, ka.tempVec); this.curX = Math.round(ka.tempVec[0]); this.curY = Math.round(ka.tempVec[1]) } else this.curX = this.curY = 0; this.screenSprite.set_x(-(this.curX + l.WIDTH_MIN * (1 - 1 / b) / 2) * b); this.screenSprite.set_y(-(this.curY + l.HEIGHT_MIN * (1 - 1 / c) / 2) * c); 0 != this.earthQuakeDuration && (b = this.screenSprite, b.set_x(b.get_x() + Math.round(Math.random() * this.earthQuakeMagnitude * 2 - this.earthQuakeMagnitude)), b = this.screenSprite, b.set_y(b.get_y() + Math.round(Math.random() * this.earthQuakeMagnitude * 2 - this.earthQuakeMagnitude))); 0 < this.earthQuakeDuration && this.earthQuakeDuration--; ka.zoomedThisFrame && (this.screenSprite._updateOldValues(), ka.zoomedThisFrame = !1); f.UpdateBG(oa.instance.bgSprite, -this.screenSprite.get_x(), -this.screenSprite.get_y(), 0 * a.tileSize + a.offsetY, a.allocRows * a.tileSize + a.offsetY - l.HEIGHT_MIN) } }, getZoomX: function() { return this.screenSprite.get_scaleX() }, getZoomY: function() { return this.screenSprite.get_scaleY() }, gameScreenEdgeX: function() { var a = this.screenSprite; return -((a.noInterpolation ? a._x : Math.round(128 * ((1 - f.DeltaT) * a._oldX + f.DeltaT * a._x)) / 128) + Math.floor((l.WIDTH - l.WIDTH_MIN) / 2)) / this.getZoomX() }, gameScreenEdgeY: function() { var a = this.screenSprite; return -((a.noInterpolation ? a._y : Math.round(128 * ((1 - f.DeltaT) * a._oldY + f.DeltaT * a._y)) / 128) + Math.floor((l.HEIGHT - l.HEIGHT_MIN) / 2)) / this.getZoomY() }, toWorldX: function(a) { return a / this.getZoomX() + this.gameScreenEdgeX() }, toWorldY: function(a) { return a / this.getZoomY() + this.gameScreenEdgeY() }, addCameraController: function(a) { if (1 == a.axis[1]) { var b = null, b = a.i; a.rightAngle == ba.BottomLeft || a.rightAngle == ba.BottomRight ? (this.topCCs.h.hasOwnProperty(b) || (this.topCCs.h[b] = []), b = this.topCCs.h[b]) : (this.bottomCCs.h.hasOwnProperty(b) || (this.bottomCCs.h[b] = []), b = this.bottomCCs.h[b]); b.push(a); b.sort(ka.sortHorizontal) } else b = null, b = a.j, a.rightAngle == ba.TopRight || a.rightAngle == ba.BottomRight ? (this.leftCCs.h.hasOwnProperty(b) || (this.leftCCs.h[b] = []), b = this.leftCCs.h[b]) : (this.rightCCs.h.hasOwnProperty(b) || (this.rightCCs.h[b] = []), b = this.rightCCs.h[b]), b.push(a), b.sort(ka.sortVertical) }, addEarthQuake: function(a, b) { null == b && (b = 3); this.earthQuakeMagnitude = b; 0 <= this.earthQuakeDuration && this.earthQuakeDuration < a && (this.earthQuakeDuration = a) }, __class__: ka }; var Tc = function(a, b, c) { this.crossed = !1; this.i = this.j = 0; this.allowDisable = !0; this.offset = 0; this.rightAngle = ba.BottomLeft; this.axis = Db.Horizontal; N.call(this, a, b, c); null != c.get("axis") && (this.axis = U.createEnum(Db, c.get("axis"), null)); null != c.get("rightAngle") && (this.rightAngle = U.createEnum(ba, c.get("rightAngle"), null)); null != c.get("offset") && (this.offset = parseFloat(c.get("offset"))); null != c.get("allowDisable") && (this.allowDisable = "true" == c.get("allowDisable")) }; s["ozity.OzCameraController"] = Tc; Tc.__name__ = ["ozity", "OzCameraController"]; Tc.__super__ = N; Tc.prototype = R(N.prototype, { init: function() { var a = this.gameObject.gameSystem.tileMap; this.i = Math.floor((this.gameObject.transform.y + this.gameObject.geometry.y - a.offsetY) / a.tileSize); a = this.gameObject.gameSystem.tileMap; this.j = Math.floor((this.gameObject.transform.x + this.gameObject.geometry.x - a.offsetX) / a.tileSize); this.gameObject.gameSystem.camera.addCameraController(this) }, __class__: Tc }); var ib = function(a, b, c) { this.visible = !1; this.killOnDispatch = !0; this.message = L.PLAYER_WIN; N.call(this, a, b, c); null != c.get("message") && (this.message = U.createEnum(L, c.get("message"), null)); null != c.get("killOnDispatch") && (this.killOnDispatch = "true" == c.get("killOnDispatch")); null != c.get("visible") && (this.visible = "true" == c.get("visible")) }; s["ozity.OzEventSender"] = ib; ib.__name__ = ["ozity", "OzEventSender"]; ib.StaticInit = function() { m.AddCollisionListener(Q.Player, Q.Dispatcher, ib.DispatchEvent) }; ib.DispatchEvent = function(a, b) { var c = S.__cast(b.getComponent(ib), ib); oa.instance.sendMessage(c.message); c.killOnDispatch && (c.gameObject.dead = !0) }; ib.__super__ = N; ib.prototype = R(N.prototype, { postInit: function() { this.gameObject.graphics.getGameSprite().set_visible(this.visible) }, __class__: ib }); var Ha = function(a, b, c) { this.cnt = 0; this.transform = this.geometry = this.graphics = this.physics = this.children = null; this.dead = !1; this.gameSystem = a; this.objPrefab = b; this.objLevel = c; this.components = []; this.transform = new jb(this, c); this.components.push(this.transform); var d = null; if (null != c) for (var e = c.elementsNamed("geometry"); e.hasNext();) { d = e.next(); break } if (null == d && (d = null, null != b)) for (e = b.elementsNamed("geometry"); e.hasNext();) { d = e.next(); break } null != d && (this.geometry = new ja(this, d), this.components.push(this.geometry)); d = null; if (null != b) for (e = b.elementsNamed("graphics"); e.hasNext();) { d = e.next(); break } null != d && (this.graphics = new da(this, d), this.components.push(this.graphics)); for (d = b.elements(); d.hasNext();) { e = d.next(); if (e.nodeType != B.Element) throw new D("Bad node type, expected Element but found " + e.nodeType); var f = null; switch (e.nodeName) { case "body": if (null != this.physics) throw new D(new Bb("Physics already initialized")); f = this.physics = new m(this, e); break; case "c": var f = e.get("n"), r = null; if (null != c) for (var g = c.elementsNamed("c"); g.hasNext();) { var k = g.next(), h = k.get("n"); if (null != h && h == f) { r = k; break } } null == r && (r = e); f = U.createInstance(N.GetClass(f), [this, e, r]) } null != f && this.components.push(f) } for (b = b.elementsNamed("object"); b.hasNext();) c = b.next(), null == this.children && (this.children = []), e = Ha.StringToXml, d = c.get("type"), c = new Ha(a, null != O[d] ? e.getReserved(d) : e.h[d], c), c.transform.fromParent(this.transform), a.addGameObject(c), this.children.push(c) }; s["ozity.OzGameObject"] = Ha; Ha.__name__ = ["ozity", "OzGameObject"]; Ha.Init = function(a) { if (null == Ha.StringToXml) { Ha.StringToXml = new X; var b = null; if (null != a) for (a = a.elementsNamed("objects"); a.hasNext();) { b = a.next(); break } for (b = b.elementsNamed("object"); b.hasNext();) { a = b.next(); var c = Ha.StringToXml, d = a.get("type"); null != O[d] ? c.setReserved(d, a) : c.h[d] = a } } }; Ha.prototype = { getComponent: function(a) { for (var b = 0, c = this.components; b < c.length;) { var d = c[b]; ++b; if (S.__instanceof(d, a)) return d } return null }, init: function() { for (var a = 0, b = this.components; a < b.length;) { var c = b[a]; ++a; c.init() } }, postInit: function() { for (var a = 0, b = this.components; a < b.length;) { var c = b[a]; ++a; c.postInit() } }, update: function() { this.cnt++; for (var a = 0, b = this.components; a < b.length;) { var c = b[a]; ++a; c.update() } }, postUpdate: function() { for (var a = 0, b = this.components; a < b.length;) { var c = b[a]; ++a; c.postUpdate() } }, destroy: function() { n.TargetKill(this); this.dead = !0; for (var a = this.components.length, b = 0; b < a;) { var c = b++; this.components[a - c - 1].destroy() } }, getType: function() { return null != this.objLevel && null != this.objLevel.get("type") ? this.objLevel.get("type") : null != this.objPrefab && null != this.objPrefab.get("type") ? this.objPrefab.get("type") : null }, kill: function() { this.dead = !0 }, __class__: Ha }; var oa = function(a, b, c, d, e, p, r, g) { null == g && (g = 0); null == r && (r = !1); this.eventsListeners = []; this.worldLeft = this.worldRight = this.worldTop = this.worldBottom = -1; this.player = null; this.updateFrame = this.deltaTime = this.flags = 0; this.gravity = 1E3; this.levelProgress = this.levelXml = null; this.updatingWorld = !1; this.bgSprite = null; this.pausedCounter = 0; oa.instance = this; a.addChild(this.doc = f.New()); this.levelXml = b; this.tileMap = c; this.gravity = d; this.bgSprite = e; this.flags = g; this.levelProgress = $a.getInstance(t.currentLevel); this.levelProgress.clearTemps(); this.worldLeft = -1 * c.tileSize + c.offsetX; this.worldTop = -1 * c.tileSize + c.offsetY; this.worldRight = (c.allocCols + 1) * c.tileSize + c.offsetX; this.worldBottom = (c.allocRows + 1) * c.tileSize + c.offsetY; this.gameObjects = []; m.PreStaticInit(); z.StaticInit(); Ga.StaticInit(); ib.StaticInit(); this.doc.addChild(this.objectSprite = f.New()); this.camera = new ka(this.objectSprite); this.objectSpriteDepths = []; a = 0; for (d = oa.NUM_GFX_LAYERS; a < d;) e = a++, this.objectSpriteDepths[e] = f.New(), this.objectSprite.addChild(this.objectSpriteDepths[e]), this.objectSpriteDepths[e].flags |= 256, c.depthOffset <= e && e - c.depthOffset < c.numLayers && (this.objectSprite.addChild(this.tileSprite = f.New(null, W.TILEMAP)), this.tileSprite.tileMap = c, this.tileSprite.setTileLayer(e - c.depthOffset)); this.objectSprite.addChild(this.topWorldSprite = f.New()); this.topWorldSprite.flags |= 256; this.updatingWorld = !0; c = this.pausedCounter; for (a = b.elements(); a.hasNext();) e = a.next(), d = e.get("type"), this.firstPriority(d) && (p = Ha.StringToXml, e = new Ha(this, null != O[d] ? p.getReserved(d) : p.h[d], e), "player" == d && (this.player = e), this.addGameObject(e), e.init(), e.postInit()); null != this.player && r && (this.camera.setWatchable(this.player), this.camera.update()); for (b = b.elements(); b.hasNext();) r = b.next(), a = r.get("type"), this.firstPriority(a) || (d = Ha.StringToXml, r = new Ha(this, null != O[a] ? d.getReserved(a) : d.h[a], r), this.addGameObject(r)); for (b = 0; b < this.gameObjects.length;) this.firstPriority(this.gameObjects[b].objLevel.get("type")) ? ++b : this.gameObjects[b++].init(); for (b = 0; b < this.gameObjects.length;) this.firstPriority(this.gameObjects[b].objLevel.get("type")) ? ++b : this.gameObjects[b++].postInit(); this.updatingWorld = !1; this.adjustPauseAfterUpdate(c) }; s["ozity.OzGameSystem"] = oa; oa.__name__ = ["ozity", "OzGameSystem"]; oa.Init = function() { Ha.Init(t.definitionsXML); N.Init(t.componentsXML) }; oa.prototype = { getPlayer: function() { return this.player }, setPlayer: function(a) { this.player = a }, firstPriority: function(a) { return "player" != a && "checkpoint" != a ? "cameracontroller" == a : !0 }, adjustPauseAfterUpdate: function(a) { for (var b = this.pausedCounter; a < b;) a++, n.PauseActiveAndIncreaseLevel() }, update: function(a) { if (!(0 < this.pausedCounter)) { this.deltaTime = a *= oa.WORLD_SPEED_FACTOR; this.updatingWorld = !0; for (var b = this.pausedCounter, c = 0, d = this.gameObjects; c < d.length;) { var e = d[c]; ++c; e.update() } m.Update(this.gameObjects, this.tileMap, a); a = 0; for (c = this.gameObjects; a < c.length;) d = c[a], ++a, d.postUpdate(); this.camera.update(); for (a = 0; a < this.gameObjects.length;) c = this.gameObjects[a], null != c.physics && (c.physics.x < this.worldLeft - 300 && 0 >= (this.flags & 1) || c.physics.y < this.worldTop - 300 || c.physics.x > this.worldRight + 300 && 0 >= (this.flags & 1) || c.physics.y > this.worldBottom + 300) && (c.dead = !0), ++a; for (a = 0; a < this.gameObjects.length;) this.gameObjects[a].dead ? (this.gameObjects[a].destroy(), this.gameObjects.splice(a, 1)) : ++a; this.updateFrame++; this.updatingWorld = !1; this.adjustPauseAfterUpdate(b) } }, destroy: function() { for (; 0 < this.gameObjects.length;) this.gameObjects[0].destroy(), this.gameObjects.splice(0, 1); this.objectSprite.clear() }, createLazyGameObjectByStringId: function(a, b, c) { null == c && (c = !0); var d = Ha.StringToXml; a = new Ha(oa.instance, null != O[a] ? d.getReserved(a) : d.h[a], b); c && this.addGameObject(a); return a }, addGameObject: function(a) { this.gameObjects.push(a) }, addSprite: function(a, b) { this.objectSpriteDepths[b].addChild(a) }, addEventsListener: function(a) { this.eventsListeners.push(a) }, sendMessage: function(a) { for (var b = 0, c = this.eventsListeners; b < c.length;) { var d = c[b]; ++b; d(a) } }, __class__: oa }; var ja = function(a, b) { this.vx = this.vy = null; this.flags = 0; this.controlPoints = this.curvePointsX = this.curvePointsY = null; N.call(this, a, null, b); this.x = this.y = this.degrees = this.halfWidth = this.halfHeight = this.radius = 0; null != b && this.fromXML() }; s["ozity.OzGeometry"] = ja; ja.__name__ = ["ozity", "OzGeometry"]; ja.GetXYFromBezier = function(a, b, c, d, e, f, r, g, k, h) { h.x = (1 - a) * (1 - a) * (1 - a) * b + 3 * (1 - a) * (1 - a) * a * d + 3 * (1 - a) * a * a * f + a * a * a * g; h.y = (1 - a) * (1 - a) * (1 - a) * c + 3 * (1 - a) * (1 - a) * a * e + 3 * (1 - a) * a * a * r + a * a * a * k }; ja.ApproximateBezierLength = function(a, b, c, d, e, f, r, g, k) { for (var h = 0, m = a, l = b, n = 0; 20 > n;) { var q = (n++ + 1) / 21; k.x = (1 - q) * (1 - q) * (1 - q) * a + 3 * (1 - q) * (1 - q) * q * c + 3 * (1 - q) * q * q * e + q * q * q * r; k.y = (1 - q) * (1 - q) * (1 - q) * b + 3 * (1 - q) * (1 - q) * q * d + 3 * (1 - q) * q * q * f + q * q * q * g; h += x.DistancePoints(m, l, k.x, k.y); m = k.x; l = k.y } return h += x.DistancePoints(m, l, r, g) }; ja.__super__ = N; ja.prototype = R(N.prototype, { localToGlobal: function(a, b, c, d, e, f) { this.applyOriginRotation(this.x + d, this.y + e, this.degrees, f); x.rotateAroundPoint(f[0], f[1], c, 0, 0, f); f[0] += a; f[1] += b }, globalToLocal: function(a, b, c, d, e, f) { x.rotateAroundPoint(d - a, e - b, -c, 0, 0, f); this.applyOriginRotation(f[0], f[1], -this.degrees, f) }, globalFarthestVertexFromGlobalPointFromLocalPoints: function(a, b, c, d, e, f, r, g) { for (var k = -1, h = 0, m = 0, l = 0, n = f.length; l < n;) { var q = l++; this.applyOriginRotation(this.x + f[q], this.y + r[q], this.degrees, g); x.rotateAroundPoint(g[0], g[1], c, 0, 0, g); g[0] += a; g[1] += b; q = x.DistancePoints(d, e, g[0], g[1]); q > k && (k = q, h = g[0], m = g[1]) } g[0] = h; g[1] = m }, globalFarthestVertexFromGlobalLineFromLocalPoints: function(a, b, c, d, e, f, r, g, k, h) { for (var m = -1, l = 0, n = 0, q = 0, s = g.length; q < s;) { var v = q++; this.applyOriginRotation(this.x + g[v], this.y + k[v], this.degrees, h); x.rotateAroundPoint(h[0], h[1], c, 0, 0, h); h[0] += a; h[1] += b; v = x.PointLineDistance(d, e, f, r, h[0], h[1], !1); v > m && (m = v, l = h[0], n = h[1]) } h[0] = l; h[1] = n }, applyOriginRotation: function(a, b, c, d) { x.rotateAroundPoint(a, b, c, this.x, this.y, d) }, adjustMinMaxXY: function(a, b) { a[0] = Math.min(a[0], b[0]); a[1] = Math.min(a[1], b[1]); a[2] = Math.max(a[2], b[0]); a[3] = Math.max(a[3], b[1]) }, updateCurves: function() { var a = x.GenerateControlPointsFromPath(this.vx, this.vy); this.curvePointsX = []; this.curvePointsY = []; this.curvePointsX.push(this.vx[0]); this.curvePointsY.push(this.vy[0]); for (var b = new xa, c = 0, d = this.vx.length - 1; c < d;) { for (var e = c++, f = ja.ApproximateBezierLength(this.vx[e], this.vy[e], a[e].x1, a[e].y1, a[e].x2, a[e].y2, this.vx[e + 1], this.vy[e + 1], b), f = Math.round(f / ja.CURVE_SEGMENT_LENGTH), r = 0, g = f; r < g;) { var k = (r++ + 1) / (f + 1), h = this.vy[e], m = a[e].y1, l = a[e].y2, n = this.vy[e + 1]; b.x = (1 - k) * (1 - k) * (1 - k) * this.vx[e] + 3 * (1 - k) * (1 - k) * k * a[e].x1 + 3 * (1 - k) * k * k * a[e].x2 + k * k * k * this.vx[e + 1]; b.y = (1 - k) * (1 - k) * (1 - k) * h + 3 * (1 - k) * (1 - k) * k * m + 3 * (1 - k) * k * k * l + k * k * k * n; this.curvePointsX.push(b.x); this.curvePointsY.push(b.y) } this.curvePointsX.push(this.vx[e + 1]); this.curvePointsY.push(this.vy[e + 1]) } }, drawGlobalOutline: function(a, b, c, d) { null == d && (d = 0); null == c && (c = 0); null == b && (b = 0); var e = ja.temp2; switch (this.type) { case 1: this.applyOriginRotation(this.x + -this.halfWidth, this.y + -this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.moveTo(e[0], e[1]); this.applyOriginRotation(this.x + this.halfWidth, this.y + -this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); this.applyOriginRotation(this.x + this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); this.applyOriginRotation(this.x + -this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); this.applyOriginRotation(this.x + -this.halfWidth, this.y + -this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); break; case 2: x.rotateAroundPoint(this.x, this.y, d, 0, 0, e); a.drawCircle(b + e[0], c + e[1], this.radius); break; case 3: this.applyOriginRotation(this.x + this.vx[0], this.y + this.vy[0], this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.moveTo(e[0], e[1]); for (var f = 1, r = this.vx.length; f < r;) { var g = f++; this.applyOriginRotation(this.x + this.vx[g], this.y + this.vy[g], this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]) } this.applyOriginRotation(this.x + this.vx[0], this.y + this.vy[0], this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); break; case 4: this.applyOriginRotation(this.x + this.x1, this.y + this.y1, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.moveTo(e[0], e[1]); this.applyOriginRotation(this.x + this.x2, this.y + this.y2, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); break; case 5: x.rotateAroundPoint(this.x, this.y, d, 0, 0, e); a.drawCircle(b + e[0], c + e[1], 3); break; case 6: this.applyOriginRotation(this.x + -this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.moveTo(e[0], e[1]); this.applyOriginRotation(this.x, this.y + -this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); this.applyOriginRotation(this.x + this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); this.applyOriginRotation(this.x + -this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], d, 0, 0, e); e[0] += b; e[1] += c; a.lineTo(e[0], e[1]); break; case 7: if (0 < (this.flags & 1)) for (this.applyOriginRotation(this.x + this.curvePointsX[0], this.y + this.curvePointsY[0], this.degrees, e), x.rotateAroundPoint(e[0], e[1], d, 0, 0, e), e[0] += b, e[1] += c, a.moveTo(e[0], e[1]), f = 1, r = this.curvePointsX.length; f < r;) g = f++, this.applyOriginRotation(this.x + this.curvePointsX[g], this.y + this.curvePointsY[g], this.degrees, e), x.rotateAroundPoint(e[0], e[1], d, 0, 0, e), e[0] += b, e[1] += c, a.lineTo(e[0], e[1]); else for (this.applyOriginRotation(this.x + this.vx[0], this.y + this.vy[0], this.degrees, e), x.rotateAroundPoint(e[0], e[1], d, 0, 0, e), e[0] += b, e[1] += c, a.moveTo(e[0], e[1]), f = 1, r = this.vx.length; f < r;) g = f++, this.applyOriginRotation(this.x + this.vx[g], this.y + this.vy[g], this.degrees, e), x.rotateAroundPoint(e[0], e[1], d, 0, 0, e), e[0] += b, e[1] += c, a.lineTo(e[0], e[1]) } }, drawLocalOutline: function(a) { switch (this.type) { case 1: a.moveTo(-this.halfWidth, -this.halfHeight); a.lineTo(this.halfWidth, -this.halfHeight); a.lineTo(this.halfWidth, this.halfHeight); a.lineTo(-this.halfWidth, this.halfHeight); a.lineTo(-this.halfWidth, -this.halfHeight); break; case 2: a.drawCircle(0, 0, this.radius); break; case 3: a.moveTo(this.vx[0], this.vy[0]); for (var b = 1, c = this.vx.length; b < c;) { var d = b++; a.lineTo(this.vx[d], this.vy[d]) } a.lineTo(this.vx[0], this.vy[0]); break; case 6: a.moveTo(-this.halfWidth, this.halfHeight); a.lineTo(0, -this.halfHeight); a.lineTo(this.halfWidth, this.halfHeight); a.lineTo(-this.halfWidth, this.halfHeight); break; case 7: if (0 < (this.flags & 1)) for (a.moveTo(this.curvePointsX[0], this.curvePointsY[0]), b = 1, c = this.curvePointsX.length; b < c;) d = b++, a.lineTo(this.curvePointsX[d], this.curvePointsY[d]); else for (a.moveTo(this.vx[0], this.vy[0]), b = 1, c = this.vx.length; b < c;) d = b++, a.lineTo(this.vx[d], this.vy[d]) } }, getMinMaxXY: function(a, b, c, d, e) { null == e && (e = !0); e && (d[0] = 2E6, d[1] = 2E6, d[2] = -2E6, d[3] = -2E6); e = ja.temp2; switch (this.type) { case 1: this.applyOriginRotation(this.x + -this.halfWidth, this.y + -this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); this.applyOriginRotation(this.x + this.halfWidth, this.y + -this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); this.applyOriginRotation(this.x + -this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); this.applyOriginRotation(this.x + this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); break; case 2: x.rotateAroundPoint(this.x, this.y, c, 0, 0, e); e[0] += a - this.radius; e[1] += b - this.radius; this.adjustMinMaxXY(d, e); x.rotateAroundPoint(this.x, this.y, c, 0, 0, e); e[0] += a + this.radius; e[1] += b + this.radius; this.adjustMinMaxXY(d, e); break; case 3: for (var f = 0, r = this.vx.length; f < r;) { var g = f++; this.applyOriginRotation(this.x + this.vx[g], this.y + this.vy[g], this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e) } break; case 4: this.applyOriginRotation(this.x + this.x1, this.y + this.y1, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); this.applyOriginRotation(this.x + this.x2, this.y + this.y2, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); break; case 5: x.rotateAroundPoint(this.x, this.y, c, 0, 0, e); e[0] += a - 3; e[1] += b - 3; this.adjustMinMaxXY(d, e); x.rotateAroundPoint(this.x, this.y, c, 0, 0, e); e[0] += a + 3; e[1] += b + 3; this.adjustMinMaxXY(d, e); break; case 6: this.applyOriginRotation(this.x + -this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); this.applyOriginRotation(this.x, this.y + -this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); this.applyOriginRotation(this.x + this.halfWidth, this.y + this.halfHeight, this.degrees, e); x.rotateAroundPoint(e[0], e[1], c, 0, 0, e); e[0] += a; e[1] += b; this.adjustMinMaxXY(d, e); break; case 7: for (f = 0, r = this.vx.length; f < r;) g = f++, this.applyOriginRotation(this.x + this.vx[g], this.y + this.vy[g], this.degrees, e), x.rotateAroundPoint(e[0], e[1], c, 0, 0, e), e[0] += a, e[1] += b, this.adjustMinMaxXY(d, e) } }, setPolyLeftTopOrigin: function() { if (3 == this.type) { for (var a = this.vx[0], b = this.vy[0], c = 1, d = this.vx.length; c < d;) var e = c++, a = Math.min(a, this.vx[e]), b = Math.min(b, this.vy[e]); c = 0; for (d = this.vx.length; c < d;) e = c++, this.vx[e] -= a, this.vy[e] -= b; this.x += a; this.y += b } }, pointSelects: function(a, b, c, d, e) { var f = !1, r = ja.temp2; x.rotateAroundPoint(d - a, e - b, -c, 0, 0, r); this.applyOriginRotation(r[0], r[1], -this.degrees, r); switch (this.type) { case 1: f = Math.abs(this.x - r[0]) < this.halfWidth ? Math.abs(this.y - r[1]) < this.halfHeight : !1; break; case 2: f = this.radius * this.radius >= (r[0] - this.x) * (r[0] - this.x) + (r[1] - this.y) * (r[1] - this.y); break; case 3: r[0] -= this.x; r[1] -= this.y; a = f = 0; for (b = this.vx.length; a < b;) c = a++, d = (c + 1) % this.vx.length, this.vy[c] <= r[1] ? this.vy[d] > r[1] && 0 < x.CrossPoints(r[0], r[1], this.vx[c], this.vy[c], this.vx[d], this.vy[d]) && ++f : this.vy[d] <= r[1] && 0 > x.CrossPoints(r[0], r[1], this.vx[c], this.vy[c], this.vx[d], this.vy[d]) && --f; f = 0 != f; break; case 4: 5 > x.PointLineDistance(this.x1, this.y1, this.x2, this.y2, r[0] - this.x, r[1] - this.y, !0) && (f = !0); break; case 5: 5 > Math.abs(this.x - r[0]) && 5 > Math.abs(this.y - r[1]) && (f = !0); break; case 6: var g; a = this.x - this.halfWidth; b = this.y + this.halfHeight; c = this.x; d = this.y - this.halfHeight; e = this.x + this.halfWidth; g = this.y + this.halfHeight; f = (f = (f = 0 <= x.CrossPoints(a, b, c, d, r[0], r[1])) ? 0 <= x.CrossPoints(c, d, e, g, r[0], r[1]) : !1) ? 0 <= x.CrossPoints(e, g, a, b, r[0], r[1]) : !1; break; case 7: for (a = this.vx, b = this.vy, 0 < (this.flags & 1) && (a = this.curvePointsX, b = this.curvePointsY), c = 1, d = a.length; c < d;) e = c++, 5 > x.PointLineDistance(a[e - 1], b[e - 1], a[e], b[e], r[0] - this.x, r[1] - this.y, !0) && (f = !0) } return f }, _f: function(a) { return "" + x.round(a, 2) }, toXML: function() { var a = B.createElement("geometry"); switch (this.type) { case 1: a.set("type", "rect"); a.set("x", this._f(this.x)); a.set("y", this._f(this.y)); a.set("degrees", this._f(this.degrees)); a.set("halfWidth", this._f(this.halfWidth)); a.set("halfHeight", this._f(this.halfHeight)); break; case 2: a.set("type", "circ"); a.set("x", this._f(this.x)); a.set("y", this._f(this.y)); a.set("degrees", this._f(this.degrees)); a.set("radius", this._f(this.radius)); break; case 3: a.set("type", "poly"); a.set("x", this._f(this.x)); a.set("y", this._f(this.y)); a.set("degrees", this._f(this.degrees)); a.set("nVertices", "" + this.vx.length); for (var b = "", c = 0, d = this.vx.length - 1; c < d;) var e = c++, b = b + (this._f(this.vx[e]) + "," + this._f(this.vy[e]) + ","); b += this._f(this.vx[this.vx.length - 1]) + "," + this._f(this.vy[this.vx.length - 1]); a.set("vertices", b); break; case 4: a.set("type", "line"); a.set("x", this._f(this.x)); a.set("y", this._f(this.y)); a.set("x1", this._f(this.x1)); a.set("y1", this._f(this.y1)); a.set("x2", this._f(this.x2)); a.set("y2", this._f(this.y2)); break; case 5: a.set("type", "dot"); a.set("x", this._f(this.x)); a.set("y", this._f(this.y)); break; case 6: a.set("type", "tri"); a.set("x", this._f(this.x)); a.set("y", this._f(this.y)); a.set("degrees", this._f(this.degrees)); a.set("halfWidth", this._f(this.halfWidth)); a.set("halfHeight", this._f(this.halfHeight)); break; case 7: a.set("type", "path"); a.set("x", this._f(this.x)); a.set("y", this._f(this.y)); a.set("degrees", this._f(this.degrees)); a.set("nVertices", "" + this.vx.length); b = ""; c = 0; for (d = this.vx.length - 1; c < d;) e = c++, b += this._f(this.vx[e]) + "," + this._f(this.vy[e]) + ","; b += this._f(this.vx[this.vx.length - 1]) + "," + this._f(this.vy[this.vx.length - 1]); a.set("vertices", b); 0 < (this.flags & 1) && a.set("isCurve", "true") } return a }, fromXML: function(a) { null == a && (a = this.compLevel); var b = 0; "true" == a.get("isCurve") && (b |= 1); switch (a.get("type")) { case "circ": this._init(2, this.pf(a.get("x")), this.pf(a.get("y")), this.pf(a.get("degrees")), this.pf(a.get("radius"))); break; case "dot": this._init(5, this.pf(a.get("x")), this.pf(a.get("y"))); break; case "line": this.x1 = this.pf(a.get("x1")); this.x2 = this.pf(a.get("x2")); this.y1 = this.pf(a.get("y1")); this.y2 = this.pf(a.get("y2")); this._init(4, this.pf(a.get("x")), this.pf(a.get("y")), 0, 0, 0); break; case "need": this._init(1, 0, 0, 0, 20, 20); break; case "path": this.pi(a.get("nVertices")); for (var c = a.get("vertices").split(","), d = [], e = [], f = 0, r = c.length / 2 | 0; f < r;) { var g = 2 * f++; d[g / 2 | 0] = this.pf(c[g]); e[g / 2 | 0] = this.pf(c[g + 1]) } this._init(7, this.pf(a.get("x")), this.pf(a.get("y")), this.pf(a.get("degrees")), 0, 0, d, e, !0, b); break; case "poly": this.pi(a.get("nVertices")); c = a.get("vertices").split(","); d = []; e = []; f = 0; for (r = c.length / 2 | 0; f < r;) g = 2 * f++, d[g / 2 | 0] = this.pf(c[g]), e[g / 2 | 0] = this.pf(c[g + 1]); this._init(3, this.pf(a.get("x")), this.pf(a.get("y")), this.pf(a.get("degrees")), 0, 0, d, e, !0, b); break; case "rect": this._init(1, this.pf(a.get("x")), this.pf(a.get("y")), this.pf(a.get("degrees")), this.pf(a.get("halfWidth")), this.pf(a.get("halfHeight"))); break; case "tri": this._init(6, this.pf(a.get("x")), this.pf(a.get("y")), this.pf(a.get("degrees")), this.pf(a.get("halfWidth")), this.pf(a.get("halfHeight"))); break; default: throw new D(new Bb("Invalid shape Xml type")); } }, clone: function() { var a = new ja; a._init(this.type, this.x, this.y, this.degrees, this.halfWidth, this.halfHeight, this.vx, this.vy, !0, this.flags); return a }, _init: function(a, b, c, d, e, f, r, g, k, h) { null == h && (h = 0); null == k && (k = !0); null == f && (f = 0); null == e && (e = 0); null == d && (d = 0); null == c && (c = 0); null == b && (b = 0); this.flags = h; this.type = a; this.x = b; this.y = c; this.degrees = d; if (1 == this.type) this.halfWidth = e, this.halfHeight = f; else if (2 == this.type) this.radius = e; else if (3 == this.type) if (k) for (this.vx = [], this.vy = [], h = 0, a = r.length; h < a;) b = h++, this.vx[b] = r[b], this.vy[b] = g[b]; else this.vx = r, this.vy = g; else if (7 == this.type) { if (k) for (this.vx = [], this.vy = [], a = 0, b = r.length; a < b;) c = a++, this.vx[c] = r[c], this.vy[c] = g[c]; else this.vx = r, this.vy = g; 0 < (h & 1) && this.updateCurves(); null == this.pathLengths && (this.pathLengths = []); h = g = 0; for (r = r.length; h < r;) a = h++, c = 0 > a - 1 ? 0 : a - 1, b = this.vx[a] - this.vx[c], c = this.vy[a] - this.vy[c], g += Math.sqrt(b * b + c * c), this.pathLengths[a] = g } else 4 != this.type && 6 == this.type && (this.halfWidth = e, this.halfHeight = f) }, getQuadPathCoeff: function(a, b) { var c = this.pathLengths[this.pathLengths.length - 1]; a = (a % c + c) % c; return a < b ? a / b : a > c - b ? 1 - (a - (c - b)) / b : 1 }, pathLength: function() { return this.pathLengths[this.pathLengths.length - 1] }, adjustDistance: function(a) { return Math.max(0, Math.min(a, this.pathLengths[this.pathLengths.length - 1])) }, getPathPosition: function(a, b, c, d, e) { null == e && (e = !1); var f = this.pathLengths[this.pathLengths.length - 1], r = this.pathLengths.length; a = e ? (a % f + f) % f : this.adjustDistance(a); e = 0; for (f = r - 1; e + 1 < f;) { var g = Math.floor((e + f) / 2); a <= this.pathLengths[g] ? f = g : e = g } e = f; r = (f - 1 + r) % r; f = 0 == e ? 0 : this.pathLengths[r]; a = (a - f) / (this.pathLengths[e] - f); d[0] = b + this.x + (1 - a) * this.vx[r] + a * this.vx[e]; d[1] = c + this.y + (1 - a) * this.vy[r] + a * this.vy[e] }, isLoop: function(a) { null == a && (a = -1); var b = this.vx, c = this.vy; 0 < (this.flags & 1) && (b = this.curvePointsX, c = this.curvePointsY); 0 > a && (a = b.length); return 1E-4 > Math.abs(b[0] - b[a - 1]) ? 1E-4 > Math.abs(c[0] - c[a - 1]) : !1 }, getFirstId: function(a, b) { null == b && (b = -1); 0 > b && (b = 0 < (this.flags & 1) ? this.curvePointsX.length : this.vx.length); var c = 0; if (a) for (; this.isOneSegment((c - 1 + b) % b, 0, 1);) c = (c - 1 + b) % b; return c }, isOneSegment: function(a, b, c, d) { null == d && (d = !0); var e = this.vx, f = this.vy; d && 0 < (this.flags & 1) && (e = this.curvePointsX, f = this.curvePointsY); return null == e || null == f || a == c || 0.1 > Math.abs(e[a] - e[c]) && 0.1 > Math.abs(f[a] - f[c]) || 0.1 < x.PointLineDistance(e[a], f[a], e[c], f[c], e[b], f[b], !0) ? !1 : !0 }, getVerticalBoundary: function(a) { var b = this.y, c; switch (this.type) { case 1: c = this.halfHeight; break; case 2: c = this.radius; break; default: throw new D(new Bb("VERTICAL BOUNDARY NOT CALCULATED FOR geo", this.type)); } return b + a * c }, getHeight: function() { switch (this.type) { case 1: return 2 * this.halfHeight; case 2: return 2 * this.radius; case 3: return 50; default: throw new D(new Bb("HEIGHT NOT CALCULATED FOR geo", this.type)); } }, getWidth: function() { switch (this.type) { case 1: return 2 * this.halfWidth; case 2: return 2 * this.radius; case 3: return 50; default: throw new D(new Bb("WIDTH NOT CALCULATED FOR geo", this.type)); } }, pf: function(a) { return null == a || 0 == a.length ? 0 : parseFloat(a) }, pi: function(a) { return null == a || 0 == a.length ? 0 : K.parseInt(a) }, __class__: ja }); var Uc = function(a, b, c, d, e, f) { this.name = a; this.tileUp45 = b; this.tileDown45 = c; this.tileUp23 = d; this.tileDown23 = e; this.scale9 = f }; s["ozity.OzTileInfo"] = Uc; Uc.__name__ = ["ozity", "OzTileInfo"]; Uc.prototype = { __class__: Uc }; var da = function(a, b) { this.tileObject = null; this.updateOldValues = this.drawSpecial = !1; this.color = 0; this.isTile = !1; this.spriteMCName = null; this.depth = 0; this.sprite = null; N.call(this, a, b, null); this.depth = K.parseInt(b.get("depth")); this.spriteMCName = b.get("src"); this.isTile = "tile" == b.get("type"); this.color = K.parseInt("0x" + b.get("linecolor")) }; s["ozity.OzGraphics"] = da; da.__name__ = ["ozity", "OzGraphics"]; da.GetMovieClip = function(a) { a = x.FindStringId(f.BitmapsNames, a); return f.Bitmaps[f.BitmapsIds[a]] }; da.GetBitmapData = function(a) { a = x.FindStringId(f.BitmapsNames, a); a = f.Bitmaps[f.BitmapsIds[a]]; return f.GetTilesheetBitmapData(a.tilesheetId, a.frames[0]) }; da.GetBitmap = function(a) { a = x.FindStringId(f.BitmapsNames, a); return f.New(f.Bitmaps[f.BitmapsIds[a]]) }; da.GetTileInfo = function(a) { var b = a.get("src"), c = da.tileInfos; if (null != O[b] ? !c.existsReserved(b) : !c.h.hasOwnProperty(b)) { var c = x.StringToIntArray(a.get("tileDown45")), d = x.StringToIntArray(a.get("tileUp45")), e = x.StringToIntArray(a.get("tileDown23")), f = x.StringToIntArray(a.get("tileUp23")); a = x.StringToIntArray(a.get("scale9")); a = new Uc(b, d, c, f, e, a); c = da.tileInfos; null != O[b] ? c.setReserved(b, a) : c.h[b] = a } a = da.tileInfos; return null != O[b] ? a.getReserved(b) : a.h[b] }; da.__super__ = N; da.prototype = R(N.prototype, { init: function() { this.tileObject = this.gameObject.getComponent(Fc) }, postInit: function() { this.geometry = this.gameObject.geometry; this.transform = this.gameObject.transform; var a = this.compPrefab; if ("false" != a.get("visible")) if ("sprite" == a.get("type")) this.sprite = da.GetBitmap(this.spriteMCName); else if ("fill" == a.get("type")) { var b = da.GetBitmapData(this.spriteMCName); null == this.sprite && (this.sprite = f.New(null, W.POLYGON)); var c = this.sprite.flSprite.get_graphics(); c.clear(); null != a.get("linewidth") && c.lineStyle(K.parseInt(a.get("linewidth")), this.color); c.beginBitmapFill(b, null, !0, !0); this.geometry.drawLocalOutline(c); c.endFill() } else if ("line" == a.get("type")) { var d = da.GetBitmapData(this.spriteMCName); null == this.sprite && (this.sprite = f.New(null, W.POLYGON)); var e = d.component.height; null != a.get("linewidth") && (e = K.parseInt(a.get("linewidth"))); var p = this.geometry.x1 - this.geometry.x2, r = this.geometry.y1 - this.geometry.y2, g = Math.sqrt(p * p + r * r); this.sprite.createLineGFX(d, e, g); this.sprite.set_rotation(x.AngleFromSegment(this.geometry.x1, this.geometry.y1, this.geometry.x2, this.geometry.y2)); var k = a.get("end"); if (null != k) { var h = da.GetBitmap(k); this.sprite.addChild(h); h.set_x(-g / 2); var m = da.GetBitmap(k); this.sprite.addChild(m); m.set_x(g / 2); G.trace("init nc", { fileName: "OzGraphics.hx", lineNumber: 122, className: "ozity.OzGraphics", methodName: "postInit", customParams: [this.sprite.numChildren()] }) } } else if ("tile" == a.get("type")) { var l; switch (a.get("collision")) { case "none": l = 0; break; case "top": l = 2; break; default: l = 1 } var n = a.get("depth"), q = 0; null != n && (q = K.parseInt(n)); var s = da.GetTileInfo(a), u = this.gameObject.gameSystem.tileMap, t = u.tileSize, y = "false" != a.get("staticTile"); y ? this.sprite = null : null == this.sprite && (this.sprite = f.New(null, W.EMPTY)); if (3 == this.geometry.type && 0 == this.geometry.halfWidth) { var z = Math.round(this.transform.x + this.geometry.x), A = Math.round(this.transform.y + this.geometry.y); null != this.sprite && (this.sprite.set_x(z), this.sprite.set_y(A)); v.PolyToTiles(this.geometry, t); for (var B = 0, E = v.ptN; B < E;) for (var C = B++, F = 0, H = v.ptM; F < H;) { var J = F++; if (0 != v.ptTiles[C][J]) { var L = v.ptTiles[C][J], M = v.PTFrameToTile(C, J, l), Q = this.spriteMCName; if (y) { var O = Math.round((A - u.offsetY) / t) + C | 0, T = Math.round((z - u.offsetX) / t) + J | 0, P = x.FindStringId(f.BitmapsNames, Q); u.setTile(q, O, T, M, f.Bitmaps[f.BitmapsIds[P]], L); null != this.tileObject && u.setTileObject(this.tileObject, O, T) } else { var N = da.GetBitmap(Q); N.set_x(Math.round(J * t)); N.set_y(Math.round(C * t)); this.sprite.addChild(N); N.gotoAndStop(L) } } } } else { var S = this.gameObject.objLevel.get("tileFrame"), R = null == S ? 1 : K.parseInt(S), aa = Math.round(2 * this.geometry.halfWidth), ca = Math.round(2 * this.geometry.halfHeight), Z = Math.round(this.transform.x + this.geometry.x - this.geometry.halfWidth), Y = Math.round(this.transform.y + this.geometry.y - this.geometry.halfHeight), X = Math.round(ca / t), ba = Math.round(aa / t), U = Math.min(X, ba) | 0, fa = "1" == a.get("spriteTile"); null != this.sprite && (this.sprite.set_x(Z), this.sprite.set_y(Y)); if (0 <= x.IndexOfInt(s.tileDown45, R)) { for (var ea = ba - U, ga = 0; ga < X;) for (var V = ga++, ia = ea, Dd = ba; ia < Dd;) { var ja = ia++, la = V, oa = ja - ea, ka = 1, ma = 0; if (la == oa) ka = s.tileDown45[0], ma = 2; else if (oa == la - 1) ka = s.tileDown45[1], ma = 8; else continue; var na = this.spriteMCName; if (y) { var ua = Math.round((Y - u.offsetY) / t) + V | 0, pa = Math.round((Z - u.offsetX) / t) + ja | 0, ra = x.FindStringId(f.BitmapsNames, na); u.setTile(q, ua, pa, ma, f.Bitmaps[f.BitmapsIds[ra]], ka); null != this.tileObject && u.setTileObject(this.tileObject, ua, pa) } else { var qa = da.GetBitmap(na); qa.set_x(Math.round(ja * t)); qa.set_y(Math.round(V * t)); this.sprite.addChild(qa); qa.gotoAndStop(ka) } } if (0 < ea) { var ta = ea - 1, xa = s.tileDown45[1], va = this.spriteMCName; if (y) { var Aa = Math.round((Y - u.offsetY) / t) | 0, Fa = Math.round((Z - u.offsetX) / t) + ta | 0, Ia = x.FindStringId(f.BitmapsNames, va); u.setTile(q, Aa, Fa, 8, f.Bitmaps[f.BitmapsIds[Ia]], xa); null != this.tileObject && u.setTileObject(this.tileObject, Aa, Fa) } else { var wa = da.GetBitmap(va); wa.set_x(Math.round(ta * t)); wa.set_y(Math.round(0 * t)); this.sprite.addChild(wa); wa.gotoAndStop(xa) } } } else if (0 <= x.IndexOfInt(s.tileUp45, R)) { for (var Ha = 0; Ha < X;) for (var Ja = Ha++, Ka = 0, Ma = U; Ka < Ma;) { var Ga = Ka++, Qa = U - Ja - 1, Oa = Ga, ya = 1, Sa = 0; if (Qa == Oa) ya = s.tileUp45[0], Sa = 3; else if (Oa == Qa + 1) ya = s.tileUp45[1], Sa = 8; else continue; var Xa = this.spriteMCName; if (y) { var Ta = Math.round((Y - u.offsetY) / t) + Ja | 0, Ya = Math.round((Z - u.offsetX) / t) + Ga | 0, eb = x.FindStringId(f.BitmapsNames, Xa); u.setTile(q, Ta, Ya, Sa, f.Bitmaps[f.BitmapsIds[eb]], ya); null != this.tileObject && u.setTileObject(this.tileObject, Ta, Ya) } else { var Ua = da.GetBitmap(Xa); Ua.set_x(Math.round(Ga * t)); Ua.set_y(Math.round(Ja * t)); this.sprite.addChild(Ua); Ua.gotoAndStop(ya) } } if (ba > U) { var Za = s.tileUp45[1], Ca = this.spriteMCName; if (y) { var Wa = Math.round((Y - u.offsetY) / t) | 0, fb = Math.round((Z - u.offsetX) / t) + U | 0, zb = x.FindStringId(f.BitmapsNames, Ca); u.setTile(q, Wa, fb, 8, f.Bitmaps[f.BitmapsIds[zb]], Za); null != this.tileObject && u.setTileObject(this.tileObject, Wa, fb) } else { var id = da.GetBitmap(Ca); id.set_x(Math.round(U * t)); id.set_y(Math.round(0 * t)); this.sprite.addChild(id); id.gotoAndStop(Za) } } } else if (0 <= x.IndexOfInt(s.tileUp23, R)) { for (var U = Math.min(2 * X, ba) | 0, nb = 2 * X > ba ? Math.floor((ba + 1) / 2) : X, ib = 0; ib < X;) for (var md = ib++, $a = 0, ab = U; $a < ab;) { var kb = $a++, sa = nb - md - 1, za = kb, Ra = 1, Va = 0; if (2 * sa == za) Ra = s.tileUp23[0], Va = 7; else if (2 * sa + 1 == za) Ra = s.tileUp23[1], Va = 6; else if (2 * sa + 2 == za) Ra = s.tileUp23[2], Va = 8; else continue; var Pa = this.spriteMCName; if (y) { var vd = Math.round((Y - u.offsetY) / t) + md | 0, Na = Math.round((Z - u.offsetX) / t) + kb | 0, vb = x.FindStringId(f.BitmapsNames, Pa); u.setTile(q, vd, Na, Va, f.Bitmaps[f.BitmapsIds[vb]], Ra); null != this.tileObject && u.setTileObject(this.tileObject, vd, Na) } else { var cb = da.GetBitmap(Pa); cb.set_x(Math.round(kb * t)); cb.set_y(Math.round(md * t)); this.sprite.addChild(cb); cb.gotoAndStop(Ra) } } if (ba > U) { var Ba = s.tileUp23[2], mb = this.spriteMCName; if (y) { var Ab = Math.round((Y - u.offsetY) / t) | 0, pb = Math.round((Z - u.offsetX) / t) + U | 0, Db = x.FindStringId(f.BitmapsNames, mb); u.setTile(q, Ab, pb, 8, f.Bitmaps[f.BitmapsIds[Db]], Ba); null != this.tileObject && u.setTileObject(this.tileObject, Ab, pb) } else { var Da = da.GetBitmap(mb); Da.set_x(Math.round(U * t)); Da.set_y(Math.round(0 * t)); this.sprite.addChild(Da); Da.gotoAndStop(Ba) } } } else if (0 <= x.IndexOfInt(s.tileDown23, R)) { for (var U = Math.min(2 * X, ba) | 0, jb = ba - U, Lb = 2 * X > ba ? Math.floor((ba + 1) / 2) : X, Fb = 0; Fb < X;) for (var lb = Fb++, Hb = jb, rb = ba; Hb < rb;) { var wb = Hb++, xb = Lb - lb - 1, Ib = U - (wb - jb) - 1, Vc = 1, yb = 0; if (2 * xb == Ib) Vc = s.tileDown23[0], yb = 5; else if (2 * xb + 1 == Ib) Vc = s.tileDown23[1], yb = 4; else if (2 * xb + 2 == Ib) Vc = s.tileDown23[2], yb = 8; else continue; var ob = this.spriteMCName; if (y) { var Jb = Math.round((Y - u.offsetY) / t) + lb | 0, Ob = Math.round((Z - u.offsetX) / t) + wb | 0, Cb = x.FindStringId(f.BitmapsNames, ob); u.setTile(q, Jb, Ob, yb, f.Bitmaps[f.BitmapsIds[Cb]], Vc); null != this.tileObject && u.setTileObject(this.tileObject, Jb, Ob) } else { var sb = da.GetBitmap(ob); sb.set_x(Math.round(wb * t)); sb.set_y(Math.round(lb * t)); this.sprite.addChild(sb); sb.gotoAndStop(Vc) } } if (0 < jb) { var tb = jb - 1, wd = s.tileDown23[2], xd = this.spriteMCName; if (y) { var yd = Math.round((Y - u.offsetY) / t) | 0, Eb = Math.round((Z - u.offsetX) / t) + tb | 0, ac = x.FindStringId(f.BitmapsNames, xd); u.setTile(q, yd, Eb, 8, f.Bitmaps[f.BitmapsIds[ac]], wd); null != this.tileObject && u.setTileObject(this.tileObject, yd, Eb) } else { var ub = da.GetBitmap(xd); ub.set_x(Math.round(tb * t)); ub.set_y(Math.round(0 * t)); this.sprite.addChild(ub); ub.gotoAndStop(wd) } } } else if (fa) for (var db = da.GetBitmapData(a.get("src")), Vb = Math.ceil((db.component.height - 1) / t), ec = Math.ceil((db.component.width - 1) / t), gb = l, hb = 0; hb < X;) { var jd = hb++; 2 == l && (gb = 0 == jd ? 9 : 0); for (var ha = 0, hc = ba; ha < hc;) { var Gb = ha++, Sb = v.GetSpriteTileFrame(jd, Gb, Vb, ec), Tb = this.spriteMCName; if (y) { var Ub = Math.round((Y - u.offsetY) / t) + jd | 0, bc = Math.round((Z - u.offsetX) / t) + Gb | 0, cc = x.FindStringId(f.BitmapsNames, Tb); u.setTile(q, Ub, bc, gb, f.Bitmaps[f.BitmapsIds[cc]], Sb); null != this.tileObject && u.setTileObject(this.tileObject, Ub, bc) } else { var Ea = da.GetBitmap(Tb); Ea.set_x(Math.round(Gb * t)); Ea.set_y(Math.round(jd * t)); this.sprite.addChild(Ea); Ea.gotoAndStop(Sb) } } } else { var Mb = 0 <= x.IndexOfInt(s.scale9, R); if (y) { this.sprite = null; var lc = x.FindStringId(f.BitmapsNames, this.spriteMCName); u.setTileBlock(q, Z, Y, ba, X, 1, f.Bitmaps[f.BitmapsIds[lc]], R, Mb, l); null != this.tileObject && u.setTileObjectBlock(this.tileObject, Z, Y, ba, X) } else for (var dc = 0; dc < X;) for (var Wb = dc++, Xb = 0, Nb = ba; Xb < Nb;) { var fc = Xb++, vc = da.GetBitmap(this.spriteMCName); vc.set_x(Math.round(fc * t)); vc.set_y(Math.round(Wb * t)); this.sprite.addChild(vc); vc.gotoAndStop(Mb ? v.GetScale9Frame(Wb, fc, X, ba) : R) } } } } else if ("path" == a.get("type")) { var wc = null; null != this.spriteMCName && (wc = da.GetBitmapData(this.spriteMCName)); null == this.sprite && (this.sprite = f.New(null, W.POLYGON)); var nc = 4; null != wc && (nc = wc.component.height); null != a.get("linewidth") && (nc = K.parseInt(a.get("linewidth"))); var $b = this.geometry.vx, ic = this.geometry.vy; 0 < (this.geometry.flags & 1) && ($b = this.geometry.curvePointsX, ic = this.geometry.curvePointsY); var Kb = $b.length, qb = !1; this.geometry.isLoop() && (qb = !0, --Kb); var Lc = this.geometry.getFirstId(qb, Kb), Yb = this.geometry.x, Pb = this.geometry.y; if (null != a.get("backcolor")) { var jc = null, oc = null, jc = a.get("backcolor"); null != jc && (oc = jc.split(",")); var kc = null, jc = a.get("backwidth"); null != jc && (kc = jc.split(",")); var pc = null, jc = a.get("backalpha"); null != jc && (pc = jc.split(",")); var qc = 0; if (null != oc || null != kc || null != pc) qc = 1, null != oc && oc.length > qc && (qc = oc.length), null != kc && kc.length > qc && (qc = kc.length), null != pc && pc.length > qc && (qc = pc.length); for (var gc = 0, La = qc; gc < La;) { var rc = gc++, Zb = 65280; null != oc && rc < oc.length && (Zb = K.parseInt("0x" + oc[rc])); var Mc = 2; null != kc && rc < kc.length && (Mc = parseFloat(kc[rc])); var Qb = 1; null != pc && rc < pc.length && (Qb = parseFloat(a.get("backalpha"))); this.makeLineGFX(wc, Zb, Mc, Lc, Yb, Pb, $b, ic, Kb, qb, Qb) } } this.makeLineGFX(wc, this.color, nc, Lc, Yb, Pb, $b, ic, Kb, qb); var xc = a.get("end"); if (null != xc) { for (var Rb = Lc, bb = 1; this.geometry.isOneSegment(Rb, bb, (bb + 1) % Kb);) bb = (bb + 1) % Kb; for (;;) { var Gc = da.GetBitmap(xc); this.sprite.addChild(Gc); Gc.set_x(Yb + $b[Rb]); Gc.set_y(Pb + ic[Rb]); Rb = bb; for (bb = (bb + 1) % Kb; this.geometry.isOneSegment(Rb, bb, (bb + 1) % Kb);) bb = (bb + 1) % Kb; if (Rb == Lc) break } } } else throw new D(new Bb("Todo: if not sprite")); this.physics = this.gameObject.physics; null != this.sprite && this.gameObject.gameSystem.objectSpriteDepths[this.depth].addChild(this.sprite); this.postUpdate() }, makeLineGFX: function(a, b, c, d, e, f, r, g, k, h, m) { null == m && (m = 1); var l = 0; null == a && this.sprite.flSprite.get_graphics().lineStyle(c, b, m); b = 0; c = d; m = 1; for (var n = 0; this.geometry.isOneSegment(c, m, (m + 1) % k);) m = (m + 1) % k; for (;;) { ++n; var q = r[c] - r[m], s = g[c] - g[m], q = Math.sqrt(q * q + s * s), l = l + q; 0.001 < q && (null != a ? this.sprite.createLineSegmentGFX(a, l, e + r[c], f + g[c], e + r[m], f + g[m]) : (0 == b && this.sprite.flSprite.get_graphics().moveTo(e + r[c], f + g[c]), this.sprite.flSprite.get_graphics().lineTo(e + r[m], f + g[m])), ++b); c = m; for (m = (m + 1) % k; this.geometry.isOneSegment(c, m, (m + 1) % k);) m = (m + 1) % k; if (m == d && !h || n >= k) break; if (c == d) break } }, postUpdate: function() { null == this.sprite || this.drawSpecial || (null != this.physics ? (this.sprite.set_x(this.physics.x), this.sprite.set_y(this.physics.y), this.sprite.set_rotation(this.physics.degrees)) : (this.sprite.set_x(this.transform.x), this.sprite.set_y(this.transform.y), this.sprite.set_rotation(this.transform.degrees)), this.updateOldValues && (this.updateOldValues = !1, this.sprite._updateOldValues())) }, getGameSprite: function() { return this.sprite }, setSingleTile: function(a, b, c, d, e, p, r, g, k, h, m) { m ? (c = Math.round((g - a.offsetY) / h) + c | 0, d = Math.round((r - a.offsetX) / h) + d | 0, k = x.FindStringId(f.BitmapsNames, k), a.setTile(b, c, d, p, f.Bitmaps[f.BitmapsIds[k]], e), null != this.tileObject && a.setTileObject(this.tileObject, c, d)) : (a = da.GetBitmap(k), a.set_x(Math.round(d * h)), a.set_y(Math.round(c * h)), this.sprite.addChild(a), a.gotoAndStop(e)) }, destroy: function() { null != this.sprite && (this.sprite.clearChildren(), f.Dispose(this.sprite), this.sprite = null) }, giveAwayGameSprite: function() { var a = this.getGameSprite(); a == this.sprite ? this.sprite = null : a.parent.removeChild(a); return a }, resetGraphics: function() { this.destroy(); this.postInit(); this.updateOldValues = !0; this.postUpdate() }, getParent: function() { return null != this.sprite && null != this.sprite.parent ? this.sprite.parent : null }, changeSprite: function(a) { null != a && null != this.sprite && this.sprite.parent.addChild(a); null != this.sprite && this.sprite.parent.removeChild(this.sprite); this.sprite = a }, __class__: da }); var $a = function(a) { this.tempKeys = []; this.index = a }; s["ozity.OzLevelProgress"] = $a; $a.__name__ = ["ozity", "OzLevelProgress"]; $a.getInstance = function(a) { if (null == $a.current || $a.current.index != a) $a.current = new $a(a); return $a.current }; $a.prototype = { clearTemps: function() { if (null == this.tempKeys || 0 < this.tempKeys.length) this.tempKeys = [] }, __class__: $a }; var Wc = function(a, b, c) { this.vec4 = null; this.visible = !0; N.call(this, a, b, c); null != c.get("visible") && (this.visible = "true" == c.get("visible")) }; s["ozity.OzPath"] = Wc; Wc.__name__ = ["ozity", "OzPath"]; Wc.__super__ = N; Wc.prototype = R(N.prototype, { init: function() { this.vec4 = []; this.gameObject.geometry.getMinMaxXY(this.gameObject.transform.x, this.gameObject.transform.y, this.gameObject.transform.degrees, this.vec4) }, postInit: function() { this.gameObject.graphics.sprite.set_visible(this.visible) }, getMinX: function() { return this.vec4[0] }, getMaxX: function() { return this.vec4[2] }, __class__: Wc }); var m = function(a, b) { this.colTypes = this.standingOn = null; this.colMask = -1; this.colGroup = 1; this.isSensor = this.isTop = !1; this.hitFlags = this.bodyType = this.x = this.y = this.velX = this.velY = this.accelX = this.accelY = this.degrees = 0; N.call(this, a, b, null) }; s["ozity.OzPhysics"] = m; m.__name__ = ["ozity", "OzPhysics"]; m.getFilter = function(a) { if (null == a) return m.DefaultFilter; var b = m.FilterMap; if (null != O[a] ? b.existsReserved(a) : b.h.hasOwnProperty(a)) return b = m.FilterMap, null != O[a] ? b.getReserved(a) : b.h[a]; var c = m.FiltersXml, b = null; if (null != c) for (c = c.elementsNamed("filter"); c.hasNext();) { var d = c.next(), e = d.get("name"); if (null != e && e == a) { b = d; break } } if (null != b) return c = m.FilterMap, null != O[a] ? c.setReserved(a, b) : c.h[a] = b, b; throw new D("CAN'T FIND FILTER: " + a); }; m.PreStaticInit = function() { m.ColHandlers = new Jb; var a = t.definitionsXML, b = null; if (null != a) for (a = a.elementsNamed("filters"); a.hasNext();) { b = a.next(); break } m.FiltersXml = b; m.FilterMap = new X; null != m.FiltersXml && (m.DefaultFilter = m.getFilter("default")) }; m.AddCollisionListener = function(a, b, c) { m.ColHandlers.exists(a) || m.ColHandlers.set(a, new Jb); m.ColHandlers.get(a).set(b, c) }; m.Update = function(a, b, c) { m.LastTimeStep = c; for (var d = 0; d < a.length;) { var e = a[d]; ++d; var f = e.physics; null != e.geometry && null != f && 3 == f.bodyType && (f.hitFlags = 0, f.x += f.velX * c, f.y += f.velY * c, f.velX += f.accelX * c, f.velY += f.accelY * c) } for (var h = 0; h < a.length;) { var g = a[h]; ++h; var k = g.physics, l = g.geometry; if (null != l && null != k && 1 == k.bodyType) switch (l.type) { case 1: var n = 0, q = null, s = !1, t = k.velX * c; null != k.standingOn && (t += k.standingOn.physics.velX * c); var u = k.x; m.leftHitDiff = m.rightHitDiff = 0; m.leftHitObject = m.rightHitObject = null; m.leftHit = m.rightHit = !1; for (var v = g.physics.x + g.geometry.x - g.geometry.halfWidth, x = v + 2 * g.geometry.halfWidth, y = g.physics.y + g.geometry.y - g.geometry.halfHeight, z = y + 2 * g.geometry.halfHeight, A = g.physics.colGroup, B = g.physics.colMask, E = 0; E < a.length;) { var C = a[E]; ++E; if (C != g && !C.dead && null != C.geometry && 1 == C.geometry.type && null != C.physics && !C.physics.isSensor && 1 != C.physics.bodyType && 0 != (A & C.physics.colMask) && 0 != (C.physics.colGroup & B)) { var F = C.physics.x + C.geometry.x - C.geometry.halfWidth, H = C.physics.x + C.geometry.x + C.geometry.halfWidth, J = C.physics.y + C.geometry.y - C.geometry.halfHeight, K = C.physics.velX * c; if (!(y + 1 > C.physics.y + C.geometry.y + C.geometry.halfHeight || z - 1 < J)) if (H - 1 - K < v) { v + t < H && (m.leftHit = !0); var L = H - (v + t); null == m.leftHitObject ? (m.leftHitObject = C, m.leftHitDiff = L) : L > m.leftHitDiff && (m.leftHitObject = C, m.leftHitDiff = L) } else if (F + 1 - K > x) { x + t > F && (m.rightHit = !0); var M = F - (x + t); null == m.rightHitObject ? (m.rightHitObject = C, m.rightHitDiff = M) : M < m.rightHitDiff && (m.rightHitObject = C, m.rightHitDiff = M) } } } null != m.rightHitObject && null != m.leftHitObject && 0 < m.leftHitDiff - m.rightHitDiff && (m.rightHit = m.leftHit = !0); m.leftHit && m.rightHit ? (k.x += t + (m.leftHitDiff + m.rightHitDiff) / 2, n |= 266) : m.rightHit ? (t = m.rightHitDiff + t, q = m.rightHitObject) : m.leftHit && (t = m.leftHitDiff + t, q = m.leftHitObject); var R = 0, O = b.getSlope(k.x + l.x, k.y + l.y + 1, l.halfHeight); if (0 > O * t) { for (var T = t * O, N = g.physics, S = g.geometry, P = N.y + S.y - S.halfHeight, W = t / T, X = N.x + S.x - S.halfWidth, Z = X + 2 * S.halfWidth, Y = P + b.GetMaxUpDY(X, Z, P, t, T), aa = N.colGroup, ba = N.colMask, ca = 0; ca < a.length;) { var U = a[ca]; ++ca; if (U != g && !U.dead && null != U.geometry && 1 == U.geometry.type && null != U.physics && !U.physics.isSensor && 1 != U.physics.bodyType && 0 != (aa & U.physics.colMask) && 0 != (U.physics.colGroup & ba)) { var da = U.physics.y + U.geometry.y + U.geometry.halfHeight; if (da < P + 1 && da > Y) { G.trace("POSSIBLE HIT", { fileName: "OzPhysics.hx", lineNumber: 1211, className: "ozity.OzPhysics", methodName: "GetMaxUpDY" }); var ea = (da - P) * W, fa = U.physics.x + U.geometry.x - U.geometry.halfWidth, ga = fa + 2 * U.geometry.halfWidth; Z + ea < fa || X + ea > ga || (Y = da) } } } R = Math.min(P, Y) - P; t = R / O } 0 == (n & 256) && (0 > t ? (s = b.horSideHit(k.x + l.x + t, k.y + l.y, l.halfWidth, l.halfHeight, -1)) ? (k.x = b.horHitSet(k.x + l.x + t, l.halfWidth, -1) - l.x, n |= 8, null != m.rightHitObject && (m.rightHit || k.x - u > m.rightHitDiff + k.velX * c) && (n |= 258)) : null != q ? (k.x += t, n |= 8, m.CollisionResponse(g, q)) : k.x += t : (s = b.horSideHit(k.x + l.x + t, k.y + l.y, l.halfWidth, l.halfHeight, 1)) ? (k.x = b.horHitSet(k.x + l.x + t, l.halfWidth, 1) - l.x, n |= 2, null != m.leftHitObject && (m.leftHit || k.x - u < m.leftHitDiff + k.velX * c) && (n |= 264)) : null != q ? (k.x += t, n |= 2, m.CollisionResponse(g, q)) : k.x += t); var q = null, s = !1, V = k.velY * c; null != k.standingOn && (V += k.standingOn.physics.velY * c); var ia = k.y; m.topHitDiff = m.bottomHitDiff = 0; m.topHitObject = m.bottomHitObject = null; m.topHit = m.bottomHit = !1; for (var ja = g.physics.x + g.geometry.x - g.geometry.halfWidth, la = ja + 2 * g.geometry.halfWidth, ka = g.physics.y + g.geometry.y - g.geometry.halfHeight, ma = ka + 2 * g.geometry.halfHeight, oa = g.physics.colGroup, qa = g.physics.colMask, na = 0; na < a.length;) { var ra = a[na]; ++na; if (ra != g && !ra.dead && null != ra.geometry && null != ra.physics && !ra.physics.isSensor && 1 != ra.physics.bodyType && 0 != (oa & ra.physics.colMask) && 0 != (ra.physics.colGroup & qa)) { var ua = ra.physics.x + ra.geometry.x - ra.geometry.halfWidth, pa = ra.physics.y + ra.geometry.y - ra.geometry.halfHeight, ta = ra.physics.y + ra.geometry.y + ra.geometry.halfHeight, xa = ra.physics.velY * c; if (!(ja + 1 > ra.physics.x + ra.geometry.x + ra.geometry.halfWidth || la - 1 < ua)) if (ta - 1 - xa < ka) { ka + V < ta && (m.topHit = !0); var va = ta - (ka + V); null == m.topHitObject ? (m.topHitObject = ra, m.topHitDiff = va) : va > m.topHitDiff && (m.topHitObject = ra, m.topHitDiff = va) } else if (pa + 1 - xa > ma) { ma + V > pa && (m.bottomHit = !0); var wa = pa - (ma + V); null == m.bottomHitObject ? (m.bottomHitObject = ra, m.bottomHitDiff = wa) : wa < m.bottomHitDiff && (m.bottomHitObject = ra, m.bottomHitDiff = wa) } } } null != m.topHitObject && null != m.bottomHitObject && 0 < m.topHitDiff - m.bottomHitDiff && (m.topHit = m.bottomHit = !0); m.topHit && m.bottomHit ? (k.y += V + (m.topHitDiff + m.bottomHitDiff) / 2, n |= 261) : m.bottomHit ? (n |= 4, V = m.bottomHitDiff + V, q = m.bottomHitObject) : m.topHit && (n |= 1, V = m.topHitDiff + V, q = m.topHitObject); m.bottomHit || (k.standingOn = null); if (0 == (n & 256)) if (0 > V) if (s = b.verSideHit(k.x + l.x, k.y + l.y + V, l.halfWidth, l.halfHeight, -1)) { k.y = b.verHitSet(k.y + l.y + V, l.halfHeight, -1) - l.y; n |= 1; null != m.bottomHitObject && (m.bottomHit || k.y - ia > m.bottomHitDiff + k.velY * c) && (n |= 260); for (var Aa = Math.floor((k.y + l.y - l.halfHeight + V - b.offsetY) / b.tileSize), Fa = Math.floor((k.x + l.x - l.halfWidth + 0.1 - b.offsetX) / b.tileSize), Ja = Math.floor((k.x + l.x + l.halfWidth - 0.1 - b.offsetX) / b.tileSize) + 1; Fa < Ja;) { var Ga = Fa++, Ha = b.getTileObject(Aa, Ga); g.dead || null == Ha || Ha.hitBelow(g, Aa, Ga) } } else null != q ? (k.y += V, m.topHit && (n |= 1), m.bottomHit && (k.standingOn = m.bottomHitObject), m.CollisionResponse(g, q)) : k.y += V; else { var ya = b.downHitSpecialSet(k.x, k.y + l.y + V + (0 < (k.hitFlags & 16) ? 10 : 0), l.halfHeight), s = b.verSideHit(k.x + l.x, k.y + l.y + V, l.halfWidth, l.halfHeight, 1, Math.floor(k.y + l.y + l.halfHeight + 0.1) < Math.floor(k.y + l.y + l.halfHeight + V + 0.1)); null != q && (isNaN(ya) ? s && (k.y + V > b.verHitSet(k.y + l.y + V, l.halfHeight, 1) - l.y ? q = null : s = !1) : k.y + V > ya + l.y ? q = null : ya = NaN); if (isNaN(ya)) if (s) { k.y = b.verHitSet(k.y + l.y + V, l.halfHeight, 1) - l.y; n |= 4; null != m.topHitObject && (m.topHit || k.y - ia < m.topHitDiff + k.velY * c) && (n |= 257); for (var Ia = Math.floor((k.y + l.y + l.halfHeight + V - b.offsetY) / b.tileSize), Ka = Math.floor((k.x + l.x - l.halfWidth + 0.1 - b.offsetX) / b.tileSize), Qa = Math.floor((k.x + l.x + l.halfWidth - 0.1 - b.offsetX) / b.tileSize) + 1; Ka < Qa;) { var Ma = Ka++, Oa = b.getTileObject(Ia, Ma); g.dead || null == Oa || Oa.hitAbove(g, Ia, Ma) } } else null != q ? (k.y += V, m.bottomHit && (n |= 4, k.standingOn = m.bottomHitObject), m.CollisionResponse(g, q)) : k.y += V; else k.y = ya - l.y, n |= 4, n |= 16, null != m.topHitObject && 0 < m.topHitObject.physics.velY && (m.topHit || k.y - ia < m.topHitDiff + k.velY * c) && (n |= 257) } k.hitFlags = n; if (0 > k.velX && 0 < (k.hitFlags & 8) || 0 < k.velX && 0 < (k.hitFlags & 2)) k.velX = 0; if (0 > k.velY && 0 < (k.hitFlags & 1) || 0 < k.velY && 0 < (k.hitFlags & 4)) k.velY = 0; if (0 < (k.colGroup & 15728640)) for (var Sa = Math.floor((k.x - l.halfWidth + 0.01 - b.offsetX) / b.tileSize), Ua = Math.floor((k.x + l.halfWidth - 0.01 - b.offsetX) / b.tileSize) + 1, Ra = Math.floor((k.y - l.halfHeight + 0.01 - b.offsetY) / b.tileSize), Xa = Math.floor((k.y + l.halfHeight - 0.01 - b.offsetY) / b.tileSize) + 1; Ra < Xa;) for (var Ta = Ra++, Va = Sa, cb = Ua; Va < cb;) { var Ya = Va++, Za = b.getTileObject(Ta, Ya); g.dead || null == Za || Za.touch(g, Ta, Ya) } break; case 2: for (var Ca = k.velX * c, Da = k.velY * c, jb = k.x + l.x, kb = k.y + l.y, za = !1, Wa = 0; Wa < a.length;) { var ab = a[Wa]; ++Wa; if (!(ab == g || ab.dead || null == ab.geometry || 1 != ab.geometry.type && 3 != ab.geometry.type || null == ab.physics || ab.physics.isSensor || 1 == ab.physics.bodyType || 0 == (k.colGroup & ab.physics.colMask) || 0 == (ab.physics.colGroup & k.colMask))) { var eb = ab.physics, sa = ab.geometry; if (1 == sa.type) { var fb = eb.x + sa.x - jb, ib = eb.y + sa.y - kb; fb * fb + ib * ib > sa.halfWidth * sa.halfWidth + sa.halfHeight * sa.halfHeight + l.radius * l.radius || (m.AdjustNearestData(g, Ca, Da, ab, -sa.halfWidth, -sa.halfHeight, sa.halfWidth, -sa.halfHeight, m.nearestData, za) && (za = !0), m.AdjustNearestData(g, Ca, Da, ab, sa.halfWidth, -sa.halfHeight, sa.halfWidth, sa.halfHeight, m.nearestData, za) && (za = !0), m.AdjustNearestData(g, Ca, Da, ab, sa.halfWidth, sa.halfHeight, -sa.halfWidth, sa.halfHeight, m.nearestData, za) && (za = !0), m.AdjustNearestData(g, Ca, Da, ab, -sa.halfWidth, sa.halfHeight, -sa.halfWidth, -sa.halfHeight, m.nearestData, za) && (za = !0)) } } } za && m.AdjustCircleFromSegment(g, Ca, Da, m.nearestData, m.tempVec2) && (Ca = m.tempVec2[0], Da = m.tempVec2[1]); G.trace("ikonata", { fileName: "OzPhysics.hx", lineNumber: 938, className: "ozity.OzPhysics", methodName: "Update", customParams: [k.x, k.y, Ca, Da] }); k.x += Ca; k.y += Da; break; default: G.trace("ERROR geometry not supported", { fileName: "OzPhysics.hx", lineNumber: 947, className: "ozity.OzPhysics", methodName: "Update", customParams: [g.geometry.type] }) } } for (var $a = 0; $a < a.length;) { var Pa = a[$a]; ++$a; var Ba = Pa.physics, Na = Pa.geometry; if (null != Na && null != Ba && 3 == Ba.bodyType) if (1 == Na.type) for (var lb = Ba.x + Na.x - Na.halfWidth, mb = Ba.y + Na.y - Na.halfHeight, yb = Math.floor((lb + 0.01 - b.offsetX) / b.tileSize), zb = Math.floor((lb + 2 * Na.halfWidth - 0.01 - b.offsetX) / b.tileSize) + 1, nb = Math.floor((mb + 0.01 - b.offsetY) / b.tileSize), Ab = Math.floor((mb + 2 * Na.halfHeight - 0.01 - b.offsetY) / b.tileSize) + 1; nb < Ab;) for (var pb = nb++, sb = yb, Fb = zb; sb < Fb;) { var ub = sb++, vb = b.getTileObject(pb, ub); Pa.dead || null == vb || vb.touch(Pa, pb, ub) } else if (2 == Na.type) for (var wb = Ba.x + Na.x - Na.radius, xb = Ba.y + Na.y - Na.radius, Hb = Math.floor((wb + 0.01 - b.offsetX) / b.tileSize), Ib = Math.floor((wb + 2 * Na.radius - 0.01 - b.offsetX) / b.tileSize) + 1, Db = Math.floor((xb + 0.01 - b.offsetY) / b.tileSize), Lb = Math.floor((xb + 2 * Na.radius - 0.01 - b.offsetY) / b.tileSize) + 1; Db < Lb;) for (var ob = Db++, Jb = Hb, Ob = Ib; Jb < Ob;) { var qb = Jb++, rb = qb * b.tileSize + b.offsetX, tb = ob * b.tileSize + b.offsetY, Eb = rb + b.tileSize, Gb = tb + b.tileSize, db = Ba.x + Na.x, gb = Ba.y + Na.y, hb = Na.radius, Cb; if (gb > tb && gb < Gb && db + hb > rb && db - hb < Eb) Cb = !0; else if (db > rb && db < Eb && gb + hb > tb && gb - hb < Gb) Cb = !0; else { var Yb = Eb - db, Pb = Math.min(Math.abs(rb - db), Math.abs(Yb)), ac = Gb - gb, Sb = Math.min(Math.abs(tb - gb), Math.abs(ac)); Cb = Pb * Pb + Sb * Sb < hb * hb } if (Cb) { var Tb = b.getTileObject(ob, qb); Pa.dead || null == Tb || Tb.touch(Pa, ob, qb); 1 == (b.colData[ob][qb] >> 16 & 15) && Ba.hasCollisionResponseWithType(Q.AnyType) && Ba.collisionResponseWithType(Q.AnyType) } } } for (var Ub = 0, bc = a.length; Ub < bc;) { var Mb = Ub++, ha = a[Mb]; if (!ha.dead && null != ha.geometry && null != ha.physics) if (1 == ha.geometry.type) for (var Vb = ha.physics.x + ha.geometry.x - ha.geometry.halfWidth, dc = Vb + 2 * ha.geometry.halfWidth, Wb = ha.physics.y + ha.geometry.y - ha.geometry.halfHeight, ec = Wb + 2 * ha.geometry.halfHeight, Xb = Mb + 1, fc = a.length; Xb < fc;) { var gc = Xb++, Ea = a[gc]; if (!Ea.dead && null != Ea.geometry && null != Ea.physics) { if (1 == Ea.geometry.type) { var Zb = Ea.physics.x + Ea.geometry.x - Ea.geometry.halfWidth, hc = Zb + 2 * Ea.geometry.halfWidth, Qb; if (dc <= Zb || hc <= Vb) Qb = !1; else { var cc = Ea.physics.y + Ea.geometry.y - Ea.geometry.halfHeight, lc = cc + 2 * Ea.geometry.halfHeight; Qb = ec <= cc || lc <= Wb ? !1 : !0 } if (!Qb) continue } else if (2 == Ea.geometry.type) { var Nb = ha.physics.x + ha.geometry.x - ha.geometry.halfWidth, mc = Nb + 2 * ha.geometry.halfWidth, vc = ha.physics.y + ha.geometry.y - ha.geometry.halfHeight, wc = vc + 2 * ha.geometry.halfHeight, nc = Ea.physics.x + Ea.geometry.x, $b = Ea.physics.y + Ea.geometry.y, ic = Ea.geometry.radius, Kb; if ($b > vc && $b < wc && nc + ic > Nb && nc - ic < mc) Kb = !0; else if (nc > Nb && nc < mc && $b + ic > vc && $b - ic < wc) Kb = !0; else { var Ec = mc - nc, Lc = Math.min(Math.abs(Nb - nc), Math.abs(Ec)), Fc = wc - $b, yc = Math.min(Math.abs(vc - $b), Math.abs(Fc)); Kb = Lc * Lc + yc * yc < ic * ic } if (!Kb) continue } else throw new D(new Bb("We Can Only Collide Rectangles and CIRCLES in G2!")); m.CollisionResponse(ha, Ea) } } else if (2 == ha.geometry.type) for (var jc = ha.physics.x + ha.geometry.x, oc = ha.physics.y + ha.geometry.y, kc = ha.geometry.radius, pc = Mb + 1, qc = a.length; pc < qc;) { var Ic = pc++, La = a[Ic]; if (!La.dead && null != La.geometry && null != La.physics) { if (1 == La.geometry.type) { var rc = La.physics.x + La.geometry.x - La.geometry.halfWidth, sc = rc + 2 * La.geometry.halfWidth, Mc = La.physics.y + La.geometry.y - La.geometry.halfHeight, tc = Mc + 2 * La.geometry.halfHeight, xc = ha.physics.x + ha.geometry.x, Rb = ha.physics.y + ha.geometry.y, bb = ha.geometry.radius, Gc; if (Rb > Mc && Rb < tc && xc + bb > rc && xc - bb < sc) Gc = !0; else if (xc > rc && xc < sc && Rb + bb > Mc && Rb - bb < tc) Gc = !0; else { var Jc = sc - xc, zc = Math.min(Math.abs(rc - xc), Math.abs(Jc)), Kc = tc - Rb, Ac = Math.min(Math.abs(Mc - Rb), Math.abs(Kc)); Gc = zc * zc + Ac * Ac < bb * bb } if (!Gc) continue } else if (2 == La.geometry.type) { var Bc = jc - (La.physics.x + La.geometry.x), Cc = oc - (La.physics.y + La.geometry.y); if (!(Bc * Bc + Cc * Cc < kc * kc + La.geometry.radius * La.geometry.radius)) continue } else throw new D(new Bb("We Can Only Collide Rectangles and CIRCLES in G2!")); m.CollisionResponse(ha, La) } } else throw new D(new Bb("We Can Only Collide Rectangles and Circles G1!")); } for (var uc = 0; uc < a.length;) { var Dc = a[uc]; ++uc; var Hc = Dc.physics; null != Dc.geometry && null != Hc && 2 != Hc.bodyType && (Hc.velX += Hc.accelX * c, Hc.velY += Hc.accelY * c) } }; m.AdjustNearestData = function(a, b, c, d, e, f, h, g, k, l) { b = a.physics.x + a.geometry.x + b; a = a.physics.y + a.geometry.y + c; c = d.physics; d = d.geometry; var n = c.x, q = c.y, s = c.degrees, t = m.tempVec2; d.applyOriginRotation(d.x + e, d.y + f, d.degrees, t); x.rotateAroundPoint(t[0], t[1], s, 0, 0, t); t[0] += n; t[1] += q; e = m.tempVec2[0]; f = m.tempVec2[1]; n = c.x; q = c.y; c = c.degrees; s = m.tempVec2; d.applyOriginRotation(d.x + h, d.y + g, d.degrees, s); x.rotateAroundPoint(s[0], s[1], c, 0, 0, s); s[0] += n; s[1] += q; h = m.tempVec2[0]; g = m.tempVec2[1]; b = x.PointLineDistance(e, f, h, g, b, a, !0); return !l || b < k[4] ? (k[0] = e, k[1] = f, k[2] = h, k[3] = g, k[4] = b, k[5] = x.PLDNearest, !0) : !1 }; m.AdjustCircleFromSegment = function(a, b, c, d, e) { var f = a.physics.x + a.geometry.x + b, h = a.physics.y + a.geometry.y + c, g = d[0], k = d[1], l = d[2], n = d[3]; return d[4] < a.geometry.radius ? (x.ProjectPointOnLineSegment(f, h, g, k, l, n, m.tempVec2), G.trace("(" + f, { fileName: "OzPhysics.hx", lineNumber: 1112, className: "ozity.OzPhysics", methodName: "AdjustCircleFromSegment", customParams: [h + "),(" + g, k + "),(" + l, n + "),(" + m.tempVec2[0], m.tempVec2[1] + ")"] }), d = l - g, n -= k, k = 0 * d - -1 * n, n = -1 * d + 0 * n, d = Math.sqrt(k * k + n * n), k = k * a.geometry.radius / d, n = n * a.geometry.radius / d, e[0] = m.tempVec2[0] - f + b + k, e[1] = m.tempVec2[1] - h + c + n, !0) : !1 }; m.CollisionResponse = function(a, b) { if (null != a.physics.colTypes && null != b.physics.colTypes) for (var c = 0, d = a.physics.colTypes; c < d.length;) { var e = d[c]; ++c; for (var f = 0, h = b.physics.colTypes; f < h.length;) { var g = h[f]; ++f; var k = m.ColHandlers.get(e); null != k && (k = k.get(g), null != k && k(a, b)); if (a.dead || b.dead) return; g = m.ColHandlers.get(g); null != g && (g = g.get(e), null != g && g(b, a)); if (a.dead || b.dead) return } } }; m.GetMaxUpDY = function(a, b, c, d, e) { var f = a.physics, h = a.geometry, g = f.y + h.y - h.halfHeight, k = d / e, m = f.x + h.x - h.halfWidth, h = m + 2 * h.halfWidth; b = g + b.GetMaxUpDY(m, h, g, d, e); d = f.colGroup; f = f.colMask; for (e = 0; e < c.length;) { var l = c[e]; ++e; if (l != a && !l.dead && null != l.geometry && 1 == l.geometry.type && null != l.physics && !l.physics.isSensor && 1 != l.physics.bodyType && 0 != (d & l.physics.colMask) && 0 != (l.physics.colGroup & f)) { var n = l.physics.y + l.geometry.y + l.geometry.halfHeight; if (n < g + 1 && n > b) { G.trace("POSSIBLE HIT", { fileName: "OzPhysics.hx", lineNumber: 1211, className: "ozity.OzPhysics", methodName: "GetMaxUpDY" }); var q = (n - g) * k, s = l.physics.x + l.geometry.x - l.geometry.halfWidth, l = s + 2 * l.geometry.halfWidth; h + q < s || m + q > l || (b = n) } } } return Math.min(g, b) - g }; m.GetSlope = function(a, b, c, d) { return a.getSlope(b, c, d) }; m.goStaticHorHit = function(a, b, c, d, e) { m.leftHitDiff = m.rightHitDiff = 0; m.leftHitObject = m.rightHitObject = null; m.leftHit = m.rightHit = !1; c = b.physics.x + b.geometry.x - b.geometry.halfWidth; for (var f = c + 2 * b.geometry.halfWidth, h = b.physics.y + b.geometry.y - b.geometry.halfHeight, g = h + 2 * b.geometry.halfHeight, k = b.physics.colGroup, l = b.physics.colMask, n = 0; n < a.length;) { var q = a[n]; ++n; if (q != b && !q.dead && null != q.geometry && 1 == q.geometry.type && null != q.physics && !q.physics.isSensor && 1 != q.physics.bodyType && 0 != (k & q.physics.colMask) && 0 != (q.physics.colGroup & l)) { var s = q.physics.x + q.geometry.x - q.geometry.halfWidth, t = q.physics.x + q.geometry.x + q.geometry.halfWidth, u = q.physics.y + q.geometry.y - q.geometry.halfHeight, v = q.physics.velX * e; h + 1 > q.physics.y + q.geometry.y + q.geometry.halfHeight || g - 1 < u || (t - 1 - v < c ? (c + d < t && (m.leftHit = !0), s = t - (c + d), null == m.leftHitObject ? (m.leftHitObject = q, m.leftHitDiff = s) : s > m.leftHitDiff && (m.leftHitObject = q, m.leftHitDiff = s)) : s + 1 - v > f && (f + d > s && (m.rightHit = !0), s -= f + d, null == m.rightHitObject ? (m.rightHitObject = q, m.rightHitDiff = s) : s < m.rightHitDiff && (m.rightHitObject = q, m.rightHitDiff = s))) } } null != m.rightHitObject && null != m.leftHitObject && 0 < m.leftHitDiff - m.rightHitDiff && (m.rightHit = m.leftHit = !0) }; m.goStaticVerHit = function(a, b, c, d, e) { m.topHitDiff = m.bottomHitDiff = 0; m.topHitObject = m.bottomHitObject = null; m.topHit = m.bottomHit = !1; c = b.physics.x + b.geometry.x - b.geometry.halfWidth; for (var f = c + 2 * b.geometry.halfWidth, h = b.physics.y + b.geometry.y - b.geometry.halfHeight, g = h + 2 * b.geometry.halfHeight, k = b.physics.colGroup, l = b.physics.colMask, n = 0; n < a.length;) { var q = a[n]; ++n; if (q != b && !q.dead && null != q.geometry && null != q.physics && !q.physics.isSensor && 1 != q.physics.bodyType && 0 != (k & q.physics.colMask) && 0 != (q.physics.colGroup & l)) { var s = q.physics.x + q.geometry.x - q.geometry.halfWidth, t = q.physics.y + q.geometry.y - q.geometry.halfHeight, u = q.physics.y + q.geometry.y + q.geometry.halfHeight, v = q.physics.velY * e; c + 1 > q.physics.x + q.geometry.x + q.geometry.halfWidth || f - 1 < s || (u - 1 - v < h ? (h + d < u && (m.topHit = !0), s = u - (h + d), null == m.topHitObject ? (m.topHitObject = q, m.topHitDiff = s) : s > m.topHitDiff && (m.topHitObject = q, m.topHitDiff = s)) : t + 1 - v > g && (g + d > t && (m.bottomHit = !0), s = t - (g + d), null == m.bottomHitObject ? (m.bottomHitObject = q, m.bottomHitDiff = s) : s < m.bottomHitDiff && (m.bottomHitObject = q, m.bottomHitDiff = s))) } } null != m.topHitObject && null != m.bottomHitObject && 0 < m.topHitDiff - m.bottomHitDiff && (m.topHit = m.bottomHit = !0) }; m.outsideVer = function(a, b, c, d) { return a + 0.001 > d ? !0 : b - 0.001 < c }; m.outsideHor = function(a, b, c, d) { return a + 0.001 > d ? !0 : b - 0.001 < c }; m.goRectRectHit = function(a, b, c, d, e) { var f = e.physics.x + e.geometry.x - e.geometry.halfWidth, h = f + 2 * e.geometry.halfWidth; if (b <= f || h <= a) return !1; a = e.physics.y + e.geometry.y - e.geometry.halfHeight; e = a + 2 * e.geometry.halfHeight; return d <= a || e <= c ? !1 : !0 }; m.goCircCircHit = function(a, b, c, d) { a -= d.physics.x + d.geometry.x; b -= d.physics.y + d.geometry.y; return a * a + b * b < c * c + d.geometry.radius * d.geometry.radius }; m.goRectCircHit = function(a, b) { var c = a.physics.x + a.geometry.x - a.geometry.halfWidth, d = c + 2 * a.geometry.halfWidth, e = a.physics.y + a.geometry.y - a.geometry.halfHeight, f = e + 2 * a.geometry.halfHeight, h = b.physics.x + b.geometry.x, g = b.physics.y + b.geometry.y, k = b.geometry.radius; if (g > e && g < f && h + k > c && h - k < d || h > c && h < d && g + k > e && g - k < f) return !0; d -= h; c = Math.min(Math.abs(c - h), Math.abs(d)); f -= g; e = Math.min(Math.abs(e - g), Math.abs(f)); return c * c + e * e < k * k }; m.rawRectCircHit = function(a, b, c, d, e, f, h) { if (f > c && f < d && e + h > a && e - h < b || e > a && e < b && f + h > c && f - h < d) return !0; b -= e; a = Math.min(Math.abs(a - e), Math.abs(b)); d -= f; c = Math.min(Math.abs(c - f), Math.abs(d)); return a * a + c * c < h * h }; m.__super__ = N; m.prototype = R(N.prototype, { hitTop: function() { return 0 < (this.hitFlags & 1) }, hitRight: function() { return 0 < (this.hitFlags & 2) }, hitBottom: function() { return 0 < (this.hitFlags & 4) }, hitLeft: function() { return 0 < (this.hitFlags & 8) }, hitSpecialBottom: function() { return 0 < (this.hitFlags & 16) }, smashed: function() { return 0 < (this.hitFlags & 256) }, isDynamic: function() { return 1 == this.bodyType }, isStatic: function() { return 2 == this.bodyType }, isKinematic: function() { return 3 == this.bodyType }, init: function() { this.x = this.gameObject.transform.x; this.y = this.gameObject.transform.y; this.degrees = this.gameObject.transform.degrees; var a = this.compPrefab.get("type"); this.bodyType = null == a ? 1 : "kinematic" == a ? 3 : "static" == a ? 2 : 1; this.isSensor = "true" == this.compPrefab.get("sensor"); this.isTop = "true" == this.compPrefab.get("top"); 1 == this.bodyType && (this.accelY = this.gameObject.gameSystem.gravity); var a = this.compPrefab.get("filter"), a = m.getFilter(a), b = a.get("colGroup"); null != b && (this.colGroup = K.parseInt("0x" + b)); a = a.get("colMask"); null != a && (this.colMask = K.parseInt("0x" + a)); a = this.compPrefab.get("colTypes"); if (null != a) for (a = x.CommaStringToArray(a), this.colTypes = [], this.colTypes.push(Q.AnyType), b = 0; b < a.length;) { var c = a[b]; ++b; try { this.colTypes.push(U.createEnum(Q, c, null)) } catch (d) { throw new D(this.gameObject.getType() + ": no such colType in enum: " + c); } } }, hasCollisionResponseWithType: function(a) { if (null != this.colTypes) for (var b = m.ColHandlers.get(a), c = 0, d = this.colTypes; c < d.length;) { var e = d[c]; ++c; var f = m.ColHandlers.get(e); if (null != f && f.exists(a) || null != b && b.exists(e)) return !0 } return !1 }, collisionResponseWithType: function(a) { if (null != this.colTypes) for (var b = m.ColHandlers.get(a), c = 0, d = this.colTypes; c < d.length;) { var e = d[c]; ++c; var f = m.ColHandlers.get(e); null != f && f.exists(a) && f.get(a)(this.gameObject, null); null != b && b.exists(e) && b.get(e)(null, this.gameObject) } }, setxy: function(a, b) { this.x = a; this.y = b }, stopDead: function() { this.velX = this.velY = this.accelX = this.accelY = 0 }, FillBounds: function(a) { this.gameObject.geometry.getMinMaxXY(this.x, this.y, this.degrees, a); return a }, outOfScreenBounds: function() { var a = (l.WIDTH - l.WIDTH_MIN) / 2, b = (l.HEIGHT - l.HEIGHT_MIN) / 2; this.FillBounds(m.BoundVec4); return m.BoundVec4[2] < -a || m.BoundVec4[0] > l.WIDTH_MIN + a || m.BoundVec4[3] < -b ? !0 : m.BoundVec4[1] > l.HEIGHT_MIN + b }, __class__: m }); var Fc = function(a, b, c) { this.aJ = []; this.aI = []; N.call(this, a, b, c) }; s["ozity.OzTileObject"] = Fc; Fc.__name__ = ["ozity", "OzTileObject"]; Fc.__super__ = N; Fc.prototype = R(N.prototype, { init: function() { this.tileMap = this.gameObject.gameSystem.tileMap }, touch: function(a, b, c) {}, hitBelow: function(a, b, c) {}, hitAbove: function(a, b, c) {}, getId: function(a, b) { for (var c = 0, d = this.aI.length; c < d;) { var e = c++; if (this.aI[e] == a && this.aJ[e] == b) return e } return -1 }, __class__: Fc }); var jb = function(a, b) { this.degrees = 0; N.call(this, a, null, b); null != b ? (this.x = parseFloat(b.get("x")), this.y = parseFloat(b.get("y")), this.degrees = parseFloat(b.get("rot"))) : this.setxydeg() }; s["ozity.OzTransform"] = jb; jb.__name__ = ["ozity", "OzTransform"]; jb.__super__ = N; jb.prototype = R(N.prototype, { setxydeg: function(a, b, c) { null == c && (c = 0); null == b && (b = 0); null == a && (a = 0); this.x = a; this.y = b; this.degrees = c }, fromParent: function(a) { x.rotateAroundPoint(a.x + this.x, a.y + this.y, a.degrees, a.x, a.y, jb.TempVec); this.x = jb.TempVec[0]; this.y = jb.TempVec[1]; this.degrees += a.degrees }, blabla: function() { G.trace("blabla", { fileName: "OzTransform.hx", lineNumber: 38, className: "ozity.OzTransform", methodName: "blabla" }) }, __class__: jb }); var Xc = function(a, b, c) { this.toTrigger = null; N.call(this, a, b, c) }; s["ozity.OzTrigger"] = Xc; Xc.__name__ = ["ozity", "OzTrigger"]; Xc.__super__ = N; Xc.prototype = R(N.prototype, { init: function() { N.prototype.init.call(this); this.toTrigger = [] }, addToTrigger: function(a) { this.toTrigger.push(a) }, trigger: function() { for (var a = 0, b = this.toTrigger; a < b.length;) { var c = b[a]; ++a; c.directMessage(L.TRIGGER) } }, __class__: Xc }); var z = function(a, b, c) { this.wasSpeeding = !1; this.lastMouseDownFrame = -1; this.lastFrameMDown = !1; this.food = 0; this.isPlayer = !0; this.rotSpeed = 0.17; this.speed = 100; N.call(this, a, b, c); null != b.get("speed") && (this.speed = parseFloat(b.get("speed"))); null != b.get("rotSpeed") && (this.rotSpeed = parseFloat(b.get("rotSpeed"))); null != c.get("isPlayer") && (this.isPlayer = "true" == c.get("isPlayer")) }; s["ozity.OzWorm"] = z; z.__name__ = ["ozity", "OzWorm"]; z.GetPossibleAnswer = function() { if (0.15 > Math.random()) return z.ProblemSolution; var a = z.ProblemSolution - 11; 1 > a && (a = 1); 100 <= a + 22 && (a = 77); return a + (22 * Math.random() | 0) }; z.StaticInit = function() { z.Mode = 0; z.ProblemSolution = -1E4; G.trace("we set mode none!", { fileName: "OzWorm.hx", lineNumber: 165, className: "ozity.OzWorm", methodName: "StaticInit" }); z.Bananas = []; z.Worms = [] }; z.SetMode = function(a) { z.Mode = a; z.Player.newProblem(); z.Player.fillWithRings() }; z.__super__ = N; z.prototype = R(N.prototype, { newProblem: function() { G.trace("new problem", { fileName: "OzWorm.hx", lineNumber: 88, className: "ozity.OzWorm", methodName: "newProblem" }); var a = ["+", "-", "*", "/"], a = 5 == z.Mode ? a[4 * Math.random() | 0] : a[z.Mode - 1], b = -1, c, d, e; if ("+" == a || "-" == a) { for (; c = 1 + 8.98 * Math.random() | 0, d = 1 + 8.98 * Math.random() | 0, e = c + d, b = "+" == a ? e : e - d, b == z.ProblemSolution;); z.ProblemSolution = b; z.ProblemStatement = "+" == a ? c + "+" + d : e + "-" + d } else { for (; c = 1 + 8.98 * Math.random() | 0, d = 1 + 8.98 * Math.random() | 0, e = c * d, b = "*" == a ? e : e / d | 0, b == z.ProblemSolution;); z.ProblemSolution = b; z.ProblemStatement = "*" == a ? c + "*" + d : e + "/" + d } t.TextMath(E.instance.problemSprite.getChild("problem"), z.ProblemStatement + "=?", V.CENTER); t.TextMath(E.instance.problemSprite2.getChild("problem2"), z.ProblemStatement + "=?", V.LEFT); 0 < this.eatenCircles && (n.To(E.instance.problemSprite, 0.15, { scaleX: 1.2, scaleY: 1.2 }).reflect(!0).ease(Ca.QuadOut), n.To(E.instance.problemSprite2, 0.15, { scaleX: 1.2, scaleY: 1.2 }).reflect(!0).ease(Ca.QuadOut)) }, die: function() { if (!this.gameObject.dead) { for (var a = 0, b = z.Worms.length; a < b;) { var c = a++; if (z.Worms[c] == this) { z.Worms.splice(c, 1); break } } for (var a = this.gameObject.graphics.depth, c = b = this.par.child.prev, d = this.gameObject.physics.x, e = this.gameObject.physics.y;;) { var h = [f.New(q.cmcSmoke)], l = 360 * Math.random(); h[0].set_rotation(l); this.gameObject.gameSystem.addSprite(h[0], a); var l = d + c.get_x(), g = e + c.get_y(); h[0].set_x(l); h[0].set_y(g); l = h[0].set_scaleY(0.6); h[0].set_scaleX(l); h[0]._updateOldValues(); n.To(h[0], 0.7, { alpha: 0.5, scaleX: 1.2, scaleY: 1.2 }).ease(Ca.QuadIn).onComplete(function(a) { return function() { a[0].dispose() } }(h)).onUpdate(function(a, b) { return function() { var c = b[0]; c.set_rotation(c.get_rotation() + a[0]) } }([4], h)); c = c.prev; c != b && (c = c.prev); if (c == b) break } this.gameObject.kill(); this.isPlayer ? this.gameObject.gameSystem.sendMessage(L.PLAYER_DIE) : (z.SpawnTimer = 150, this.gameObject.gameSystem.sendMessage(L.PLAYER_JUMP)) } }, adjustEnemies: function() { if (0 < z.SpawnTimer) z.SpawnTimer--; else { var a = 150 / this.gameObject.gameSystem.camera.getZoomX(); if (1 > z.Worms.length) { for (var b, c, d;;) if (c = Math.random() * Math.PI * 2, b = 500 * Math.cos(c) + z.Player.gameObject.physics.x, c = 500 * Math.sin(c) + z.Player.gameObject.physics.y, d = !0, 100 > E.MinDistInside(b, c)) d = !1; else { for (var e = 0, f = z.Bananas.length; e < f;) { var h = e++, g = z.Bananas[h], h = g.gameObject.transform.x - b, g = g.gameObject.transform.y - c; if (h * h + g * g < a * a) { d = !1; break } } if (!d) if (d) break; else continue; e = 0; for (f = z.Player.posX.length; e < f;) if (g = e++, h = z.Player.posX[g] - b, g = z.Player.posY[g] - c, h * h + g * g < a * a + 1E4) { d = !1; break } if (d) break } d && (a = this.gameObject.gameSystem.createLazyGameObjectByStringId("worm"), d = a.getComponent(z), a.transform.setxydeg(b, c, 0), a.init(), d.isPlayer = !1, a.postInit()) } } }, destroy: function() { N.prototype.destroy.call(this); this.removeSpeedRings(); for (var a = 0, b = z.Worms.length; a < b;) { var c = a++; if (z.Worms[c] == this) { z.Worms.splice(c, 1); break } } }, adjustBananas: function() { for (var a = this.gameObject.gameSystem.camera.getZoomX(), b = l.WIDTH_MAX / a, a = l.HEIGHT_MAX / a, c = this.gameObject.physics.x - b / 2, d = this.gameObject.physics.y - a / 2, c = E.AdjustX(c, b), d = E.AdjustY(d, a), e = Ga.Radius + 25, f = 0; f < z.Bananas.length;) { var h = z.Bananas[f]; h.gameObject.physics.x + e < c || h.gameObject.physics.x - e > c + b || h.gameObject.physics.y + e < d || h.gameObject.physics.y - e > d + a ? h.gameObject.destroy() : ++f } f = (b + a) * Math.random(); f < b ? (c += f, b = 0 > Math.sin(this.dir) ? d - e : d + a + e) : (c = 0 > Math.cos(this.dir) ? c - e : c + b + e, b = d + f - b); this.putBananaIfYouCan(c, b) }, putBananaIfYouCan: function(a, b) { if (20 <= z.Bananas.length) return !1; var c = 150 / this.gameObject.gameSystem.camera.getZoomX(), d = E.MinDistInside(a, b); if (0 > d - c) return !1; for (var d = 0, e = z.Bananas.length; d < e;) { var f = d++, h = z.Bananas[f], f = h.gameObject.transform.x - a, h = h.gameObject.transform.y - b; if (f * f + h * h < c * c) return !1 } d = 0; for (e = z.Worms.length + 1; d < e;) for (var f = d++, f = f < z.Worms.length ? z.Worms[f] : z.Player, h = 0, g = f.posX.length; h < g;) { var k = h++, l = f.posX[k] - a, k = f.posY[k] - b; if (l * l + k * k < c * c + 1E4) return !1 } c = this.gameObject.gameSystem.createLazyGameObjectByStringId("banana"); c.transform.setxydeg(a, b, 0); c.init(); c.postInit(); return !0 }, fillWithRings: function() { for (var a = this.gameObject.gameSystem.camera.getZoomX(), b = l.WIDTH_MAX / a, a = l.HEIGHT_MAX / a, c = this.gameObject.physics.x - b / 2, d = this.gameObject.physics.y - a / 2, c = E.AdjustX(c, b), d = E.AdjustY(d, a), e = 0; this.putBananaIfYouCan(c + b * Math.random(), d + a * Math.random()), ++e, 20 > z.Bananas.length && 100 > e;); }, eatCircle: function() { this.eatenCircles++; 100 > this.numSegments && this.appendSegment(); this.newProblem() }, postInit: function() { N.prototype.postInit.call(this); z.SpawnTimer = 150; this.eatenCircles = 0; this.speedRings = []; this.speedRingFrame = -1; var a = this.gameObject.graphics.getGameSprite(); a.gotoAndStop(this.isPlayer ? 1 : 2); this.par = f.New(); this.gameObject.graphics.changeSprite(this.par); this.par.addChild(a); a.set_x(0); a.set_y(0); a.addChild(this.leftEye = f.New(q.cmcWhiteEye)); var b = this.leftEye; b.set_x(8); b.set_y(-13); this.leftEye.addChild(this.bLeftEye = f.New(q.cmcBlackEye)); b = this.bLeftEye; b.set_x(6); b.set_y(0); a.addChild(this.rightEye = f.New(q.cmcWhiteEye)); a = this.rightEye; a.set_x(8); a.set_y(13); this.rightEye.addChild(this.bRightEye = f.New(q.cmcBlackEye)); a = this.bRightEye; a.set_x(6); a.set_y(0); this.diameter = 30; this.segDist = 10; this.numSegments = 1; for (a = this.dir = 2 * Math.random() * Math.PI; 0 > a;) a += 2 * Math.PI; for (; a >= 2 * Math.PI;) a -= 2 * Math.PI; this.dir = a; this.posX = []; this.posY = []; this.posX.push(this.gameObject.physics.x); for (this.posY.push(this.gameObject.physics.y); 10 > this.numSegments;) this.appendSegment(); for (var a = 3 * -Math.cos(this.dir), b = 3 * -Math.sin(this.dir), c = 1, d = this.posX.length; c < d;) { var e = c++; this.posX[e] = this.posX[e - 1] + a; this.posY[e] = this.posY[e - 1] + b } this.isPlayer ? (this.gameObject.gameSystem.camera.setWatchable(this.gameObject), this.gameObject.gameSystem.setPlayer(this.gameObject), z.Player = this) : z.Worms.push(this); this.drawWorm() }, appendSegment: function() { var a = f.New(q.cmcWormSegment); a.gotoAndStop(this.isPlayer ? 1 : 2); this.gameObject.graphics.getGameSprite().addChild(a, 0); this.numSegments++; this.adjustWormSegments() }, minBananaBoundsSegmentDist: function(a, b, c, d) { var e = Math.min(E.MinDistInside(a, b), E.MinDistInside(c, d)); if (0 >= e) return 0; for (var f = 0, h = z.Bananas.length; f < h;) { var g = f++, g = z.Bananas[g], e = Math.min(e, x.PointLineDistance(a, b, c, d, g.gameObject.physics.x, g.gameObject.physics.y, !0) - Ga.Radius); if (0 >= e) return 0 } return e }, checkPolarSegmentBananaBounds: function(a, b, c, d, e) { return this.minBananaBoundsSegmentDist(a, b, a + Math.cos(d) * c, b + Math.sin(d) * c) >= e }, hitsBananaOrBounds: function(a, b, c) { if (E.MinDistInside(a, b) < c) return !0; c += 25; for (var d = 0, e = z.Bananas.length; d < e;) { var f = d++, h = z.Bananas[f], f = h.gameObject.transform.x - a, h = h.gameObject.transform.y - b; if (f * f + h * h < c * c) return !0 } return !1 }, update: function() { N.prototype.update.call(this); if (!this.gameObject.dead) { this.isPlayer && 1 < this.gameObject.cnt && 0 != z.Mode && (this.adjustBananas(), this.adjustEnemies()); var a = E.MinDistInside(this.gameObject.physics.x, this.gameObject.physics.y), a = a - this.diameter / 2; if (0 > a) this.die(); else { for (var a = 0, b = z.Worms.length + 1; a < b;) { var c = a++, c = c < z.Worms.length ? z.Worms[c] : z.Player; if (c != this && !c.gameObject.dead) for (var d = (this.diameter + c.diameter) / 2, d = d * d, e = 0, p = c.posX.length; e < p;) { var m = e++, g = c.posX[m] - this.gameObject.physics.x, m = c.posY[m] - this.gameObject.physics.y; if (g * g + m * m < d) { this.die(); return } } } c = this.gameObject.physics.x; d = this.gameObject.physics.y; a = this.gameObject.gameSystem.camera.toWorldX(h.mx); b = this.gameObject.gameSystem.camera.toWorldY(h.my); p = a - this.gameObject.physics.x; g = b - this.gameObject.physics.y; e = 0; if (64 < p * p + g * g) { for (e = Math.atan2(g, p); 0 > e;) e += 2 * Math.PI; for (; e >= 2 * Math.PI;) e -= 2 * Math.PI; for (e -= this.dir; 0 <= e;) e -= 2 * Math.PI; Math.abs(e) > Math.abs(e + 2 * Math.PI) && (e += 2 * Math.PI); e < -this.rotSpeed ? e = -this.rotSpeed : e > this.rotSpeed && (e = this.rotSpeed) } if (!this.isPlayer && !this.checkPolarSegmentBananaBounds(c, d, 80, this.dir + e, 30)) if (this.checkPolarSegmentBananaBounds(c, d, 80, this.dir, 30)) e = 0; else { for (var g = Math.PI / 2 / 16, k = m = 0, p = 1; 16 >= p && !this.checkPolarSegmentBananaBounds(c, d, 80, this.dir - p * g, 30);) ++p; if (16 >= p) for (var m = -p * g, n = -(p - 1) * g, s = 0; 14 > s;) { s++; var t = (m + n) / 2; this.checkPolarSegmentBananaBounds(c, d, 80, this.dir + t, 30) ? m = t : n = t } for (n = 1; 16 >= n && !this.checkPolarSegmentBananaBounds(c, d, 80, this.dir + n * g, 30);) ++n; if (16 >= n) for (k = n * g, g *= n - 1, s = 0; 14 > s;) s++, t = (k + g) / 2, this.checkPolarSegmentBananaBounds(c, d, 80, this.dir + t, 30) ? k = t : g = t; 16 < p && 16 < n || (e = Math.abs(m) < Math.abs(k) ? -Math.min(Math.abs(m), this.rotSpeed) : Math.min(Math.abs(k), this.rotSpeed)) } for (c = this.dir += e; 0 > c;) c += 2 * Math.PI; for (; c >= 2 * Math.PI;) c -= 2 * Math.PI; this.dir = c; if (this.isPlayer) for (c = 0; 2 > c;) d = c++, e = this.gameObject.physics.x, p = this.gameObject.physics.y, g = 8 * Math.cos(this.dir) - 13 * (0 == d ? -1 : 1) * Math.sin(this.dir), m = 8 * Math.sin(this.dir) + 13 * (0 == d ? -1 : 1) * Math.cos(this.dir), g *= this.gameObject.graphics.getGameSprite().get_scaleX(), m *= this.gameObject.graphics.getGameSprite().get_scaleY(), e = Math.atan2(b - p - m, a - e - g), (0 == d ? this.leftEye : this.rightEye).set_rotation(180 * (e - this.dir) / Math.PI); a = this.speed; b = h.mdown && 2 < this.gameObject.cnt; l.isMobile && b && (b = this.wasSpeeding ? !0 : !this.lastFrameMDown && 20 > this.gameObject.gameSystem.updateFrame - this.lastMouseDownFrame ? !0 : !1); !this.lastFrameMDown && h.mdown && (this.lastMouseDownFrame = this.gameObject.gameSystem.updateFrame); this.lastFrameMDown = h.mdown; if (this.wasSpeeding = b) { if (a *= 2, this.isPlayer || (a *= 0.85), this.speedRingFrame++, 0 == this.speedRingFrame % 2) for (b = 0, c = 0 == this.speedRingFrame ? Math.ceil(this.numSegments / 2) : 1; b < c;) b++, d = f.New(q.cmcSpeedRing), x.Reverse_oz_OzSprite(this.speedRings), this.speedRings.push(d), x.Reverse_oz_OzSprite(this.speedRings), this.gameObject.gameSystem.addSprite(d, this.gameObject.graphics.depth - 1) } else this.speedRingFrame = -1, this.removeSpeedRings(); this.gameObject.physics.velX = a * Math.cos(this.dir); this.gameObject.physics.velY = a * Math.sin(this.dir) } } }, removeSpeedRings: function() { for (; 0 < this.speedRings.length;) this.speedRings[this.speedRings.length - 1].dispose(), this.speedRings.pop() }, drawWorm: function() { var a = 0, b = this.par.child.prev; b.set_rotation(180 * this.dir / Math.PI); for (var c = 3 - this.slack, d = -1, e = this.gameObject.physics.x, f = this.gameObject.physics.y, h = 0, g = this.speedRingFrame % 2 / 1 | 0;;) { b.set_scaleX(b.set_scaleY(this.diameter / 60)); if (0 < a) { for (c += this.segDist; 3 <= c;) c -= 3, ++d; var k = Math.max(0, d) | 0, l = Math.min(this.posX.length - 1, d + 1) | 0, m = 1 - c / 3, n = this.posX[k] * m + this.posX[l] * (1 - m), m = this.posY[k] * m + this.posY[l] * (1 - m); if (k == l) if (0 == k) l = 1; else if (k == this.posX.length - 1) k = this.posX.length - 2; else throw new D("can't be equal over end"); b.set_rotation(180 * Math.atan2(this.posY[k] - this.posY[l], this.posX[k] - this.posX[l]) / Math.PI); b.set_x(n - e); b.set_y(m - f) } h < this.speedRings.length && a % 2 == g && (this.speedRings[h].set_scaleX(this.speedRings[h].set_scaleY(b.get_scaleX())), 0 == a ? (k = this.speedRings[h], k.set_x(e), k.set_y(f)) : (k = this.speedRings[h], l = b.get_x() + e, n = b.get_y() + f, k.set_x(l), k.set_y(n)), (0 == this.speedRingFrame || 0 == a && 0 == this.speedRingFrame % 2) && this.speedRings[h]._updateOldValues(), ++h); b = b.prev; ++a; if (!(a < this.numSegments)) break } for (; h < this.speedRings.length;) this.speedRings[this.speedRings.length - 1].dispose(), this.speedRings.pop() }, adjustAngle: function(a) { for (; 0 > a;) a += 2 * Math.PI; for (; a >= 2 * Math.PI;) a -= 2 * Math.PI; return a }, adjustWormSegments: function() { for (var a = Math.ceil((this.numSegments - 1) * this.segDist / 3) + 1, b = this.posX[this.posX.length - 1], c = this.posY[this.posY.length - 1]; this.posX.length < a;) this.posX.push(b), this.posY.push(c) }, postUpdate: function() { if (!this.gameObject.dead) { var a = this.gameObject.physics.x - this.posX[0], b = this.gameObject.physics.y - this.posY[0]; this.slack = Math.sqrt(a * a + b * b); var c = Math.floor(this.slack / 3); this.slack -= 3 * c; var c = Math.min(this.posX.length, c) | 0, d = 0; if (0 < c) for (b = Math.atan2(b, a), a = 3 * Math.cos(b), b = 3 * Math.sin(b); d < c;) { var e = (this.posX.length - d) % this.posX.length, f = (this.posX.length - d - 1) % this.posX.length; this.posX[f] = this.posX[e] + a; this.posY[f] = this.posY[e] + b; ++d } x.ReverseFloats(this.posX, 0, this.posX.length - d); x.ReverseFloats(this.posY, 0, this.posY.length - d); x.ReverseFloats(this.posX, this.posX.length - d); x.ReverseFloats(this.posY, this.posY.length - d); x.ReverseFloats(this.posX); x.ReverseFloats(this.posY); this.drawWorm() } }, __class__: z }); var Lb = function(a) { this.p = a; this.doc = new f; a.stateSprite.addChild(this.doc); this.cnt = 0 }; s["states.State"] = Lb; Lb.__name__ = ["states", "State"]; Lb.prototype = { update: function() { h.down[27] && !h.kproc[27] && (h.kproc[27] = !0, this.escape()); this.cnt++ }, preRender: function() {}, escape: function() { return null != tb.LastDialogRater ? (tb.HideRateDialog(), !0) : null != tb.LastLivesDialog ? (tb.HideLivesDialog(), !0) : !1 }, resize: function() {}, __class__: Lb }; var E = function(a, b) { this.earthQuakeDuraiton = 0; this.fromEditor = !1; this.gameSystem = null; var c = this; Lb.call(this, a); this.editorLvl = b; var d = K.parseInt("240"); G.trace("TILESIZE IS BRO", { fileName: "StatePlay.hx", lineNumber: 181, className: "states.StatePlay", methodName: "new", customParams: [d] }); null == E.tileMap ? E.tileMap = new v(E.BoundsWidth / d | 0, E.BoundsHeight / d | 0, E.OffsetX, E.OffsetY, d, 1, 1, !1) : E.tileMap.reset(); this.collectedStars = 0; this.firstMDown = !1; E.instance = this; this.bounds = []; this.touch = l.isMobile; this.weStart = !0; this.curShape = this.curClick = 0; this.doc.addChild(this.menuSprite = new f); mb.cmcPlay(this.menuSprite); f.BGInit(this.menuSprite.getChild("bg"), 0); this.menuSprite.getChild("btnPause").makeButton(ea(this, this.pause)); this.doc.addChild(this.objectSprite = f.New()); this.doc.addChild(this.nextSprite = f.New()); this.doc.addChild(this.hoverSprite = f.New()); this.hoverSprite.set_alpha(0.7); this.doc.addChild(this.clockSprite = f.New()); this.doc.addChild(this.guiSprite = f.New()); this.guiSprite.addChild(this.menuSprite.getChild("btnPause")); this.guiSprite.addChild(this.menuSprite.getChild("score")); this.guiSprite.addChild(this.menuSprite.getChild("btnCancel")); this.guiSprite.addChild(this.menuSprite.getChild("minimap")); this.guiSprite.addChild(this.menuSprite.getChild("sponsor")); this.guiSprite.addChild(this.problemSprite = f.New()); this.problemSprite.addChild(this.menuSprite.getChild("problem")); var d = this.problemSprite, e = this.problemSprite.getChild("problem"), m = e.get_x(), n = e.get_y(); d.set_x(m); d.set_y(n); d.set_rotation(e.get_rotation()); d = this.problemSprite; d.set_y(d.get_y() + 17); d = this.problemSprite.getChild("problem"); d.set_x(0); d.set_y(-17); this.guiSprite.addChild(this.problemSprite2 = f.New()); this.problemSprite2.addChild(this.menuSprite.getChild("problem2")); d = this.problemSprite2; e = this.problemSprite2.getChild("problem2"); m = e.get_x(); n = e.get_y(); d.set_x(m); d.set_y(n); d.set_rotation(e.get_rotation()); d = this.problemSprite2; d.set_y(d.get_y() + 17); d = this.problemSprite2.getChild("problem2"); d.set_x(0); d.set_y(-17); t.atHooda ? this.guiSprite.getChild("sponsor").set_visible(!1) : (this.guiSprite.getChild("sponsor").makeLink(t.moreGames), d = this.problemSprite2, d.set_y(d.get_y() - 55)); this.doc.addChild(this.overlaySprite = f.New()); mb.cmcPlayOverlay(this.overlaySprite); this.showMenu1(!0); E.SetupAudioButtons(this.overlaySprite); E.AdjustAudioButtons(this.overlaySprite); this.overlaySprite.getChild("soundOn").setFluid(72); this.overlaySprite.getChild("soundOff").setFluid(72); this.overlaySprite.getChild("problem").setFluid(8); this.overlaySprite.getChild("problem").set_visible(!1); this.overlaySprite.getChild("score").set_visible(!1); this.overlaySprite.getChild("madeBy").setFluid(258); this.overlaySprite.getChild("sponsor").makeLink(t.moreGames); 0 <= t.levelScores[0] ? t.TextMath(this.overlaySprite.getChild("best"), "BEST:" + t.levelScores[0], V.CENTER) : this.overlaySprite.getChild("best").set_visible(!1); this.overlaySprite.getChild("btnPlay").makeButton(function(a) { c.showMenu1(!1) }); this.overlaySprite.getChild("btnInstructions").makeButton(ea(this, this.showInstructions)); this.overlaySprite.getChild("btnAddition").makeButton(function(a) { z.SetMode(1); c.startPlay() }); this.overlaySprite.getChild("btnSubtraction").makeButton(function(a) { z.SetMode(2); c.startPlay() }); this.overlaySprite.getChild("btnMultiplication").makeButton(function(a) { z.SetMode(3); c.startPlay() }); this.overlaySprite.getChild("btnDivision").makeButton(function(a) { z.SetMode(4); c.startPlay() }); this.overlaySprite.getChild("btnMixed").makeButton(function(a) { z.SetMode(5); c.startPlay() }); this.doc.addChild(this.instructionsSprite = f.New()); mb.cmcInstructions(this.instructionsSprite); this.instructionsSprite.getChild("screen1").gotoAndStop(1); this.instructionsSprite.getChild("text1").gotoAndStop(1); this.instructionsSprite.getChild("screen2").gotoAndStop(2); this.instructionsSprite.getChild("text2").gotoAndStop(2); this.instructionsSprite.getChild("screen3").gotoAndStop(3); d = l.isMobile ? 4 : 3; this.instructionsSprite.getChild("text3").gotoAndStop(d); this.instructionsSprite.set_visible(!1); this.instructionsSprite.getChild("btnOK").makeButton(ea(this, this.hideInstructions)); this.doc.addChild(this.dialogSprite = f.New()); this.doc.addChild(this.failSprite = f.New()); this.state = E.NORMAL; this.guiSprite.getChild("score").setFluid(264); this.guiSprite.getChild("btnPause").setFluid(72); this.problemSprite.setFluid(8); this.problemSprite2.setFluid(258); this.guiSprite.getChild("sponsor").setFluid(258); this.guiSprite.getChild("minimap").setFluid(66); this.guiSprite.getChild("minimap").addChild(this.miniPlayer = f.New(q.cmcMinimapPlayer)); this.doc.adjustAllLayouts(); this.resetGame(); G.trace(this.objectSprite.padFlags, { fileName: "StatePlay.hx", lineNumber: 423, className: "states.StatePlay", methodName: "new", customParams: [this.doc.padFlags, this.doc.parent.padFlags, this.doc.parent.parent.padFlags, l.instance.doc.padFlags] }); h.mdown = h.mup = !1; h.reFocus(a); t.hideGUI && (this.guiSprite.getChild("btnPause").set_visible(!1), d = this.guiSprite.getChild("touchDevice"), d.set_y(d.get_y() + 500)); this.clearDirectionInput(); this.resize() }; s["states.StatePlay"] = E; E.__name__ = ["states", "StatePlay"]; E.AdjustX = function(a, b) { a < E.OffsetX && (a = E.OffsetX); a + b > E.BoundsWidth - E.OffsetX && (a = E.BoundsWidth - E.OffsetX - b); return a }; E.AdjustY = function(a, b) { a < E.OffsetY && (a = E.OffsetY); a + b > E.BoundsHeight - E.OffsetY && (a = E.BoundsHeight - E.OffsetY - b); return a }; E.MinDistInside = function(a, b) { for (var c = 1E6, d = 0, e = E.worldBoundsX.length; d < e;) var f = d++, h = (f + 1) % E.worldBoundsX.length, g = 240 * (E.worldBoundsX[h] - E.worldBoundsX[f]), h = 240 * (E.worldBoundsY[h] - E.worldBoundsY[f]), f = (g * (b - (240 * E.worldBoundsY[f] + E.OffsetY)) - (a - (240 * E.worldBoundsX[f] + E.OffsetX)) * h) / Math.sqrt(g * g + h * h), c = Math.min(c, f); return c }; E.SetUpBG = function(a, b) { null == b && (b = 1); a.gotoAndStop(b) }; E.UpdateBG = function(a) {}; E.HolaShare = function(a) { lb.Share("Such Bunny Run", "Play this great bunny game! Tap To Jump", null) }; E.SetupAudioButtons = function(a) { a.getChild("soundOn").makeButton(function(b) { a.getChild("soundOn").set_visible(!1); a.getChild("soundOff").set_visible(!0); u.ToggleMuteMusic(); u.ToggleMuteSound() }); a.getChild("soundOff").makeButton(function(b) { a.getChild("soundOn").set_visible(!0); a.getChild("soundOff").set_visible(!1); u.ToggleMuteMusic(); u.ToggleMuteSound() }) }; E.AdjustAudioButtons = function(a) { a.getChild("soundOn").set_visible(!u.muteSound); a.getChild("soundOff").set_visible(u.muteSound) }; E.__super__ = Lb; E.prototype = R(Lb.prototype, { resetGame: function() { null != this.gameSystem && (this.gameSystem.destroy(), n.Reset(1)); var a; if (null != this.editorLvl) this.fromEditor = !0, a = this.editorLvl, t.currentLevel = K.parseInt(a.get("name")) - 1, G.trace(t.currentLevel, { fileName: "StatePlay.hx", lineNumber: 502, className: "states.StatePlay", methodName: "resetGame", customParams: ["THIS IS LVL PARSED"] }); else { var b = t.levelsXML; a = "" + (t.currentLevel + 1); var c = null; if (null != b) for (b = b.elementsNamed("level"); b.hasNext();) { var d = b.next(), e = d.get("name"); if (null != e && e == a) { c = d; break } } a = c } this.gameSystem = new oa(this.objectSprite, a, E.tileMap, 0); this.gameSystem.addEventsListener(ea(this, this.processMessage)); this.gameSystem.camera.makeCenterFixed(); ka.MAX_CAMERA_SPEED = 2E4 }, showInstructions: function(a) { E.InstructionsSeen = !0; this.instructionsSprite.set_visible(!0) }, hideInstructions: function(a) { this.instructionsSprite.set_visible(!1); E.StartPlayAfterInstructions && (this.startPlay(), E.StartPlayAfterInstructions = !1) }, showMenu1: function(a) { this.overlaySprite.getChild("btnPlay").set_visible(a); this.overlaySprite.getChild("btnInstructions").set_visible(a); this.overlaySprite.getChild("score").set_visible(a); this.overlaySprite.getChild("best").set_visible(a); this.overlaySprite.getChild("btnAddition").set_visible(!a); this.overlaySprite.getChild("btnSubtraction").set_visible(!a); this.overlaySprite.getChild("btnMultiplication").set_visible(!a); this.overlaySprite.getChild("btnDivision").set_visible(!a); this.overlaySprite.getChild("btnMixed").set_visible(!a) }, startPlay: function(a) { var b = this; this.overlaySprite.getChild("btnPlay").mouseEnabled && (0 > t.levelScores[0] && !E.InstructionsSeen ? (E.StartPlayAfterInstructions = !0, this.showInstructions()) : (t.TextMathWhite(this.guiSprite.getChild("score"), "0", V.LEFT), this.overlaySprite.getChild("problem").set_visible(!1), this.overlaySprite.getChild("btnPlay").mouseEnabled = !1, n.To(this.overlaySprite, 0.3, { alpha: 0.1 }).ease(Ca.QuadIn).onComplete(function() { b.overlaySprite.set_visible(!1) }))) }, endPlay: function() { var a = this; this.showMenu1(!0); this.overlaySprite.getChild("score").set_visible(this.overlaySprite.getChild("best").set_visible(!0)); var b = z.Player.eatenCircles; t.TextMathWhite(this.overlaySprite.getChild("score"), "SCORE:" + b, V.CENTER); t.levelScores[0] < b && (t.levelScores[0] = b); t.save(); 0 <= t.levelScores[0] && t.TextMath(this.overlaySprite.getChild("best"), "BEST:" + t.levelScores[0], V.CENTER); b = z.ProblemStatement + "=" + z.ProblemSolution; E.AdjustAudioButtons(this.overlaySprite); this.overlaySprite.set_visible(!0); this.overlaySprite.set_alpha(0); this.overlaySprite.getChild("problem").set_visible(!0); t.TextMath(this.overlaySprite.getChild("problem"), b, V.CENTER); this.overlaySprite.getChild("btnPlay").mouseEnabled = !1; n.To(this.overlaySprite, 0.3, { alpha: 1 }).ease(Ca.QuadIn).onComplete(function() { a.resetGame(); a.overlaySprite.getChild("btnPlay").mouseEnabled = !0 }) }, resume: function(a) { var b = this; n.To(this.dialogSprite, 0.3, { alpha: 0.001 }).onComplete(function() { b.dialogSprite.clear(); b.paused = !1 }) }, update: function() { Lb.prototype.update.call(this); if (!this.paused && this.state != E.LOSE && this.state != E.WIN) { (!this.overlaySprite.get_visible() || 1 > this.gameSystem.updateFrame) && this.gameSystem.update(1 / l.FPS); E.UpdateBG(this.menuSprite.getChild("bg")); var a = this.miniPlayer, b = this.gameSystem.getPlayer().physics.x / 100, c = this.gameSystem.getPlayer().physics.y / 100; a.set_x(b); a.set_y(c); 0 < this.earthQuakeDuraiton && (this.earthQuakeDuraiton--, 0 == this.earthQuakeDuraiton ? (a = this.objectSprite, a.set_x(0), a.set_y(0)) : (a = this.objectSprite, b = 1 - 3 * Math.random(), c = 1 - 3 * Math.random(), a.set_x(b), a.set_y(c))) } }, clearDirectionInput: function() { var a = h.down, b = h.down, c = h.key("A"), d = h.down, e = h.key("D"); a[37] = b[c] = h.down[39] = d[e] = !1 }, processMessage: function(a) { var b = this; switch (a[1]) { case 0: this.state != E.NORMAL || this.overlaySprite.get_visible() || (this.overlaySprite.set_visible(!0), this.overlaySprite.set_alpha(0), u.PlaySound("boom"), this.gameSystem.camera.addEarthQuake(1), this.earthQuakeDuraiton = 20, n.DelayedCall(1, function() { b.endPlay() })); break; case 2: u.PlaySound("jump"); break; case 3: u.PlaySound("smash"); break; case 4: u.PlaySound("stomp"); break; case 5: this.guiSprite.getChild("touchDevice").set_visible(!0); this.guiSprite.getChild("helpMessage").set_visible(!0); this.guiSprite.getChild("touchDevice").gotoAndStop(1 + (l.isMobile ? 1 : 0)); this.guiSprite.getChild("helpMessage").gotoAndStop(2 + (l.isMobile ? 2 : 0)); break; case 7: u.PlaySound("key"); break; case 8: u.PlaySound("collect"); t.TextMathWhite(this.guiSprite.getChild("score"), "" + z.Player.eatenCircles, V.LEFT); n.To(this.guiSprite.getChild("score"), 0.15, { scaleX: 1.2, scaleY: 1.2 }).reflect(!0).ease(Ca.QuadOut); break; case 9: u.PlaySound("opendoor"); break; case 10: u.PlaySound("spring"); break; case 11: u.PlaySound("boom"); break; case 12: u.PlaySound("pop"); break; case 13: u.PlaySound("pop") } }, pause: function(a) { this.paused || this.state != E.NORMAL && this.state != E.WAITING || this.overlaySprite.get_visible() || (this.paused = !0, this.dialogSprite.clear(), mb.cmcPaused(this.dialogSprite), E.SetupAudioButtons(this.dialogSprite), E.AdjustAudioButtons(this.dialogSprite), this.dialogSprite.getChild("bg").smooth = !1, this.dialogSprite.set_alpha(0.001), n.To(this.dialogSprite, 0.3, { alpha: 1 }), this.dialogSprite.getChild("btnPlay").makeButton(ea(this, this.resume)), u.hasSound || this.dialogSprite.getChild("btnSound").set_visible(!1)) }, escape: function() { if (Lb.prototype.escape.call(this)) return !0; this.pause(); return !0 }, resize: function() { Lb.prototype.resize.call(this); this.overlaySprite.getChild("sponsor").set_y(440 + (l.HEIGHT - l.HEIGHT_MIN) / 4) }, __class__: E }); var Ya, Ad = 0; s.Math = Math; H.__init(); String.prototype.__class__ = s.String = String; String.__name__ = ["String"]; s.Array = Array; Array.__name__ = ["Array"]; Date.prototype.__class__ = s.Date = Date; Date.__name__ = ["Date"]; var Cd = s.Int = { __name__: ["Int"] }, Bd = s.Dynamic = { __name__: ["Dynamic"] }, od = s.Float = Number; od.__name__ = ["Float"]; var nd = s.Bool = Boolean; nd.__ename__ = ["Bool"]; var pd = s.Class = { __name__: ["Class"] }, qd = {}; Ba.preload(); Ra.content = [{ name: "levels", data: "PGxldmVscz4KCTxsZXZlbCB0aXRsZT0iZmlyc3QtMzgwIiBuYW1lPSIxIj4KCQk8b2JqZWN0IHg9IjQzNzYiIHR5cGU9Il9yZWN0IiB5PSI0NjAwIiByb3Q9IjAiPgoJCQk8Z2VvbWV0cnkgeD0iMCIgdHlwZT0icmVjdCIgaGFsZldpZHRoPSI3MiIgeT0iMCIgZGVncmVlcz0iMCIgaGFsZkhlaWdodD0iNzIiLz4KCQk8L29iamVjdD4KCQk8b2JqZWN0IHg9IjE0NDAiIHR5cGU9ImdyYXNzbXVkIiB5PSIxMjAwIiByb3Q9IjAiPgoJCQk8Z2VvbWV0cnkgblZlcnRpY2VzPSI3IiB0eXBlPSJwb2x5IiB5PSIwIiB2ZXJ0aWNlcz0iMjQwMCwwLDI4ODAsMCwyODgwLDI4ODAsMCwyODgwLDAsMjQwMCwyNDAsMjQwMCwyNDAwLDI0MCIgZGVncmVlcz0iMCIgeD0iMCIvPgoJCTwvb2JqZWN0PgoJCTxvYmplY3QgeD0iLTM2MDAiIHR5cGU9ImdyYXNzbXVkIiB5PSIxMjAwIiByb3Q9IjAiPgoJCQk8Z2VvbWV0cnkgblZlcnRpY2VzPSI3IiB0eXBlPSJwb2x5IiB5PSIwIiB2ZXJ0aWNlcz0iMjg4MCwyODgwLDAsMjg4MCwwLDAsNDgwLDAsNDgwLDI0MCwyNjQwLDI0MDAsMjg4MCwyNDAwIiBkZWdyZWVzPSIwIiB4PSIwIi8+CgkJPC9vYmplY3Q+CgkJPG9iamVjdCB4PSItMzM2MCIgdHlwZT0iZ3Jhc3NtdWQiIHk9Ii0zMzYwIiByb3Q9IjAiPgoJCQk8Z2VvbWV0cnkgblZlcnRpY2VzPSI3IiB0eXBlPSJwb2x5IiB5PSIwIiB2ZXJ0aWNlcz0iMCwwLDI2NDAsMCwyNjQwLDQ4MCwyNDAwLDQ4MCw0ODAsMjQwMCw0ODAsMjY0MCwwLDI2NDAiIGRlZ3JlZXM9IjAiIHg9IjAiLz4KCQk8L29iamVjdD4KCQk8b2JqZWN0IHg9IjE0NDAiIHR5cGU9ImdyYXNzbXVkIiB5PSItMzM2MCIgcm90PSIwIj4KCQkJPGdlb21ldHJ5IG5WZXJ0aWNlcz0iNyIgdHlwZT0icG9seSIgeT0iMCIgdmVydGljZXM9IjAsNDgwLDAsMCwyNjQwLDAsMjY0MCwyNjQwLDIxNjAsMjY0MCwyMTYwLDI0MDAsMjQwLDQ4MCIgZGVncmVlcz0iMCIgeD0iMCIvPgoJCTwvb2JqZWN0PgoJCTxvYmplY3QgeD0iMzYwIiB0eXBlPSJncmFzc211ZCIgdGlsZUZyYW1lPSI4IiB5PSItMzAwMCIgcm90PSIwIj4KCQkJPGdlb21ldHJ5IHg9IjAiIHR5cGU9InJlY3QiIGhhbGZXaWR0aD0iMTMyMCIgeT0iMCIgZGVncmVlcz0iMCIgaGFsZkhlaWdodD0iMTIwIi8+CgkJPC9vYmplY3Q+CgkJPG9iamVjdCB4PSIzNjAiIHR5cGU9ImdyYXNzbXVkIiB0aWxlRnJhbWU9IjIiIHk9IjM3MjAiIHJvdD0iMCI+CgkJCTxnZW9tZXRyeSB4PSIwIiB0eXBlPSJyZWN0IiBoYWxmV2lkdGg9IjEzMjAiIHk9IjAiIGRlZ3JlZXM9IjAiIGhhbGZIZWlnaHQ9IjEyMCIvPgoJCTwvb2JqZWN0PgoJCTxvYmplY3QgeD0iMzcyMCIgdHlwZT0iZ3Jhc3NtdWQiIHRpbGVGcmFtZT0iNCIgeT0iMzYwIiByb3Q9IjAiPgoJCQk8Z2VvbWV0cnkgeD0iMCIgdHlwZT0icmVjdCIgaGFsZldpZHRoPSIxMjAiIHk9IjAiIGRlZ3JlZXM9IjAiIGhhbGZIZWlnaHQ9IjEzMjAiLz4KCQk8L29iamVjdD4KCQk8b2JqZWN0IHg9Ii0zMDAwIiB0eXBlPSJncmFzc211ZCIgdGlsZUZyYW1lPSI2IiB5PSIzNjAiIHJvdD0iMCI+CgkJCTxnZW9tZXRyeSB4PSIwIiB0eXBlPSJyZWN0IiBoYWxmV2lkdGg9IjEyMCIgeT0iMCIgZGVncmVlcz0iMCIgaGFsZkhlaWdodD0iMTMyMCIvPgoJCTwvb2JqZWN0PgoJCTxvYmplY3QgeD0iMjAzIiB0eXBlPSJ3b3JtIiB5PSIyODMiIHJvdD0iMCIvPgoJPC9sZXZlbD4KPC9sZXZlbHM+Cg" }, { name: "definitions", data: "PGRlZmluaXRpb25zPgoJPG9iamVjdHM+CgkJPG9iamVjdCBlZGl0b3I9ImRvdCIgdHlwZT0id29ybSI+CgkJCTxib2R5IGZpbHRlcj0iYW5pbWFsIiB0eXBlPSJkeW5hbWljIiBjb2xUeXBlcz0iUGxheWVyLENvbGxlY3RvciIvPgoJCQk8Z3JhcGhpY3Mgc3JjPSJjbWNXb3JtU2VnbWVudCIgdHlwZT0ic3ByaXRlIiBkZXB0aD0iMyIvPgoJCQk8Z2VvbWV0cnkgaGFsZkhlaWdodD0iMTUiIHR5cGU9InJlY3QiIHk9IjMiIHg9IjAiIGhhbGZXaWR0aD0iMTUiIGRlZ3JlZXM9IjAiLz4KCQkJPGMgbj0iT3pXb3JtIi8+CgkJPC9vYmplY3Q+CgkJPG9iamVjdCBlZGl0b3I9ImRvdCIgdHlwZT0iZG9vciI+CgkJCTxib2R5IHNlbnNvcj0idHJ1ZSIgdHlwZT0iZHluYW1pYyIgbWF0ZXJpYWw9ImJ1bm55IiBjb2xUeXBlcz0iRG9vciIvPgoJCQk8Z3JhcGhpY3Mgc3JjPSJjbWNEb29yIiB0eXBlPSJzcHJpdGUiIGRlcHRoPSIxIi8+CgkJCTxnZW9tZXRyeSBoYWxmSGVpZ2h0PSIyMCIgdHlwZT0icmVjdCIgeT0iLTIwIiB4PSIwIiBoYWxmV2lkdGg9IjEyIiBkZWdyZWVzPSIwIi8+CgkJCTxjIG49Ik96RG9vciIvPgoJCTwvb2JqZWN0PgoJCTxvYmplY3QgZWRpdG9yPSJyZWN0IiB0eXBlPSJncmFzc211ZCI+CgkJCTwhLS08Ym9keSBtYXRlcmlhbD0ib3JnYW5pYyIgdHlwZT0ic3RhdGljIi8+LS0+CgkJCTxncmFwaGljcyB0eXBlPSJ0aWxlIiB0aWxlRG93bjIzPSIxNywxOCwxOSIgY29sbGlzaW9uPSJub25lIiB0aWxlVXA0NT0iMTAsMTEiIGV4cGFuZD0iMSIgdGlsZVVwMjM9IjE0LDE1LDE2IiB0aWxlRG93bjQ1PSIxMiwxMyIgc3JjPSJ0aWxlSnVuZ2xlIiBkZXB0aD0iMCIgc2NhbGU5PSIxIiB0aWxlUG9seT0idHJ1ZSIgdGlsZUV4Y2x1ZGU9IjExLDEzLDE1LDE2LDE4LDE5IiAvPgoJCTwvb2JqZWN0PgoJCTxvYmplY3QgZWRpdG9yPSJkb3QiIHR5cGU9ImJhbmFuYSI+CgkJCTxib2R5IHNlbnNvcj0idHJ1ZSIgdHlwZT0ia2luZW1hdGljIiBtYXRlcmlhbD0ib3JnYW5pYyIgY29sVHlwZXM9IkJhbmFuYSIvPgoJCQk8Z3JhcGhpY3Mgc3JjPSJ0aWxlQ29pbiIgdHlwZT0ic3ByaXRlIiBkZXB0aD0iMiIgY29sbGlzaW9uPSJub25lIi8+CgkJCTxnZW9tZXRyeSByYWRpdXM9IjI1IiB0eXBlPSJjaXJjIiB5PSIwIiB4PSIwIiBkZWdyZWVzPSIwIi8+CgkJCTxjIG49Ik96QmFuYW5hIi8+CgkJPC9vYmplY3Q+CgkJPCEtLSBKT0lOVFMgLS0+CgkJPCEtLTxvYmplY3QgdHlwZT0icGluIiBlZGl0b3I9ImRvdCI+PGdyYXBoaWNzIHR5cGU9InNwcml0ZSIgc3JjPSJjbWNEb3QiIGRlcHRoPSIyIi8+PGMgbj0iT3pSZXZvbHV0ZUpvaW50IiB0ZXN0UEY9IkJvYmJ5RmFiZXIiLz48L29iamVjdD48b2JqZWN0IHR5cGU9ImRpc3RhbmNlIiBlZGl0b3I9ImxpbmUiPjxqb2ludCB0eXBlPSJkaXN0YW5jZSIvPjxncmFwaGljcyB0eXBlPSJsaW5lIiBzcmM9ImJtcENoYWluIiBkZXB0aD0iMiIgZW5kPSJjbWNDaGFpblBpbiIvPjwvb2JqZWN0Pi0tPgoJCTxvYmplY3QgdHlwZT0icGF0aCIgZWRpdG9yPSJwYXRoIj4KCQkJPGdyYXBoaWNzIGxpbmVjb2xvcj0iMDBmZjAwIiB0eXBlPSJwYXRoIiBzcmM9ImJtcFBhdGhFZGdlIiBlbmQ9ImNtY1BhdGhOb2RlIiBkZXB0aD0iMSIvPgoJCQk8YyBuPSJPelBhdGgiLz4KCQk8L29iamVjdD4KCQk8IS0tIFNZUyBPQkpFQ1RTIC0tPgoJCTxvYmplY3QgZWRpdG9yPSJwb2x5IiB0eXBlPSJfcG9seSI+CgkJCTxncmFwaGljcyBzcmM9ImJtcFN5c0ZpbGwiIHR5cGU9ImZpbGwiIHdpZHRoPSI2NCIgbGluZWNvbG9yPSJmZmZmZmYiIGhlaWdodD0iNjQiIGRlcHRoPSIwIiBsaW5ld2lkdGg9IjIiLz4KCQk8L29iamVjdD4KCQk8b2JqZWN0IGVkaXRvcj0icmVjdCIgdHlwZT0iX3JlY3QiPgoJCQk8Z3JhcGhpY3Mgc3JjPSJibXBTeXNGaWxsIiB0eXBlPSJmaWxsIiB3aWR0aD0iNjQiIGxpbmVjb2xvcj0iZmZmZmZmIiBoZWlnaHQ9IjY0IiBkZXB0aD0iMCIgbGluZXdpZHRoPSIyIi8+CgkJPC9vYmplY3Q+CgkJPG9iamVjdCBlZGl0b3I9ImNpcmMiIHR5cGU9Il9jaXJjIj4KCQkJPGdyYXBoaWNzIHNyYz0iYm1wU3lzRmlsbCIgdHlwZT0iZmlsbCIgd2lkdGg9IjY0IiBsaW5lY29sb3I9ImZmZmZmZiIgaGVpZ2h0PSI2NCIgZGVwdGg9IjAiIGxpbmV3aWR0aD0iMiIvPgoJCTwvb2JqZWN0PgoJCTxvYmplY3QgZWRpdG9yPSJ0cmkiIHR5cGU9Il90cmkiPgoJCQk8Z3JhcGhpY3Mgc3JjPSJibXBTeXNGaWxsIiB0eXBlPSJmaWxsIiB3aWR0aD0iNjQiIGxpbmVjb2xvcj0iZmZmZmZmIiBoZWlnaHQ9IjY0IiBkZXB0aD0iMCIgbGluZXdpZHRoPSIyIi8+CgkJPC9vYmplY3Q+Cgk8L29iamVjdHM+Cgk8ZmlsdGVycz4KCQk8ZmlsdGVyIGNvbEdyb3VwPSIwMDAwMDAwMSIgY29sTWFzaz0iMGZmZmZmZmYiIG5hbWU9ImRlZmF1bHQiLz4KCQk8ZmlsdGVyIGNvbEdyb3VwPSIwMGYwMDAwMSIgY29sTWFzaz0iMGZmZmZmZmYiIG5hbWU9ImFuaW1hbCIvPgoJPC9maWx0ZXJzPgoJPG1hdGVyaWFscz4KCQk8bWF0ZXJpYWwgZHluYW1pY0ZyaWN0aW9uPSIwLjIiIHN0YXRpY0ZyaWN0aW9uPSIwLjQiIGVsYXN0aWNpdHk9IjAuMiIgbmFtZT0icm9sbHppZSIvPgoJCTxtYXRlcmlhbCBkeW5hbWljRnJpY3Rpb249IjAiIGRlbnNpdHk9IjEwMCIgZWxhc3RpY2l0eT0iNSIgbmFtZT0iaGVhdnliYWxsIi8+CgkJPG1hdGVyaWFsIHN0YXRpY0ZyaWN0aW9uPSIwIiBkZW5zaXR5PSIwLjMiIGR5bmFtaWNGcmljdGlvbj0iMC41IiBuYW1lPSJ3b29kIi8+CgkJPG1hdGVyaWFsIGR5bmFtaWNGcmljdGlvbj0iMC4xIiBzdGF0aWNGcmljdGlvbj0iMC4xIiBkZW5zaXR5PSIwLjMiIGVsYXN0aWNpdHk9IjEuMiIgbmFtZT0ianVtcHkiLz4KCQk8bWF0ZXJpYWwgc3RhdGljRnJpY3Rpb249IjAuMDEiIGRlbnNpdHk9IjAuMyIgZHluYW1pY0ZyaWN0aW9uPSIwLjAxIiBuYW1lPSJzbm93eSIvPgoJCTxtYXRlcmlhbCBzdGF0aWNGcmljdGlvbj0iMSIgZGVuc2l0eT0iNSIgZHluYW1pY0ZyaWN0aW9uPSIxIiBuYW1lPSJidWxsZXR5Ii8+CgkJPG1hdGVyaWFsIG5hbWU9Im9yZ2FuaWMiLz4KCQk8bWF0ZXJpYWwgc3RhdGljRnJpY3Rpb249IjAiIGVsYXN0aWNpdHk9IjAiIG5hbWU9ImJ1bm55Ii8+CgkJPG1hdGVyaWFsIHN0YXRpY0ZyaWN0aW9uPSIwLjIiIGRlbnNpdHk9IjUiIG5hbWU9Im1ldGFsIi8+Cgk8L21hdGVyaWFscz4KPC9kZWZpbml0aW9ucz4K" } ]; var O = {}; cb.preload(); var zd = zd || {}; zd.JQuery = window.jQuery; var Nb = Yc.ArrayBuffer || Za; null == Nb.prototype.slice && (Nb.prototype.slice = Za.sliceImpl); var ud = Yc.DataView || Oc, hb = Yc.Uint8Array || pb._new, yc = Event.prototype, Ic = fa.prototype; yc.clone = Ic.clone; yc.isDefaultPrevented = Ic.isDefaultPrevented; yc.get_target = Ic.get_target; yc.set_target = Ic.set_target; yc.get_currentTarget = Ic.get_currentTarget; yc.set_currentTarget = Ic.set_currentTarget; C.AssetNames = ["assets/GameFont.png", "assets/Objects.png"]; C.AssetBytes = [24901, 806868]; l.BOTH_ORIENTATIONS = !1; l.INTERPOLATE = !1; l.hasResized = !1; l.started = !1; l.NumChangedStates = 0; l.systemPaused = !1; l.hadSound = !0; u.needsAudio = !0; u.hasMusic = !1; u.hasSound = !1; u.loaded = !1; u.initted = !1; u.muteMusic = !1; u.muteSound = !1; u.locallyMuted = !1; bc.JioTopScore = 0; A.BMPsToRemove = []; A.ShowBlank = !1; A.NoGA = !1; A.timePassed = !0; A.filterAds = !1; A.showMobile = !0; A.showCross = !0; A.assetsLoaded = !1; A.MainStarted = !1; A.estimateLoaded = 0; za.SM = ["boom", "collect", "jump", "roll"]; za.M = []; t.currentLevel = 0; t.currentSkin = 0; t.seenSkins = 1; t.MAX_LIVES = 10; t.hideGUI = !1; t.NUMLEVELS = 30; t.is4399 = !1; t.atHooda = !1; t.ext = ""; t.GooglePlayURL = "http://play.google.com/store/apps/details?id=com.ozdy.jumpyapejoe"; t.DefaultMobileURL = "http://m.ozdy.com/"; lb.AdsInitted = !1; h.KEYNUM = 256; h.ENTER = 13; h.ESCAPE = 27; h.UP = 38; h.DOWN = 40; h.LEFT = 37; h.RIGHT = 39; h.INSERT = 45; h.DELETE = 46; h.PAGE_UP = 33; h.PAGE_DOWN = 34; h.END = 35; h.HOME = 36; h.SPACE = 32; h.D0 = 48; h.D1 = 49; h.D2 = 50; h.D3 = 51; h.D4 = 52; h.D5 = 53; h.D6 = 54; h.D7 = 55; h.D8 = 56; h.D9 = 57; h.Initted = !1; h.mOffsetX = 0; h.mOffsetY = 0; h.DownSound = "roll"; h.TouchIdArray = []; h.TouchIdArrayLength = 0; h._pTouch = new xa; q.Frames = [ [1559, 304, 4, 4, 2, 2], [2004, 399, 32, 4, 16, 2], [777, 860, 64, 64, 0, 0], [1832, 866, 170, 64, 85, 30], [1832, 933, 170, 64, 85, 30], [1734, 1E3, 170, 64, 85, 30], [662, 1075, 170, 64, 85, 30], [1296, 1075, 170, 64, 85, 30], [1469, 1075, 170, 64, 85, 30], [1346, 649, 170, 64, 85, 30], [1832, 732, 170, 64, 85, 30], [1832, 799, 170, 64, 85, 30], [489, 1090, 170, 64, 85, 30], [3, 1103, 170, 64, 85, 30], [176, 1103, 170, 64, 85, 30], [1734, 1067, 170, 64, 85, 30], [950, 1068, 170, 64, 85, 30], [1123, 1068, 170, 64, 85, 30 ], [1907, 1E3, 132, 50, 66, 23], [1907, 1053, 132, 50, 66, 23], [349, 1103, 132, 50, 66, 23], [1255, 1001, 64, 64, 32, 32], [1214, 1135, 64, 64, 32, 32], [662, 1142, 64, 64, 32, 32], [1103, 446, 170, 64, 85, 30], [1346, 515, 170, 64, 85, 30], [1346, 582, 170, 64, 85, 30], [729, 1142, 64, 64, 32, 32], [1281, 1142, 64, 64, 32, 32], [1348, 1142, 64, 64, 32, 32], [1415, 1142, 64, 64, 32, 32], [1482, 1142, 64, 64, 32, 32], [1549, 1142, 64, 64, 32, 32], [349, 1156, 64, 64, 32, 32], [416, 1156, 64, 64, 32, 32], [483, 1157, 64, 64, 32, 32], [1082, 1001, 170, 64, 85, 30], [777, 1008, 170, 64, 85, 30], [489, 1023, 170, 64, 85, 30 ], [2004, 327, 32, 32, 0, 0], [66, 1170, 48, 60, 24, 30], [489, 860, 285, 160, 0, 0], [1547, 272, 14, 14, 7, 7], [3, 3, 0, 0, 0, 0], [662, 1023, 48, 48, 24, 24], [1616, 1196, 208, 10, 104, 4], [117, 1170, 48, 60, 24, 30], [1547, 304, 9, 8, 5, 4], [1519, 661, 20, 17, 11, 13], [1519, 681, 20, 17, 9, 13], [1519, 592, 23, 21, 11, 11], [3, 3, 0, 0, 0, 1], [950, 1008, 120, 27, 60, 14], [860, 3, 441, 440, 220, 236], [1809, 3, 205, 105, 3, 3], [1809, 111, 205, 105, 3, 3], [1809, 219, 205, 105, 3, 3], [1808, 1134, 161, 59, 75, 29], [1809, 406, 152, 75, 76, 35], [835, 1135, 145, 59, 72, 29], [1642, 1134, 163, 59, 72, 29], [950, 1038, 119, 21, 60, 10 ], [1972, 1106, 70, 70, 31, 31], [1547, 315, 6, 6, 3, 3], [1547, 289, 12, 12, 6, 6], [1809, 327, 192, 76, 100, 36], [1519, 639, 19, 19, 10, 9], [1519, 616, 22, 20, 9, 12], [1519, 616, 22, 20, 9, 12], [1519, 616, 22, 20, 9, 12], [1519, 616, 22, 20, 9, 12], [2017, 299, 28, 24, 11, 15], [2017, 299, 28, 24, 11, 15], [2017, 299, 28, 24, 11, 15], [2017, 299, 28, 24, 11, 15], [1276, 473, 23, 25, 9, 15], [1276, 473, 23, 25, 9, 15], [1276, 473, 23, 25, 9, 15], [1276, 473, 23, 25, 9, 15], [1519, 515, 23, 24, 10, 15], [1519, 515, 23, 24, 10, 15], [1519, 515, 23, 24, 10, 15], [1519, 515, 23, 24, 10, 15], [1519, 567, 23, 22, 10, 15 ], [1519, 567, 23, 22, 10, 15], [1519, 567, 23, 22, 10, 15], [1519, 567, 23, 22, 10, 15], [2005, 732, 40, 38, 17, 16], [983, 1135, 80, 80, 40, 40], [675, 1209, 30, 28, 43, 12], [1519, 542, 24, 22, 10, 10], [1964, 406, 72, 72, 36, 36], [1066, 1135, 72, 72, 36, 36], [1346, 975, 385, 97, 193, 60], [1141, 1135, 70, 70, 35, 35], [1276, 446, 24, 24, 12, 12], [550, 1157, 60, 60, 30, 30], [3, 1170, 60, 60, 30, 30], [2017, 3, 28, 34, 0, 0], [2017, 40, 28, 34, 0, 0], [2017, 77, 28, 34, 0, 0], [2017, 114, 28, 34, 0, 0], [2017, 151, 28, 34, 0, 0], [2017, 188, 28, 34, 0, 0], [2017, 225, 28, 34, 0, 0], [2017, 262, 28, 34, 0, 0], [2004, 362, 28, 34, 0, 0 ], [2005, 773, 28, 34, 0, 0], [2005, 810, 28, 34, 0, 0], [2005, 847, 28, 34, 0, 0], [2005, 884, 28, 34, 0, 0], [2005, 921, 28, 34, 0, 0], [2005, 958, 28, 34, 0, 0], [713, 1023, 28, 34, 0, 0], [3, 3, 0, 0, 0, 0], [744, 1023, 28, 34, 0, 0], [1695, 1075, 28, 34, 0, 0], [796, 1142, 28, 34, 0, 0], [613, 1157, 28, 34, 0, 0], [168, 1170, 28, 34, 0, 0], [199, 1170, 28, 34, 0, 0], [230, 1170, 28, 34, 0, 0], [261, 1170, 28, 34, 0, 0], [292, 1170, 28, 34, 0, 0], [796, 1179, 28, 34, 0, 0], [1972, 1179, 28, 34, 0, 0], [2003, 1179, 28, 34, 0, 0], [613, 1194, 28, 34, 0, 0], [1827, 1196, 28, 34, 0, 0], [1858, 1196, 28, 34, 0, 0], [1889, 1196, 28, 34, 0, 0 ], [1920, 1196, 28, 34, 0, 0], [827, 1197, 28, 34, 0, 0], [858, 1197, 28, 34, 0, 0], [889, 1197, 28, 34, 0, 0], [920, 1197, 28, 34, 0, 0], [951, 1197, 28, 34, 0, 0], [1214, 1202, 28, 34, 0, 0], [1245, 1202, 28, 34, 0, 0], [3, 3, 0, 0, 0, 0], [168, 1207, 28, 34, 0, 0], [199, 1207, 28, 34, 0, 0], [230, 1207, 28, 34, 0, 0], [261, 1207, 28, 34, 0, 0], [292, 1207, 28, 34, 0, 0], [1141, 1208, 28, 34, 0, 0], [1172, 1208, 28, 34, 0, 0], [644, 1209, 28, 34, 0, 0], [777, 932, 302, 73, 149, 37], [892, 1075, 50, 50, 0, 0], [1642, 1075, 50, 50, 25, 25], [1304, 3, 259, 266, 0, 6], [835, 1075, 54, 54, 27, 27], [1566, 3, 240, 240, 0, 0 ], [1566, 3, 240, 240, 0, 0], [1566, 3, 240, 240, 0, 0], [1566, 246, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [860, 446, 240, 240, 0, 0], [1547, 489, 240, 240, 0, 0], [1547, 489, 240, 240, 0, 0], [1547, 489, 240, 240, 0, 0], [1790, 489, 240, 240, 0, 0], [1103, 515, 240, 240, 0, 0], [860, 689, 240, 240, 0, 0], [1346, 732, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1304, 272, 240, 240, 0, 0], [1589, 732, 240, 240, 0, 0], [1103, 758, 240, 240, 0, 0], [3, 860, 240, 240, 0, 0], [246, 860, 240, 240, 0, 0], [3, 3, 854, 854, 67, 187] ]; q.bmpLine = new M("bmpLine", [0], -1); q.bmpPathEdge = new M("bmpPathEdge", [1], -1); q.bmpSysFill = new M("bmpSysFill", [2], -1); q.cbtnAddition = new M("cbtnAddition", [3, 4, 5], -1); q.cbtnDivision = new M("cbtnDivision", [6, 7, 8], -1); q.cbtnInstructions = new M("cbtnInstructions", [9, 10, 11], -1); q.cbtnMixed = new M("cbtnMixed", [12, 13, 14], -1); q.cbtnMultiplication = new M("cbtnMultiplication", [15, 16, 17], -1); q.cbtnOK1 = new M("cbtnOK1", [18, 19, 20], -1); q.cbtnPause = new M("cbtnPause", [21, 22, 23], -1); q.cbtnPlay1 = new M("cbtnPlay1", [24, 25, 26], -1); q.cbtnResume = new M("cbtnResume", [27, 28, 29], -1); q.cbtnSoundOff = new M("cbtnSoundOff", [30, 31, 32], -1); q.cbtnSoundOn = new M("cbtnSoundOn", [33, 34, 35], -1); q.cbtnSubtraction = new M("cbtnSubtraction", [36, 37, 38], -1); q.cmcBG = new M("cmcBG", [39], -1); q.cmcBGGGG = new M("cmcBGGGG", [40], -1); q.cmcBGRect = new M("cmcBGRect", [41], -1); q.cmcBlackEye = new M("cmcBlackEye", [42], -1); q.cmcCrossHair = new M("cmcCrossHair", [43], -1); q.cmcDashedCircle = new M("cmcDashedCircle", [44], -1); q.cmcDashedLine = new M("cmcDashedLine", [45], -1); q.cmcDialogBG = new M("cmcDialogBG", [46], -1); q.cmcDot = new M("cmcDot", [47, 48, 49], -1); q.cmcGuiStar = new M("cmcGuiStar", [50, 51 ], -1); q.cmcHooda = new M("cmcHooda", [52], -1); q.cmcInstDlg = new M("cmcInstDlg", [53], -1); q.cmcInstructionScreen = new M("cmcInstructionScreen", [54, 55, 56], -1); q.cmcInstructionText = new M("cmcInstructionText", [57, 58, 59, 60], -1); q.cmcMadeBy = new M("cmcMadeBy", [61], -1); q.cmcMinimap = new M("cmcMinimap", [62], -1); q.cmcMinimapPlayer = new M("cmcMinimapPlayer", [63], -1); q.cmcPathNode = new M("cmcPathNode", [64], -1); q.cmcPausedText = new M("cmcPausedText", [65], -1); q.cmcSmallSmoke = new M("cmcSmallSmoke", [66], -1); q.cmcSmallSmokeFrames = new M("cmcSmallSmokeFrames", [67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86], -1); q.cmcSmoke = new M("cmcSmoke", [87], -1); q.cmcSpeedRing = new M("cmcSpeedRing", [88], -1); q.cmcStarCount = new M("cmcStarCount", [89], -1); q.cmcStarGold = new M("cmcStarGold", [90], -1); q.cmcStompy = new M("cmcStompy", [91, 92], -1); q.cmcSuperHoodaTitle = new M("cmcSuperHoodaTitle", [93], -1); q.cmcWhiteCircle = new M("cmcWhiteCircle", [94], -1); q.cmcWhiteEye = new M("cmcWhiteEye", [95], -1); q.cmcWormSegment = new M("cmcWormSegment", [96, 97], -1); q.ctxtMathFont = new M("ctxtMathFont", [98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122], -1); q.ctxtWhiteMathFont = new M("ctxtWhiteMathFont", [123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147], -1); q.sponsorGGG = new M("sponsorGGG", [148], -1); q.sysRectBlack = new M("sysRectBlack", [149], -1); q.sysWhiteRect = new M("sysWhiteRect", [150], -1); q.tileBGRect = new M("tileBGRect", [151], -1); q.tileCoin = new M("tileCoin", [152], -1); q.tileJungle = new M("tileJungle", [153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192], -1); q.tileMenuBG = new M("tileMenuBG", [193], -1); q.BitmapName = "Objects.png"; na.pool = []; Oa.count = 0; H.qTimeStamp = Date.now() + 0; S.__toStr = {}.toString; f.MinimumBMD = !1; f.DeltaT = 0; f.TilesheetAssetBMDs = []; f.EPS = 0.001; f.PathMatrix = new na; f.BGbmdMatrix = new na; f.BGbmdColorTransform = new Vb; f.BGMinY = 0.5; f.BGMaxY = 0.5; f.ShowFlushInfo = -1; f.TraceCurrentMatrix = !1; x.PLDNearest = 0; B.Element = 0; B.PCData = 1; B.CData = 2; B.Comment = 3; B.DocType = 4; B.ProcessingInstruction = 5; B.Document = 6; Ia.USE_CACHE = !1; Ia.USE_ENUM_INDEX = !1; Ia.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:"; Qa.DEFAULT_RESOLVER = new Xb; Qa.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:"; Ib.CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; Ib.BYTES = Ja.ofString(Ib.CHARS); Ua.i64tmp = new Dc(0, 0); Ab.escapes = function(a) { a = new X; null != O.lt ? a.setReserved("lt", "<") : a.h.lt = "<"; null != O.gt ? a.setReserved("gt", ">") : a.h.gt = ">"; null != O.amp ? a.setReserved("amp", "&") : a.h.amp = "&"; null != O.quot ? a.setReserved("quot", '"') : a.h.quot = '"'; null != O.apos ? a.setReserved("apos", "'") : a.h.apos = "'"; return a }(this); pb.BYTES_PER_ELEMENT = 1; la.cache = new Pc; la.libraries = new X; la.initialized = !1; sb.library = new X; Ca.Linear = new Qb; Ca.QuadIn = new mc; Ca.QuadOut = new Ec; v.initPoly2Tiles = !1; n.NumMSBuckets = 1E3; n.Initted = !1; yb.X = 0; yb.Y = 0; N.PACKAGE_PATH = "ozity."; Ga.Radius = 25; ka.MAX_CAMERA_SPEED = 20; ka.tempVec = []; ka.zoomedThisFrame = !1; oa.NUM_GFX_LAYERS = 7; oa.WORLD_SPEED_FACTOR = 1; ja.RECTANGLE = 1; ja.CIRCLE = 2; ja.POLYGON = 3; ja.LINE = 4; ja.DOT = 5; ja.TRIANGLE = 6; ja.PATH = 7; ja.FLAG_IS_CURVE = 1; ja.oo = 2E6; ja.CURVE_SEGMENT_LENGTH = 20; ja._d = ":"; ja.temp2 = []; ja.temp3 = []; da.tileInfos = new X; m.TILE_MASK = 15728640; m.HIT_TOP = 1; m.HIT_RIGHT = 2; m.HIT_BOTTOM = 4; m.HIT_LEFT = 8; m.HIT_SPECIALBOTTOM = 16; m.SMASHED = 256; m.DYNAMIC = 1; m.STATIC = 2; m.KINEMATIC = 3; m.LastTimeStep = 1; m.tempVec2 = []; m.nearestData = []; m.EDGE_TOLERANCE = 1; m.leftHit = !1; m.rightHit = !1; m.leftHitDiff = 0; m.rightHitDiff = 0; m.topHit = !1; m.bottomHit = !1; m.topHitDiff = 0; m.bottomHitDiff = 0; m.BoundVec4 = []; jb.TempVec = []; z.MODE_NONE = 0; z.MODE_ADDITION = 1; z.MODE_SUBTRACTION = 2; z.MODE_MULTIPLICATION = 3; z.MODE_DIVISION = 4; z.MODE_MIXED = 5; z.Mode = 0; z.ENEMY_SPAWN_TIMER = 150; z.BANANA_RADIUS = 25; z.MAX_ENEMIES = 1; z.MAX_SEGMENTS_PER_WORM = 100; z.SPEED_RING_SEGMENT_DISTANCE = 2; z.SPEED_RING_SEGMENT_SPEED = 1; z.SPR_DIAM = 60; z.DIAM_START = 30; z.SEG_DIST_START = 10; z.SEG_NUM_START = 10; z.DIST_PER_CONTROL_POINT = 3; z.EYEX = 8; z.EYEY = 13; z.score = 0; z.MAX_ZOOM = 0.5; z.SCREEN_PAD = 100; z.MAX_BANANAS = 20; z.MIN_BANANA_DIST = 150; E.WinShown = 0; E.NORMAL = 0; E.WAITING = 1; E.WIN = 2; E.LOSE = 3; E.PlayedThisSession = !1; E.OffsetX = -3120; E.OffsetY = -3120; E.BoundsWidth = 6960; E.BoundsHeight = 6960; E.lastScore = -1; E.worldBoundsX = [1, 9, 20, 28, 28, 20, 9, 1]; E.worldBoundsY = [9, 1, 1, 9, 20, 28, 28, 20]; E.Rematch = !1; E.GRAVITY = 0; E.InstructionsSeen = !1; E.StartPlayAfterInstructions = !1; E.NUM_CLOUDS = 3; E.CLOUD_SPEED = 30; E.clouds = []; C.main() })("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this);