diff --git a/bin/pixi.js b/bin/pixi.js index bc34fb8..0416880 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -3091,7 +3091,6 @@ "docs": "./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json" }, "devDependencies": { - "brfs": "^1.2.0", "browserify": "^8.0.2", "chai": "^1.10.0", "del": "^1.1.0", @@ -3123,7 +3122,8 @@ }, "dependencies": { "async": "^0.9.0", - "resource-loader": "^1.2.0" + "resource-loader": "^1.2.1", + "brfs": "^1.2.0" }, "browserify": { "transform": [ @@ -10726,6 +10726,7 @@ { // get the bounds of the object.. var bounds = target.filterArea || target.getBounds(); + //bounds = bounds.clone(); // round off the rectangle to get a nice smoooooooth filter :) bounds.x = bounds.x | 0; @@ -10735,7 +10736,7 @@ // padding! - var padding = filters[0].padding; + var padding = filters[0].padding | 0; bounds.x -= padding; bounds.y -= padding; bounds.width += padding * 2; @@ -10801,12 +10802,18 @@ this.quad.map(this.textureSize, input.frame); + // TODO.. this probably only needs to be done once! gl.bindBuffer(gl.ARRAY_BUFFER, this.quad.vertexBuffer); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.quad.indexBuffer); var filters = filterData.filter; + // assuming all filters follow the correct format?? + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0); + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4); + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4); + if (filters.length === 1) { // TODO (cengler) - There has to be a better way then setting this each time? @@ -10910,10 +10917,11 @@ //TODO can this be optimised? shader.syncUniforms(); - +/* gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0); gl.vertexAttribPointer(shader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4); gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4); +*/ gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, inputTarget.texture); @@ -18731,7 +18739,7 @@ }, set: function (value) { - this.padding = value * 1.5; + this.padding = value * 0.5; this.blurXFilter.blur = this.blurYFilter.blur = value; } }, @@ -18878,7 +18886,7 @@ }, set: function (value) { - this.padding = value; + this.padding = value * 0.5; this.strength = value; } }, @@ -18963,7 +18971,7 @@ }, set: function (value) { - this.padding = value; + this.padding = value * 0.5; this.strength = value; } }, @@ -19882,41 +19890,78 @@ { core.AbstractFilter.call(this, // vertex shader - "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[14];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.028 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.024 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.020 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, -0.016 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 6] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 7] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 8] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 9] = aTextureCoord + vec2(0.0, 0.012 * strength);\n vBlurTexCoords[10] = aTextureCoord + vec2(0.0, 0.016 * strength);\n vBlurTexCoords[11] = aTextureCoord + vec2(0.0, 0.020 * strength);\n vBlurTexCoords[12] = aTextureCoord + vec2(0.0, 0.024 * strength);\n vBlurTexCoords[13] = aTextureCoord + vec2(0.0, 0.028 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n", + "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[6];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n", // fragment shader - "precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[14];\nvarying vec4 vColor;\n\nuniform float blur;\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.0044299121055113265;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 6])*0.147308056121;\n sum += texture2D(uSampler, vTextureCoord )*0.159576912161;\n sum += texture2D(uSampler, vBlurTexCoords[ 7])*0.147308056121;\n sum += texture2D(uSampler, vBlurTexCoords[ 8])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 9])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[10])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[11])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[12])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[13])*0.0044299121055113265;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n", + "precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[6];\nvarying vec4 vColor;\n\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\n sum += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n", // set the uniforms { blur: { type: '1f', value: 1 / 512 }, color: { type: 'c', value: [0,0,0]}, alpha: { type: '1f', value: 0.7 }, - offset: { type: '2f', value:[5, 5]} + offset: { type: '2f', value:[5, 5]}, + strength: { type: '1f', value:1} } ); + + this.passes = 1; + this.strength = 4; } BlurYTintFilter.prototype = Object.create(core.AbstractFilter.prototype); BlurYTintFilter.prototype.constructor = BlurYTintFilter; module.exports = BlurYTintFilter; +BlurYTintFilter.prototype.applyFilter = function (renderer, input, output, clear) +{ + var shader = this.getShader(renderer); + + this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height); + + if(this.passes === 1) + { + renderer.filterManager.applyFilter(shader, input, output, clear); + } + else + { + var renderTarget = renderer.filterManager.getRenderTarget(true); + var flip = input; + var flop = renderTarget; + + for(var i = 0; i < this.passes-1; i++) + { + renderer.filterManager.applyFilter(shader, flip, flop, clear); + + var temp = flop; + flop = flip; + flip = temp; + } + + renderer.filterManager.applyFilter(shader, flip, output, clear); + + renderer.filterManager.returnRenderTarget(renderTarget); + } +}; + + Object.defineProperties(BlurYTintFilter.prototype, { /** * Sets the strength of both the blur. * * @member {number} - * @memberof BlurYTintFilter# + * @memberof BlurYFilter# * @default 2 */ blur: { get: function () { - return this.uniforms.blur.value / blurFactor; + return this.strength; }, set: function (value) { - this.uniforms.blur.value = blurFactor * value; + this.padding = value * 0.5; + this.strength = value; } - } + }, }); },{"../../core":19}],94:[function(require,module,exports){ @@ -22026,8 +22071,7 @@ * @namespace PIXI.loaders */ module.exports = { - // Loader: require('resource-loader'), - Loader: require('./loader'), + Loader: require('./loader'), // parsers bitmapFontParser: require('./bitmapFontParser'), @@ -22036,6 +22080,9 @@ textureParser: require('./textureParser') }; + +module.exports.loader = new module.exports.Loader(); + },{"./bitmapFontParser":113,"./loader":115,"./spineAtlasParser":116,"./spritesheetParser":117,"./textureParser":118}],115:[function(require,module,exports){ var ResourceLoader = require('resource-loader'), textureParser = require('./textureParser'), @@ -26256,7 +26303,7 @@ { if (this.dirty) { - this.resolution = renderer.resolution; + //this.resolution = 1//renderer.resolution; this.updateText(); } @@ -26273,7 +26320,7 @@ { if (this.dirty) { - this.resolution = renderer.resolution; + // this.resolution = 1//renderer.resolution; this.updateText(); } diff --git a/bin/pixi.js b/bin/pixi.js index bc34fb8..0416880 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -3091,7 +3091,6 @@ "docs": "./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json" }, "devDependencies": { - "brfs": "^1.2.0", "browserify": "^8.0.2", "chai": "^1.10.0", "del": "^1.1.0", @@ -3123,7 +3122,8 @@ }, "dependencies": { "async": "^0.9.0", - "resource-loader": "^1.2.0" + "resource-loader": "^1.2.1", + "brfs": "^1.2.0" }, "browserify": { "transform": [ @@ -10726,6 +10726,7 @@ { // get the bounds of the object.. var bounds = target.filterArea || target.getBounds(); + //bounds = bounds.clone(); // round off the rectangle to get a nice smoooooooth filter :) bounds.x = bounds.x | 0; @@ -10735,7 +10736,7 @@ // padding! - var padding = filters[0].padding; + var padding = filters[0].padding | 0; bounds.x -= padding; bounds.y -= padding; bounds.width += padding * 2; @@ -10801,12 +10802,18 @@ this.quad.map(this.textureSize, input.frame); + // TODO.. this probably only needs to be done once! gl.bindBuffer(gl.ARRAY_BUFFER, this.quad.vertexBuffer); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.quad.indexBuffer); var filters = filterData.filter; + // assuming all filters follow the correct format?? + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0); + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4); + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4); + if (filters.length === 1) { // TODO (cengler) - There has to be a better way then setting this each time? @@ -10910,10 +10917,11 @@ //TODO can this be optimised? shader.syncUniforms(); - +/* gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0); gl.vertexAttribPointer(shader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4); gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4); +*/ gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, inputTarget.texture); @@ -18731,7 +18739,7 @@ }, set: function (value) { - this.padding = value * 1.5; + this.padding = value * 0.5; this.blurXFilter.blur = this.blurYFilter.blur = value; } }, @@ -18878,7 +18886,7 @@ }, set: function (value) { - this.padding = value; + this.padding = value * 0.5; this.strength = value; } }, @@ -18963,7 +18971,7 @@ }, set: function (value) { - this.padding = value; + this.padding = value * 0.5; this.strength = value; } }, @@ -19882,41 +19890,78 @@ { core.AbstractFilter.call(this, // vertex shader - "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[14];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.028 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.024 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.020 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, -0.016 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 6] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 7] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 8] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 9] = aTextureCoord + vec2(0.0, 0.012 * strength);\n vBlurTexCoords[10] = aTextureCoord + vec2(0.0, 0.016 * strength);\n vBlurTexCoords[11] = aTextureCoord + vec2(0.0, 0.020 * strength);\n vBlurTexCoords[12] = aTextureCoord + vec2(0.0, 0.024 * strength);\n vBlurTexCoords[13] = aTextureCoord + vec2(0.0, 0.028 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n", + "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[6];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n", // fragment shader - "precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[14];\nvarying vec4 vColor;\n\nuniform float blur;\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.0044299121055113265;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 6])*0.147308056121;\n sum += texture2D(uSampler, vTextureCoord )*0.159576912161;\n sum += texture2D(uSampler, vBlurTexCoords[ 7])*0.147308056121;\n sum += texture2D(uSampler, vBlurTexCoords[ 8])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 9])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[10])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[11])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[12])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[13])*0.0044299121055113265;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n", + "precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[6];\nvarying vec4 vColor;\n\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\n sum += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n", // set the uniforms { blur: { type: '1f', value: 1 / 512 }, color: { type: 'c', value: [0,0,0]}, alpha: { type: '1f', value: 0.7 }, - offset: { type: '2f', value:[5, 5]} + offset: { type: '2f', value:[5, 5]}, + strength: { type: '1f', value:1} } ); + + this.passes = 1; + this.strength = 4; } BlurYTintFilter.prototype = Object.create(core.AbstractFilter.prototype); BlurYTintFilter.prototype.constructor = BlurYTintFilter; module.exports = BlurYTintFilter; +BlurYTintFilter.prototype.applyFilter = function (renderer, input, output, clear) +{ + var shader = this.getShader(renderer); + + this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height); + + if(this.passes === 1) + { + renderer.filterManager.applyFilter(shader, input, output, clear); + } + else + { + var renderTarget = renderer.filterManager.getRenderTarget(true); + var flip = input; + var flop = renderTarget; + + for(var i = 0; i < this.passes-1; i++) + { + renderer.filterManager.applyFilter(shader, flip, flop, clear); + + var temp = flop; + flop = flip; + flip = temp; + } + + renderer.filterManager.applyFilter(shader, flip, output, clear); + + renderer.filterManager.returnRenderTarget(renderTarget); + } +}; + + Object.defineProperties(BlurYTintFilter.prototype, { /** * Sets the strength of both the blur. * * @member {number} - * @memberof BlurYTintFilter# + * @memberof BlurYFilter# * @default 2 */ blur: { get: function () { - return this.uniforms.blur.value / blurFactor; + return this.strength; }, set: function (value) { - this.uniforms.blur.value = blurFactor * value; + this.padding = value * 0.5; + this.strength = value; } - } + }, }); },{"../../core":19}],94:[function(require,module,exports){ @@ -22026,8 +22071,7 @@ * @namespace PIXI.loaders */ module.exports = { - // Loader: require('resource-loader'), - Loader: require('./loader'), + Loader: require('./loader'), // parsers bitmapFontParser: require('./bitmapFontParser'), @@ -22036,6 +22080,9 @@ textureParser: require('./textureParser') }; + +module.exports.loader = new module.exports.Loader(); + },{"./bitmapFontParser":113,"./loader":115,"./spineAtlasParser":116,"./spritesheetParser":117,"./textureParser":118}],115:[function(require,module,exports){ var ResourceLoader = require('resource-loader'), textureParser = require('./textureParser'), @@ -26256,7 +26303,7 @@ { if (this.dirty) { - this.resolution = renderer.resolution; + //this.resolution = 1//renderer.resolution; this.updateText(); } @@ -26273,7 +26320,7 @@ { if (this.dirty) { - this.resolution = renderer.resolution; + // this.resolution = 1//renderer.resolution; this.updateText(); } diff --git a/bin/pixi.js.map b/bin/pixi.js.map index f742d5f..45af07e 100644 --- a/bin/pixi.js.map +++ b/bin/pixi.js.map @@ -129,7 +129,7 @@ "src/index" ], "names": [], - "mappings": "AAAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACnmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9mCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC13BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACleA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACniBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", + "mappings": "AAAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACnmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9mCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC13BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACleA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACniBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -144,7 +144,7 @@ "// a simple in-memory cache for resources\nvar cache = {};\n\nmodule.exports = function () {\n return function (resource, next) {\n // if cached, then set data and complete the resource\n if (cache[resource.url]) {\n resource.data = cache[resource.url];\n resource.complete();\n }\n // if not cached, wait for complete and store it in the cache.\n else {\n resource.once('complete', function () {\n cache[this.url] = this.data;\n });\n\n next();\n }\n };\n};\n", "var Resource = require('../../Resource');\n\nwindow.URL = window.URL || window.webkitURL;\n\n// a middleware for transforming XHR loaded Blobs into more useful objects\n\nmodule.exports = function () {\n return function (resource, next) {\n // if this was an XHR load\n if (resource.xhr && resource.xhrType === Resource.XHR_RESPONSE_TYPE.BLOB) {\n // if content type says this is an image, then we need to transform the blob into an Image object\n if (resource.data.type.indexOf('image') === 0) {\n var src = URL.createObjectURL(resource.data);\n\n resource.data = new Image();\n resource.data.src = src;\n\n // cleanup the no longer used blob after the image loads\n resource.data.onload = function () {\n URL.revokeObjectURL(src);\n resource.data.onload = null;\n\n next();\n };\n }\n }\n else {\n next();\n }\n };\n};\n", "// a simple json-parsing middleware for resources\n\nmodule.exports = function () {\n return function (resource, next) {\n // if this is a string, try to parse it as json\n if (typeof resource.data === 'string') {\n try {\n // resource.data is set by the XHR load\n resource.data = JSON.parse(resource.data);\n }\n catch (e) {\n // this isn't json, just move along\n }\n }\n\n // no matter what, just move along to next middleware\n next();\n };\n};\n", - "module.exports={\n \"name\": \"pixi.js\",\n \"version\": \"3.0.0-rc1\",\n \"description\": \"Pixi.js is a fast lightweight 2D library that works across all devices.\",\n \"author\": \"Mat Groves\",\n \"contributors\": [\n \"Chad Engler \",\n \"Richard Davey \"\n ],\n \"main\": \"./src/index.js\",\n \"homepage\": \"http://goodboydigital.com/\",\n \"bugs\": \"https://github.com/GoodBoyDigital/pixi.js/issues\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/GoodBoyDigital/pixi.js.git\"\n },\n \"scripts\": {\n \"test\": \"gulp test\",\n \"docs\": \"./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json\"\n },\n \"devDependencies\": {\n \"brfs\": \"^1.2.0\",\n \"browserify\": \"^8.0.2\",\n \"chai\": \"^1.10.0\",\n \"del\": \"^1.1.0\",\n \"exorcist\": \"^0.1.6\",\n \"gulp\": \"^3.8.10\",\n \"gulp-cached\": \"^1.0.1\",\n \"gulp-concat\": \"^2.5.2\",\n \"gulp-debug\": \"^2.0.0\",\n \"gulp-jsdoc\": \"^0.1.4\",\n \"gulp-jshint\": \"^1.9.0\",\n \"gulp-plumber\": \"^0.6.6\",\n \"gulp-rename\": \"^1.2.0\",\n \"gulp-uglify\": \"^1.0.2\",\n \"gulp-util\": \"^3.0.1\",\n \"ink-docstrap\": \"^0.5.2\",\n \"jsdoc\": \"^3.3.0-alpha13\",\n \"jshint-summary\": \"^0.4.0\",\n \"karma\": \"^0.12.28\",\n \"karma-firefox-launcher\": \"^0.1.0\",\n \"karma-mocha\": \"^0.1.10\",\n \"karma-spec-reporter\": \"^0.0.16\",\n \"minimist\": \"^1.1.0\",\n \"mocha\": \"^2.1.0\",\n \"require-dir\": \"^0.1.0\",\n \"run-sequence\": \"^1.0.2\",\n \"vinyl-buffer\": \"^1.0.0\",\n \"vinyl-source-stream\": \"^1.0.0\",\n \"watchify\": \"^2.2.1\"\n },\n \"dependencies\": {\n \"async\": \"^0.9.0\",\n \"resource-loader\": \"^1.2.0\"\n },\n \"browserify\": {\n \"transform\": [\n \"brfs\"\n ]\n }\n}\n", + "module.exports={\n \"name\": \"pixi.js\",\n \"version\": \"3.0.0-rc1\",\n \"description\": \"Pixi.js is a fast lightweight 2D library that works across all devices.\",\n \"author\": \"Mat Groves\",\n \"contributors\": [\n \"Chad Engler \",\n \"Richard Davey \"\n ],\n \"main\": \"./src/index.js\",\n \"homepage\": \"http://goodboydigital.com/\",\n \"bugs\": \"https://github.com/GoodBoyDigital/pixi.js/issues\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/GoodBoyDigital/pixi.js.git\"\n },\n \"scripts\": {\n \"test\": \"gulp test\",\n \"docs\": \"./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json\"\n },\n \"devDependencies\": {\n \"browserify\": \"^8.0.2\",\n \"chai\": \"^1.10.0\",\n \"del\": \"^1.1.0\",\n \"exorcist\": \"^0.1.6\",\n \"gulp\": \"^3.8.10\",\n \"gulp-cached\": \"^1.0.1\",\n \"gulp-concat\": \"^2.5.2\",\n \"gulp-debug\": \"^2.0.0\",\n \"gulp-jsdoc\": \"^0.1.4\",\n \"gulp-jshint\": \"^1.9.0\",\n \"gulp-plumber\": \"^0.6.6\",\n \"gulp-rename\": \"^1.2.0\",\n \"gulp-uglify\": \"^1.0.2\",\n \"gulp-util\": \"^3.0.1\",\n \"ink-docstrap\": \"^0.5.2\",\n \"jsdoc\": \"^3.3.0-alpha13\",\n \"jshint-summary\": \"^0.4.0\",\n \"karma\": \"^0.12.28\",\n \"karma-firefox-launcher\": \"^0.1.0\",\n \"karma-mocha\": \"^0.1.10\",\n \"karma-spec-reporter\": \"^0.0.16\",\n \"minimist\": \"^1.1.0\",\n \"mocha\": \"^2.1.0\",\n \"require-dir\": \"^0.1.0\",\n \"run-sequence\": \"^1.0.2\",\n \"vinyl-buffer\": \"^1.0.0\",\n \"vinyl-source-stream\": \"^1.0.0\",\n \"watchify\": \"^2.2.1\"\n },\n \"dependencies\": {\n \"async\": \"^0.9.0\",\n \"resource-loader\": \"^1.2.1\",\n \"brfs\": \"^1.2.0\"\n },\n \"browserify\": {\n \"transform\": [\n \"brfs\"\n ]\n }\n}\n", "/**\n * Constant values used in pixi\n *\n * @memberof PIXI\n */\nmodule.exports = {\n /**\n * String of the current PIXI version\n *\n * @static\n * @constant\n * @property {string} VERSION\n */\n VERSION: require('../../package.json').version,\n\n /**\n * Constant to identify the Renderer Type.\n *\n * @static\n * @constant\n * @property {object} RENDERER_TYPE\n * @property {number} RENDERER_TYPE.UNKNOWN\n * @property {number} RENDERER_TYPE.WEBGL\n * @property {number} RENDERER_TYPE.CANVAS\n */\n RENDERER_TYPE: {\n UNKNOWN: 0,\n WEBGL: 1,\n CANVAS: 2\n },\n\n /**\n * Various blend modes supported by PIXI. IMPORTANT - The WebGL renderer only supports\n * the NORMAL, ADD, MULTIPLY and SCREEN blend modes. Anything else will silently act like\n * NORMAL.\n *\n * @static\n * @constant\n * @property {object} BLEND_MODES\n * @property {number} BLEND_MODES.NORMAL\n * @property {number} BLEND_MODES.ADD\n * @property {number} BLEND_MODES.MULTIPLY\n * @property {number} BLEND_MODES.SCREEN\n * @property {number} BLEND_MODES.OVERLAY\n * @property {number} BLEND_MODES.DARKEN\n * @property {number} BLEND_MODES.LIGHTEN\n * @property {number} BLEND_MODES.COLOR_DODGE\n * @property {number} BLEND_MODES.COLOR_BURN\n * @property {number} BLEND_MODES.HARD_LIGHT\n * @property {number} BLEND_MODES.SOFT_LIGHT\n * @property {number} BLEND_MODES.DIFFERENCE\n * @property {number} BLEND_MODES.EXCLUSION\n * @property {number} BLEND_MODES.HUE\n * @property {number} BLEND_MODES.SATURATION\n * @property {number} BLEND_MODES.COLOR\n * @property {number} BLEND_MODES.LUMINOSITY\n */\n BLEND_MODES: {\n NORMAL: 0,\n ADD: 1,\n MULTIPLY: 2,\n SCREEN: 3,\n OVERLAY: 4,\n DARKEN: 5,\n LIGHTEN: 6,\n COLOR_DODGE: 7,\n COLOR_BURN: 8,\n HARD_LIGHT: 9,\n SOFT_LIGHT: 10,\n DIFFERENCE: 11,\n EXCLUSION: 12,\n HUE: 13,\n SATURATION: 14,\n COLOR: 15,\n LUMINOSITY: 16\n },\n\n /**\n * The scale modes that are supported by pixi.\n *\n * The DEFAULT scale mode affects the default scaling mode of future operations.\n * It can be re-assigned to either LINEAR or NEAREST, depending upon suitability.\n *\n * @static\n * @constant\n * @property {object} SCALE_MODES\n * @property {number} SCALE_MODES.DEFAULT=LINEAR\n * @property {number} SCALE_MODES.LINEAR Smooth scaling\n * @property {number} SCALE_MODES.NEAREST Pixelating scaling\n */\n SCALE_MODES: {\n DEFAULT: 0,\n LINEAR: 0,\n NEAREST: 1\n },\n\n /**\n * The prefix that denotes a URL is for a retina asset\n *\n * @static\n * @constant\n * @property {string} RETINA_PREFIX\n */\n //example: '@2x',\n RETINA_PREFIX: /@(.+)x/,\n\n RESOLUTION:1,\n\n FILTER_RESOLUTION:1,\n\n /**\n * The default render options if none are supplied to {@link PIXI.WebGLRenderer}\n * or {@link PIXI.CanvasRenderer}.\n *\n * @static\n * @constant\n * @property {object} DEFAULT_RENDER_OPTIONS\n * @property {HTMLCanvasElement} DEFAULT_RENDER_OPTIONS.view=null\n * @property {boolean} DEFAULT_RENDER_OPTIONS.transparent=false\n * @property {boolean} DEFAULT_RENDER_OPTIONS.antialias=false\n * @property {boolean} DEFAULT_RENDER_OPTIONS.forceFXAA=false\n * @property {boolean} DEFAULT_RENDER_OPTIONS.preserveDrawingBuffer=false\n * @property {number} DEFAULT_RENDER_OPTIONS.resolution=1\n * @property {number} DEFAULT_RENDER_OPTIONS.backgroundColor=0x000000\n * @property {boolean} DEFAULT_RENDER_OPTIONS.clearBeforeRender=true\n * @property {boolean} DEFAULT_RENDER_OPTIONS.autoResize=false\n */\n DEFAULT_RENDER_OPTIONS: {\n view: null,\n resolution: 1,\n antialias: false,\n forceFXAA: false,\n autoResize: false,\n transparent: false,\n backgroundColor: 0x000000,\n clearBeforeRender: true,\n preserveDrawingBuffer: false\n },\n\n /**\n * Constants that identify shapes, mainly to prevent `instanceof` calls.\n *\n * @static\n * @constant\n * @property {object} SHAPES\n * @property {object} SHAPES.POLY=0\n * @property {object} SHAPES.RECT=1\n * @property {object} SHAPES.CIRC=2\n * @property {object} SHAPES.ELIP=3\n * @property {object} SHAPES.RREC=4\n */\n SHAPES: {\n POLY: 0,\n RECT: 1,\n CIRC: 2,\n ELIP: 3,\n RREC: 4\n },\n\n SPRITE_BATCH_SIZE: 2000 //nice balance between mobile and desktop machines\n};\n", "var math = require('../math'),\n DisplayObject = require('./DisplayObject'),\n RenderTexture = require('../textures/RenderTexture'),\n _tempMatrix = new math.Matrix();\n\n/**\n * A Container represents a collection of display objects.\n * It is the base class of all display objects that act as a container for other objects.\n *\n *```js\n * var container = new PIXI.Container();\n * container.addChild(sprite);\n * ```\n * @class\n * @extends DisplayObject\n * @memberof PIXI\n */\nfunction Container()\n{\n DisplayObject.call(this);\n\n /**\n * The array of children of this container.\n *\n * @member {DisplayObject[]}\n * @readonly\n */\n this.children = [];\n}\n\n// constructor\nContainer.prototype = Object.create(DisplayObject.prototype);\nContainer.prototype.constructor = Container;\nmodule.exports = Container;\n\nObject.defineProperties(Container.prototype, {\n /**\n * The width of the Container, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Container#\n */\n width: {\n get: function ()\n {\n return this.scale.x * this.getLocalBounds().width;\n },\n set: function (value)\n {\n\n var width = this.getLocalBounds().width;\n\n if (width !== 0)\n {\n this.scale.x = value / width;\n }\n else\n {\n this.scale.x = 1;\n }\n\n\n this._width = value;\n }\n },\n\n /**\n * The height of the Container, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Container#\n */\n height: {\n get: function ()\n {\n return this.scale.y * this.getLocalBounds().height;\n },\n set: function (value)\n {\n\n var height = this.getLocalBounds().height;\n\n if (height !== 0)\n {\n this.scale.y = value / height ;\n }\n else\n {\n this.scale.y = 1;\n }\n\n this._height = value;\n }\n }\n});\n\n/**\n * Adds a child to the container.\n *\n * @param child {DisplayObject} The DisplayObject to add to the container\n * @return {DisplayObject} The child that was added.\n */\nContainer.prototype.addChild = function (child)\n{\n return this.addChildAt(child, this.children.length);\n};\n\n/**\n * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown\n *\n * @param child {DisplayObject} The child to add\n * @param index {Number} The index to place the child in\n * @return {DisplayObject} The child that was added.\n */\nContainer.prototype.addChildAt = function (child, index)\n{\n // prevent adding self as child\n if (child === this)\n {\n return child;\n }\n\n if (index >= 0 && index <= this.children.length)\n {\n if (child.parent)\n {\n child.parent.removeChild(child);\n }\n\n child.parent = this;\n\n this.children.splice(index, 0, child);\n return child;\n }\n else\n {\n throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length);\n }\n};\n\n/**\n * Swaps the position of 2 Display Objects within this container.\n *\n * @param child {DisplayObject}\n * @param child2 {DisplayObject}\n */\nContainer.prototype.swapChildren = function (child, child2)\n{\n if (child === child2)\n {\n return;\n }\n\n var index1 = this.getChildIndex(child);\n var index2 = this.getChildIndex(child2);\n\n if (index1 < 0 || index2 < 0)\n {\n throw new Error('swapChildren: Both the supplied DisplayObjects must be children of the caller.');\n }\n\n this.children[index1] = child2;\n this.children[index2] = child;\n};\n\n/**\n * Returns the index position of a child DisplayObject instance\n *\n * @param child {DisplayObject} The DisplayObject instance to identify\n * @return {Number} The index position of the child display object to identify\n */\nContainer.prototype.getChildIndex = function (child)\n{\n var index = this.children.indexOf(child);\n\n if (index === -1)\n {\n throw new Error('The supplied DisplayObject must be a child of the caller');\n }\n\n return index;\n};\n\n/**\n * Changes the position of an existing child in the display object container\n *\n * @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number\n * @param index {Number} The resulting index number for the child display object\n */\nContainer.prototype.setChildIndex = function (child, index)\n{\n if (index < 0 || index >= this.children.length)\n {\n throw new Error('The supplied index is out of bounds');\n }\n\n var currentIndex = this.getChildIndex(child);\n\n this.children.splice(currentIndex, 1); //remove from old position\n this.children.splice(index, 0, child); //add at new position\n};\n\n/**\n * Returns the child at the specified index\n *\n * @param index {Number} The index to get the child at\n * @return {DisplayObject} The child at the given index, if any.\n */\nContainer.prototype.getChildAt = function (index)\n{\n if (index < 0 || index >= this.children.length)\n {\n throw new Error('getChildAt: Supplied index ' + index + ' does not exist in the child list, or the supplied DisplayObject is not a child of the caller');\n }\n\n return this.children[index];\n};\n\n/**\n * Removes a child from the container.\n *\n * @param child {DisplayObject} The DisplayObject to remove\n * @return {DisplayObject} The child that was removed.\n */\nContainer.prototype.removeChild = function (child)\n{\n var index = this.children.indexOf(child);\n\n if (index === -1)\n {\n return;\n }\n\n return this.removeChildAt(index);\n};\n\n/**\n * Removes a child from the specified index position.\n *\n * @param index {Number} The index to get the child from\n * @return {DisplayObject} The child that was removed.\n */\nContainer.prototype.removeChildAt = function (index)\n{\n var child = this.getChildAt(index);\n\n child.parent = null;\n this.children.splice(index, 1);\n\n return child;\n};\n\n/**\n * Removes all children from this container that are within the begin and end indexes.\n *\n * @param beginIndex {Number} The beginning position. Default value is 0.\n * @param endIndex {Number} The ending position. Default value is size of the container.\n */\nContainer.prototype.removeChildren = function (beginIndex, endIndex)\n{\n var begin = beginIndex || 0;\n var end = typeof endIndex === 'number' ? endIndex : this.children.length;\n var range = end - begin;\n\n if (range > 0 && range <= end)\n {\n var removed = this.children.splice(begin, range);\n\n for (var i = 0; i < removed.length; ++i)\n {\n removed[i].parent = null;\n }\n\n return removed;\n }\n else if (range === 0 && this.children.length === 0)\n {\n return [];\n }\n else\n {\n throw new RangeError('removeChildren: numeric values are outside the acceptable range.');\n }\n};\n\n/**\n * Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.\n *\n * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture.\n * @param resolution {Number} The resolution of the texture being generated\n * @param scaleMode {Number} See {@link SCALE_MODES} for possible values\n * @return {Texture} a texture of the display object\n */\nContainer.prototype.generateTexture = function (renderer, resolution, scaleMode)\n{\n var bounds = this.getLocalBounds();\n\n var renderTexture = new RenderTexture(renderer, bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution);\n\n _tempMatrix.tx = -bounds.x;\n _tempMatrix.ty = -bounds.y;\n\n renderTexture.render(this, _tempMatrix);\n\n return renderTexture;\n};\n\n/*\n * Updates the transform on all children of this container for rendering\n *\n * @private\n */\nContainer.prototype.updateTransform = function ()\n{\n if (!this.visible)\n {\n return;\n }\n\n this.displayObjectUpdateTransform();\n\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].updateTransform();\n }\n};\n\n// performance increase to avoid using call.. (10x faster)\nContainer.prototype.containerUpdateTransform = Container.prototype.updateTransform;\n\n/**\n * Retrieves the bounds of the Container as a rectangle. The bounds calculation takes all visible children into consideration.\n *\n * @return {Rectangle} The rectangular bounding area\n */\nContainer.prototype.getBounds = function ()\n{\n if(!this._currentBounds)\n {\n\n if (this.children.length === 0)\n {\n return math.Rectangle.EMPTY;\n }\n\n // TODO the bounds have already been calculated this render session so return what we have\n\n var minX = Infinity;\n var minY = Infinity;\n\n var maxX = -Infinity;\n var maxY = -Infinity;\n\n var childBounds;\n var childMaxX;\n var childMaxY;\n\n var childVisible = false;\n\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n var child = this.children[i];\n\n if (!child.visible)\n {\n continue;\n }\n\n childVisible = true;\n\n childBounds = this.children[i].getBounds();\n\n minX = minX < childBounds.x ? minX : childBounds.x;\n minY = minY < childBounds.y ? minY : childBounds.y;\n\n childMaxX = childBounds.width + childBounds.x;\n childMaxY = childBounds.height + childBounds.y;\n\n maxX = maxX > childMaxX ? maxX : childMaxX;\n maxY = maxY > childMaxY ? maxY : childMaxY;\n }\n\n if (!childVisible)\n {\n return math.Rectangle.EMPTY;\n }\n\n var bounds = this._bounds;\n\n bounds.x = minX;\n bounds.y = minY;\n bounds.width = maxX - minX;\n bounds.height = maxY - minY;\n\n this._currentBounds = bounds;\n }\n\n return this._currentBounds;\n};\n\n/**\n * Retrieves the non-global local bounds of the Container as a rectangle.\n * The calculation takes all visible children into consideration.\n *\n * @return {Rectangle} The rectangular bounding area\n */\nContainer.prototype.getLocalBounds = function ()\n{\n var matrixCache = this.worldTransform;\n\n this.worldTransform = math.Matrix.IDENTITY;\n\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].updateTransform();\n }\n\n this.worldTransform = matrixCache;\n\n this._currentBounds = null;\n\n return this.getBounds();\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer} The renderer\n */\nContainer.prototype.renderWebGL = function (renderer)\n{\n\n // if the object is not visible or the alpha is 0 then no need to render this element\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable)\n {\n return;\n }\n\n var i, j;\n\n // do a quick check to see if this element has a mask or a filter.\n if (this._mask || this._filters)\n {\n renderer.currentRenderer.flush();\n\n // push filter first as we need to ensure the stencil buffer is correct for any masking\n if (this._filters)\n {\n renderer.filterManager.pushFilter(this, this._filters);\n }\n\n if (this._mask)\n {\n renderer.maskManager.pushMask(this, this._mask);\n }\n\n renderer.currentRenderer.start();\n\n // add this object to the batch, only rendered if it has a texture.\n this._renderWebGL(renderer);\n\n // now loop through the children and make sure they get rendered\n for (i = 0, j = this.children.length; i < j; i++)\n {\n this.children[i].renderWebGL(renderer);\n }\n\n renderer.currentRenderer.flush();\n\n if (this._mask)\n {\n renderer.maskManager.popMask(this, this._mask);\n }\n\n if (this._filters)\n {\n renderer.filterManager.popFilter();\n\n }\n renderer.currentRenderer.start();\n }\n else\n {\n this._renderWebGL(renderer);\n\n // simple render children!\n for (i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].renderWebGL(renderer);\n }\n }\n};\n\n/**\n * To be overridden by the subclass\n *\n * @param renderer {WebGLRenderer} The renderer\n * @private\n */\nContainer.prototype._renderWebGL = function (renderer)\n{\n // this is where content itself gets rendered...\n};\n\n/**\n * To be overridden by the subclass\n *\n * @param renderer {CanvasRenderer} The renderer\n * @private\n */\nContainer.prototype._renderCanvas = function (renderer)\n{\n // this is where content itself gets rendered...\n};\n\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer} The renderer\n */\nContainer.prototype.renderCanvas = function (renderer)\n{\n // if not visible or the alpha is 0 then no need to render this\n if (!this.visible || this.alpha <= 0 || !this.renderable)\n {\n return;\n }\n\n if (this._mask)\n {\n renderer.maskManager.pushMask(this._mask, renderer);\n }\n\n this._renderCanvas(renderer);\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].renderCanvas(renderer);\n }\n\n if (this._mask)\n {\n renderer.maskManager.popMask(renderer);\n }\n};\n", "var math = require('../math'),\n utils = require('../utils'),\n RenderTexture = require('../textures/RenderTexture'),\n _tempMatrix = new math.Matrix();\n\n/**\n * The base class for all objects that are rendered on the screen.\n * This is an abstract class and should not be used on its own rather it should be extended.\n *\n * @class\n * @memberof PIXI\n */\nfunction DisplayObject()\n{\n /**\n * The coordinate of the object relative to the local coordinates of the parent.\n *\n * @member {Point}\n */\n this.position = new math.Point();\n\n /**\n * The scale factor of the object.\n *\n * @member {Point}\n */\n this.scale = new math.Point(1, 1);\n\n /**\n * The pivot point of the displayObject that it rotates around\n *\n * @member {Point}\n */\n this.pivot = new math.Point(0, 0);\n\n /**\n * The rotation of the object in radians.\n *\n * @member {number}\n */\n this.rotation = 0;\n\n /**\n * The opacity of the object.\n *\n * @member {number}\n */\n this.alpha = 1;\n\n /**\n * The visibility of the object. If false the object will not be drawn, and\n * the updateTransform function will not be called.\n *\n * @member {boolean}\n */\n this.visible = true;\n\n /**\n * Can this object be rendered, if false the object will not be drawn but the updateTransform\n * methods will still be called.\n *\n * @member {boolean}\n */\n this.renderable = true;\n\n /**\n * The display object container that contains this display object.\n *\n * @member {Container}\n * @readOnly\n */\n this.parent = null;\n\n /**\n * The multiplied alpha of the displayObject\n *\n * @member {number}\n * @readOnly\n */\n this.worldAlpha = 1;\n\n /**\n * Current transform of the object based on world (parent) factors\n *\n * @member {Matrix}\n * @readOnly\n */\n this.worldTransform = new math.Matrix();\n\n /**\n * The area the filter is applied to. This is used as more of an optimisation\n * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle\n *\n * @member {Rectangle}\n */\n this.filterArea = null;\n\n /**\n * cached sin rotation\n *\n * @member {number}\n * @private\n */\n this._sr = 0;\n\n /**\n * cached cos rotation\n *\n * @member {number}\n * @private\n */\n this._cr = 1;\n\n /**\n * The original, cached bounds of the object\n *\n * @member {Rectangle}\n * @private\n */\n this._bounds = new math.Rectangle(0, 0, 1, 1);\n\n /**\n * The most up-to-date bounds of the object\n *\n * @member {Rectangle}\n * @private\n */\n this._currentBounds = null;\n\n /**\n * The original, cached mask of the object\n *\n * @member {Rectangle}\n * @private\n */\n this._mask = null;\n\n //TODO rename to _isMask\n // this.isMask = false;\n\n /**\n * Cached internal flag.\n *\n * @member {boolean}\n * @private\n */\n this._cacheAsBitmap = false;\n this._cachedObject = null;\n}\n\n// constructor\nDisplayObject.prototype.constructor = DisplayObject;\nutils.eventTarget.mixin(DisplayObject.prototype);\nmodule.exports = DisplayObject;\n\nObject.defineProperties(DisplayObject.prototype, {\n /**\n * The position of the displayObject on the x axis relative to the local coordinates of the parent.\n *\n * @member {number}\n * @memberof DisplayObject#\n */\n x: {\n get: function ()\n {\n return this.position.x;\n },\n set: function (value)\n {\n this.position.x = value;\n }\n },\n\n /**\n * The position of the displayObject on the y axis relative to the local coordinates of the parent.\n *\n * @member {number}\n * @memberof DisplayObject#\n */\n y: {\n get: function ()\n {\n return this.position.y;\n },\n set: function (value)\n {\n this.position.y = value;\n }\n },\n\n /**\n * Indicates if the sprite is globally visible.\n *\n * @member {boolean}\n * @memberof DisplayObject#\n * @readonly\n */\n worldVisible: {\n get: function ()\n {\n var item = this;\n\n do {\n if (!item.visible)\n {\n return false;\n }\n\n item = item.parent;\n } while (item);\n\n return true;\n }\n },\n\n /**\n * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it.\n * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping.\n * To remove a mask, set this property to null.\n *\n * @member {Graphics}\n * @memberof DisplayObject#\n */\n mask: {\n get: function ()\n {\n return this._mask;\n },\n set: function (value)\n {\n if (this._mask)\n {\n this._mask.renderable = true;\n }\n\n this._mask = value;\n\n if (this._mask)\n {\n this._mask.renderable = false;\n }\n }\n },\n\n /**\n * Sets the filters for the displayObject.\n * * IMPORTANT: This is a webGL only feature and will be ignored by the canvas renderer.\n * To remove filters simply set this property to 'null'\n *\n * @member {Filter[]}\n * @memberof DisplayObject#\n */\n filters: {\n get: function ()\n {\n return this._filters && this._filters.slice();\n },\n set: function (value)\n {\n this._filters = value && value.slice();\n }\n }\n\n});\n\n/*\n * Updates the object transform for rendering\n *\n * TODO - Optimization pass!\n *\n * @private\n */\nDisplayObject.prototype.updateTransform = function ()\n{\n\n // create some matrix refs for easy access\n var pt = this.parent.worldTransform;\n var wt = this.worldTransform;\n\n // temporary matrix variables\n var a, b, c, d, tx, ty;\n\n // so if rotation is between 0 then we can simplify the multiplication process...\n if (this.rotation % math.PI_2)\n {\n // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes\n if (this.rotation !== this.rotationCache)\n {\n this.rotationCache = this.rotation;\n this._sr = Math.sin(this.rotation);\n this._cr = Math.cos(this.rotation);\n }\n\n // get the matrix values of the displayobject based on its transform properties..\n a = this._cr * this.scale.x;\n b = this._sr * this.scale.x;\n c = -this._sr * this.scale.y;\n d = this._cr * this.scale.y;\n tx = this.position.x;\n ty = this.position.y;\n\n // check for pivot.. not often used so geared towards that fact!\n if (this.pivot.x || this.pivot.y)\n {\n tx -= this.pivot.x * a + this.pivot.y * c;\n ty -= this.pivot.x * b + this.pivot.y * d;\n }\n\n // concat the parent matrix with the objects transform.\n wt.a = a * pt.a + b * pt.c;\n wt.b = a * pt.b + b * pt.d;\n wt.c = c * pt.a + d * pt.c;\n wt.d = c * pt.b + d * pt.d;\n wt.tx = tx * pt.a + ty * pt.c + pt.tx;\n wt.ty = tx * pt.b + ty * pt.d + pt.ty;\n }\n else\n {\n // lets do the fast version as we know there is no rotation..\n a = this.scale.x;\n d = this.scale.y;\n\n tx = this.position.x - this.pivot.x * a;\n ty = this.position.y - this.pivot.y * d;\n\n wt.a = a * pt.a;\n wt.b = a * pt.b;\n wt.c = d * pt.c;\n wt.d = d * pt.d;\n wt.tx = tx * pt.a + ty * pt.c + pt.tx;\n wt.ty = tx * pt.b + ty * pt.d + pt.ty;\n }\n\n // multiply the alphas..\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n\n // reset the bounds each time this is called!\n this._currentBounds = null;\n};\n\n// performance increase to avoid using call.. (10x faster)\nDisplayObject.prototype.displayObjectUpdateTransform = DisplayObject.prototype.updateTransform;\n\n/**\n *\n *\n * Retrieves the bounds of the displayObject as a rectangle object\n *\n * @param matrix {Matrix}\n * @return {Rectangle} the rectangular bounding area\n */\nDisplayObject.prototype.getBounds = function (matrix)\n{\n return math.Rectangle.EMPTY;\n};\n\n/**\n * Retrieves the local bounds of the displayObject as a rectangle object\n *\n * @return {Rectangle} the rectangular bounding area\n */\nDisplayObject.prototype.getLocalBounds = function ()\n{\n return this.getBounds(math.Matrix.IDENTITY);\n};\n\n/**\n * Calculates the global position of the display object\n *\n * @param position {Point} The world origin to calculate from\n * @return {Point} A point object representing the position of this object\n */\nDisplayObject.prototype.toGlobal = function (position)\n{\n // don't need to update the lot\n this.displayObjectUpdateTransform();\n return this.worldTransform.apply(position);\n};\n\n/**\n * Calculates the local position of the display object relative to another point\n *\n * @param position {Point} The world origin to calculate from\n * @param [from] {DisplayObject} The DisplayObject to calculate the global position from\n * @return {Point} A point object representing the position of this object\n */\nDisplayObject.prototype.toLocal = function (position, from)\n{\n if (from)\n {\n position = from.toGlobal(position);\n }\n\n // don't need to update the lot\n this.displayObjectUpdateTransform();\n return this.worldTransform.applyInverse(position);\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer} The renderer\n * @private\n */\nDisplayObject.prototype.renderWebGL = function (renderer)\n{\n // OVERWRITE;\n};\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer} The renderer\n * @private\n */\nDisplayObject.prototype.renderCanvas = function (renderer)\n{\n // OVERWRITE;\n};\n/**\n * Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.\n *\n * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture.\n * @param resolution {Number} The resolution of the texture being generated\n * @param scaleMode {Number} See {@link SCALE_MODES} for possible values\n * @return {Texture} a texture of the display object\n */\nDisplayObject.prototype.generateTexture = function (renderer, resolution, scaleMode)\n{\n var bounds = this.getLocalBounds();\n\n var renderTexture = new RenderTexture(renderer, bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution);\n\n _tempMatrix.tx = -bounds.x;\n _tempMatrix.ty = -bounds.y;\n\n renderTexture.render(this, _tempMatrix);\n\n return renderTexture;\n};\n", @@ -176,7 +176,7 @@ "var AbstractFilter = require('./AbstractFilter');\n\n\n\n/**\n *\n * Basic FXAA implementation based on the code on geeks3d.com with the\n * modification that the texture2DLod stuff was removed since it's\n * unsupported by WebGL.\n *\n * --\n * From:\n * https://github.com/mitsuhiko/webgl-meincraft\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI\n *\n */\nfunction FXAAFilter()\n{\n AbstractFilter.call(this,\n // vertex shader\n \"\\nprecision mediump float;\\n\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform mat3 projectionMatrix;\\nuniform vec2 resolution;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvarying vec2 vResolution;\\n\\n//texcoords computed in vertex step\\n//to avoid dependent texture reads\\nvarying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\n\\nvoid texcoords(vec2 fragCoord, vec2 resolution,\\n out vec2 v_rgbNW, out vec2 v_rgbNE,\\n out vec2 v_rgbSW, out vec2 v_rgbSE,\\n out vec2 v_rgbM) {\\n vec2 inverseVP = 1.0 / resolution.xy;\\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\\n v_rgbM = vec2(fragCoord * inverseVP);\\n}\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n vResolution = resolution;\\n\\n //compute the texture coords and send them to varyings\\n texcoords(aTextureCoord * resolution, resolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\n\\n/**\\nBasic FXAA implementation based on the code on geeks3d.com with the\\nmodification that the texture2DLod stuff was removed since it's\\nunsupported by WebGL.\\n\\n--\\n\\nFrom:\\nhttps://github.com/mitsuhiko/webgl-meincraft\\n\\nCopyright (c) 2011 by Armin Ronacher.\\n\\nSome rights reserved.\\n\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are\\nmet:\\n\\n * Redistributions of source code must retain the above copyright\\n notice, this list of conditions and the following disclaimer.\\n\\n * Redistributions in binary form must reproduce the above\\n copyright notice, this list of conditions and the following\\n disclaimer in the documentation and/or other materials provided\\n with the distribution.\\n\\n * The names of the contributors may not be used to endorse or\\n promote products derived from this software without specific\\n prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\\n\\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n*/\\n\\n#ifndef FXAA_REDUCE_MIN\\n #define FXAA_REDUCE_MIN (1.0/ 128.0)\\n#endif\\n#ifndef FXAA_REDUCE_MUL\\n #define FXAA_REDUCE_MUL (1.0 / 8.0)\\n#endif\\n#ifndef FXAA_SPAN_MAX\\n #define FXAA_SPAN_MAX 8.0\\n#endif\\n\\n//optimized version for mobile, where dependent\\n//texture reads can be a bottleneck\\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 resolution,\\n vec2 v_rgbNW, vec2 v_rgbNE,\\n vec2 v_rgbSW, vec2 v_rgbSE,\\n vec2 v_rgbM) {\\n vec4 color;\\n mediump vec2 inverseVP = vec2(1.0 / resolution.x, 1.0 / resolution.y);\\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\\n vec4 texColor = texture2D(tex, v_rgbM);\\n vec3 rgbM = texColor.xyz;\\n vec3 luma = vec3(0.299, 0.587, 0.114);\\n float lumaNW = dot(rgbNW, luma);\\n float lumaNE = dot(rgbNE, luma);\\n float lumaSW = dot(rgbSW, luma);\\n float lumaSE = dot(rgbSE, luma);\\n float lumaM = dot(rgbM, luma);\\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\\n\\n mediump vec2 dir;\\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\\n\\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\\n\\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\\n dir * rcpDirMin)) * inverseVP;\\n\\n vec3 rgbA = 0.5 * (\\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\\n\\n float lumaB = dot(rgbB, luma);\\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\\n color = vec4(rgbA, texColor.a);\\n else\\n color = vec4(rgbB, texColor.a);\\n return color;\\n}\\n\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vResolution;\\n\\n//texcoords computed in vertex step\\n//to avoid dependent texture reads\\nvarying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nuniform sampler2D uSampler;\\n\\n\\nvoid main(void){\\n\\n gl_FragColor = fxaa(uSampler, vTextureCoord * vResolution, vResolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n\\n}\\n\",\n // uniforms\n {\n resolution: { type: 'v2', value: { x: 1, y: 1 } }\n }\n );\n\n}\n\nFXAAFilter.prototype = Object.create(AbstractFilter.prototype);\nFXAAFilter.prototype.constructor = FXAAFilter;\nmodule.exports = FXAAFilter;\n\nFXAAFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var filterManager = renderer.filterManager;\n\n var shader = this.getShader( renderer );\n // draw the filter...\n filterManager.applyFilter(shader, input, output);\n};\n", "var AbstractFilter = require('./AbstractFilter'),\n math = require('../../../math');\n\n// fs needs to be decalred alone for brfs to pick it up properly.\n\n\n/**\n * The SpriteMaskFilter class\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI\n * @param sprite {Sprite} the target sprite\n */\nfunction SpriteMaskFilter(sprite)\n{\n var maskMatrix = new math.Matrix();\n\n AbstractFilter.call(this,\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 otherMatrix;\\n\\nvarying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n \"precision lowp float;\\n\\nvarying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\nuniform sampler2D mask;\\n\\nvoid main(void)\\n{\\n // check clip! this will stop the mask bleeding out from the edges\\n vec2 text = abs( vMaskCoord - 0.5 );\\n text = step(0.5, text);\\n float clip = 1.0 - max(text.y, text.x);\\n vec4 original = texture2D(uSampler, vTextureCoord);\\n vec4 masky = texture2D(mask, vMaskCoord);\\n original *= (masky.r * masky.a * clip);\\n gl_FragColor = original;\\n}\\n\",\n {\n mask: { type: 'sampler2D', value: sprite._texture },\n otherMatrix: { type: 'mat3', value: maskMatrix.toArray(true) }\n }\n );\n\n this.maskSprite = sprite;\n this.maskMatrix = maskMatrix;\n}\n\nSpriteMaskFilter.prototype = Object.create(AbstractFilter.prototype);\nSpriteMaskFilter.prototype.constructor = SpriteMaskFilter;\nmodule.exports = SpriteMaskFilter;\n\n/**\n * Applies the filter ? @alvin\n *\n * @param renderer {WebGLRenderer} A reference to the WebGL renderer\n * @param input {RenderTarget}\n * @param output {RenderTarget}\n */\nSpriteMaskFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var filterManager = renderer.filterManager;\n\n this.uniforms.mask.value = this.maskSprite._texture;\n\n filterManager.calculateMappedMatrix(input.frame, this.maskSprite, this.maskMatrix);\n\n this.uniforms.otherMatrix.value = this.maskMatrix.toArray(true);\n\n var shader = this.getShader(renderer);\n // draw the filter...\n filterManager.applyFilter(shader, input, output);\n};\n\n\nObject.defineProperties(SpriteMaskFilter.prototype, {\n /**\n * The texture used for the displacement map. Must be power of 2 sized texture.\n *\n * @member {Texture}\n * @memberof SpriteMaskFilter#\n */\n map: {\n get: function ()\n {\n return this.uniforms.mask.value;\n },\n set: function (value)\n {\n this.uniforms.mask.value = value;\n }\n },\n\n /**\n * The offset used to move the displacement map.\n *\n * @member {Point}\n * @memberof SpriteMaskFilter#\n */\n offset: {\n get: function()\n {\n return this.uniforms.offset.value;\n },\n set: function(value)\n {\n this.uniforms.offset.value = value;\n }\n }\n});\n", "var WebGLManager = require('./WebGLManager');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGlManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction BlendModeManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {number}\n */\n this.currentBlendMode = 99999;\n}\n\nBlendModeManager.prototype = Object.create(WebGLManager.prototype);\nBlendModeManager.prototype.constructor = BlendModeManager;\nmodule.exports = BlendModeManager;\n\n/**\n * Sets-up the given blendMode from WebGL's point of view.\n *\n * @param blendMode {number} the blendMode, should be a Pixi const, such as BlendModes.ADD\n */\nBlendModeManager.prototype.setBlendMode = function (blendMode)\n{\n if (this.currentBlendMode === blendMode)\n {\n return false;\n }\n\n this.currentBlendMode = blendMode;\n\n var mode = this.renderer.blendModes[this.currentBlendMode];\n this.renderer.gl.blendFunc(mode[0], mode[1]);\n\n return true;\n};\n", - "var WebGLManager = require('./WebGLManager'),\n RenderTarget = require('../utils/RenderTarget'),\n CONST = require('../../../const'),\n Quad = require('../utils/Quad'),\n math = require('../../../math');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGLManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction FilterManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {any[]}\n */\n this.filterStack = [];\n\n this.filterStack.push({\n renderTarget:renderer.currentRenderTarget,\n filter:[],\n bounds:null\n });\n\n /**\n * @member {any[]}\n */\n this.texturePool = [];\n\n // listen for context and update necessary buffers\n //TODO make this dynamic!\n //TODO test this out by forces power of two?\n this.textureSize = new math.Rectangle( 0, 0, renderer.width, renderer.height );\n\n this.currentFrame = null;\n}\n\nFilterManager.prototype = Object.create(WebGLManager.prototype);\nFilterManager.prototype.constructor = FilterManager;\nmodule.exports = FilterManager;\n\n\n/**\n * Called when there is a WebGL context change.\n *\n */\nFilterManager.prototype.onContextChange = function ()\n{\n this.texturePool.length = 0;\n\n var gl = this.renderer.gl;\n this.quad = new Quad(gl);\n};\n\n/**\n * @param renderer {WebGLRenderer}\n * @param buffer {ArrayBuffer}\n */\nFilterManager.prototype.setFilterStack = function ( filterStack )\n{\n this.filterStack = filterStack;\n};\n\n/**\n * Applies the filter and adds it to the current filter stack.\n *\n * @param filterBlock {object} the filter that will be pushed to the current filter stack\n */\nFilterManager.prototype.pushFilter = function (target, filters)\n{\n // get the bounds of the object..\n var bounds = target.filterArea || target.getBounds();\n\n // round off the rectangle to get a nice smoooooooth filter :)\n bounds.x = bounds.x | 0;\n bounds.y = bounds.y | 0;\n bounds.width = bounds.width | 0;\n bounds.height = bounds.height | 0;\n\n\n // padding!\n var padding = filters[0].padding;\n bounds.x -= padding;\n bounds.y -= padding;\n bounds.width += padding * 2;\n bounds.height += padding * 2;\n\n\n if(this.renderer.currentRenderTarget.transform)\n {\n //TODO this will break if the renderTexture transform is anything other than a translation.\n //Will need to take the full matrix transform into acount..\n var transform = this.renderer.currentRenderTarget.transform;\n\n bounds.x += transform.tx;\n bounds.y += transform.ty;\n\n this.capFilterArea( bounds );\n\n bounds.x -= transform.tx;\n bounds.y -= transform.ty;\n }\n else\n {\n this.capFilterArea( bounds );\n }\n\n\n this.currentFrame = bounds;\n\n var texture = this.getRenderTarget();\n\n this.renderer.setRenderTarget(texture);\n\n // clear the texture..\n texture.clear();\n\n // TODO get rid of object creation!\n this.filterStack.push({\n renderTarget: texture,\n filter: filters\n });\n\n};\n\n\n/**\n * Removes the last filter from the filter stack and returns it.\n *\n */\nFilterManager.prototype.popFilter = function ()\n{\n var filterData = this.filterStack.pop();\n var previousFilterData = this.filterStack[this.filterStack.length-1];\n\n var input = filterData.renderTarget;\n\n var output = previousFilterData.renderTarget;\n\n // use program\n var gl = this.renderer.gl;\n\n\n this.currentFrame = input.frame;\n\n this.quad.map(this.textureSize, input.frame);\n\n // TODO.. this probably only needs to be done once!\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quad.vertexBuffer);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.quad.indexBuffer);\n\n var filters = filterData.filter;\n\n if (filters.length === 1)\n {\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filters[0].uniforms.dimensions)\n {\n filters[0].uniforms.dimensions.value[0] = this.renderer.width;\n filters[0].uniforms.dimensions.value[1] = this.renderer.height;\n filters[0].uniforms.dimensions.value[2] = this.quad.vertices[0];\n filters[0].uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filters[0].applyFilter( this.renderer, input, output );\n this.returnRenderTarget( input );\n\n }\n else\n {\n var flipTexture = input;\n var flopTexture = this.getRenderTarget(true);\n\n for (var i = 0; i < filters.length-1; i++)\n {\n var filter = filters[i];\n\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filter.uniforms.dimensions)\n {\n filter.uniforms.dimensions.value[0] = this.renderer.width;\n filter.uniforms.dimensions.value[1] = this.renderer.height;\n filter.uniforms.dimensions.value[2] = this.quad.vertices[0];\n filter.uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filter.applyFilter( this.renderer, flipTexture, flopTexture );\n\n var temp = flipTexture;\n flipTexture = flopTexture;\n flopTexture = temp;\n }\n\n filters[filters.length-1].applyFilter( this.renderer, flipTexture, output );\n\n this.returnRenderTarget( flipTexture );\n this.returnRenderTarget( flopTexture );\n }\n\n return filterData.filter;\n};\n\n/**\n * Grabs an render target from the internal pool\n *\n * @param clear {boolean} Whether or not we need to clear the RenderTarget\n * @return {RenderTarget}\n */\nFilterManager.prototype.getRenderTarget = function ( clear )\n{\n var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, CONST.SCALE_MODES.LINEAR, this.renderer.resolution * CONST.FILTER_RESOLUTION);\n renderTarget.frame = this.currentFrame;\n\n if (clear)\n {\n renderTarget.clear(true);\n }\n\n return renderTarget;\n};\n\n/*\n * Returns a RenderTarget to the internal pool\n * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool\n */\nFilterManager.prototype.returnRenderTarget = function (renderTarget)\n{\n this.texturePool.push( renderTarget );\n};\n\n/*\n * Applies the filter\n * @param shader {Shader} The shader to upload\n * @param inputTarget {RenderTarget}\n * @param outputTarget {RenderTarget}\n * @param clear {boolean} Whether or not we want to clear the outputTarget\n */\nFilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear)\n{\n var gl = this.renderer.gl;\n\n this.renderer.setRenderTarget(outputTarget);\n\n if (clear)\n {\n outputTarget.clear();\n }\n\n // set the shader\n this.renderer.shaderManager.setShader(shader);\n\n // TODO (cengler) - Can this be cached and not `toArray`ed each frame?\n shader.uniforms.projectionMatrix.value = this.renderer.currentRenderTarget.projectionMatrix.toArray(true);\n\n //TODO can this be optimised?\n shader.syncUniforms();\n\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0);\n gl.vertexAttribPointer(shader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4);\n gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4);\n\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, inputTarget.texture);\n\n gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n};\n\n/*\n * Calculates the mapped matrix\n * @param filterArea {Rectangle} The filter area\n * @param sprite {Sprite} the target sprite\n * @param outputMatrix {Matrix} @alvin\n */\n// TODO playing around here.. this is temporary - (will end up in the shader)\nFilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix)\n{\n var worldTransform = sprite.worldTransform.copy(math.Matrix.TEMP_MATRIX),\n texture = sprite._texture.baseTexture;\n\n var mappedMatrix = outputMatrix.identity();\n\n // scale..\n var ratio = this.textureSize.height / this.textureSize.width;\n\n mappedMatrix.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height );\n\n mappedMatrix.scale(1 , ratio);\n\n var translateScaleX = (this.textureSize.width / texture.width);\n var translateScaleY = (this.textureSize.height / texture.height);\n\n worldTransform.tx /= texture.width * translateScaleX;\n worldTransform.ty /= texture.width * translateScaleX;\n\n worldTransform.invert();\n\n mappedMatrix.prepend(worldTransform);\n\n // apply inverse scale..\n mappedMatrix.scale(1 , 1/ratio);\n\n mappedMatrix.scale( translateScaleX , translateScaleY );\n\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n\n return mappedMatrix;\n\n // Keeping the orginal as a reminder to me on how this works!\n //\n // var m = new math.Matrix();\n\n // // scale..\n // var ratio = this.textureSize.height / this.textureSize.width;\n\n // m.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height);\n\n\n // m.scale(1 , ratio);\n\n\n // var transform = wt.clone();\n\n // var translateScaleX = (this.textureSize.width / 620);\n // var translateScaleY = (this.textureSize.height / 380);\n\n // transform.tx /= 620 * translateScaleX;\n // transform.ty /= 620 * translateScaleX;\n\n // transform.invert();\n\n // transform.append(m);\n\n // // apply inverse scale..\n // transform.scale(1 , 1/ratio);\n\n // transform.scale( translateScaleX , translateScaleY );\n\n // return transform;\n};\n\n/*\n * Constrains the filter area to the texture size\n * @param filterArea {Rectangle} The filter area we want to cap\n */\nFilterManager.prototype.capFilterArea = function (filterArea)\n{\n if (filterArea.x < 0)\n {\n filterArea.width += filterArea.x;\n filterArea.x = 0;\n }\n\n if (filterArea.y < 0)\n {\n filterArea.height += filterArea.y;\n filterArea.y = 0;\n }\n\n if ( filterArea.x + filterArea.width > this.textureSize.width )\n {\n filterArea.width = this.textureSize.width - filterArea.x;\n }\n\n if ( filterArea.y + filterArea.height > this.textureSize.height )\n {\n filterArea.height = this.textureSize.height - filterArea.y;\n }\n};\n\n/*\n * Resizes all the render targets in the pool\n * @param width {number} the new width\n * @param height {number} the new height\n */\nFilterManager.prototype.resize = function ( width, height )\n{\n this.textureSize.width = width;\n this.textureSize.height = height;\n\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].resize( width, height );\n }\n};\n\n/**\n * Destroys the filter and removes it from the filter stack.\n *\n */\nFilterManager.prototype.destroy = function ()\n{\n this.filterStack = null;\n this.offsetY = 0;\n\n // destroy textures\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].destroy();\n }\n\n this.texturePool = null;\n};\n", + "var WebGLManager = require('./WebGLManager'),\n RenderTarget = require('../utils/RenderTarget'),\n CONST = require('../../../const'),\n Quad = require('../utils/Quad'),\n math = require('../../../math');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGLManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction FilterManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {any[]}\n */\n this.filterStack = [];\n\n this.filterStack.push({\n renderTarget:renderer.currentRenderTarget,\n filter:[],\n bounds:null\n });\n\n /**\n * @member {any[]}\n */\n this.texturePool = [];\n\n // listen for context and update necessary buffers\n //TODO make this dynamic!\n //TODO test this out by forces power of two?\n this.textureSize = new math.Rectangle( 0, 0, renderer.width, renderer.height );\n\n this.currentFrame = null;\n}\n\nFilterManager.prototype = Object.create(WebGLManager.prototype);\nFilterManager.prototype.constructor = FilterManager;\nmodule.exports = FilterManager;\n\n\n/**\n * Called when there is a WebGL context change.\n *\n */\nFilterManager.prototype.onContextChange = function ()\n{\n this.texturePool.length = 0;\n\n var gl = this.renderer.gl;\n this.quad = new Quad(gl);\n};\n\n/**\n * @param renderer {WebGLRenderer}\n * @param buffer {ArrayBuffer}\n */\nFilterManager.prototype.setFilterStack = function ( filterStack )\n{\n this.filterStack = filterStack;\n};\n\n/**\n * Applies the filter and adds it to the current filter stack.\n *\n * @param filterBlock {object} the filter that will be pushed to the current filter stack\n */\nFilterManager.prototype.pushFilter = function (target, filters)\n{\n // get the bounds of the object..\n var bounds = target.filterArea || target.getBounds();\n //bounds = bounds.clone();\n\n // round off the rectangle to get a nice smoooooooth filter :)\n bounds.x = bounds.x | 0;\n bounds.y = bounds.y | 0;\n bounds.width = bounds.width | 0;\n bounds.height = bounds.height | 0;\n\n\n // padding!\n var padding = filters[0].padding | 0;\n bounds.x -= padding;\n bounds.y -= padding;\n bounds.width += padding * 2;\n bounds.height += padding * 2;\n\n\n if(this.renderer.currentRenderTarget.transform)\n {\n //TODO this will break if the renderTexture transform is anything other than a translation.\n //Will need to take the full matrix transform into acount..\n var transform = this.renderer.currentRenderTarget.transform;\n\n bounds.x += transform.tx;\n bounds.y += transform.ty;\n\n this.capFilterArea( bounds );\n\n bounds.x -= transform.tx;\n bounds.y -= transform.ty;\n }\n else\n {\n this.capFilterArea( bounds );\n }\n\n\n this.currentFrame = bounds;\n\n var texture = this.getRenderTarget();\n\n this.renderer.setRenderTarget(texture);\n\n // clear the texture..\n texture.clear();\n\n // TODO get rid of object creation!\n this.filterStack.push({\n renderTarget: texture,\n filter: filters\n });\n\n};\n\n\n/**\n * Removes the last filter from the filter stack and returns it.\n *\n */\nFilterManager.prototype.popFilter = function ()\n{\n var filterData = this.filterStack.pop();\n var previousFilterData = this.filterStack[this.filterStack.length-1];\n\n var input = filterData.renderTarget;\n\n var output = previousFilterData.renderTarget;\n\n // use program\n var gl = this.renderer.gl;\n\n\n this.currentFrame = input.frame;\n\n this.quad.map(this.textureSize, input.frame);\n\n\n // TODO.. this probably only needs to be done once!\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quad.vertexBuffer);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.quad.indexBuffer);\n\n var filters = filterData.filter;\n\n // assuming all filters follow the correct format??\n gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0);\n gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4);\n gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4);\n\n if (filters.length === 1)\n {\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filters[0].uniforms.dimensions)\n {\n filters[0].uniforms.dimensions.value[0] = this.renderer.width;\n filters[0].uniforms.dimensions.value[1] = this.renderer.height;\n filters[0].uniforms.dimensions.value[2] = this.quad.vertices[0];\n filters[0].uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filters[0].applyFilter( this.renderer, input, output );\n this.returnRenderTarget( input );\n\n }\n else\n {\n var flipTexture = input;\n var flopTexture = this.getRenderTarget(true);\n\n for (var i = 0; i < filters.length-1; i++)\n {\n var filter = filters[i];\n\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filter.uniforms.dimensions)\n {\n filter.uniforms.dimensions.value[0] = this.renderer.width;\n filter.uniforms.dimensions.value[1] = this.renderer.height;\n filter.uniforms.dimensions.value[2] = this.quad.vertices[0];\n filter.uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filter.applyFilter( this.renderer, flipTexture, flopTexture );\n\n var temp = flipTexture;\n flipTexture = flopTexture;\n flopTexture = temp;\n }\n\n filters[filters.length-1].applyFilter( this.renderer, flipTexture, output );\n\n this.returnRenderTarget( flipTexture );\n this.returnRenderTarget( flopTexture );\n }\n\n return filterData.filter;\n};\n\n/**\n * Grabs an render target from the internal pool\n *\n * @param clear {boolean} Whether or not we need to clear the RenderTarget\n * @return {RenderTarget}\n */\nFilterManager.prototype.getRenderTarget = function ( clear )\n{\n var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, CONST.SCALE_MODES.LINEAR, this.renderer.resolution * CONST.FILTER_RESOLUTION);\n renderTarget.frame = this.currentFrame;\n\n if (clear)\n {\n renderTarget.clear(true);\n }\n\n return renderTarget;\n};\n\n/*\n * Returns a RenderTarget to the internal pool\n * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool\n */\nFilterManager.prototype.returnRenderTarget = function (renderTarget)\n{\n this.texturePool.push( renderTarget );\n};\n\n/*\n * Applies the filter\n * @param shader {Shader} The shader to upload\n * @param inputTarget {RenderTarget}\n * @param outputTarget {RenderTarget}\n * @param clear {boolean} Whether or not we want to clear the outputTarget\n */\nFilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear)\n{\n var gl = this.renderer.gl;\n\n this.renderer.setRenderTarget(outputTarget);\n\n if (clear)\n {\n outputTarget.clear();\n }\n\n // set the shader\n this.renderer.shaderManager.setShader(shader);\n\n // TODO (cengler) - Can this be cached and not `toArray`ed each frame?\n shader.uniforms.projectionMatrix.value = this.renderer.currentRenderTarget.projectionMatrix.toArray(true);\n\n //TODO can this be optimised?\n shader.syncUniforms();\n/*\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0);\n gl.vertexAttribPointer(shader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4);\n gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4);\n*/\n\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, inputTarget.texture);\n\n gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n};\n\n/*\n * Calculates the mapped matrix\n * @param filterArea {Rectangle} The filter area\n * @param sprite {Sprite} the target sprite\n * @param outputMatrix {Matrix} @alvin\n */\n// TODO playing around here.. this is temporary - (will end up in the shader)\nFilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix)\n{\n var worldTransform = sprite.worldTransform.copy(math.Matrix.TEMP_MATRIX),\n texture = sprite._texture.baseTexture;\n\n var mappedMatrix = outputMatrix.identity();\n\n // scale..\n var ratio = this.textureSize.height / this.textureSize.width;\n\n mappedMatrix.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height );\n\n mappedMatrix.scale(1 , ratio);\n\n var translateScaleX = (this.textureSize.width / texture.width);\n var translateScaleY = (this.textureSize.height / texture.height);\n\n worldTransform.tx /= texture.width * translateScaleX;\n worldTransform.ty /= texture.width * translateScaleX;\n\n worldTransform.invert();\n\n mappedMatrix.prepend(worldTransform);\n\n // apply inverse scale..\n mappedMatrix.scale(1 , 1/ratio);\n\n mappedMatrix.scale( translateScaleX , translateScaleY );\n\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n\n return mappedMatrix;\n\n // Keeping the orginal as a reminder to me on how this works!\n //\n // var m = new math.Matrix();\n\n // // scale..\n // var ratio = this.textureSize.height / this.textureSize.width;\n\n // m.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height);\n\n\n // m.scale(1 , ratio);\n\n\n // var transform = wt.clone();\n\n // var translateScaleX = (this.textureSize.width / 620);\n // var translateScaleY = (this.textureSize.height / 380);\n\n // transform.tx /= 620 * translateScaleX;\n // transform.ty /= 620 * translateScaleX;\n\n // transform.invert();\n\n // transform.append(m);\n\n // // apply inverse scale..\n // transform.scale(1 , 1/ratio);\n\n // transform.scale( translateScaleX , translateScaleY );\n\n // return transform;\n};\n\n/*\n * Constrains the filter area to the texture size\n * @param filterArea {Rectangle} The filter area we want to cap\n */\nFilterManager.prototype.capFilterArea = function (filterArea)\n{\n if (filterArea.x < 0)\n {\n filterArea.width += filterArea.x;\n filterArea.x = 0;\n }\n\n if (filterArea.y < 0)\n {\n filterArea.height += filterArea.y;\n filterArea.y = 0;\n }\n\n if ( filterArea.x + filterArea.width > this.textureSize.width )\n {\n filterArea.width = this.textureSize.width - filterArea.x;\n }\n\n if ( filterArea.y + filterArea.height > this.textureSize.height )\n {\n filterArea.height = this.textureSize.height - filterArea.y;\n }\n};\n\n/*\n * Resizes all the render targets in the pool\n * @param width {number} the new width\n * @param height {number} the new height\n */\nFilterManager.prototype.resize = function ( width, height )\n{\n this.textureSize.width = width;\n this.textureSize.height = height;\n\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].resize( width, height );\n }\n};\n\n/**\n * Destroys the filter and removes it from the filter stack.\n *\n */\nFilterManager.prototype.destroy = function ()\n{\n this.filterStack = null;\n this.offsetY = 0;\n\n // destroy textures\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].destroy();\n }\n\n this.texturePool = null;\n};\n", "var WebGLManager = require('./WebGLManager'),\n AlphaMaskFilter = require('../filters/SpriteMaskFilter');\n\n/**\n * @class\n * @memberof PIXI\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction MaskManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n this.stencilStack = [];\n this.reverse = true;\n this.count = 0;\n\n this.alphaMaskPool = [];\n}\n\nMaskManager.prototype = Object.create(WebGLManager.prototype);\nMaskManager.prototype.constructor = MaskManager;\nmodule.exports = MaskManager;\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param graphics {Graphics}\n * @param webGLData {any[]}\n */\nMaskManager.prototype.pushMask = function (target, maskData)\n{\n if (maskData.texture)\n {\n this.pushSpriteMask(target, maskData);\n }\n else\n {\n this.pushStencilMask(target, maskData);\n }\n\n};\n\n/**\n * Removes the last mask from the mask stack and doesn't return it.\n * \n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.popMask = function (target, maskData)\n{\n if (maskData.texture)\n {\n this.popSpriteMask(target, maskData);\n }\n else\n {\n this.popStencilMask(target, maskData);\n }\n};\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.pushSpriteMask = function (target, maskData)\n{\n var alphaMaskFilter = this.alphaMaskPool.pop();\n\n if (!alphaMaskFilter)\n {\n alphaMaskFilter = [new AlphaMaskFilter(maskData)];\n }\n\n this.renderer.filterManager.pushFilter(target, alphaMaskFilter);\n};\n\n/**\n * Removes the last filter from the filter stack and doesn't return it.\n *\n */\nMaskManager.prototype.popSpriteMask = function ()\n{\n var filters = this.renderer.filterManager.popFilter();\n\n this.alphaMaskPool.push(filters);\n};\n\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.pushStencilMask = function (target, maskData)\n{\n this.renderer.stencilManager.pushMask(maskData);\n};\n\n/**\n * Removes the last filter from the filter stack and doesn't return it.\n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.popStencilMask = function (target, maskData)\n{\n this.renderer.stencilManager.popMask(maskData);\n};\n\n", "var WebGLManager = require('./WebGLManager'),\n TextureShader = require('../shaders/TextureShader'),\n ComplexPrimitiveShader = require('../shaders/ComplexPrimitiveShader'),\n PrimitiveShader = require('../shaders/PrimitiveShader'),\n utils = require('../../../utils');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGLManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction ShaderManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {number}\n */\n this.maxAttibs = 10;\n\n /**\n * @member {any[]}\n */\n this.attribState = [];\n\n /**\n * @member {any[]}\n */\n this.tempAttribState = [];\n\n for (var i = 0; i < this.maxAttibs; i++)\n {\n this.attribState[i] = false;\n }\n\n /**\n * @member {any[]}\n */\n this.stack = [];\n\n /**\n * @member {number}\n * @private\n */\n this._currentId = -1;\n\n /**\n * @member {Shader}\n * @private\n */\n this.currentShader = null;\n\n// this.initPlugins();\n}\n\nShaderManager.prototype = Object.create(WebGLManager.prototype);\nShaderManager.prototype.constructor = ShaderManager;\nutils.pluginTarget.mixin(ShaderManager);\n\nmodule.exports = ShaderManager;\n\n/**\n * Called when there is a WebGL context change.\n *\n */\nShaderManager.prototype.onContextChange = function ()\n{\n this.initPlugins();\n\n // TODO - Why are these not plugins? We can't decouple primitives unless they are....\n this.defaultShader = new TextureShader(this);\n this.primitiveShader = new PrimitiveShader(this);\n this.complexPrimitiveShader = new ComplexPrimitiveShader(this);\n};\n\n/**\n * Takes the attributes given in parameters and uploads them.\n *\n * @param attribs {Array} attribs\n */\nShaderManager.prototype.setAttribs = function (attribs)\n{\n // reset temp state\n var i;\n\n for (i = 0; i < this.tempAttribState.length; i++)\n {\n this.tempAttribState[i] = false;\n }\n\n // set the new attribs\n for (var a in attribs)\n {\n this.tempAttribState[attribs[a]] = true;\n }\n\n var gl = this.renderer.gl;\n\n for (i = 0; i < this.attribState.length; i++)\n {\n if (this.attribState[i] !== this.tempAttribState[i])\n {\n this.attribState[i] = this.tempAttribState[i];\n\n if (this.attribState[i])\n {\n gl.enableVertexAttribArray(i);\n }\n else\n {\n gl.disableVertexAttribArray(i);\n }\n }\n }\n};\n\n/**\n * Sets the current shader.\n *\n * @param shader {Shader} the shader to upload\n */\nShaderManager.prototype.setShader = function (shader)\n{\n if (this._currentId === shader.uuid)\n {\n return false;\n }\n\n this._currentId = shader.uuid;\n\n this.currentShader = shader;\n\n this.renderer.gl.useProgram(shader.program);\n this.setAttribs(shader.attributes);\n\n return true;\n};\n\n/**\n * Destroys this object.\n *\n */\nShaderManager.prototype.destroy = function ()\n{\n WebGLManager.prototype.destroy.call(this);\n\n this.destroyPlugins();\n\n this.attribState = null;\n\n this.tempAttribState = null;\n};\n", "var WebGLManager = require('./WebGLManager'),\n utils = require('../../../utils');\n\n/**\n * @class\n * @memberof PIXI\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction WebGLMaskManager(renderer)\n{\n WebGLManager.call(this, renderer);\n this.stencilMaskStack = null;\n}\n\nWebGLMaskManager.prototype = Object.create(WebGLManager.prototype);\nWebGLMaskManager.prototype.constructor = WebGLMaskManager;\nmodule.exports = WebGLMaskManager;\n\n/**\n * Changes the mask stack that is used by this manager\n * @param stencilMaskStack {StencilMaskStack} The mask stack \n *\n */\nWebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack )\n{\n this.stencilMaskStack = stencilMaskStack;\n\n var gl = this.renderer.gl;\n\n if (stencilMaskStack.stencilStack.length === 0)\n {\n gl.disable(gl.STENCIL_TEST);\n }\n else\n {\n gl.enable(gl.STENCIL_TEST);\n }\n};\n\n/**\n * Applies the Mask and adds it to the current filter stack. @alvin\n * \n * @param graphics {Graphics}\n * @param webGLData {any[]}\n */\nWebGLMaskManager.prototype.pushStencil = function (graphics, webGLData)\n{\n this.renderer.currentRenderTarget.attachStencilBuffer();\n\n var gl = this.renderer.gl,\n sms = this.stencilMaskStack;\n\n this.bindGraphics(graphics, webGLData, this.renderer);\n\n if (sms.stencilStack.length === 0)\n {\n gl.enable(gl.STENCIL_TEST);\n gl.clear(gl.STENCIL_BUFFER_BIT);\n sms.reverse = true;\n sms.count = 0;\n }\n\n sms.stencilStack.push(webGLData);\n\n var level = sms.count;\n\n gl.colorMask(false, false, false, false);\n\n gl.stencilFunc(gl.ALWAYS,0,0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT);\n\n // draw the triangle strip!\n\n if (webGLData.mode === 1)\n {\n gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 );\n\n if (sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n\n // draw a quad to increment..\n gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 );\n\n if (sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n }\n\n sms.reverse = !sms.reverse;\n }\n else\n {\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n\n gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 );\n\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n }\n }\n\n gl.colorMask(true, true, true, true);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP);\n\n sms.count++;\n};\n\n/**\n * TODO this does not belong here!\n *\n * @param graphics {Graphics}\n * @param webGLData {Array}\n */\nWebGLMaskManager.prototype.bindGraphics = function (graphics, webGLData)\n{\n //if (this._currentGraphics === graphics)return;\n this._currentGraphics = graphics;\n\n var gl = this.renderer.gl;\n\n // bind the graphics object..\n var shader;// = this.renderer.shaderManager.plugins.primitiveShader;\n\n if (webGLData.mode === 1)\n {\n shader = this.renderer.shaderManager.complexPrimitiveShader;\n\n this.renderer.shaderManager.setShader(shader);\n\n gl.uniformMatrix3fv(shader.uniforms.translationMatrix._location, false, graphics.worldTransform.toArray(true));\n\n gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true));\n\n gl.uniform3fv(shader.uniforms.tint._location, utils.hex2rgb(graphics.tint));\n\n gl.uniform3fv(shader.uniforms.color._location, webGLData.color);\n\n gl.uniform1f(shader.uniforms.alpha._location, graphics.worldAlpha);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer);\n\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 4 * 2, 0);\n\n\n // now do the rest..\n // set the index buffer!\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer);\n }\n else\n {\n //this.renderer.shaderManager.activatePrimitiveShader();\n shader = this.renderer.shaderManager.primitiveShader;\n\n this.renderer.shaderManager.setShader( shader );\n\n gl.uniformMatrix3fv(shader.uniforms.translationMatrix._location, false, graphics.worldTransform.toArray(true));\n\n gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true));\n\n gl.uniform3fv(shader.uniforms.tint._location, utils.hex2rgb(graphics.tint));\n\n gl.uniform1f(shader.uniforms.alpha._location, graphics.worldAlpha);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer);\n\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0);\n gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false,4 * 6, 2 * 4);\n\n // set the index buffer!\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer);\n }\n};\n\n/**\n * TODO @alvin\n * @param graphics {Graphics}\n * @param webGLData {Array}\n */\nWebGLMaskManager.prototype.popStencil = function (graphics, webGLData)\n{\n var gl = this.renderer.gl,\n sms = this.stencilMaskStack;\n\n sms.stencilStack.pop();\n\n sms.count--;\n\n if (sms.stencilStack.length === 0)\n {\n // the stack is empty!\n gl.disable(gl.STENCIL_TEST);\n\n }\n else\n {\n\n var level = sms.count;\n\n this.bindGraphics(graphics, webGLData, this.renderer);\n\n gl.colorMask(false, false, false, false);\n\n if (webGLData.mode === 1)\n {\n sms.reverse = !sms.reverse;\n\n if (sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n\n // draw a quad to increment..\n gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 );\n\n gl.stencilFunc(gl.ALWAYS,0,0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT);\n\n // draw the triangle strip!\n gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 );\n\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n }\n\n }\n else\n {\n // console.log(\"<<>>\")\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n\n gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 );\n\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n }\n }\n\n gl.colorMask(true, true, true, true);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP);\n\n\n }\n};\n\n/**\n * Destroys the mask stack.\n *\n */\nWebGLMaskManager.prototype.destroy = function ()\n{\n WebGLManager.prototype.destroy.call(this);\n\n this.stencilMaskStack.stencilStack = null;\n};\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param maskData {any[]} The mask data structure to use\n */\nWebGLMaskManager.prototype.pushMask = function (maskData)\n{\n\n\n this.renderer.setObjectRenderer(this.renderer.plugins.graphics);\n\n if (maskData.dirty)\n {\n this.renderer.plugins.graphics.updateGraphics(maskData, this.renderer.gl);\n }\n\n if (!maskData._webGL[this.renderer.gl.id].data.length)\n {\n return;\n }\n\n this.pushStencil(maskData, maskData._webGL[this.renderer.gl.id].data[0], this.renderer);\n};\n\n/**\n * Removes the last filter from the filter stack and doesn't return it.\n *\n * @param maskData {any[]}\n */\nWebGLMaskManager.prototype.popMask = function (maskData)\n{\n this.renderer.setObjectRenderer(this.renderer.plugins.graphics);\n\n this.popStencil(maskData, maskData._webGL[this.renderer.gl.id].data[0], this.renderer);\n};\n\n", @@ -216,9 +216,9 @@ "var core = require('../../../core');\n\n/**\n * @class\n * @extends Shader\n * @memberof PIXI.extras\n * @param shaderManager {ShaderManager} The WebGL shader manager this shader works for.\n */\nfunction StripShader(shaderManager)\n{\n core.Shader.call(this,\n shaderManager,\n // vertex shader\n [\n 'precision lowp float;',\n 'attribute vec2 aVertexPosition;',\n 'attribute vec2 aTextureCoord;',\n\n 'uniform mat3 translationMatrix;',\n 'uniform mat3 projectionMatrix;',\n\n 'varying vec2 vTextureCoord;',\n\n 'void main(void){',\n ' gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);',\n ' vTextureCoord = aTextureCoord;',\n '}'\n ].join('\\n'),\n [\n 'precision lowp float;',\n\n 'varying vec2 vTextureCoord;',\n 'uniform float alpha;',\n\n 'uniform sampler2D uSampler;',\n\n 'void main(void){',\n ' gl_FragColor = texture2D(uSampler, vTextureCoord) * alpha ;',\n '}'\n ].join('\\n'),\n // custom uniforms\n {\n alpha: { type: '1f', value: 0 },\n translationMatrix: { type: 'mat3', value: new Float32Array(9) },\n projectionMatrix: { type: 'mat3', value: new Float32Array(9) }\n },\n // custom attributes\n {\n aVertexPosition:0,\n aTextureCoord:0\n }\n );\n}\n\nStripShader.prototype = Object.create(core.Shader.prototype);\nStripShader.prototype.constructor = StripShader;\nmodule.exports = StripShader;\n\ncore.ShaderManager.registerPlugin('meshShader', StripShader);\n", "var core = require('../../core');\n\n\n// TODO (cengler) - The Y is flipped in this shader for some reason.\n\n/**\n * @author Vico @vicocotea\n * original shader : https://www.shadertoy.com/view/lssGDj by @movAX13h\n */\n\n/**\n * An ASCII filter.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction AsciiFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nuniform vec4 dimensions;\\nuniform float pixelSize;\\nuniform sampler2D uSampler;\\n\\nfloat character(float n, vec2 p)\\n{\\n p = floor(p*vec2(4.0, -4.0) + 2.5);\\n if (clamp(p.x, 0.0, 4.0) == p.x && clamp(p.y, 0.0, 4.0) == p.y)\\n {\\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\\n }\\n return 0.0;\\n}\\n\\nvoid main()\\n{\\n vec2 uv = gl_FragCoord.xy;\\n\\n vec3 col = texture2D(uSampler, floor( uv / pixelSize ) * pixelSize / dimensions.xy).rgb;\\n\\n float gray = (col.r + col.g + col.b) / 3.0;\\n\\n float n = 65536.0; // .\\n if (gray > 0.2) n = 65600.0; // :\\n if (gray > 0.3) n = 332772.0; // *\\n if (gray > 0.4) n = 15255086.0; // o\\n if (gray > 0.5) n = 23385164.0; // &\\n if (gray > 0.6) n = 15252014.0; // 8\\n if (gray > 0.7) n = 13199452.0; // @\\n if (gray > 0.8) n = 11512810.0; // #\\n\\n vec2 p = mod( uv / ( pixelSize * 0.5 ), 2.0) - vec2(1.0);\\n col = col * character(n, p);\\n\\n gl_FragColor = vec4(col, 1.0);\\n}\\n\",\n // custom uniforms\n {\n dimensions: { type: '4fv', value: new Float32Array([0, 0, 0, 0]) },\n pixelSize: { type: '1f', value: 8 }\n }\n );\n}\n\nAsciiFilter.prototype = Object.create(core.AbstractFilter.prototype);\nAsciiFilter.prototype.constructor = AsciiFilter;\nmodule.exports = AsciiFilter;\n\nObject.defineProperties(AsciiFilter.prototype, {\n /**\n * The pixel size used by the filter.\n *\n * @member {number}\n * @memberof AsciiFilter#\n */\n size: {\n get: function ()\n {\n return this.uniforms.pixelSize.value;\n },\n set: function (value)\n {\n this.uniforms.pixelSize.value = value;\n }\n }\n});\n", "var core = require('../../core'),\n BlurXFilter = require('../blur/BlurXFilter'),\n BlurYFilter = require('../blur/BlurYFilter');\n\n/**\n * The BloomFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BloomFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYFilter = new BlurYFilter();\n\n this.defaultFilter = new core.AbstractFilter();\n}\n\nBloomFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBloomFilter.prototype.constructor = BloomFilter;\nmodule.exports = BloomFilter;\n\nBloomFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n //TODO - copyTexSubImage2D could be used here?\n this.defaultFilter.applyFilter(renderer, input, output);\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n\n renderer.blendModeManager.setBlendMode(core.CONST.BLEND_MODES.SCREEN);\n\n this.blurYFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.blendModeManager.setBlendMode(core.CONST.BLEND_MODES.NORMAL);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n};\n\nObject.defineProperties(BloomFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf BloomFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf BloomFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf BloomFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYFilter.blur;\n },\n set: function (value)\n {\n this.blurYFilter.blur = value;\n }\n }\n});\n", - "var core = require('../../core'),\n BlurXFilter = require('./BlurXFilter'),\n BlurYFilter = require('./BlurYFilter');\n\n/**\n * The BlurFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYFilter = new BlurYFilter();\n}\n\nBlurFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurFilter.prototype.constructor = BlurFilter;\nmodule.exports = BlurFilter;\n\nBlurFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n this.blurYFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n\n\n};\n\nObject.defineProperties(BlurFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.padding = value * 1.5;\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n }\n },\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 1\n */\n passes: {\n get: function ()\n {\n return this.blurXFilter.passes;\n },\n set: function (value)\n {\n this.blurXFilter.passes = this.blurYFilter.passes = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYFilter.blur;\n },\n set: function (value)\n {\n this.blurYFilter.blur = value;\n }\n }\n});\n", - "var core = require('../../core');\n\n\n/**\n * The BlurXFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurXFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(-0.012 * strength, 0.0);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(-0.008 * strength, 0.0);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(-0.004 * strength, 0.0);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2( 0.004 * strength, 0.0);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2( 0.008 * strength, 0.0);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2( 0.012 * strength, 0.0);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 1\n */\n this.passes = 1;\n\n this.strength = 4;\n}\n\nBlurXFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurXFilter.prototype.constructor = BlurXFilter;\nmodule.exports = BlurXFilter;\n\nBlurXFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.width / input.size.width);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurXFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value;\n this.strength = value;\n }\n },\n});\n", - "var core = require('../../core');\n\n\n/**\n * The BlurYFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n this.passes = 1;\n this.strength = 4;\n}\n\nBlurYFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYFilter.prototype.constructor = BlurYFilter;\nmodule.exports = BlurYFilter;\n\nBlurYFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurYFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value;\n this.strength = value;\n }\n },\n});\n", + "var core = require('../../core'),\n BlurXFilter = require('./BlurXFilter'),\n BlurYFilter = require('./BlurYFilter');\n\n/**\n * The BlurFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYFilter = new BlurYFilter();\n}\n\nBlurFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurFilter.prototype.constructor = BlurFilter;\nmodule.exports = BlurFilter;\n\nBlurFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n this.blurYFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n\n\n};\n\nObject.defineProperties(BlurFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n }\n },\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 1\n */\n passes: {\n get: function ()\n {\n return this.blurXFilter.passes;\n },\n set: function (value)\n {\n this.blurXFilter.passes = this.blurYFilter.passes = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYFilter.blur;\n },\n set: function (value)\n {\n this.blurYFilter.blur = value;\n }\n }\n});\n", + "var core = require('../../core');\n\n\n/**\n * The BlurXFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurXFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(-0.012 * strength, 0.0);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(-0.008 * strength, 0.0);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(-0.004 * strength, 0.0);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2( 0.004 * strength, 0.0);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2( 0.008 * strength, 0.0);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2( 0.012 * strength, 0.0);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 1\n */\n this.passes = 1;\n\n this.strength = 4;\n}\n\nBlurXFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurXFilter.prototype.constructor = BlurXFilter;\nmodule.exports = BlurXFilter;\n\nBlurXFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.width / input.size.width);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurXFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.strength = value;\n }\n },\n});\n", + "var core = require('../../core');\n\n\n/**\n * The BlurYFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n this.passes = 1;\n this.strength = 4;\n}\n\nBlurYFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYFilter.prototype.constructor = BlurYFilter;\nmodule.exports = BlurYFilter;\n\nBlurYFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurYFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.strength = value;\n }\n },\n});\n", "var core = require('../../core');\n\n\n/**\n * A Smart Blur Filter.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction SmartBlurFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nconst vec2 delta = vec2(1.0/10.0, 0.0);\\n\\nfloat random(vec3 scale, float seed)\\n{\\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\\n}\\n\\nvoid main(void)\\n{\\n vec4 color = vec4(0.0);\\n float total = 0.0;\\n\\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\\n\\n for (float t = -30.0; t <= 30.0; t++)\\n {\\n float percent = (t + offset - 0.5) / 30.0;\\n float weight = 1.0 - abs(percent);\\n vec4 sample = texture2D(uSampler, vTextureCoord + delta * percent);\\n sample.rgb *= sample.a;\\n color += sample * weight;\\n total += weight;\\n }\\n\\n gl_FragColor = color / total;\\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\\n}\\n\"\n );\n}\n\nSmartBlurFilter.prototype = Object.create(core.AbstractFilter.prototype);\nSmartBlurFilter.prototype.constructor = SmartBlurFilter;\nmodule.exports = SmartBlurFilter;\n", "var core = require('../../core');\n\n\n/**\n * The ColorMatrixFilter class lets you apply a 5x5 matrix transformation on the RGBA\n * color and alpha values of every pixel on your displayObject to produce a result\n * with a new set of RGBA color and alpha values. It's pretty powerful!\n *\n * ```js\n * var colorMatrix = new PIXI.ColorMatrixFilter();\n * container.filters = [colorMatrix];\n * colorMatrix.contrast(2);\n * ```\n * @author Clément Chenebault \n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction ColorMatrixFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform float m[24];\\n\\nuniform vec4 d;\\n\\nvoid main(void)\\n{\\n \\n vec4 c = texture2D(uSampler, vTextureCoord);\\n\\n\\tgl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];\\n\\tgl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];\\n\\tgl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];\\n\\tgl_FragColor.a = c.a;\\n}\\n\",\n // custom uniforms\n {\n m: { type: '1fv', value: [1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1] },\n }\n );\n}\n\nColorMatrixFilter.prototype = Object.create(core.AbstractFilter.prototype);\nColorMatrixFilter.prototype.constructor = ColorMatrixFilter;\nmodule.exports = ColorMatrixFilter;\n\n\n/**\n * Transforms current matrix and set the new one\n *\n * @param matrix {array} (mat 5x5)\n * @param multiply {boolean} if true, current matrix and matrix are multiplied. If false, just set the current matrix with @param matrix\n */\nColorMatrixFilter.prototype._loadMatrix = function(matrix, multiply)\n{\n multiply = !!multiply;\n\n var newMatrix = matrix;\n\n if(multiply)\n {\n this._multiply(newMatrix, this.uniforms.m.value, matrix);\n newMatrix = this._colorMatrix(newMatrix);\n }\n\n // set the new matrix\n this.uniforms.m.value = newMatrix;\n};\n\n/**\n * Multiplies two mat5's\n *\n * @param out {array} (mat 5x5) the receiving matrix\n * @param a {array} (mat 5x5) the first operand\n * @param b {array} (mat 5x5) the second operand\n * @returns out {array} (mat 5x5)\n */\nColorMatrixFilter.prototype._multiply = function (out, a, b) {\n\n // first line\n out[0] = a[0]*b[0] + a[1]*b[5] + a[2]*b[10] + a[3]*b[15] + a[4]*b[20];\n out[1] = a[0]*b[1] + a[1]*b[6] + a[2]*b[11] + a[3]*b[16] +a[4]*b[21];\n out[2] = a[0]*b[2] + a[1]*b[7] + a[2]*b[12] + a[3]*b[17] +a[4]*b[22];\n out[3] = a[0]*b[3] + a[1]*b[8] + a[2]*b[13] + a[3]*b[18] +a[4]*b[23];\n out[4] = a[0]*b[4] + a[1]*b[9] + a[2]*b[14] + a[3]*b[19]+a[4]*b[24];\n\n // second line\n out[5] = a[5]*b[0] + a[6]*b[5] + a[7]*b[10]+ a[8]*b[15]+a[9]*b[20];\n out[6] = a[5]*b[1] + a[6]*b[6] + a[7]*b[11]+ a[8]*b[16]+a[9]*b[21];\n out[7] = a[5]*b[2] + a[6]*b[7] + a[7]*b[12]+ a[8]*b[17]+a[9]*b[22];\n out[8] = a[5]*b[3] + a[6]*b[8] + a[7]*b[13]+ a[8]*b[18]+a[9]*b[23];\n out[9] = a[5]*b[4] + a[6]*b[9] + a[7]*b[14]+ a[8]*b[19]+a[9]*b[24];\n\n // third line\n out[10] = a[10]*b[0] + a[11]*b[5] + a[12]*b[10]+ a[13]*b[15]+a[14]*b[20];\n out[11] = a[10]*b[1] + a[11]*b[6] + a[12]*b[11]+ a[13]*b[16]+a[14]*b[21];\n out[12] = a[10]*b[2] + a[11]*b[7] + a[12]*b[12]+ a[13]*b[17]+a[14]*b[22];\n out[13] = a[10]*b[3] + a[11]*b[8] + a[12]*b[13]+ a[13]*b[18]+a[14]*b[23];\n out[14] = a[10]*b[4] + a[11]*b[9] + a[12]*b[14]+ a[13]*b[19]+a[14]*b[24];\n\n // fourth line\n out[15] = a[15]*b[0] + a[16]*b[5] + a[17]*b[10]+ a[18]*b[15]+a[19]*b[20];\n out[16] = a[15]*b[1] + a[16]*b[6] + a[17]*b[11]+ a[18]*b[16]+a[19]*b[21];\n out[17] = a[15]*b[2] + a[16]*b[7] + a[17]*b[12]+ a[18]*b[17]+a[19]*b[22];\n out[18] = a[15]*b[3] + a[16]*b[8] + a[17]*b[13]+ a[18]*b[18]+a[19]*b[23];\n out[19] = a[15]*b[4] + a[16]*b[9] + a[17]*b[14]+ a[18]*b[19]+a[19]*b[24];\n\n // fifth line\n out[20] = a[20]*b[0] + a[21]*b[5] + a[22]*b[10]+ a[23]*b[15]+a[24]*b[20];\n out[21] = a[20]*b[1] + a[21]*b[6] + a[22]*b[11]+ a[23]*b[16]+a[24]*b[21];\n out[22] = a[20]*b[2] + a[21]*b[7] + a[22]*b[12]+ a[23]*b[17]+a[24]*b[22];\n out[23] = a[20]*b[3] + a[21]*b[8] + a[22]*b[13]+ a[23]*b[18]+a[24]*b[23];\n out[24] = a[20]*b[4] + a[21]*b[9] + a[22]*b[14]+ a[23]*b[19]+a[24]*b[24];\n\n return out;\n};\n\n/**\n * Create a Float32 Array and normalize the offset component to 0-1\n *\n * @param matrix {array} (mat 5x5)\n * @return m { array } (mat 5x5) with all values between 0-1\n */\nColorMatrixFilter.prototype._colorMatrix = function( matrix )\n{\n // Create a Float32 Array and normalize the offset component to 0-1\n var m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n return m;\n};\n\n/**\n * Adjusts brightness\n *\n * Multiply the current matrix\n * @param b {number} value of the brigthness (0 is black)\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.brightness = function(b, multiply)\n{\n var matrix = [\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the matrices in grey scales\n *\n * Multiply the current matrix\n * @param scale {number} value of the grey (0 is black)\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.greyscale = function(scale, multiply)\n{\n var matrix = [\n scale, scale, scale, 0, 0,\n scale, scale, scale, 0, 0,\n scale, scale, scale, 0, 0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the black and white matrice\n * Multiply the current matrix\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.blackAndWhite = function(multiply)\n{\n var matrix = [\n 0.3, 0.6, 0.1, 0, 0,\n 0.3, 0.6, 0.1, 0, 0,\n 0.3, 0.6, 0.1, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the hue propertie of the color\n *\n * Multiply the current matrix\n * @param rotation {number} in degrees\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.hue = function(rotation, multiply)\n{\n rotation = (rotation || 0)/180 * Math.PI;\n var cos = Math.cos(rotation),\n sin = Math.sin(rotation);\n\n // luminanceRed, luminanceGreen, luminanceBlue\n var lumR = 0.213, // or 0.3086\n lumG = 0.715, // or 0.6094\n lumB = 0.072; // or 0.0820\n\n var matrix = [\n lumR+cos*(1-lumR)+sin*(-lumR), lumG+cos*(-lumG)+sin*(-lumG), lumB+cos*(-lumB)+sin*(1-lumB), 0, 0,\n lumR+cos*(-lumR)+sin*(0.143), lumG+cos*(1-lumG)+sin*(0.140), lumB+cos*(-lumB)+sin*(-0.283), 0, 0,\n lumR+cos*(-lumR)+sin*(-(1-lumR)), lumG+cos*(-lumG)+sin*(lumG), lumB+cos*(1-lumB)+sin*(lumB), 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n\n/**\n * Set the contrast matrix, increase the separation between dark and bright\n * Increase contrast : shadows darker and highlights brighter\n * Decrease contrast : bring the shadows up and the highlights down\n *\n * @param amount {number} value of the contrast\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.contrast = function(amount, multiply)\n{\n var v = (amount || 0) + 1;\n var o = -128 * (v-1);\n\n var matrix = [\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the saturation matrix, increase the separation between colors\n * Increase saturation : increase contrast, brightness, and sharpness\n * @param amount {number}\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.saturation = function(amount, multiply)\n{\n var x = (amount || 0) * 2/3 + 1;\n var y = ((x-1) *-0.5);\n\n var matrix = [\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Desaturate image (remove color)\n *\n * Call the saturate function\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.desaturate = function(multiply)\n{\n this.saturation(-1);\n};\n\n/**\n * Negative image (inverse of classic rgb matrix)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.negative = function(multiply)\n{\n var matrix = [\n 0, 1, 1, 0, 0,\n 1, 0, 1, 0, 0,\n 1, 1, 0, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Sepia image\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.sepia = function(multiply)\n{\n var matrix = [\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Color motion picture process invented in 1916 (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.technicolor = function(multiply)\n{\n var matrix = [\n 1.9125277891456083,-0.8545344976951645,-0.09155508482755585,0,11.793603434377337,\n -0.3087833385928097,1.7658908555458428,-0.10601743074722245,0,-70.35205161461398,\n -0.231103377548616,-0.7501899197440212,1.847597816108189,0,30.950940869491138,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 0];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Polaroid filter\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.polaroid = function(multiply)\n{\n var matrix = [\n 1.438,-0.062,-0.062,0,0,\n -0.122,1.378,-0.122,0,0,\n -0.016,-0.016,1.483,0,0,\n 0,0,0,1,0,\n 0,0,0,0,1];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Filter who transforms : Red -> Blue and Blue -> Red\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.toBGR = function(multiply)\n{\n var matrix = [\n 0,0,1,0,0,\n 0,1,0,0,0,\n 1,0,0,0,0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Color reversal film introduced by Eastman Kodak in 1935. (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.kodachrome = function(multiply)\n{\n var matrix = [\n 1.1285582396593525,-0.3967382283601348,-0.03992559172921793,0,63.72958762196502,\n -0.16404339962244616,1.0835251566291304,-0.05498805115633132,0,24.732407896706203,\n -0.16786010706155763,-0.5603416277695248,1.6014850761964943,0,35.62982807460946,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Brown delicious browni filter (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.browni = function(multiply)\n{\n var matrix = [\n 0.5997023498159715,0.34553243048391263,-0.2708298674538042,0,47.43192855600873,\n -0.037703249837783157,0.8609577587992641,0.15059552388459913,0,-36.96841498319127,\n 0.24113635128153335,-0.07441037908422492,0.44972182064877153,0,-7.562075277591283,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * Vintage filter (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.vintage = function(multiply)\n{\n var matrix = [\n 0.6279345635605994,0.3202183420819367,-0.03965408211312453,0,9.651285835294123,\n 0.02578397704808868,0.6441188644374771,0.03259127616149294,0,7.462829176470591,\n 0.0466055556782719,-0.0851232987247891,0.5241648018700465,0,5.159190588235296,\n 0,0,0,1,0,\n 0,0,0,0,1,\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * We don't know exactly what it does, kind of gradient map, but funny to play with!\n *\n * @param desaturation {number}\n * @param toned {number}\n * @param lightColor {string} (example : \"0xFFE580\")\n * @param darkColor {string} (example : \"0xFFE580\")\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.colorTone = function(desaturation, toned, lightColor, darkColor, multiply)\n{\n desaturation = desaturation || 0.2;\n toned = toned || 0.15;\n lightColor = lightColor || 0xFFE580;\n darkColor = darkColor || 0x338000;\n\n var lR = ((lightColor >> 16) & 0xFF) / 255;\n var lG = ((lightColor >> 8) & 0xFF) / 255;\n var lB = (lightColor & 0xFF) / 255;\n\n var dR = ((darkColor >> 16) & 0xFF) / 255;\n var dG = ((darkColor >> 8) & 0xFF) / 255;\n var dB = (darkColor & 0xFF) / 255;\n\n var matrix = [\n 0.3, 0.59, 0.11, 0, 0,\n lR, lG, lB, desaturation, 0,\n dR, dG, dB, toned, 0,\n lR-dR, lG-dG, lB-dB, 0, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * Night effect\n *\n * @param intensity {number}\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.night = function(intensity, multiply)\n{\n intensity = intensity || 0.1;\n var matrix = [\n intensity * ( -2.0), -intensity, 0, 0, 0,\n -intensity, 0, intensity, 0, 0,\n 0, intensity, intensity * 2.0, 0, 0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n\n/*\n * Predator effect\n *\n * Erase the current matrix by setting a new indepent one\n *\n * @param amount {number} how much the predator feels his future victim\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.predator = function(amount, multiply)\n{\n var matrix = [\n 11.224130630493164*amount, -4.794486999511719*amount, -2.8746118545532227*amount, 0*amount, 0.40342438220977783*amount,\n -3.6330697536468506*amount, 9.193157196044922*amount, -2.951810836791992*amount, 0*amount, -1.316135048866272*amount,\n -3.2184197902679443*amount, -4.2375030517578125*amount, 7.476448059082031*amount, 0*amount, 0.8044459223747253*amount,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 0\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * LSD effect\n *\n * Multiply the current matrix\n *\n * @param amount {number} How crazy is your effect\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.lsd = function(multiply)\n{\n var matrix = [\n 2, -0.4, 0.5, 0, 0,\n -0.5, 2, -0.4, 0, 0,\n -0.4, -0.5, 3, 0, 0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * Reset function\n *\n * Erase the current matrix by setting the default one\n *\n */\nColorMatrixFilter.prototype.reset = function()\n{\n var matrix = [\n 1,0,0,0,0,\n 0,1,0,0,0,\n 0,0,1,0,0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, false);\n};\n\n\nObject.defineProperties(ColorMatrixFilter.prototype, {\n /**\n * Sets the matrix of the color matrix filter\n *\n * @member {number[]}\n * @memberof ColorMatrixFilter#\n * @default [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n */\n matrix: {\n get: function ()\n {\n return this.uniforms.matrix.value;\n },\n set: function (value)\n {\n this.uniforms.matrix.value = value;\n }\n }\n});\n", "var core = require('../../core');\n\n\n/**\n * This lowers the color depth of your image by the given amount, producing an image with a smaller palette.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction ColorStepFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform float step;\\n\\nvoid main(void)\\n{\\n vec4 color = texture2D(uSampler, vTextureCoord);\\n\\n color = floor(color * step) / step;\\n\\n gl_FragColor = color;\\n}\\n\",\n // custom uniforms\n {\n step: { type: '1f', value: 5 }\n }\n );\n}\n\nColorStepFilter.prototype = Object.create(core.AbstractFilter.prototype);\nColorStepFilter.prototype.constructor = ColorStepFilter;\nmodule.exports = ColorStepFilter;\n\nObject.defineProperties(ColorStepFilter.prototype, {\n /**\n * The number of steps to reduce the palette by.\n *\n * @member {number}\n * @memberof ColorStepFilter#\n */\n step: {\n get: function ()\n {\n return this.uniforms.step.value;\n },\n set: function (value)\n {\n this.uniforms.step.value = value;\n }\n }\n});\n", @@ -226,7 +226,7 @@ "var core = require('../../core');\n\n\n/**\n * A Cross Hatch effect filter.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction CrossHatchFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\\n\\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n if (lum < 1.00)\\n {\\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n\\n if (lum < 0.75)\\n {\\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n\\n if (lum < 0.50)\\n {\\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n\\n if (lum < 0.3)\\n {\\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n}\\n\"\n );\n}\n\nCrossHatchFilter.prototype = Object.create(core.AbstractFilter.prototype);\nCrossHatchFilter.prototype.constructor = CrossHatchFilter;\nmodule.exports = CrossHatchFilter;\n", "var core = require('../../core');\n\n\n/**\n * The DisplacementFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object.\n * You can use this filter to apply all manor of crazy warping effects\n * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y.\n *\n * @class\n * @extends AbstractFilter\n * @namespace PIXI\n * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment\n */\nfunction DisplacementFilter(sprite)\n{\n var maskMatrix = new core.math.Matrix();\n sprite.renderable = false;\n\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 otherMatrix;\\n\\nvarying vec2 vMapCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n vMapCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vMapCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform vec2 scale;\\n\\nuniform sampler2D uSampler;\\nuniform sampler2D mapSampler;\\n\\nvoid main(void)\\n{\\n vec4 original = texture2D(uSampler, vTextureCoord);\\n vec4 map = texture2D(mapSampler, vMapCoord);\\n\\n map -= 0.5;\\n map.xy *= scale;\\n\\n gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y));\\n}\\n\",\n // uniforms\n {\n mapSampler: { type: 'sampler2D', value: sprite.texture },\n otherMatrix: { type: 'mat3', value: maskMatrix.toArray(true) },\n scale: { type: 'v2', value: { x: 1, y: 1 } }\n }\n );\n\n this.maskSprite = sprite;\n this.maskMatrix = maskMatrix;\n\n\n this.scale = new core.math.Point(20,20);\n\n}\n\nDisplacementFilter.prototype = Object.create(core.AbstractFilter.prototype);\nDisplacementFilter.prototype.constructor = DisplacementFilter;\nmodule.exports = DisplacementFilter;\n\nDisplacementFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var filterManager = renderer.filterManager;\n\n filterManager.calculateMappedMatrix(input.frame, this.maskSprite, this.maskMatrix);\n\n this.uniforms.otherMatrix.value = this.maskMatrix.toArray(true);\n this.uniforms.scale.value.x = this.scale.x * (1/input.frame.width);\n this.uniforms.scale.value.y = this.scale.y * (1/input.frame.height);\n\n var shader = this.getShader(renderer);\n // draw the filter...\n filterManager.applyFilter(shader, input, output);\n};\n\n\nObject.defineProperties(DisplacementFilter.prototype, {\n /**\n * The texture used for the displacement map. Must be power of 2 sized texture.\n *\n * @member {Texture}\n * @memberof DisplacementFilter#\n */\n map: {\n get: function ()\n {\n return this.uniforms.mapSampler.value;\n },\n set: function (value)\n {\n this.uniforms.mapSampler.value = value;\n\n }\n }\n});\n", "var core = require('../../core');\n\n\n/**\n * @author Mat Groves http://matgroves.com/ @Doormat23\n * original filter: https://github.com/evanw/glfx.js/blob/master/src/filters/fun/dotscreen.js\n */\n\n/**\n * This filter applies a dotscreen effect making display objects appear to be made out of\n * black and white halftone dots like an old printer.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction DotScreenFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform vec4 dimensions;\\nuniform sampler2D uSampler;\\n\\nuniform float angle;\\nuniform float scale;\\n\\nfloat pattern()\\n{\\n float s = sin(angle), c = cos(angle);\\n vec2 tex = vTextureCoord * dimensions.xy;\\n vec2 point = vec2(\\n c * tex.x - s * tex.y,\\n s * tex.x + c * tex.y\\n ) * scale;\\n return (sin(point.x) * sin(point.y)) * 4.0;\\n}\\n\\nvoid main()\\n{\\n vec4 color = texture2D(uSampler, vTextureCoord);\\n float average = (color.r + color.g + color.b) / 3.0;\\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\\n}\\n\",\n // custom uniforms\n {\n scale: { type: '1f', value: 1 },\n angle: { type: '1f', value: 5 },\n dimensions: { type: '4fv', value: [0, 0, 0, 0] }\n }\n );\n}\n\nDotScreenFilter.prototype = Object.create(core.AbstractFilter.prototype);\nDotScreenFilter.prototype.constructor = DotScreenFilter;\nmodule.exports = DotScreenFilter;\n\nObject.defineProperties(DotScreenFilter.prototype, {\n /**\n * The scale of the effect.\n * @member {number}\n * @memberof DotScreenFilter#\n */\n scale: {\n get: function ()\n {\n return this.uniforms.scale.value;\n },\n set: function (value)\n {\n this.uniforms.scale.value = value;\n }\n },\n\n /**\n * The radius of the effect.\n * @member {number}\n * @memberof DotScreenFilter#\n */\n angle: {\n get: function ()\n {\n return this.uniforms.angle.value;\n },\n set: function (value)\n {\n this.uniforms.angle.value = value;\n }\n }\n});\n", - "var core = require('../../core'),\n blurFactor = 1 / 7000;\n\n\n/**\n * The BlurYTintFilter applies a vertical Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYTintFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform vec2 offset;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[14];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.028 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.024 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.020 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, -0.016 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 6] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 7] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 8] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 9] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n vBlurTexCoords[10] = aTextureCoord + vec2(0.0, 0.016 * strength);\\n vBlurTexCoords[11] = aTextureCoord + vec2(0.0, 0.020 * strength);\\n vBlurTexCoords[12] = aTextureCoord + vec2(0.0, 0.024 * strength);\\n vBlurTexCoords[13] = aTextureCoord + vec2(0.0, 0.028 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[14];\\nvarying vec4 vColor;\\n\\nuniform float blur;\\nuniform vec3 color;\\nuniform float alpha;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n vec4 sum = vec4(0.0);\\n\\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.0044299121055113265;\\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.00895781211794;\\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.0215963866053;\\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.0443683338718;\\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.0776744219933;\\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.115876621105;\\n sum += texture2D(uSampler, vBlurTexCoords[ 6])*0.147308056121;\\n sum += texture2D(uSampler, vTextureCoord )*0.159576912161;\\n sum += texture2D(uSampler, vBlurTexCoords[ 7])*0.147308056121;\\n sum += texture2D(uSampler, vBlurTexCoords[ 8])*0.115876621105;\\n sum += texture2D(uSampler, vBlurTexCoords[ 9])*0.0776744219933;\\n sum += texture2D(uSampler, vBlurTexCoords[10])*0.0443683338718;\\n sum += texture2D(uSampler, vBlurTexCoords[11])*0.0215963866053;\\n sum += texture2D(uSampler, vBlurTexCoords[12])*0.00895781211794;\\n sum += texture2D(uSampler, vBlurTexCoords[13])*0.0044299121055113265;\\n\\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\\n}\\n\",\n // set the uniforms\n {\n blur: { type: '1f', value: 1 / 512 },\n color: { type: 'c', value: [0,0,0]},\n alpha: { type: '1f', value: 0.7 },\n offset: { type: '2f', value:[5, 5]}\n }\n );\n}\n\nBlurYTintFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYTintFilter.prototype.constructor = BlurYTintFilter;\nmodule.exports = BlurYTintFilter;\n\nObject.defineProperties(BlurYTintFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYTintFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.uniforms.blur.value / blurFactor;\n },\n set: function (value)\n {\n this.uniforms.blur.value = blurFactor * value;\n }\n }\n});\n", + "var core = require('../../core'),\n blurFactor = 1 / 7000;\n\n\n/**\n * The BlurYTintFilter applies a vertical Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYTintFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform vec2 offset;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform vec3 color;\\nuniform float alpha;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n vec4 sum = vec4(0.0);\\n\\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n sum += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n\\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\\n}\\n\",\n // set the uniforms\n {\n blur: { type: '1f', value: 1 / 512 },\n color: { type: 'c', value: [0,0,0]},\n alpha: { type: '1f', value: 0.7 },\n offset: { type: '2f', value:[5, 5]},\n strength: { type: '1f', value:1}\n }\n );\n\n this.passes = 1;\n this.strength = 4;\n}\n\nBlurYTintFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYTintFilter.prototype.constructor = BlurYTintFilter;\nmodule.exports = BlurYTintFilter;\n\nBlurYTintFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurYTintFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.strength = value;\n }\n },\n});\n", "var core = require('../../core'),\n BlurXFilter = require('../blur/BlurXFilter'),\n BlurYTintFilter = require('./BlurYTintFilter');\n\n/**\n * The DropShadowFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction DropShadowFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYTintFilter = new BlurYTintFilter();\n\n this.defaultFilter = new core.AbstractFilter();\n\n this.padding = 30;\n\n this._dirtyPosition = true;\n this._angle = 45 * Math.PI / 180;\n this._distance = 10;\n this.alpha = 0.75;\n this.hideObject = false;\n this.blendMode = core.CONST.BLEND_MODES.MULTIPLY;\n}\n\nDropShadowFilter.prototype = Object.create(core.AbstractFilter.prototype);\nDropShadowFilter.prototype.constructor = DropShadowFilter;\nmodule.exports = DropShadowFilter;\n\nDropShadowFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n //TODO - copyTexSubImage2D could be used here?\n if(this._dirtyPosition)\n {\n this._dirtyPosition = false;\n\n this.blurYTintFilter.uniforms.offset.value[0] = Math.sin(this._angle) * this._distance;\n this.blurYTintFilter.uniforms.offset.value[1] = Math.cos(this._angle) * this._distance;\n }\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n\n renderer.blendModeManager.setBlendMode(this.blendMode);\n\n this.blurYTintFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.blendModeManager.setBlendMode(core.CONST.BLEND_MODES.NORMAL);\n\n if(!this.hideObject)\n {\n\n this.defaultFilter.applyFilter(renderer, input, output);\n }\n\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n};\n\nObject.defineProperties(DropShadowFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf DropShadowFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = this.blurYTintFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf DropShadowFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf DropShadowFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYTintFilter.blur;\n },\n set: function (value)\n {\n this.blurYTintFilter.blur = value;\n }\n },\n\n color: {\n get: function ()\n {\n return core.utils.rgb2hex( this.blurYTintFilter.uniforms.color.value );\n },\n set: function (value)\n {\n this.blurYTintFilter.uniforms.color.value = core.utils.hex2rgb(value);\n }\n },\n\n alpha: {\n get: function ()\n {\n return this.blurYTintFilter.uniforms.alpha.value;\n },\n set: function (value)\n {\n this.blurYTintFilter.uniforms.alpha.value = value;\n }\n },\n\n distance: {\n get: function ()\n {\n return this._distance;\n },\n set: function (value)\n {\n this._dirtyPosition = true;\n this._distance = value;\n }\n },\n\n angle: {\n get: function ()\n {\n return this._angle;\n },\n set: function (value)\n {\n this._dirtyPosition = true;\n this._angle = value;\n }\n }\n});\n", "var core = require('../../core');\n\n\n/**\n * This greyscales the palette of your Display Objects.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction GrayFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\nuniform float gray;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord);\\n gl_FragColor.rgb = mix(gl_FragColor.rgb, vec3(0.2126*gl_FragColor.r + 0.7152*gl_FragColor.g + 0.0722*gl_FragColor.b), gray);\\n}\\n\",\n // set the uniforms\n {\n gray: { type: '1f', value: 1 }\n }\n );\n}\n\nGrayFilter.prototype = Object.create(core.AbstractFilter.prototype);\nGrayFilter.prototype.constructor = GrayFilter;\nmodule.exports = GrayFilter;\n\nObject.defineProperties(GrayFilter.prototype, {\n /**\n * The strength of the gray. 1 will make the object black and white, 0 will make the object its normal color.\n *\n * @member {number}\n * @memberof GrayFilter#\n */\n gray: {\n get: function ()\n {\n return this.uniforms.gray.value;\n },\n set: function (value)\n {\n this.uniforms.gray.value = value;\n }\n }\n});\n", "/**\n * @file Main export of the PIXI filters library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.filters\n */\nmodule.exports = {\n // expose some internal filters...\n AbstractFilter: require('../core/renderers/webgl/filters/AbstractFilter'),\n FXAAFilter: require('../core/renderers/webgl/filters/FXAAFilter'),\n SpriteMaskFilter: require('../core/renderers/webgl/filters/SpriteMaskFilter'),\n // add the rest!\n AsciiFilter: require('./ascii/AsciiFilter'),\n BloomFilter: require('./bloom/BloomFilter'),\n BlurFilter: require('./blur/BlurFilter'),\n BlurXFilter: require('./blur/BlurXFilter'),\n BlurYFilter: require('./blur/BlurYFilter'),\n ColorMatrixFilter: require('./color/ColorMatrixFilter'),\n ColorStepFilter: require('./color/ColorStepFilter'),\n ConvolutionFilter: require('./convolution/ConvolutionFilter'),\n CrossHatchFilter: require('./crosshatch/CrossHatchFilter'),\n DisplacementFilter: require('./displacement/DisplacementFilter'),\n DotScreenFilter: require('./dot/DotScreenFilter'),\n GrayFilter: require('./gray/GrayFilter'),\n DropShadowFilter: require('./dropshadow/DropShadowFilter'),\n InvertFilter: require('./invert/InvertFilter'),\n NoiseFilter: require('./noise/NoiseFilter'),\n NormalMapFilter: require('./normal/NormalMapFilter'),\n PixelateFilter: require('./pixelate/PixelateFilter'),\n RGBSplitFilter: require('./rgb/RGBSplitFilter'),\n ShockwaveFilter: require('./shockwave/ShockwaveFilter'),\n SepiaFilter: require('./sepia/SepiaFilter'),\n SmartBlurFilter: require('./blur/SmartBlurFilter'),\n TiltShiftFilter: require('./tiltshift/TiltShiftFilter'),\n TiltShiftXFilter: require('./tiltshift/TiltShiftXFilter'),\n TiltShiftYFilter: require('./tiltshift/TiltShiftYFilter'),\n TwistFilter: require('./twist/TwistFilter')\n};\n", @@ -247,7 +247,7 @@ "/**\n * @file Main export of the PIXI interactions library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.interaction\n */\nmodule.exports = {\n InteractionData: require('./InteractionData'),\n InteractionManager: require('./InteractionManager'),\n interactiveTarget: require('./interactiveTarget')\n};\n", "var core = require('../core');\n\n\ncore.DisplayObject.prototype.interactive = false;\ncore.DisplayObject.prototype.buttonMode = false;\ncore.DisplayObject.prototype.interactiveChildren = true;\ncore.DisplayObject.prototype.defaultCursor = 'pointer';\n\n// some internal checks..\ncore.DisplayObject.prototype._over = false;\ncore.DisplayObject.prototype._touchDown = false;\n\nmodule.exports = {};\n", "var Resource = require('resource-loader').Resource,\n core = require('../core'),\n text = require('../text');\n\nmodule.exports = function ()\n{\n return function (resource, next)\n {\n if (!resource.data || navigator.isCocoonJS)\n {\n if (window.DOMParser)\n {\n var domparser = new DOMParser();\n resource.data = domparser.parseFromString(this.xhr.responseText, 'text/xml');\n }\n else\n {\n var div = document.createElement('div');\n div.innerHTML = this.xhr.responseText;\n resource.data = div;\n }\n }\n\n var name = resource.data.nodeName;\n\n // skip if no data\n if (!resource.data || !name || (name.toLowerCase() !== '#document' && name.toLowerCase() !== 'div'))\n {\n return next();\n }\n\n var textureUrl = this.baseUrl + resource.data.getElementsByTagName('page')[0].getAttribute('file');\n var loadOptions = {\n crossOrigin: resource.crossOrigin,\n loadType: Resource.LOAD_TYPE.IMAGE\n };\n\n // load the texture for the font\n this.add(resource.name + '_image', textureUrl, loadOptions, function (res)\n {\n var data = {};\n var info = resource.data.getElementsByTagName('info')[0];\n var common = resource.data.getElementsByTagName('common')[0];\n\n data.font = info.getAttribute('face');\n data.size = parseInt(info.getAttribute('size'), 10);\n data.lineHeight = parseInt(common.getAttribute('lineHeight'), 10);\n data.chars = {};\n\n //parse letters\n var letters = resource.data.getElementsByTagName('char');\n\n for (var i = 0; i < letters.length; i++)\n {\n var charCode = parseInt(letters[i].getAttribute('id'), 10);\n\n var textureRect = new core.math.Rectangle(\n parseInt(letters[i].getAttribute('x'), 10),\n parseInt(letters[i].getAttribute('y'), 10),\n parseInt(letters[i].getAttribute('width'), 10),\n parseInt(letters[i].getAttribute('height'), 10)\n );\n\n data.chars[charCode] = {\n xOffset: parseInt(letters[i].getAttribute('xoffset'), 10),\n yOffset: parseInt(letters[i].getAttribute('yoffset'), 10),\n xAdvance: parseInt(letters[i].getAttribute('xadvance'), 10),\n kerning: {},\n texture: core.utils.TextureCache[charCode] = new core.Texture(res.texture.baseTexture, textureRect)\n\n };\n }\n\n //parse kernings\n var kernings = resource.data.getElementsByTagName('kerning');\n for (i = 0; i < kernings.length; i++)\n {\n var first = parseInt(kernings[i].getAttribute('first'), 10);\n var second = parseInt(kernings[i].getAttribute('second'), 10);\n var amount = parseInt(kernings[i].getAttribute('amount'), 10);\n\n data.chars[second].kerning[first] = amount;\n\n }\n\n resource.bitmapFont = data;\n\n // I'm leaving this as a temporary fix so we can test the bitmap fonts in v3\n // but it's very likely to change\n text.BitmapText.fonts[data.font] = data;\n\n next();\n });\n };\n};\n", - "/**\n * @file Main export of the PIXI loaders library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.loaders\n */\nmodule.exports = {\n // Loader: require('resource-loader'),\n Loader: require('./loader'),\n\n // parsers\n bitmapFontParser: require('./bitmapFontParser'),\n spineAtlasParser: require('./spineAtlasParser'),\n spritesheetParser: require('./spritesheetParser'),\n textureParser: require('./textureParser')\n};\n", + "/**\n * @file Main export of the PIXI loaders library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.loaders\n */\nmodule.exports = {\n Loader: require('./loader'),\n\n // parsers\n bitmapFontParser: require('./bitmapFontParser'),\n spineAtlasParser: require('./spineAtlasParser'),\n spritesheetParser: require('./spritesheetParser'),\n textureParser: require('./textureParser')\n};\n\n\nmodule.exports.loader = new module.exports.Loader();\n", "var ResourceLoader = require('resource-loader'),\n textureParser = require('./textureParser'),\n spritesheetParser = require('./spritesheetParser'),\n spineAtlasParser = require('./spineAtlasParser'),\n bitmapFontParser = require('./bitmapFontParser');\n\n/**\n *\n * The new loader, extends Resource Loader by Chad Engler : https://github.com/englercj/resource-loader\n *\n * ```js\n * var loader = new PIXI.loader();\n *\n * loader.add('spineboy',\"data/spineboy.json\");\n *\n * loader.once('complete',onAssetsLoaded);\n *\n * loader.load();\n * ```\n *\n * @class\n * @extends ResourceLoader\n * @memberof PIXI.loaders\n */\nvar Loader = function()\n{\n ResourceLoader.call(this);\n\n // parse any json strings into objects\n this.use(ResourceLoader.middleware.parsing.json())\n\n // parse any blob into more usable objects (e.g. Image)\n .use(ResourceLoader.middleware.parsing.blob())\n\n // parse any Image objects into textures\n .use(textureParser())\n\n // parse any spritesheet data into multiple textures\n .use(spritesheetParser())\n\n // parse any spine data into a spine object\n .use(spineAtlasParser())\n\n // parse any spritesheet data into multiple textures\n .use(bitmapFontParser());\n};\n\nLoader.prototype = Object.create(ResourceLoader.prototype);\nLoader.prototype.constructor = Loader;\n\nmodule.exports = Loader;\n", "var Resource = require('resource-loader').Resource,\n async = require('async'),\n spine = require('../spine');\n\nmodule.exports = function ()\n{\n return function (resource, next)\n {\n // if this is a spritesheet object\n if (resource.data && resource.data.bones)\n {\n /**\n * use a bit of hackery to load the atlas file, here we assume that the .json, .atlas and .png files\n * that correspond to the spine file are in the same base URL and that the .json and .atlas files\n * have the same name\n */\n var atlasPath = resource.url.substr(0, resource.url.lastIndexOf('.')) + '.atlas';\n var atlasOptions = {\n crossOrigin: resource.crossOrigin,\n xhrType: Resource.XHR_RESPONSE_TYPE.TEXT\n };\n var baseUrl = resource.url.substr(0, resource.url.lastIndexOf('/') + 1);\n\n\n this.add(resource.name + '_atlas', atlasPath, atlasOptions, function (res)\n {\n // create a spine atlas using the loaded text\n var spineAtlas = new spine.SpineRuntime.Atlas(this.xhr.responseText, baseUrl, res.crossOrigin);\n\n // spine animation\n var spineJsonParser = new spine.SpineRuntime.SkeletonJsonParser(new spine.SpineRuntime.AtlasAttachmentParser(spineAtlas));\n var skeletonData = spineJsonParser.readSkeletonData(resource.data);\n\n resource.spineData = skeletonData;\n resource.spineAtlas = spineAtlas;\n\n // Go through each spineAtlas.pages and wait for page.rendererObject (a baseTexture) to\n // load. Once all loaded, then call the next function.\n async.each(spineAtlas.pages, function (page, done)\n {\n if (page.rendererObject.hasLoaded)\n {\n done();\n }\n else\n {\n page.rendererObject.once('loaded', done);\n }\n }, next);\n });\n }\n else {\n next();\n }\n };\n};\n", "var Resource = require('resource-loader').Resource,\n path = require('path'),\n core = require('../core');\n\nmodule.exports = function ()\n{\n return function (resource, next)\n {\n // if this is a spritesheet object\n if (resource.data && resource.data.frames)\n {\n var loadOptions = {\n crossOrigin: resource.crossOrigin,\n loadType: Resource.LOAD_TYPE.IMAGE\n };\n\n var route = path.dirname(resource.url.replace(this.baseUrl, ''));\n\n var resolution = core.utils.getResolutionOfUrl( resource.url );\n\n // load the image for this sheet\n this.add(resource.name + '_image', this.baseUrl + route + '/' + resource.data.meta.image, loadOptions, function (res)\n {\n resource.textures = {};\n\n var frames = resource.data.frames;\n\n for (var i in frames)\n {\n var rect = frames[i].frame;\n\n if (rect)\n {\n var size = null;\n var trim = null;\n\n if (frames[i].rotated) {\n size = new core.math.Rectangle(rect.x, rect.y, rect.h, rect.w);\n }\n else {\n size = new core.math.Rectangle(rect.x, rect.y, rect.w, rect.h);\n }\n\n // Check to see if the sprite is trimmed\n if (frames[i].trimmed)\n {\n trim = new core.math.Rectangle(\n frames[i].spriteSourceSize.x / resolution,\n frames[i].spriteSourceSize.y / resolution,\n frames[i].sourceSize.w / resolution,\n frames[i].sourceSize.h / resolution\n );\n }\n\n // flip the width and height!\n if (frames[i].rotated)\n {\n var temp = size.width;\n size.width = size.height;\n size.height = temp;\n }\n\n size.x /= resolution;\n size.y /= resolution;\n size.width /= resolution;\n size.height /= resolution;\n\n resource.textures[i] = new core.Texture(res.texture.baseTexture, size, size.clone(), trim, frames[i].rotated);\n\n // lets also add the frame to pixi's global cache for fromFrame and fromImage fucntions\n core.utils.TextureCache[i] = resource.textures[i];\n }\n }\n\n next();\n });\n }\n else {\n next();\n }\n };\n};\n", @@ -256,7 +256,7 @@ "/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.1\n *\n * Copyright (c) 2013, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable and\n * non-transferable license to install, execute and perform the Spine Runtimes\n * Software (the \"Software\") solely for internal use. Without the written\n * permission of Esoteric Software (typically granted by licensing Spine), you\n * may not (a) modify, translate, adapt or otherwise create derivative works,\n * improvements of the Software or develop new applications using the Software\n * or (b) remove, delete, alter or obscure any trademarks or any copyright,\n * trademark, patent or other intellectual property or proprietary rights\n * notices on or in the Software, including any copy thereof. Redistributions\n * in binary or source form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar core = require('../core');\n\n\nvar spine = module.exports = {\n\tradDeg: 180 / Math.PI,\n\tdegRad: Math.PI / 180,\n\ttemp: [],\n Float32Array: (typeof(Float32Array) === 'undefined') ? Array : Float32Array,\n Uint16Array: (typeof(Uint16Array) === 'undefined') ? Array : Uint16Array\n};\n\nspine.BoneData = function (name, parent)\n{\n\tthis.name = name;\n\tthis.parent = parent;\n};\nspine.BoneData.prototype = {\n\tlength: 0,\n\tx: 0, y: 0,\n\trotation: 0,\n\tscaleX: 1, scaleY: 1,\n\tinheritScale: true,\n\tinheritRotation: true,\n\tflipX: false, flipY: false\n};\n\nspine.SlotData = function (name, boneData)\n{\n\tthis.name = name;\n\tthis.boneData = boneData;\n};\nspine.SlotData.prototype = {\n\tr: 1, g: 1, b: 1, a: 1,\n\tattachmentName: null,\n\tadditiveBlending: false\n};\n\nspine.IkConstraintData = function (name)\n{\n\tthis.name = name;\n\tthis.bones = [];\n};\nspine.IkConstraintData.prototype = {\n\ttarget: null,\n\tbendDirection: 1,\n\tmix: 1\n};\n\nspine.Bone = function (boneData, skeleton, parent)\n{\n\tthis.data = boneData;\n\tthis.skeleton = skeleton;\n\tthis.parent = parent;\n\tthis.setToSetupPose();\n};\nspine.Bone.yDown = false;\nspine.Bone.prototype = {\n\tx: 0, y: 0,\n\trotation: 0, rotationIK: 0,\n\tscaleX: 1, scaleY: 1,\n\tflipX: false, flipY: false,\n\tm00: 0, m01: 0, worldX: 0, // a b x\n\tm10: 0, m11: 0, worldY: 0, // c d y\n\tworldRotation: 0,\n\tworldScaleX: 1, worldScaleY: 1,\n\tworldFlipX: false, worldFlipY: false,\n updateWorldTransform: function ()\n {\n\t\tvar parent = this.parent;\n if (parent)\n {\n\t\t\tthis.worldX = this.x * parent.m00 + this.y * parent.m01 + parent.worldX;\n\t\t\tthis.worldY = this.x * parent.m10 + this.y * parent.m11 + parent.worldY;\n if (this.data.inheritScale)\n {\n\t\t\t\tthis.worldScaleX = parent.worldScaleX * this.scaleX;\n\t\t\t\tthis.worldScaleY = parent.worldScaleY * this.scaleY;\n\t\t\t} else {\n\t\t\t\tthis.worldScaleX = this.scaleX;\n\t\t\t\tthis.worldScaleY = this.scaleY;\n\t\t\t}\n\t\t\tthis.worldRotation = this.data.inheritRotation ? (parent.worldRotation + this.rotationIK) : this.rotationIK;\n\t\t\tthis.worldFlipX = parent.worldFlipX != this.flipX;\n\t\t\tthis.worldFlipY = parent.worldFlipY != this.flipY;\n\t\t} else {\n\t\t\tvar skeletonFlipX = this.skeleton.flipX, skeletonFlipY = this.skeleton.flipY;\n\t\t\tthis.worldX = skeletonFlipX ? -this.x : this.x;\n\t\t\tthis.worldY = (skeletonFlipY != spine.Bone.yDown) ? -this.y : this.y;\n\t\t\tthis.worldScaleX = this.scaleX;\n\t\t\tthis.worldScaleY = this.scaleY;\n\t\t\tthis.worldRotation = this.rotationIK;\n\t\t\tthis.worldFlipX = skeletonFlipX != this.flipX;\n\t\t\tthis.worldFlipY = skeletonFlipY != this.flipY;\n\t\t}\n\t\tvar radians = this.worldRotation * spine.degRad;\n\t\tvar cos = Math.cos(radians);\n\t\tvar sin = Math.sin(radians);\n if (this.worldFlipX)\n {\n\t\t\tthis.m00 = -cos * this.worldScaleX;\n\t\t\tthis.m01 = sin * this.worldScaleY;\n\t\t} else {\n\t\t\tthis.m00 = cos * this.worldScaleX;\n\t\t\tthis.m01 = -sin * this.worldScaleY;\n\t\t}\n if (this.worldFlipY != spine.Bone.yDown)\n {\n\t\t\tthis.m10 = -sin * this.worldScaleX;\n\t\t\tthis.m11 = -cos * this.worldScaleY;\n\t\t} else {\n\t\t\tthis.m10 = sin * this.worldScaleX;\n\t\t\tthis.m11 = cos * this.worldScaleY;\n\t\t}\n\t},\n setToSetupPose: function ()\n {\n\t\tvar data = this.data;\n\t\tthis.x = data.x;\n\t\tthis.y = data.y;\n\t\tthis.rotation = data.rotation;\n\t\tthis.rotationIK = this.rotation;\n\t\tthis.scaleX = data.scaleX;\n\t\tthis.scaleY = data.scaleY;\n\t\tthis.flipX = data.flipX;\n\t\tthis.flipY = data.flipY;\n\t},\n worldToLocal: function (world)\n {\n\t\tvar dx = world[0] - this.worldX, dy = world[1] - this.worldY;\n\t\tvar m00 = this.m00, m10 = this.m10, m01 = this.m01, m11 = this.m11;\n if (this.worldFlipX != (this.worldFlipY != spine.Bone.yDown))\n {\n\t\t\tm00 = -m00;\n\t\t\tm11 = -m11;\n\t\t}\n\t\tvar invDet = 1 / (m00 * m11 - m01 * m10);\n\t\tworld[0] = dx * m00 * invDet - dy * m01 * invDet;\n\t\tworld[1] = dy * m11 * invDet - dx * m10 * invDet;\n\t},\n localToWorld: function (local)\n {\n\t\tvar localX = local[0], localY = local[1];\n\t\tlocal[0] = localX * this.m00 + localY * this.m01 + this.worldX;\n\t\tlocal[1] = localX * this.m10 + localY * this.m11 + this.worldY;\n\t}\n};\n\nspine.Slot = function (slotData, bone)\n{\n\tthis.data = slotData;\n\tthis.bone = bone;\n\tthis.setToSetupPose();\n};\nspine.Slot.prototype = {\n\tr: 1, g: 1, b: 1, a: 1,\n\t_attachmentTime: 0,\n\tattachment: null,\n\tattachmentVertices: [],\n setAttachment: function (attachment)\n {\n\t\tthis.attachment = attachment;\n\t\tthis._attachmentTime = this.bone.skeleton.time;\n\t\tthis.attachmentVertices.length = 0;\n\t},\n setAttachmentTime: function (time)\n {\n\t\tthis._attachmentTime = this.bone.skeleton.time - time;\n\t},\n getAttachmentTime: function ()\n {\n\t\treturn this.bone.skeleton.time - this._attachmentTime;\n\t},\n setToSetupPose: function ()\n {\n\t\tvar data = this.data;\n\t\tthis.r = data.r;\n\t\tthis.g = data.g;\n\t\tthis.b = data.b;\n\t\tthis.a = data.a;\n\n\t\tvar slotDatas = this.bone.skeleton.data.slots;\n for (var i = 0, n = slotDatas.length; i < n; i++)\n {\n if (slotDatas[i] == data)\n {\n\t\t\t\tthis.setAttachment(!data.attachmentName ? null : this.bone.skeleton.getAttachmentBySlotIndex(i, data.attachmentName));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.IkConstraint = function (data, skeleton)\n{\n\tthis.data = data;\n\tthis.mix = data.mix;\n\tthis.bendDirection = data.bendDirection;\n\n\tthis.bones = [];\n\tfor (var i = 0, n = data.bones.length; i < n; i++)\n\t\tthis.bones.push(skeleton.findBone(data.bones[i].name));\n\tthis.target = skeleton.findBone(data.target.name);\n};\nspine.IkConstraint.prototype = {\n apply: function ()\n {\n\t\tvar target = this.target;\n\t\tvar bones = this.bones;\n switch (bones.length)\n {\n\t\tcase 1:\n\t\t\tspine.IkConstraint.apply1(bones[0], target.worldX, target.worldY, this.mix);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tspine.IkConstraint.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix);\n\t\t\tbreak;\n\t\t}\n\t}\n};\n/** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world\n * coordinate system. */\nspine.IkConstraint.apply1 = function (bone, targetX, targetY, alpha)\n{\n\tvar parentRotation = (!bone.data.inheritRotation || !bone.parent) ? 0 : bone.parent.worldRotation;\n\tvar rotation = bone.rotation;\n\tvar rotationIK = Math.atan2(targetY - bone.worldY, targetX - bone.worldX) * spine.radDeg - parentRotation;\n\tbone.rotationIK = rotation + (rotationIK - rotation) * alpha;\n};\n/** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The\n * target is specified in the world coordinate system.\n * @param child Any descendant bone of the parent. */\nspine.IkConstraint.apply2 = function (parent, child, targetX, targetY, bendDirection, alpha)\n{\n\tvar childRotation = child.rotation, parentRotation = parent.rotation;\n if (!alpha)\n {\n\t\tchild.rotationIK = childRotation;\n\t\tparent.rotationIK = parentRotation;\n\t\treturn;\n\t}\n\tvar positionX, positionY, tempPosition = spine.temp;\n\tvar parentParent = parent.parent;\n if (parentParent)\n {\n\t\ttempPosition[0] = targetX;\n\t\ttempPosition[1] = targetY;\n\t\tparentParent.worldToLocal(tempPosition);\n\t\ttargetX = (tempPosition[0] - parent.x) * parentParent.worldScaleX;\n\t\ttargetY = (tempPosition[1] - parent.y) * parentParent.worldScaleY;\n\t} else {\n\t\ttargetX -= parent.x;\n\t\ttargetY -= parent.y;\n\t}\n if (child.parent == parent)\n {\n\t\tpositionX = child.x;\n\t\tpositionY = child.y;\n\t} else {\n\t\ttempPosition[0] = child.x;\n\t\ttempPosition[1] = child.y;\n\t\tchild.parent.localToWorld(tempPosition);\n\t\tparent.worldToLocal(tempPosition);\n\t\tpositionX = tempPosition[0];\n\t\tpositionY = tempPosition[1];\n\t}\n\tvar childX = positionX * parent.worldScaleX, childY = positionY * parent.worldScaleY;\n\tvar offset = Math.atan2(childY, childX);\n\tvar len1 = Math.sqrt(childX * childX + childY * childY), len2 = child.data.length * child.worldScaleX;\n\t// Based on code by Ryan Juckett with permission: Copyright (c) 2008-2009 Ryan Juckett, http://www.ryanjuckett.com/\n\tvar cosDenom = 2 * len1 * len2;\n if (cosDenom < 0.0001)\n {\n\t\tchild.rotationIK = childRotation + (Math.atan2(targetY, targetX) * spine.radDeg - parentRotation - childRotation) * alpha;\n\t\treturn;\n\t}\n\tvar cos = (targetX * targetX + targetY * targetY - len1 * len1 - len2 * len2) / cosDenom;\n\tif (cos < -1)\n\t\tcos = -1;\n\telse if (cos > 1)\n\t\tcos = 1;\n\tvar childAngle = Math.acos(cos) * bendDirection;\n\tvar adjacent = len1 + len2 * cos, opposite = len2 * Math.sin(childAngle);\n\tvar parentAngle = Math.atan2(targetY * adjacent - targetX * opposite, targetX * adjacent + targetY * opposite);\n\tvar rotation = (parentAngle - offset) * spine.radDeg - parentRotation;\n\tif (rotation > 180)\n\t\trotation -= 360;\n\telse if (rotation < -180) //\n\t\trotation += 360;\n\tparent.rotationIK = parentRotation + rotation * alpha;\n\trotation = (childAngle + offset) * spine.radDeg - childRotation;\n\tif (rotation > 180)\n\t\trotation -= 360;\n\telse if (rotation < -180) //\n\t\trotation += 360;\n\tchild.rotationIK = childRotation + (rotation + parent.worldRotation - child.parent.worldRotation) * alpha;\n};\n\nspine.Skin = function (name)\n{\n\tthis.name = name;\n\tthis.attachments = {};\n};\nspine.Skin.prototype = {\n addAttachment: function (slotIndex, name, attachment)\n {\n\t\tthis.attachments[slotIndex + \":\" + name] = attachment;\n\t},\n getAttachment: function (slotIndex, name)\n {\n\t\treturn this.attachments[slotIndex + \":\" + name];\n\t},\n _attachAll: function (skeleton, oldSkin)\n {\n for (var key in oldSkin.attachments)\n {\n\t\t\tvar colon = key.indexOf(\":\");\n\t\t\tvar slotIndex = parseInt(key.substring(0, colon));\n\t\t\tvar name = key.substring(colon + 1);\n\t\t\tvar slot = skeleton.slots[slotIndex];\n if (slot.attachment && slot.attachment.name == name)\n {\n\t\t\t\tvar attachment = this.getAttachment(slotIndex, name);\n\t\t\t\tif (attachment) slot.setAttachment(attachment);\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.Animation = function (name, timelines, duration)\n{\n\tthis.name = name;\n\tthis.timelines = timelines;\n\tthis.duration = duration;\n};\nspine.Animation.prototype = {\n apply: function (skeleton, lastTime, time, loop, events)\n {\n if (loop && this.duration != 0)\n {\n\t\t\ttime %= this.duration;\n\t\t\tlastTime %= this.duration;\n\t\t}\n\t\tvar timelines = this.timelines;\n\t\tfor (var i = 0, n = timelines.length; i < n; i++)\n\t\t\ttimelines[i].apply(skeleton, lastTime, time, events, 1);\n\t},\n mix: function (skeleton, lastTime, time, loop, events, alpha)\n {\n if (loop && this.duration != 0)\n {\n\t\t\ttime %= this.duration;\n\t\t\tlastTime %= this.duration;\n\t\t}\n\t\tvar timelines = this.timelines;\n\t\tfor (var i = 0, n = timelines.length; i < n; i++)\n\t\t\ttimelines[i].apply(skeleton, lastTime, time, events, alpha);\n\t}\n};\nspine.Animation.binarySearch = function (values, target, step)\n{\n\tvar low = 0;\n\tvar high = Math.floor(values.length / step) - 2;\n\tif (!high) return step;\n\tvar current = high >>> 1;\n while (true)\n {\n\t\tif (values[(current + 1) * step] <= target)\n\t\t\tlow = current + 1;\n\t\telse\n\t\t\thigh = current;\n\t\tif (low == high) return (low + 1) * step;\n\t\tcurrent = (low + high) >>> 1;\n\t}\n};\nspine.Animation.binarySearch1 = function (values, target)\n{\n\tvar low = 0;\n\tvar high = values.length - 2;\n\tif (!high) return 1;\n\tvar current = high >>> 1;\n while (true)\n {\n\t\tif (values[current + 1] <= target)\n\t\t\tlow = current + 1;\n\t\telse\n\t\t\thigh = current;\n\t\tif (low == high) return low + 1;\n\t\tcurrent = (low + high) >>> 1;\n\t}\n};\nspine.Animation.linearSearch = function (values, target, step)\n{\n\tfor (var i = 0, last = values.length - step; i <= last; i += step)\n\t\tif (values[i] > target) return i;\n\treturn -1;\n};\n\nspine.Curves = function (frameCount)\n{\n\tthis.curves = []; // type, x, y, ...\n\t//this.curves.length = (frameCount - 1) * 19/*BEZIER_SIZE*/;\n};\nspine.Curves.prototype = {\n setLinear: function (frameIndex)\n {\n\t\tthis.curves[frameIndex * 19/*BEZIER_SIZE*/] = 0/*LINEAR*/;\n\t},\n setStepped: function (frameIndex)\n {\n\t\tthis.curves[frameIndex * 19/*BEZIER_SIZE*/] = 1/*STEPPED*/;\n\t},\n\t/** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next.\n\t * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of\n\t * the difference between the keyframe's values. */\n setCurve: function (frameIndex, cx1, cy1, cx2, cy2)\n {\n\t\tvar subdiv1 = 1 / 10/*BEZIER_SEGMENTS*/, subdiv2 = subdiv1 * subdiv1, subdiv3 = subdiv2 * subdiv1;\n\t\tvar pre1 = 3 * subdiv1, pre2 = 3 * subdiv2, pre4 = 6 * subdiv2, pre5 = 6 * subdiv3;\n\t\tvar tmp1x = -cx1 * 2 + cx2, tmp1y = -cy1 * 2 + cy2, tmp2x = (cx1 - cx2) * 3 + 1, tmp2y = (cy1 - cy2) * 3 + 1;\n\t\tvar dfx = cx1 * pre1 + tmp1x * pre2 + tmp2x * subdiv3, dfy = cy1 * pre1 + tmp1y * pre2 + tmp2y * subdiv3;\n\t\tvar ddfx = tmp1x * pre4 + tmp2x * pre5, ddfy = tmp1y * pre4 + tmp2y * pre5;\n\t\tvar dddfx = tmp2x * pre5, dddfy = tmp2y * pre5;\n\n\t\tvar i = frameIndex * 19/*BEZIER_SIZE*/;\n\t\tvar curves = this.curves;\n\t\tcurves[i++] = 2/*BEZIER*/;\n\n\t\tvar x = dfx, y = dfy;\n for (var n = i + 19/*BEZIER_SIZE*/ - 1; i < n; i += 2)\n {\n\t\t\tcurves[i] = x;\n\t\t\tcurves[i + 1] = y;\n\t\t\tdfx += ddfx;\n\t\t\tdfy += ddfy;\n\t\t\tddfx += dddfx;\n\t\t\tddfy += dddfy;\n\t\t\tx += dfx;\n\t\t\ty += dfy;\n\t\t}\n\t},\n getCurvePercent: function (frameIndex, percent)\n {\n\t\tpercent = percent < 0 ? 0 : (percent > 1 ? 1 : percent);\n\t\tvar curves = this.curves;\n\t\tvar i = frameIndex * 19/*BEZIER_SIZE*/;\n\t\tvar type = curves[i];\n\t\tif (type === 0/*LINEAR*/) return percent;\n\t\tif (type == 1/*STEPPED*/) return 0;\n\t\ti++;\n\t\tvar x = 0;\n for (var start = i, n = i + 19/*BEZIER_SIZE*/ - 1; i < n; i += 2)\n {\n\t\t\tx = curves[i];\n if (x >= percent)\n {\n\t\t\t\tvar prevX, prevY;\n if (i == start)\n {\n\t\t\t\t\tprevX = 0;\n\t\t\t\t\tprevY = 0;\n\t\t\t\t} else {\n\t\t\t\t\tprevX = curves[i - 2];\n\t\t\t\t\tprevY = curves[i - 1];\n\t\t\t\t}\n\t\t\t\treturn prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX);\n\t\t\t}\n\t\t}\n\t\tvar y = curves[i - 1];\n\t\treturn y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1.\n\t}\n};\n\nspine.RotateTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, angle, ...\n\tthis.frames.length = frameCount * 2;\n};\nspine.RotateTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 2;\n\t},\n setFrame: function (frameIndex, time, angle)\n {\n\t\tframeIndex *= 2;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = angle;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar bone = skeleton.bones[this.boneIndex];\n\n if (time >= frames[frames.length - 2])\n { // Time is after last frame.\n\t\t\tvar amount = bone.data.rotation + frames[frames.length - 1] - bone.rotation;\n\t\t\twhile (amount > 180)\n\t\t\t\tamount -= 360;\n\t\t\twhile (amount < -180)\n\t\t\t\tamount += 360;\n\t\t\tbone.rotation += amount * alpha;\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 2);\n\t\tvar prevFrameValue = frames[frameIndex - 1];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex - 2/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 2 - 1, percent);\n\n\t\tvar amount = frames[frameIndex + 1/*FRAME_VALUE*/] - prevFrameValue;\n\t\twhile (amount > 180)\n\t\t\tamount -= 360;\n\t\twhile (amount < -180)\n\t\t\tamount += 360;\n\t\tamount = bone.data.rotation + (prevFrameValue + amount * percent) - bone.rotation;\n\t\twhile (amount > 180)\n\t\t\tamount -= 360;\n\t\twhile (amount < -180)\n\t\t\tamount += 360;\n\t\tbone.rotation += amount * alpha;\n\t}\n};\n\nspine.TranslateTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, x, y, ...\n\tthis.frames.length = frameCount * 3;\n};\nspine.TranslateTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 3;\n\t},\n setFrame: function (frameIndex, time, x, y)\n {\n\t\tframeIndex *= 3;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = x;\n\t\tthis.frames[frameIndex + 2] = y;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar bone = skeleton.bones[this.boneIndex];\n\n if (time >= frames[frames.length - 3])\n { // Time is after last frame.\n\t\t\tbone.x += (bone.data.x + frames[frames.length - 2] - bone.x) * alpha;\n\t\t\tbone.y += (bone.data.y + frames[frames.length - 1] - bone.y) * alpha;\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 3);\n\t\tvar prevFrameX = frames[frameIndex - 2];\n\t\tvar prevFrameY = frames[frameIndex - 1];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex + -3/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 3 - 1, percent);\n\n\t\tbone.x += (bone.data.x + prevFrameX + (frames[frameIndex + 1/*FRAME_X*/] - prevFrameX) * percent - bone.x) * alpha;\n\t\tbone.y += (bone.data.y + prevFrameY + (frames[frameIndex + 2/*FRAME_Y*/] - prevFrameY) * percent - bone.y) * alpha;\n\t}\n};\n\nspine.ScaleTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, x, y, ...\n\tthis.frames.length = frameCount * 3;\n};\nspine.ScaleTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 3;\n\t},\n setFrame: function (frameIndex, time, x, y)\n {\n\t\tframeIndex *= 3;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = x;\n\t\tthis.frames[frameIndex + 2] = y;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar bone = skeleton.bones[this.boneIndex];\n\n if (time >= frames[frames.length - 3])\n { // Time is after last frame.\n\t\t\tbone.scaleX += (bone.data.scaleX * frames[frames.length - 2] - bone.scaleX) * alpha;\n\t\t\tbone.scaleY += (bone.data.scaleY * frames[frames.length - 1] - bone.scaleY) * alpha;\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 3);\n\t\tvar prevFrameX = frames[frameIndex - 2];\n\t\tvar prevFrameY = frames[frameIndex - 1];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex + -3/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 3 - 1, percent);\n\n\t\tbone.scaleX += (bone.data.scaleX * (prevFrameX + (frames[frameIndex + 1/*FRAME_X*/] - prevFrameX) * percent) - bone.scaleX) * alpha;\n\t\tbone.scaleY += (bone.data.scaleY * (prevFrameY + (frames[frameIndex + 2/*FRAME_Y*/] - prevFrameY) * percent) - bone.scaleY) * alpha;\n\t}\n};\n\nspine.ColorTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, r, g, b, a, ...\n\tthis.frames.length = frameCount * 5;\n};\nspine.ColorTimeline.prototype = {\n\tslotIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 5;\n\t},\n setFrame: function (frameIndex, time, r, g, b, a)\n {\n\t\tframeIndex *= 5;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = r;\n\t\tthis.frames[frameIndex + 2] = g;\n\t\tthis.frames[frameIndex + 3] = b;\n\t\tthis.frames[frameIndex + 4] = a;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar r, g, b, a;\n if (time >= frames[frames.length - 5])\n {\n\t\t\t// Time is after last frame.\n\t\t\tvar i = frames.length - 1;\n\t\t\tr = frames[i - 3];\n\t\t\tg = frames[i - 2];\n\t\t\tb = frames[i - 1];\n\t\t\ta = frames[i];\n\t\t} else {\n\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 5);\n\t\t\tvar prevFrameR = frames[frameIndex - 4];\n\t\t\tvar prevFrameG = frames[frameIndex - 3];\n\t\t\tvar prevFrameB = frames[frameIndex - 2];\n\t\t\tvar prevFrameA = frames[frameIndex - 1];\n\t\t\tvar frameTime = frames[frameIndex];\n\t\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex - 5/*PREV_FRAME_TIME*/] - frameTime);\n\t\t\tpercent = this.curves.getCurvePercent(frameIndex / 5 - 1, percent);\n\n\t\t\tr = prevFrameR + (frames[frameIndex + 1/*FRAME_R*/] - prevFrameR) * percent;\n\t\t\tg = prevFrameG + (frames[frameIndex + 2/*FRAME_G*/] - prevFrameG) * percent;\n\t\t\tb = prevFrameB + (frames[frameIndex + 3/*FRAME_B*/] - prevFrameB) * percent;\n\t\t\ta = prevFrameA + (frames[frameIndex + 4/*FRAME_A*/] - prevFrameA) * percent;\n\t\t}\n\t\tvar slot = skeleton.slots[this.slotIndex];\n if (alpha < 1)\n {\n\t\t\tslot.r += (r - slot.r) * alpha;\n\t\t\tslot.g += (g - slot.g) * alpha;\n\t\t\tslot.b += (b - slot.b) * alpha;\n\t\t\tslot.a += (a - slot.a) * alpha;\n\t\t} else {\n\t\t\tslot.r = r;\n\t\t\tslot.g = g;\n\t\t\tslot.b = b;\n\t\t\tslot.a = a;\n\t\t}\n\t}\n};\n\nspine.AttachmentTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, ...\n\tthis.frames.length = frameCount;\n\tthis.attachmentNames = [];\n\tthis.attachmentNames.length = frameCount;\n};\nspine.AttachmentTimeline.prototype = {\n\tslotIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, attachmentName)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.attachmentNames[frameIndex] = attachmentName;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n if (time < frames[0])\n {\n\t\t\tif (lastTime > time) this.apply(skeleton, lastTime, Number.MAX_VALUE, null, 0);\n\t\t\treturn;\n\t\t} else if (lastTime > time) //\n\t\t\tlastTime = -1;\n\n\t\tvar frameIndex = time >= frames[frames.length - 1] ? frames.length - 1 : spine.Animation.binarySearch1(frames, time) - 1;\n\t\tif (frames[frameIndex] < lastTime) return;\n\n\t\tvar attachmentName = this.attachmentNames[frameIndex];\n\t\tskeleton.slots[this.slotIndex].setAttachment(\n\t\t\t!attachmentName ? null : skeleton.getAttachmentBySlotIndex(this.slotIndex, attachmentName));\n\t}\n};\n\nspine.EventTimeline = function (frameCount)\n{\n\tthis.frames = []; // time, ...\n\tthis.frames.length = frameCount;\n\tthis.events = [];\n\tthis.events.length = frameCount;\n};\nspine.EventTimeline.prototype = {\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, event)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.events[frameIndex] = event;\n\t},\n\t/** Fires events for frames > lastTime and <= time. */\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tif (!firedEvents) return;\n\n\t\tvar frames = this.frames;\n\t\tvar frameCount = frames.length;\n\n if (lastTime > time)\n { // Fire events after last time for looped animations.\n\t\t\tthis.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha);\n\t\t\tlastTime = -1;\n\t\t} else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\n\t\t\treturn;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar frameIndex;\n\t\tif (lastTime < frames[0])\n\t\t\tframeIndex = 0;\n else\n {\n\t\t\tframeIndex = spine.Animation.binarySearch1(frames, lastTime);\n\t\t\tvar frame = frames[frameIndex];\n while (frameIndex > 0)\n { // Fire multiple events with the same frame.\n\t\t\t\tif (frames[frameIndex - 1] != frame) break;\n\t\t\t\tframeIndex--;\n\t\t\t}\n\t\t}\n\t\tvar events = this.events;\n\t\tfor (; frameIndex < frameCount && time >= frames[frameIndex]; frameIndex++)\n\t\t\tfiredEvents.push(events[frameIndex]);\n\t}\n};\n\nspine.DrawOrderTimeline = function (frameCount)\n{\n\tthis.frames = []; // time, ...\n\tthis.frames.length = frameCount;\n\tthis.drawOrders = [];\n\tthis.drawOrders.length = frameCount;\n};\nspine.DrawOrderTimeline.prototype = {\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, drawOrder)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.drawOrders[frameIndex] = drawOrder;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar frameIndex;\n\t\tif (time >= frames[frames.length - 1]) // Time is after last frame.\n\t\t\tframeIndex = frames.length - 1;\n\t\telse\n\t\t\tframeIndex = spine.Animation.binarySearch1(frames, time) - 1;\n\n\t\tvar drawOrder = skeleton.drawOrder;\n\t\tvar slots = skeleton.slots;\n\t\tvar drawOrderToSetupIndex = this.drawOrders[frameIndex];\n if (!drawOrderToSetupIndex)\n {\n\t\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\t\tdrawOrder[i] = slots[i];\n\t\t} else {\n\t\t\tfor (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n\t\t\t\tdrawOrder[i] = skeleton.slots[drawOrderToSetupIndex[i]];\n\t\t}\n\n\t}\n};\n\nspine.FfdTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = [];\n\tthis.frames.length = frameCount;\n\tthis.frameVertices = [];\n\tthis.frameVertices.length = frameCount;\n};\nspine.FfdTimeline.prototype = {\n\tslotIndex: 0,\n\tattachment: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, vertices)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frameVertices[frameIndex] = vertices;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar slot = skeleton.slots[this.slotIndex];\n\t\tif (slot.attachment != this.attachment) return;\n\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar frameVertices = this.frameVertices;\n\t\tvar vertexCount = frameVertices[0].length;\n\n\t\tvar vertices = slot.attachmentVertices;\n\t\tif (vertices.length != vertexCount) alpha = 1;\n\t\tvertices.length = vertexCount;\n\n if (time >= frames[frames.length - 1])\n { // Time is after last frame.\n\t\t\tvar lastVertices = frameVertices[frames.length - 1];\n if (alpha < 1)\n {\n\t\t\t\tfor (var i = 0; i < vertexCount; i++)\n\t\t\t\t\tvertices[i] += (lastVertices[i] - vertices[i]) * alpha;\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vertexCount; i++)\n\t\t\t\t\tvertices[i] = lastVertices[i];\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch1(frames, time);\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex - 1] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));\n\n\t\tvar prevVertices = frameVertices[frameIndex - 1];\n\t\tvar nextVertices = frameVertices[frameIndex];\n\n if (alpha < 1)\n {\n for (var i = 0; i < vertexCount; i++)\n {\n\t\t\t\tvar prev = prevVertices[i];\n\t\t\t\tvertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha;\n\t\t\t}\n\t\t} else {\n for (var i = 0; i < vertexCount; i++)\n {\n\t\t\t\tvar prev = prevVertices[i];\n\t\t\t\tvertices[i] = prev + (nextVertices[i] - prev) * percent;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.IkConstraintTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, mix, bendDirection, ...\n\tthis.frames.length = frameCount * 3;\n};\nspine.IkConstraintTimeline.prototype = {\n\tikConstraintIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 3;\n\t},\n setFrame: function (frameIndex, time, mix, bendDirection)\n {\n\t\tframeIndex *= 3;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = mix;\n\t\tthis.frames[frameIndex + 2] = bendDirection;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar ikConstraint = skeleton.ikConstraints[this.ikConstraintIndex];\n\n if (time >= frames[frames.length - 3])\n { // Time is after last frame.\n\t\t\tikConstraint.mix += (frames[frames.length - 2] - ikConstraint.mix) * alpha;\n\t\t\tikConstraint.bendDirection = frames[frames.length - 1];\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 3);\n\t\tvar prevFrameMix = frames[frameIndex + -2/*PREV_FRAME_MIX*/];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex + -3/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 3 - 1, percent);\n\n\t\tvar mix = prevFrameMix + (frames[frameIndex + 1/*FRAME_MIX*/] - prevFrameMix) * percent;\n\t\tikConstraint.mix += (mix - ikConstraint.mix) * alpha;\n\t\tikConstraint.bendDirection = frames[frameIndex + -1/*PREV_FRAME_BEND_DIRECTION*/];\n\t}\n};\n\nspine.FlipXTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, flip, ...\n\tthis.frames.length = frameCount * 2;\n};\nspine.FlipXTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 2;\n\t},\n setFrame: function (frameIndex, time, flip)\n {\n\t\tframeIndex *= 2;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = flip ? 1 : 0;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n if (time < frames[0])\n {\n\t\t\tif (lastTime > time) this.apply(skeleton, lastTime, Number.MAX_VALUE, null, 0);\n\t\t\treturn;\n\t\t} else if (lastTime > time) //\n\t\t\tlastTime = -1;\n\t\tvar frameIndex = (time >= frames[frames.length - 2] ? frames.length : spine.Animation.binarySearch(frames, time, 2)) - 2;\n\t\tif (frames[frameIndex] < lastTime) return;\n\t\tskeleton.bones[boneIndex].flipX = frames[frameIndex + 1] != 0;\n\t}\n};\n\nspine.FlipYTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, flip, ...\n\tthis.frames.length = frameCount * 2;\n};\nspine.FlipYTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 2;\n\t},\n setFrame: function (frameIndex, time, flip)\n {\n\t\tframeIndex *= 2;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = flip ? 1 : 0;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n if (time < frames[0])\n {\n\t\t\tif (lastTime > time) this.apply(skeleton, lastTime, Number.MAX_VALUE, null, 0);\n\t\t\treturn;\n\t\t} else if (lastTime > time) //\n\t\t\tlastTime = -1;\n\t\tvar frameIndex = (time >= frames[frames.length - 2] ? frames.length : spine.Animation.binarySearch(frames, time, 2)) - 2;\n\t\tif (frames[frameIndex] < lastTime) return;\n\t\tskeleton.bones[boneIndex].flipY = frames[frameIndex + 1] != 0;\n\t}\n};\n\nspine.SkeletonData = function ()\n{\n\tthis.bones = [];\n\tthis.slots = [];\n\tthis.skins = [];\n\tthis.events = [];\n\tthis.animations = [];\n\tthis.ikConstraints = [];\n};\nspine.SkeletonData.prototype = {\n\tname: null,\n\tdefaultSkin: null,\n\twidth: 0, height: 0,\n\tversion: null, hash: null,\n\t/** @return May be null. */\n findBone: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].name == boneName) return bones[i];\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findBoneIndex: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].name == boneName) return i;\n\t\treturn -1;\n\t},\n\t/** @return May be null. */\n findSlot: function (slotName)\n {\n\t\tvar slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tif (slots[i].name == slotName) return slot[i];\n\t\t}\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findSlotIndex: function (slotName)\n {\n\t\tvar slots = this.slots;\n\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\tif (slots[i].name == slotName) return i;\n\t\treturn -1;\n\t},\n\t/** @return May be null. */\n findSkin: function (skinName)\n {\n\t\tvar skins = this.skins;\n\t\tfor (var i = 0, n = skins.length; i < n; i++)\n\t\t\tif (skins[i].name == skinName) return skins[i];\n\t\treturn null;\n\t},\n\t/** @return May be null. */\n findEvent: function (eventName)\n {\n\t\tvar events = this.events;\n\t\tfor (var i = 0, n = events.length; i < n; i++)\n\t\t\tif (events[i].name == eventName) return events[i];\n\t\treturn null;\n\t},\n\t/** @return May be null. */\n findAnimation: function (animationName)\n {\n\t\tvar animations = this.animations;\n\t\tfor (var i = 0, n = animations.length; i < n; i++)\n\t\t\tif (animations[i].name == animationName) return animations[i];\n\t\treturn null;\n\t},\n\t/** @return May be null. */\n findIkConstraint: function (ikConstraintName)\n {\n\t\tvar ikConstraints = this.ikConstraints;\n\t\tfor (var i = 0, n = ikConstraints.length; i < n; i++)\n\t\t\tif (ikConstraints[i].name == ikConstraintName) return ikConstraints[i];\n\t\treturn null;\n\t}\n};\n\nspine.Skeleton = function (skeletonData)\n{\n\tthis.data = skeletonData;\n\n\tthis.bones = [];\n for (var i = 0, n = skeletonData.bones.length; i < n; i++)\n {\n\t\tvar boneData = skeletonData.bones[i];\n\t\tvar parent = !boneData.parent ? null : this.bones[skeletonData.bones.indexOf(boneData.parent)];\n\t\tthis.bones.push(new spine.Bone(boneData, this, parent));\n\t}\n\n\tthis.slots = [];\n\tthis.drawOrder = [];\n for (var i = 0, n = skeletonData.slots.length; i < n; i++)\n {\n\t\tvar slotData = skeletonData.slots[i];\n\t\tvar bone = this.bones[skeletonData.bones.indexOf(slotData.boneData)];\n\t\tvar slot = new spine.Slot(slotData, bone);\n\t\tthis.slots.push(slot);\n\t\tthis.drawOrder.push(slot);\n\t}\n\n\tthis.ikConstraints = [];\n\tfor (var i = 0, n = skeletonData.ikConstraints.length; i < n; i++)\n\t\tthis.ikConstraints.push(new spine.IkConstraint(skeletonData.ikConstraints[i], this));\n\n\tthis.boneCache = [];\n\tthis.updateCache();\n};\nspine.Skeleton.prototype = {\n\tx: 0, y: 0,\n\tskin: null,\n\tr: 1, g: 1, b: 1, a: 1,\n\ttime: 0,\n\tflipX: false, flipY: false,\n\t/** Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or removed. */\n updateCache: function ()\n {\n\t\tvar ikConstraints = this.ikConstraints;\n\t\tvar ikConstraintsCount = ikConstraints.length;\n\n\t\tvar arrayCount = ikConstraintsCount + 1;\n\t\tvar boneCache = this.boneCache;\n\t\tif (boneCache.length > arrayCount) boneCache.length = arrayCount;\n\t\tfor (var i = 0, n = boneCache.length; i < n; i++)\n\t\t\tboneCache[i].length = 0;\n\t\twhile (boneCache.length < arrayCount)\n\t\t\tboneCache[boneCache.length] = [];\n\n\t\tvar nonIkBones = boneCache[0];\n\t\tvar bones = this.bones;\n\n\t\touter:\n for (var i = 0, n = bones.length; i < n; i++)\n {\n\t\t\tvar bone = bones[i];\n\t\t\tvar current = bone;\n\t\t\tdo {\n for (var ii = 0; ii < ikConstraintsCount; ii++)\n {\n\t\t\t\t\tvar ikConstraint = ikConstraints[ii];\n\t\t\t\t\tvar parent = ikConstraint.bones[0];\n\t\t\t\t\tvar child= ikConstraint.bones[ikConstraint.bones.length - 1];\n while (true)\n {\n if (current == child)\n {\n\t\t\t\t\t\t\tboneCache[ii].push(bone);\n\t\t\t\t\t\t\tboneCache[ii + 1].push(bone);\n\t\t\t\t\t\t\tcontinue outer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (child == parent) break;\n\t\t\t\t\t\tchild = child.parent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcurrent = current.parent;\n\t\t\t} while (current);\n\t\t\tnonIkBones[nonIkBones.length] = bone;\n\t\t}\n\t},\n\t/** Updates the world transform for each bone. */\n updateWorldTransform: function ()\n {\n\t\tvar bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n {\n\t\t\tvar bone = bones[i];\n\t\t\tbone.rotationIK = bone.rotation;\n\t\t}\n\t\tvar i = 0, last = this.boneCache.length - 1;\n while (true)\n {\n\t\t\tvar cacheBones = this.boneCache[i];\n\t\t\tfor (var ii = 0, nn = cacheBones.length; ii < nn; ii++)\n\t\t\t\tcacheBones[ii].updateWorldTransform();\n\t\t\tif (i == last) break;\n\t\t\tthis.ikConstraints[i].apply();\n\t\t\ti++;\n\t\t}\n\t},\n\t/** Sets the bones and slots to their setup pose values. */\n setToSetupPose: function ()\n {\n\t\tthis.setBonesToSetupPose();\n\t\tthis.setSlotsToSetupPose();\n\t},\n setBonesToSetupPose: function ()\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tbones[i].setToSetupPose();\n\n\t\tvar ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++)\n {\n\t\t\tvar ikConstraint = ikConstraints[i];\n\t\t\tikConstraint.bendDirection = ikConstraint.data.bendDirection;\n\t\t\tikConstraint.mix = ikConstraint.data.mix;\n\t\t}\n\t},\n setSlotsToSetupPose: function ()\n {\n\t\tvar slots = this.slots;\n\t\tvar drawOrder = this.drawOrder;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tdrawOrder[i] = slots[i];\n\t\t\tslots[i].setToSetupPose(i);\n\t\t}\n\t},\n\t/** @return May return null. */\n getRootBone: function ()\n {\n\t\treturn this.bones.length ? this.bones[0] : null;\n\t},\n\t/** @return May be null. */\n findBone: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].data.name == boneName) return bones[i];\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findBoneIndex: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].data.name == boneName) return i;\n\t\treturn -1;\n\t},\n\t/** @return May be null. */\n findSlot: function (slotName)\n {\n\t\tvar slots = this.slots;\n\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\tif (slots[i].data.name == slotName) return slots[i];\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findSlotIndex: function (slotName)\n {\n\t\tvar slots = this.slots;\n\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\tif (slots[i].data.name == slotName) return i;\n\t\treturn -1;\n\t},\n setSkinByName: function (skinName)\n {\n\t\tvar skin = this.data.findSkin(skinName);\n\t\tif (!skin) throw \"Skin not found: \" + skinName;\n\t\tthis.setSkin(skin);\n\t},\n\t/** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}.\n\t * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was\n\t * no old skin, each slot's setup mode attachment is attached from the new skin.\n\t * @param newSkin May be null. */\n setSkin: function (newSkin)\n {\n if (newSkin)\n {\n\t\t\tif (this.skin)\n\t\t\t\tnewSkin._attachAll(this, this.skin);\n else\n {\n\t\t\t\tvar slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\t\t\tvar slot = slots[i];\n\t\t\t\t\tvar name = slot.data.attachmentName;\n if (name)\n {\n\t\t\t\t\t\tvar attachment = newSkin.getAttachment(i, name);\n\t\t\t\t\t\tif (attachment) slot.setAttachment(attachment);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.skin = newSkin;\n\t},\n\t/** @return May be null. */\n getAttachmentBySlotName: function (slotName, attachmentName)\n {\n\t\treturn this.getAttachmentBySlotIndex(this.data.findSlotIndex(slotName), attachmentName);\n\t},\n\t/** @return May be null. */\n getAttachmentBySlotIndex: function (slotIndex, attachmentName)\n {\n if (this.skin)\n {\n\t\t\tvar attachment = this.skin.getAttachment(slotIndex, attachmentName);\n\t\t\tif (attachment) return attachment;\n\t\t}\n\t\tif (this.data.defaultSkin) return this.data.defaultSkin.getAttachment(slotIndex, attachmentName);\n\t\treturn null;\n\t},\n\t/** @param attachmentName May be null. */\n setAttachment: function (slotName, attachmentName)\n {\n\t\tvar slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tvar slot = slots[i];\n if (slot.data.name == slotName)\n {\n\t\t\t\tvar attachment = null;\n if (attachmentName)\n {\n\t\t\t\t\tattachment = this.getAttachmentBySlotIndex(i, attachmentName);\n\t\t\t\t\tif (!attachment) throw \"Attachment not found: \" + attachmentName + \", for slot: \" + slotName;\n\t\t\t\t}\n\t\t\t\tslot.setAttachment(attachment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthrow \"Slot not found: \" + slotName;\n\t},\n\t/** @return May be null. */\n findIkConstraint: function (ikConstraintName)\n {\n\t\tvar ikConstraints = this.ikConstraints;\n\t\tfor (var i = 0, n = ikConstraints.length; i < n; i++)\n\t\t\tif (ikConstraints[i].data.name == ikConstraintName) return ikConstraints[i];\n\t\treturn null;\n\t},\n update: function (delta)\n {\n\t\tthis.time += delta;\n\t}\n};\n\nspine.EventData = function (name)\n{\n\tthis.name = name;\n};\nspine.EventData.prototype = {\n\tintValue: 0,\n\tfloatValue: 0,\n\tstringValue: null\n};\n\nspine.Event = function (data)\n{\n\tthis.data = data;\n};\nspine.Event.prototype = {\n\tintValue: 0,\n\tfloatValue: 0,\n\tstringValue: null\n};\n\nspine.AttachmentType = {\n\tregion: 0,\n\tboundingbox: 1,\n\tmesh: 2,\n\tskinnedmesh: 3\n};\n\nspine.RegionAttachment = function (name)\n{\n\tthis.name = name;\n\tthis.offset = [];\n\tthis.offset.length = 8;\n\tthis.uvs = [];\n\tthis.uvs.length = 8;\n};\nspine.RegionAttachment.prototype = {\n\ttype: spine.AttachmentType.region,\n\tx: 0, y: 0,\n\trotation: 0,\n\tscaleX: 1, scaleY: 1,\n\twidth: 0, height: 0,\n\tr: 1, g: 1, b: 1, a: 1,\n\tpath: null,\n\trendererObject: null,\n\tregionOffsetX: 0, regionOffsetY: 0,\n\tregionWidth: 0, regionHeight: 0,\n\tregionOriginalWidth: 0, regionOriginalHeight: 0,\n setUVs: function (u, v, u2, v2, rotate)\n {\n\t\tvar uvs = this.uvs;\n if (rotate)\n {\n\t\t\tuvs[2/*X2*/] = u;\n\t\t\tuvs[3/*Y2*/] = v2;\n\t\t\tuvs[4/*X3*/] = u;\n\t\t\tuvs[5/*Y3*/] = v;\n\t\t\tuvs[6/*X4*/] = u2;\n\t\t\tuvs[7/*Y4*/] = v;\n\t\t\tuvs[0/*X1*/] = u2;\n\t\t\tuvs[1/*Y1*/] = v2;\n\t\t} else {\n\t\t\tuvs[0/*X1*/] = u;\n\t\t\tuvs[1/*Y1*/] = v2;\n\t\t\tuvs[2/*X2*/] = u;\n\t\t\tuvs[3/*Y2*/] = v;\n\t\t\tuvs[4/*X3*/] = u2;\n\t\t\tuvs[5/*Y3*/] = v;\n\t\t\tuvs[6/*X4*/] = u2;\n\t\t\tuvs[7/*Y4*/] = v2;\n\t\t}\n\t},\n updateOffset: function ()\n {\n\t\tvar regionScaleX = this.width / this.regionOriginalWidth * this.scaleX;\n\t\tvar regionScaleY = this.height / this.regionOriginalHeight * this.scaleY;\n\t\tvar localX = -this.width / 2 * this.scaleX + this.regionOffsetX * regionScaleX;\n\t\tvar localY = -this.height / 2 * this.scaleY + this.regionOffsetY * regionScaleY;\n\t\tvar localX2 = localX + this.regionWidth * regionScaleX;\n\t\tvar localY2 = localY + this.regionHeight * regionScaleY;\n\t\tvar radians = this.rotation * spine.degRad;\n\t\tvar cos = Math.cos(radians);\n\t\tvar sin = Math.sin(radians);\n\t\tvar localXCos = localX * cos + this.x;\n\t\tvar localXSin = localX * sin;\n\t\tvar localYCos = localY * cos + this.y;\n\t\tvar localYSin = localY * sin;\n\t\tvar localX2Cos = localX2 * cos + this.x;\n\t\tvar localX2Sin = localX2 * sin;\n\t\tvar localY2Cos = localY2 * cos + this.y;\n\t\tvar localY2Sin = localY2 * sin;\n\t\tvar offset = this.offset;\n\t\toffset[0/*X1*/] = localXCos - localYSin;\n\t\toffset[1/*Y1*/] = localYCos + localXSin;\n\t\toffset[2/*X2*/] = localXCos - localY2Sin;\n\t\toffset[3/*Y2*/] = localY2Cos + localXSin;\n\t\toffset[4/*X3*/] = localX2Cos - localY2Sin;\n\t\toffset[5/*Y3*/] = localY2Cos + localX2Sin;\n\t\toffset[6/*X4*/] = localX2Cos - localYSin;\n\t\toffset[7/*Y4*/] = localYCos + localX2Sin;\n\t},\n computeVertices: function (x, y, bone, vertices)\n {\n\t\tx += bone.worldX;\n\t\ty += bone.worldY;\n\t\tvar m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11;\n\t\tvar offset = this.offset;\n\t\tvertices[0/*X1*/] = offset[0/*X1*/] * m00 + offset[1/*Y1*/] * m01 + x;\n\t\tvertices[1/*Y1*/] = offset[0/*X1*/] * m10 + offset[1/*Y1*/] * m11 + y;\n\t\tvertices[2/*X2*/] = offset[2/*X2*/] * m00 + offset[3/*Y2*/] * m01 + x;\n\t\tvertices[3/*Y2*/] = offset[2/*X2*/] * m10 + offset[3/*Y2*/] * m11 + y;\n\t\tvertices[4/*X3*/] = offset[4/*X3*/] * m00 + offset[5/*X3*/] * m01 + x;\n\t\tvertices[5/*X3*/] = offset[4/*X3*/] * m10 + offset[5/*X3*/] * m11 + y;\n\t\tvertices[6/*X4*/] = offset[6/*X4*/] * m00 + offset[7/*Y4*/] * m01 + x;\n\t\tvertices[7/*Y4*/] = offset[6/*X4*/] * m10 + offset[7/*Y4*/] * m11 + y;\n\t}\n};\n\nspine.MeshAttachment = function (name)\n{\n\tthis.name = name;\n};\nspine.MeshAttachment.prototype = {\n\ttype: spine.AttachmentType.mesh,\n\tvertices: null,\n\tuvs: null,\n\tregionUVs: null,\n\ttriangles: null,\n\thullLength: 0,\n\tr: 1, g: 1, b: 1, a: 1,\n\tpath: null,\n\trendererObject: null,\n\tregionU: 0, regionV: 0, regionU2: 0, regionV2: 0, regionRotate: false,\n\tregionOffsetX: 0, regionOffsetY: 0,\n\tregionWidth: 0, regionHeight: 0,\n\tregionOriginalWidth: 0, regionOriginalHeight: 0,\n\tedges: null,\n\twidth: 0, height: 0,\n updateUVs: function ()\n {\n\t\tvar width = this.regionU2 - this.regionU, height = this.regionV2 - this.regionV;\n\t\tvar n = this.regionUVs.length;\n if (!this.uvs || this.uvs.length != n)\n {\n this.uvs = new spine.Float32Array(n);\n\t\t}\n if (this.regionRotate)\n {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i + 1] * width;\n this.uvs[i + 1] = this.regionV + height - this.regionUVs[i] * height;\n\t\t\t}\n\t\t} else {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i] * width;\n this.uvs[i + 1] = this.regionV + this.regionUVs[i + 1] * height;\n\t\t\t}\n\t\t}\n\t},\n computeWorldVertices: function (x, y, slot, worldVertices)\n {\n\t\tvar bone = slot.bone;\n\t\tx += bone.worldX;\n\t\ty += bone.worldY;\n\t\tvar m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11;\n\t\tvar vertices = this.vertices;\n\t\tvar verticesCount = vertices.length;\n\t\tif (slot.attachmentVertices.length == verticesCount) vertices = slot.attachmentVertices;\n for (var i = 0; i < verticesCount; i += 2)\n {\n\t\t\tvar vx = vertices[i];\n\t\t\tvar vy = vertices[i + 1];\n\t\t\tworldVertices[i] = vx * m00 + vy * m01 + x;\n\t\t\tworldVertices[i + 1] = vx * m10 + vy * m11 + y;\n\t\t}\n\t}\n};\n\nspine.SkinnedMeshAttachment = function (name)\n{\n\tthis.name = name;\n};\nspine.SkinnedMeshAttachment.prototype = {\n\ttype: spine.AttachmentType.skinnedmesh,\n\tbones: null,\n\tweights: null,\n\tuvs: null,\n\tregionUVs: null,\n\ttriangles: null,\n\thullLength: 0,\n\tr: 1, g: 1, b: 1, a: 1,\n\tpath: null,\n\trendererObject: null,\n\tregionU: 0, regionV: 0, regionU2: 0, regionV2: 0, regionRotate: false,\n\tregionOffsetX: 0, regionOffsetY: 0,\n\tregionWidth: 0, regionHeight: 0,\n\tregionOriginalWidth: 0, regionOriginalHeight: 0,\n\tedges: null,\n\twidth: 0, height: 0,\n updateUVs: function (u, v, u2, v2, rotate)\n {\n\t\tvar width = this.regionU2 - this.regionU, height = this.regionV2 - this.regionV;\n\t\tvar n = this.regionUVs.length;\n if (!this.uvs || this.uvs.length != n)\n {\n this.uvs = new spine.Float32Array(n);\n\t\t}\n if (this.regionRotate)\n {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i + 1] * width;\n this.uvs[i + 1] = this.regionV + height - this.regionUVs[i] * height;\n\t\t\t}\n\t\t} else {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i] * width;\n this.uvs[i + 1] = this.regionV + this.regionUVs[i + 1] * height;\n\t\t\t}\n\t\t}\n\t},\n computeWorldVertices: function (x, y, slot, worldVertices)\n {\n\t\tvar skeletonBones = slot.bone.skeleton.bones;\n\t\tvar weights = this.weights;\n\t\tvar bones = this.bones;\n\n\t\tvar w = 0, v = 0, b = 0, f = 0, n = bones.length, nn;\n\t\tvar wx, wy, bone, vx, vy, weight;\n if (!slot.attachmentVertices.length)\n {\n for (; v < n; w += 2)\n {\n\t\t\t\twx = 0;\n\t\t\t\twy = 0;\n\t\t\t\tnn = bones[v++] + v;\n for (; v < nn; v++, b += 3)\n {\n\t\t\t\t\tbone = skeletonBones[bones[v]];\n\t\t\t\t\tvx = weights[b];\n\t\t\t\t\tvy = weights[b + 1];\n\t\t\t\t\tweight = weights[b + 2];\n\t\t\t\t\twx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight;\n\t\t\t\t\twy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight;\n\t\t\t\t}\n\t\t\t\tworldVertices[w] = wx + x;\n\t\t\t\tworldVertices[w + 1] = wy + y;\n\t\t\t}\n\t\t} else {\n\t\t\tvar ffd = slot.attachmentVertices;\n for (; v < n; w += 2)\n {\n\t\t\t\twx = 0;\n\t\t\t\twy = 0;\n\t\t\t\tnn = bones[v++] + v;\n for (; v < nn; v++, b += 3, f += 2)\n {\n\t\t\t\t\tbone = skeletonBones[bones[v]];\n\t\t\t\t\tvx = weights[b] + ffd[f];\n\t\t\t\t\tvy = weights[b + 1] + ffd[f + 1];\n\t\t\t\t\tweight = weights[b + 2];\n\t\t\t\t\twx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight;\n\t\t\t\t\twy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight;\n\t\t\t\t}\n\t\t\t\tworldVertices[w] = wx + x;\n\t\t\t\tworldVertices[w + 1] = wy + y;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.BoundingBoxAttachment = function (name)\n{\n\tthis.name = name;\n\tthis.vertices = [];\n};\nspine.BoundingBoxAttachment.prototype = {\n\ttype: spine.AttachmentType.boundingbox,\n computeWorldVertices: function (x, y, bone, worldVertices)\n {\n\t\tx += bone.worldX;\n\t\ty += bone.worldY;\n\t\tvar m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11;\n\t\tvar vertices = this.vertices;\n for (var i = 0, n = vertices.length; i < n; i += 2)\n {\n\t\t\tvar px = vertices[i];\n\t\t\tvar py = vertices[i + 1];\n\t\t\tworldVertices[i] = px * m00 + py * m01 + x;\n\t\t\tworldVertices[i + 1] = px * m10 + py * m11 + y;\n\t\t}\n\t}\n};\n\nspine.AnimationStateData = function (skeletonData)\n{\n\tthis.skeletonData = skeletonData;\n\tthis.animationToMixTime = {};\n};\nspine.AnimationStateData.prototype = {\n\tdefaultMix: 0,\n setMixByName: function (fromName, toName, duration)\n {\n\t\tvar from = this.skeletonData.findAnimation(fromName);\n\t\tif (!from) throw \"Animation not found: \" + fromName;\n\t\tvar to = this.skeletonData.findAnimation(toName);\n\t\tif (!to) throw \"Animation not found: \" + toName;\n\t\tthis.setMix(from, to, duration);\n\t},\n setMix: function (from, to, duration)\n {\n\t\tthis.animationToMixTime[from.name + \":\" + to.name] = duration;\n\t},\n getMix: function (from, to)\n {\n\t\tvar key = from.name + \":\" + to.name;\n\t\treturn this.animationToMixTime.hasOwnProperty(key) ? this.animationToMixTime[key] : this.defaultMix;\n\t}\n};\n\nspine.TrackEntry = function ()\n{};\nspine.TrackEntry.prototype = {\n\tnext: null, previous: null,\n\tanimation: null,\n\tloop: false,\n\tdelay: 0, time: 0, lastTime: -1, endTime: 0,\n\ttimeScale: 1,\n\tmixTime: 0, mixDuration: 0, mix: 1,\n\tonStart: null, onEnd: null, onComplete: null, onEvent: null\n};\n\nspine.AnimationState = function (stateData)\n{\n\tthis.data = stateData;\n\tthis.tracks = [];\n\tthis.events = [];\n};\nspine.AnimationState.prototype = {\n\tonStart: null,\n\tonEnd: null,\n\tonComplete: null,\n\tonEvent: null,\n\ttimeScale: 1,\n update: function (delta)\n {\n\t\tdelta *= this.timeScale;\n for (var i = 0; i < this.tracks.length; i++)\n {\n\t\t\tvar current = this.tracks[i];\n\t\t\tif (!current) continue;\n\n\t\t\tcurrent.time += delta * current.timeScale;\n if (current.previous)\n {\n\t\t\t\tvar previousDelta = delta * current.previous.timeScale;\n\t\t\t\tcurrent.previous.time += previousDelta;\n\t\t\t\tcurrent.mixTime += previousDelta;\n\t\t\t}\n\n\t\t\tvar next = current.next;\n if (next)\n {\n\t\t\t\tnext.time = current.lastTime - next.delay;\n\t\t\t\tif (next.time >= 0) this.setCurrent(i, next);\n\t\t\t} else {\n\t\t\t\t// End non-looping animation when it reaches its end time and there is no next entry.\n\t\t\t\tif (!current.loop && current.lastTime >= current.endTime) this.clearTrack(i);\n\t\t\t}\n\t\t}\n\t},\n apply: function (skeleton)\n {\n for (var i = 0; i < this.tracks.length; i++)\n {\n\t\t\tvar current = this.tracks[i];\n\t\t\tif (!current) continue;\n\n\t\t\tthis.events.length = 0;\n\n\t\t\tvar time = current.time;\n\t\t\tvar lastTime = current.lastTime;\n\t\t\tvar endTime = current.endTime;\n\t\t\tvar loop = current.loop;\n\t\t\tif (!loop && time > endTime) time = endTime;\n\n\t\t\tvar previous = current.previous;\n if (!previous)\n {\n\t\t\t\tif (current.mix == 1)\n\t\t\t\t\tcurrent.animation.apply(skeleton, current.lastTime, time, loop, this.events);\n\t\t\t\telse\n\t\t\t\t\tcurrent.animation.mix(skeleton, current.lastTime, time, loop, this.events, current.mix);\n\t\t\t} else {\n\t\t\t\tvar previousTime = previous.time;\n\t\t\t\tif (!previous.loop && previousTime > previous.endTime) previousTime = previous.endTime;\n\t\t\t\tprevious.animation.apply(skeleton, previousTime, previousTime, previous.loop, null);\n\n\t\t\t\tvar alpha = current.mixTime / current.mixDuration * current.mix;\n if (alpha >= 1)\n {\n\t\t\t\t\talpha = 1;\n\t\t\t\t\tcurrent.previous = null;\n\t\t\t\t}\n\t\t\t\tcurrent.animation.mix(skeleton, current.lastTime, time, loop, this.events, alpha);\n\t\t\t}\n\n for (var ii = 0, nn = this.events.length; ii < nn; ii++)\n {\n\t\t\t\tvar event = this.events[ii];\n\t\t\t\tif (current.onEvent) current.onEvent(i, event);\n\t\t\t\tif (this.onEvent) this.onEvent(i, event);\n\t\t\t}\n\n\t\t\t// Check if completed the animation or a loop iteration.\n if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime))\n {\n\t\t\t\tvar count = Math.floor(time / endTime);\n\t\t\t\tif (current.onComplete) current.onComplete(i, count);\n\t\t\t\tif (this.onComplete) this.onComplete(i, count);\n\t\t\t}\n\n\t\t\tcurrent.lastTime = current.time;\n\t\t}\n\t},\n clearTracks: function ()\n {\n\t\tfor (var i = 0, n = this.tracks.length; i < n; i++)\n\t\t\tthis.clearTrack(i);\n\t\tthis.tracks.length = 0;\n\t},\n clearTrack: function (trackIndex)\n {\n\t\tif (trackIndex >= this.tracks.length) return;\n\t\tvar current = this.tracks[trackIndex];\n\t\tif (!current) return;\n\n\t\tif (current.onEnd) current.onEnd(trackIndex);\n\t\tif (this.onEnd) this.onEnd(trackIndex);\n\n\t\tthis.tracks[trackIndex] = null;\n\t},\n _expandToIndex: function (index)\n {\n\t\tif (index < this.tracks.length) return this.tracks[index];\n\t\twhile (index >= this.tracks.length)\n\t\t\tthis.tracks.push(null);\n\t\treturn null;\n\t},\n setCurrent: function (index, entry)\n {\n\t\tvar current = this._expandToIndex(index);\n if (current)\n {\n\t\t\tvar previous = current.previous;\n\t\t\tcurrent.previous = null;\n\n\t\t\tif (current.onEnd) current.onEnd(index);\n\t\t\tif (this.onEnd) this.onEnd(index);\n\n\t\t\tentry.mixDuration = this.data.getMix(current.animation, entry.animation);\n if (entry.mixDuration > 0)\n {\n\t\t\t\tentry.mixTime = 0;\n\t\t\t\t// If a mix is in progress, mix from the closest animation.\n\t\t\t\tif (previous && current.mixTime / current.mixDuration < 0.5)\n\t\t\t\t\tentry.previous = previous;\n\t\t\t\telse\n\t\t\t\t\tentry.previous = current;\n\t\t\t}\n\t\t}\n\n\t\tthis.tracks[index] = entry;\n\n\t\tif (entry.onStart) entry.onStart(index);\n\t\tif (this.onStart) this.onStart(index);\n\t},\n setAnimationByName: function (trackIndex, animationName, loop)\n {\n\t\tvar animation = this.data.skeletonData.findAnimation(animationName);\n\t\tif (!animation) throw \"Animation not found: \" + animationName;\n\t\treturn this.setAnimation(trackIndex, animation, loop);\n\t},\n\t/** Set the current animation. Any queued animations are cleared. */\n setAnimation: function (trackIndex, animation, loop)\n {\n\t\tvar entry = new spine.TrackEntry();\n\t\tentry.animation = animation;\n\t\tentry.loop = loop;\n\t\tentry.endTime = animation.duration;\n\t\tthis.setCurrent(trackIndex, entry);\n\t\treturn entry;\n\t},\n addAnimationByName: function (trackIndex, animationName, loop, delay)\n {\n\t\tvar animation = this.data.skeletonData.findAnimation(animationName);\n\t\tif (!animation) throw \"Animation not found: \" + animationName;\n\t\treturn this.addAnimation(trackIndex, animation, loop, delay);\n\t},\n\t/** Adds an animation to be played delay seconds after the current or last queued animation.\n\t * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */\n addAnimation: function (trackIndex, animation, loop, delay)\n {\n\t\tvar entry = new spine.TrackEntry();\n\t\tentry.animation = animation;\n\t\tentry.loop = loop;\n\t\tentry.endTime = animation.duration;\n\n\t\tvar last = this._expandToIndex(trackIndex);\n if (last)\n {\n\t\t\twhile (last.next)\n\t\t\t\tlast = last.next;\n\t\t\tlast.next = entry;\n\t\t} else\n\t\t\tthis.tracks[trackIndex] = entry;\n\n if (delay <= 0)\n {\n\t\t\tif (last)\n\t\t\t\tdelay += last.endTime - this.data.getMix(last.animation, animation);\n\t\t\telse\n\t\t\t\tdelay = 0;\n\t\t}\n\t\tentry.delay = delay;\n\n\t\treturn entry;\n\t},\n\t/** May be null. */\n getCurrent: function (trackIndex)\n {\n\t\tif (trackIndex >= this.tracks.length) return null;\n\t\treturn this.tracks[trackIndex];\n\t}\n};\n\nspine.SkeletonJsonParser = function (attachmentLoader)\n{\n\tthis.attachmentLoader = attachmentLoader;\n};\nspine.SkeletonJsonParser.prototype = {\n\tscale: 1,\n readSkeletonData: function (root, name)\n {\n\t\tvar skeletonData = new spine.SkeletonData();\n\t\tskeletonData.name = name;\n\n\t\t// Skeleton.\n\t\tvar skeletonMap = root[\"skeleton\"];\n if (skeletonMap)\n {\n\t\t\tskeletonData.hash = skeletonMap[\"hash\"];\n\t\t\tskeletonData.version = skeletonMap[\"spine\"];\n\t\t\tskeletonData.width = skeletonMap[\"width\"] || 0;\n\t\t\tskeletonData.height = skeletonMap[\"height\"] || 0;\n\t\t}\n\n\t\t// Bones.\n\t\tvar bones = root[\"bones\"];\n for (var i = 0, n = bones.length; i < n; i++)\n {\n\t\t\tvar boneMap = bones[i];\n\t\t\tvar parent = null;\n if (boneMap[\"parent\"])\n {\n\t\t\t\tparent = skeletonData.findBone(boneMap[\"parent\"]);\n\t\t\t\tif (!parent) throw \"Parent bone not found: \" + boneMap[\"parent\"];\n\t\t\t}\n\t\t\tvar boneData = new spine.BoneData(boneMap[\"name\"], parent);\n\t\t\tboneData.length = (boneMap[\"length\"] || 0) * this.scale;\n\t\t\tboneData.x = (boneMap[\"x\"] || 0) * this.scale;\n\t\t\tboneData.y = (boneMap[\"y\"] || 0) * this.scale;\n\t\t\tboneData.rotation = (boneMap[\"rotation\"] || 0);\n\t\t\tboneData.scaleX = boneMap.hasOwnProperty(\"scaleX\") ? boneMap[\"scaleX\"] : 1;\n\t\t\tboneData.scaleY = boneMap.hasOwnProperty(\"scaleY\") ? boneMap[\"scaleY\"] : 1;\n\t\t\tboneData.inheritScale = boneMap.hasOwnProperty(\"inheritScale\") ? boneMap[\"inheritScale\"] : true;\n\t\t\tboneData.inheritRotation = boneMap.hasOwnProperty(\"inheritRotation\") ? boneMap[\"inheritRotation\"] : true;\n\t\t\tskeletonData.bones.push(boneData);\n\t\t}\n\n\t\t// IK constraints.\n\t\tvar ik = root[\"ik\"];\n if (ik)\n {\n for (var i = 0, n = ik.length; i < n; i++)\n {\n\t\t\t\tvar ikMap = ik[i];\n\t\t\t\tvar ikConstraintData = new spine.IkConstraintData(ikMap[\"name\"]);\n\n\t\t\t\tvar bones = ikMap[\"bones\"];\n for (var ii = 0, nn = bones.length; ii < nn; ii++)\n {\n\t\t\t\t\tvar bone = skeletonData.findBone(bones[ii]);\n\t\t\t\t\tif (!bone) throw \"IK bone not found: \" + bones[ii];\n\t\t\t\t\tikConstraintData.bones.push(bone);\n\t\t\t\t}\n\n\t\t\t\tikConstraintData.target = skeletonData.findBone(ikMap[\"target\"]);\n\t\t\t\tif (!ikConstraintData.target) throw \"Target bone not found: \" + ikMap[\"target\"];\n\n\t\t\t\tikConstraintData.bendDirection = (!ikMap.hasOwnProperty(\"bendPositive\") || ikMap[\"bendPositive\"]) ? 1 : -1;\n\t\t\t\tikConstraintData.mix = ikMap.hasOwnProperty(\"mix\") ? ikMap[\"mix\"] : 1;\n\n\t\t\t\tskeletonData.ikConstraints.push(ikConstraintData);\n\t\t\t}\n\t\t}\n\n\t\t// Slots.\n\t\tvar slots = root[\"slots\"];\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tvar slotMap = slots[i];\n\t\t\tvar boneData = skeletonData.findBone(slotMap[\"bone\"]);\n\t\t\tif (!boneData) throw \"Slot bone not found: \" + slotMap[\"bone\"];\n\t\t\tvar slotData = new spine.SlotData(slotMap[\"name\"], boneData);\n\n\t\t\tvar color = slotMap[\"color\"];\n if (color)\n {\n\t\t\t\tslotData.r = this.toColor(color, 0);\n\t\t\t\tslotData.g = this.toColor(color, 1);\n\t\t\t\tslotData.b = this.toColor(color, 2);\n\t\t\t\tslotData.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tslotData.attachmentName = slotMap[\"attachment\"];\n\t\t\tslotData.additiveBlending = slotMap[\"additive\"] && slotMap[\"additive\"] == \"true\";\n\n\t\t\tskeletonData.slots.push(slotData);\n\t\t}\n\n\t\t// Skins.\n\t\tvar skins = root[\"skins\"];\n for (var skinName in skins)\n {\n\t\t\tif (!skins.hasOwnProperty(skinName)) continue;\n\t\t\tvar skinMap = skins[skinName];\n\t\t\tvar skin = new spine.Skin(skinName);\n for (var slotName in skinMap)\n {\n\t\t\t\tif (!skinMap.hasOwnProperty(slotName)) continue;\n\t\t\t\tvar slotIndex = skeletonData.findSlotIndex(slotName);\n\t\t\t\tvar slotEntry = skinMap[slotName];\n for (var attachmentName in slotEntry)\n {\n\t\t\t\t\tif (!slotEntry.hasOwnProperty(attachmentName)) continue;\n\t\t\t\t\tvar attachment = this.readAttachment(skin, attachmentName, slotEntry[attachmentName]);\n\t\t\t\t\tif (attachment) skin.addAttachment(slotIndex, attachmentName, attachment);\n\t\t\t\t}\n\t\t\t}\n\t\t\tskeletonData.skins.push(skin);\n\t\t\tif (skin.name == \"default\") skeletonData.defaultSkin = skin;\n\t\t}\n\n\t\t// Events.\n\t\tvar events = root[\"events\"];\n for (var eventName in events)\n {\n\t\t\tif (!events.hasOwnProperty(eventName)) continue;\n\t\t\tvar eventMap = events[eventName];\n\t\t\tvar eventData = new spine.EventData(eventName);\n\t\t\teventData.intValue = eventMap[\"int\"] || 0;\n\t\t\teventData.floatValue = eventMap[\"float\"] || 0;\n\t\t\teventData.stringValue = eventMap[\"string\"] || null;\n\t\t\tskeletonData.events.push(eventData);\n\t\t}\n\n\t\t// Animations.\n\t\tvar animations = root[\"animations\"];\n for (var animationName in animations)\n {\n\t\t\tif (!animations.hasOwnProperty(animationName)) continue;\n\t\t\tthis.readAnimation(animationName, animations[animationName], skeletonData);\n\t\t}\n\n\t\treturn skeletonData;\n\t},\n readAttachment: function (skin, name, map)\n {\n\t\tname = map[\"name\"] || name;\n\n\t\tvar type = spine.AttachmentType[map[\"type\"] || \"region\"];\n\t\tvar path = map[\"path\"] || name;\n\n\t\tvar scale = this.scale;\n if (type == spine.AttachmentType.region)\n {\n\t\t\tvar region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n\t\t\tif (!region) return null;\n\t\t\tregion.path = path;\n\t\t\tregion.x = (map[\"x\"] || 0) * scale;\n\t\t\tregion.y = (map[\"y\"] || 0) * scale;\n\t\t\tregion.scaleX = map.hasOwnProperty(\"scaleX\") ? map[\"scaleX\"] : 1;\n\t\t\tregion.scaleY = map.hasOwnProperty(\"scaleY\") ? map[\"scaleY\"] : 1;\n\t\t\tregion.rotation = map[\"rotation\"] || 0;\n\t\t\tregion.width = (map[\"width\"] || 0) * scale;\n\t\t\tregion.height = (map[\"height\"] || 0) * scale;\n\n\t\t\tvar color = map[\"color\"];\n if (color)\n {\n\t\t\t\tregion.r = this.toColor(color, 0);\n\t\t\t\tregion.g = this.toColor(color, 1);\n\t\t\t\tregion.b = this.toColor(color, 2);\n\t\t\t\tregion.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tregion.updateOffset();\n\t\t\treturn region;\n } else if (type == spine.AttachmentType.mesh)\n {\n\t\t\tvar mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n\t\t\tif (!mesh) return null;\n\t\t\tmesh.path = path;\n\t\t\tmesh.vertices = this.getFloatArray(map, \"vertices\", scale);\n\t\t\tmesh.triangles = this.getIntArray(map, \"triangles\");\n\t\t\tmesh.regionUVs = this.getFloatArray(map, \"uvs\", 1);\n\t\t\tmesh.updateUVs();\n\n\t\t\tcolor = map[\"color\"];\n if (color)\n {\n\t\t\t\tmesh.r = this.toColor(color, 0);\n\t\t\t\tmesh.g = this.toColor(color, 1);\n\t\t\t\tmesh.b = this.toColor(color, 2);\n\t\t\t\tmesh.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tmesh.hullLength = (map[\"hull\"] || 0) * 2;\n\t\t\tif (map[\"edges\"]) mesh.edges = this.getIntArray(map, \"edges\");\n\t\t\tmesh.width = (map[\"width\"] || 0) * scale;\n\t\t\tmesh.height = (map[\"height\"] || 0) * scale;\n\t\t\treturn mesh;\n } else if (type == spine.AttachmentType.skinnedmesh)\n {\n\t\t\tvar mesh = this.attachmentLoader.newSkinnedMeshAttachment(skin, name, path);\n\t\t\tif (!mesh) return null;\n\t\t\tmesh.path = path;\n\n\t\t\tvar uvs = this.getFloatArray(map, \"uvs\", 1);\n\t\t\tvar vertices = this.getFloatArray(map, \"vertices\", 1);\n\t\t\tvar weights = [];\n\t\t\tvar bones = [];\n for (var i = 0, n = vertices.length; i < n; )\n {\n\t\t\t\tvar boneCount = vertices[i++] | 0;\n\t\t\t\tbones[bones.length] = boneCount;\n for (var nn = i + boneCount * 4; i < nn; )\n {\n\t\t\t\t\tbones[bones.length] = vertices[i];\n\t\t\t\t\tweights[weights.length] = vertices[i + 1] * scale;\n\t\t\t\t\tweights[weights.length] = vertices[i + 2] * scale;\n\t\t\t\t\tweights[weights.length] = vertices[i + 3];\n\t\t\t\t\ti += 4;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmesh.bones = bones;\n\t\t\tmesh.weights = weights;\n\t\t\tmesh.triangles = this.getIntArray(map, \"triangles\");\n\t\t\tmesh.regionUVs = uvs;\n\t\t\tmesh.updateUVs();\n\n\t\t\tcolor = map[\"color\"];\n if (color)\n {\n\t\t\t\tmesh.r = this.toColor(color, 0);\n\t\t\t\tmesh.g = this.toColor(color, 1);\n\t\t\t\tmesh.b = this.toColor(color, 2);\n\t\t\t\tmesh.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tmesh.hullLength = (map[\"hull\"] || 0) * 2;\n\t\t\tif (map[\"edges\"]) mesh.edges = this.getIntArray(map, \"edges\");\n\t\t\tmesh.width = (map[\"width\"] || 0) * scale;\n\t\t\tmesh.height = (map[\"height\"] || 0) * scale;\n\t\t\treturn mesh;\n } else if (type == spine.AttachmentType.boundingbox)\n {\n\t\t\tvar attachment = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n\t\t\tvar vertices = map[\"vertices\"];\n\t\t\tfor (var i = 0, n = vertices.length; i < n; i++)\n\t\t\t\tattachment.vertices.push(vertices[i] * scale);\n\t\t\treturn attachment;\n\t\t}\n\t\tthrow \"Unknown attachment type: \" + type;\n\t},\n readAnimation: function (name, map, skeletonData)\n {\n\t\tvar timelines = [];\n\t\tvar duration = 0;\n\n\t\tvar slots = map[\"slots\"];\n for (var slotName in slots)\n {\n\t\t\tif (!slots.hasOwnProperty(slotName)) continue;\n\t\t\tvar slotMap = slots[slotName];\n\t\t\tvar slotIndex = skeletonData.findSlotIndex(slotName);\n\n for (var timelineName in slotMap)\n {\n\t\t\t\tif (!slotMap.hasOwnProperty(timelineName)) continue;\n\t\t\t\tvar values = slotMap[timelineName];\n if (timelineName == \"color\")\n {\n\t\t\t\t\tvar timeline = new spine.ColorTimeline(values.length);\n\t\t\t\t\ttimeline.slotIndex = slotIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\tvar color = valueMap[\"color\"];\n\t\t\t\t\t\tvar r = this.toColor(color, 0);\n\t\t\t\t\t\tvar g = this.toColor(color, 1);\n\t\t\t\t\t\tvar b = this.toColor(color, 2);\n\t\t\t\t\t\tvar a = this.toColor(color, 3);\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], r, g, b, a);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 5 - 5]);\n\n } else if (timelineName == \"attachment\")\n {\n\t\t\t\t\tvar timeline = new spine.AttachmentTimeline(values.length);\n\t\t\t\t\ttimeline.slotIndex = slotIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\ttimeline.setFrame(frameIndex++, valueMap[\"time\"], valueMap[\"name\"]);\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n\n\t\t\t\t} else\n\t\t\t\t\tthrow \"Invalid timeline type for a slot: \" + timelineName + \" (\" + slotName + \")\";\n\t\t\t}\n\t\t}\n\n\t\tvar bones = map[\"bones\"];\n for (var boneName in bones)\n {\n\t\t\tif (!bones.hasOwnProperty(boneName)) continue;\n\t\t\tvar boneIndex = skeletonData.findBoneIndex(boneName);\n\t\t\tif (boneIndex == -1) throw \"Bone not found: \" + boneName;\n\t\t\tvar boneMap = bones[boneName];\n\n for (var timelineName in boneMap)\n {\n\t\t\t\tif (!boneMap.hasOwnProperty(timelineName)) continue;\n\t\t\t\tvar values = boneMap[timelineName];\n if (timelineName == \"rotate\")\n {\n\t\t\t\t\tvar timeline = new spine.RotateTimeline(values.length);\n\t\t\t\t\ttimeline.boneIndex = boneIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], valueMap[\"angle\"]);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 2 - 2]);\n\n } else if (timelineName == \"translate\" || timelineName == \"scale\")\n {\n\t\t\t\t\tvar timeline;\n\t\t\t\t\tvar timelineScale = 1;\n\t\t\t\t\tif (timelineName == \"scale\")\n\t\t\t\t\t\ttimeline = new spine.ScaleTimeline(values.length);\n else\n {\n\t\t\t\t\t\ttimeline = new spine.TranslateTimeline(values.length);\n\t\t\t\t\t\ttimelineScale = this.scale;\n\t\t\t\t\t}\n\t\t\t\t\ttimeline.boneIndex = boneIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\tvar x = (valueMap[\"x\"] || 0) * timelineScale;\n\t\t\t\t\t\tvar y = (valueMap[\"y\"] || 0) * timelineScale;\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], x, y);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 3 - 3]);\n\n } else if (timelineName == \"flipX\" || timelineName == \"flipY\")\n {\n\t\t\t\t\tvar x = timelineName == \"flipX\";\n\t\t\t\t\tvar timeline = x ? new spine.FlipXTimeline(values.length) : new spine.FlipYTimeline(values.length);\n\t\t\t\t\ttimeline.boneIndex = boneIndex;\n\n\t\t\t\t\tvar field = x ? \"x\" : \"y\";\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], valueMap[field] || false);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 2 - 2]);\n\t\t\t\t} else\n\t\t\t\t\tthrow \"Invalid timeline type for a bone: \" + timelineName + \" (\" + boneName + \")\";\n\t\t\t}\n\t\t}\n\n\t\tvar ikMap = map[\"ik\"];\n for (var ikConstraintName in ikMap)\n {\n\t\t\tif (!ikMap.hasOwnProperty(ikConstraintName)) continue;\n\t\t\tvar ikConstraint = skeletonData.findIkConstraint(ikConstraintName);\n\t\t\tvar values = ikMap[ikConstraintName];\n\t\t\tvar timeline = new spine.IkConstraintTimeline(values.length);\n\t\t\ttimeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(ikConstraint);\n\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\tvar valueMap = values[i];\n\t\t\t\tvar mix = valueMap.hasOwnProperty(\"mix\") ? valueMap[\"mix\"] : 1;\n\t\t\t\tvar bendDirection = (!valueMap.hasOwnProperty(\"bendPositive\") || valueMap[\"bendPositive\"]) ? 1 : -1;\n\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], mix, bendDirection);\n\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\tframeIndex++;\n\t\t\t}\n\t\t\ttimelines.push(timeline);\n\t\t\tduration = Math.max(duration, timeline.frames[timeline.frameCount * 3 - 3]);\n\t\t}\n\n\t\tvar ffd = map[\"ffd\"];\n for (var skinName in ffd)\n {\n\t\t\tvar skin = skeletonData.findSkin(skinName);\n\t\t\tvar slotMap = ffd[skinName];\n for (slotName in slotMap)\n {\n\t\t\t\tvar slotIndex = skeletonData.findSlotIndex(slotName);\n\t\t\t\tvar meshMap = slotMap[slotName];\n for (var meshName in meshMap)\n {\n\t\t\t\t\tvar values = meshMap[meshName];\n\t\t\t\t\tvar timeline = new spine.FfdTimeline(values.length);\n\t\t\t\t\tvar attachment = skin.getAttachment(slotIndex, meshName);\n\t\t\t\t\tif (!attachment) throw \"FFD attachment not found: \" + meshName;\n\t\t\t\t\ttimeline.slotIndex = slotIndex;\n\t\t\t\t\ttimeline.attachment = attachment;\n\n\t\t\t\t\tvar isMesh = attachment.type == spine.AttachmentType.mesh;\n\t\t\t\t\tvar vertexCount;\n\t\t\t\t\tif (isMesh)\n\t\t\t\t\t\tvertexCount = attachment.vertices.length;\n\t\t\t\t\telse\n\t\t\t\t\t\tvertexCount = attachment.weights.length / 3 * 2;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\tvar vertices;\n if (!valueMap[\"vertices\"])\n {\n\t\t\t\t\t\t\tif (isMesh)\n\t\t\t\t\t\t\t\tvertices = attachment.vertices;\n else\n {\n\t\t\t\t\t\t\t\tvertices = [];\n\t\t\t\t\t\t\t\tvertices.length = vertexCount;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar verticesValue = valueMap[\"vertices\"];\n\t\t\t\t\t\t\tvar vertices = [];\n\t\t\t\t\t\t\tvertices.length = vertexCount;\n\t\t\t\t\t\t\tvar start = valueMap[\"offset\"] || 0;\n\t\t\t\t\t\t\tvar nn = verticesValue.length;\n if (this.scale == 1)\n {\n\t\t\t\t\t\t\t\tfor (var ii = 0; ii < nn; ii++)\n\t\t\t\t\t\t\t\t\tvertices[ii + start] = verticesValue[ii];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor (var ii = 0; ii < nn; ii++)\n\t\t\t\t\t\t\t\t\tvertices[ii + start] = verticesValue[ii] * this.scale;\n\t\t\t\t\t\t\t}\n if (isMesh)\n {\n\t\t\t\t\t\t\t\tvar meshVertices = attachment.vertices;\n\t\t\t\t\t\t\t\tfor (var ii = 0, nn = vertices.length; ii < nn; ii++)\n\t\t\t\t\t\t\t\t\tvertices[ii] += meshVertices[ii];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], vertices);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines[timelines.length] = timeline;\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.frameCount - 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar drawOrderValues = map[\"drawOrder\"];\n\t\tif (!drawOrderValues) drawOrderValues = map[\"draworder\"];\n if (drawOrderValues)\n {\n\t\t\tvar timeline = new spine.DrawOrderTimeline(drawOrderValues.length);\n\t\t\tvar slotCount = skeletonData.slots.length;\n\t\t\tvar frameIndex = 0;\n for (var i = 0, n = drawOrderValues.length; i < n; i++)\n {\n\t\t\t\tvar drawOrderMap = drawOrderValues[i];\n\t\t\t\tvar drawOrder = null;\n if (drawOrderMap[\"offsets\"])\n {\n\t\t\t\t\tdrawOrder = [];\n\t\t\t\t\tdrawOrder.length = slotCount;\n\t\t\t\t\tfor (var ii = slotCount - 1; ii >= 0; ii--)\n\t\t\t\t\t\tdrawOrder[ii] = -1;\n\t\t\t\t\tvar offsets = drawOrderMap[\"offsets\"];\n\t\t\t\t\tvar unchanged = [];\n\t\t\t\t\tunchanged.length = slotCount - offsets.length;\n\t\t\t\t\tvar originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0, nn = offsets.length; ii < nn; ii++)\n {\n\t\t\t\t\t\tvar offsetMap = offsets[ii];\n\t\t\t\t\t\tvar slotIndex = skeletonData.findSlotIndex(offsetMap[\"slot\"]);\n\t\t\t\t\t\tif (slotIndex == -1) throw \"Slot not found: \" + offsetMap[\"slot\"];\n\t\t\t\t\t\t// Collect unchanged items.\n\t\t\t\t\t\twhile (originalIndex != slotIndex)\n\t\t\t\t\t\t\tunchanged[unchangedIndex++] = originalIndex++;\n\t\t\t\t\t\t// Set changed items.\n\t\t\t\t\t\tdrawOrder[originalIndex + offsetMap[\"offset\"]] = originalIndex++;\n\t\t\t\t\t}\n\t\t\t\t\t// Collect remaining unchanged items.\n\t\t\t\t\twhile (originalIndex < slotCount)\n\t\t\t\t\t\tunchanged[unchangedIndex++] = originalIndex++;\n\t\t\t\t\t// Fill in unchanged items.\n\t\t\t\t\tfor (var ii = slotCount - 1; ii >= 0; ii--)\n\t\t\t\t\t\tif (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex];\n\t\t\t\t}\n\t\t\t\ttimeline.setFrame(frameIndex++, drawOrderMap[\"time\"], drawOrder);\n\t\t\t}\n\t\t\ttimelines.push(timeline);\n\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n\t\t}\n\n\t\tvar events = map[\"events\"];\n if (events)\n {\n\t\t\tvar timeline = new spine.EventTimeline(events.length);\n\t\t\tvar frameIndex = 0;\n for (var i = 0, n = events.length; i < n; i++)\n {\n\t\t\t\tvar eventMap = events[i];\n\t\t\t\tvar eventData = skeletonData.findEvent(eventMap[\"name\"]);\n\t\t\t\tif (!eventData) throw \"Event not found: \" + eventMap[\"name\"];\n\t\t\t\tvar event = new spine.Event(eventData);\n\t\t\t\tevent.intValue = eventMap.hasOwnProperty(\"int\") ? eventMap[\"int\"] : eventData.intValue;\n\t\t\t\tevent.floatValue = eventMap.hasOwnProperty(\"float\") ? eventMap[\"float\"] : eventData.floatValue;\n\t\t\t\tevent.stringValue = eventMap.hasOwnProperty(\"string\") ? eventMap[\"string\"] : eventData.stringValue;\n\t\t\t\ttimeline.setFrame(frameIndex++, eventMap[\"time\"], event);\n\t\t\t}\n\t\t\ttimelines.push(timeline);\n\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n\t\t}\n\n\t\tskeletonData.animations.push(new spine.Animation(name, timelines, duration));\n\t},\n readCurve: function (timeline, frameIndex, valueMap)\n {\n\t\tvar curve = valueMap[\"curve\"];\n\t\tif (!curve)\n\t\t\ttimeline.curves.setLinear(frameIndex);\n\t\telse if (curve == \"stepped\")\n\t\t\ttimeline.curves.setStepped(frameIndex);\n\t\telse if (curve instanceof Array)\n\t\t\ttimeline.curves.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]);\n\t},\n toColor: function (hexString, colorIndex)\n {\n\t\tif (hexString.length != 8) throw \"Color hexidecimal length must be 8, recieved: \" + hexString;\n\t\treturn parseInt(hexString.substring(colorIndex * 2, (colorIndex * 2) + 2), 16) / 255;\n\t},\n getFloatArray: function (map, name, scale)\n {\n\t\tvar list = map[name];\n\t\tvar values = new spine.Float32Array(list.length);\n\t\tvar i = 0, n = list.length;\n if (scale == 1)\n {\n\t\t\tfor (; i < n; i++)\n\t\t\t\tvalues[i] = list[i];\n\t\t} else {\n\t\t\tfor (; i < n; i++)\n\t\t\t\tvalues[i] = list[i] * scale;\n\t\t}\n\t\treturn values;\n\t},\n getIntArray: function (map, name)\n {\n\t\tvar list = map[name];\n\t\tvar values = new spine.Uint16Array(list.length);\n\t\tfor (var i = 0, n = list.length; i < n; i++)\n\t\t\tvalues[i] = list[i] | 0;\n\t\treturn values;\n\t}\n};\n\nspine.Atlas = function (atlasText, baseUrl, crossOrigin)\n{\n if (baseUrl && baseUrl.indexOf('/') !== baseUrl.length)\n {\n baseUrl += '/';\n }\n\n\tthis.pages = [];\n\tthis.regions = [];\n\n this.texturesLoading = 0;\n\n var self = this;\n\n\tvar reader = new spine.AtlasReader(atlasText);\n\tvar tuple = [];\n\ttuple.length = 4;\n\tvar page = null;\n while (true)\n {\n\t\tvar line = reader.readLine();\n\t\tif (line === null) break;\n\t\tline = reader.trim(line);\n\t\tif (!line.length)\n\t\t\tpage = null;\n else if (!page)\n {\n\t\t\tpage = new spine.AtlasPage();\n\t\t\tpage.name = line;\n\n if (reader.readTuple(tuple) == 2)\n { // size is only optional for an atlas packed with an old TexturePacker.\n\t\t\t\tpage.width = parseInt(tuple[0]);\n\t\t\t\tpage.height = parseInt(tuple[1]);\n\t\t\t\treader.readTuple(tuple);\n\t\t\t}\n\t\t\tpage.format = spine.Atlas.Format[tuple[0]];\n\n\t\t\treader.readTuple(tuple);\n\t\t\tpage.minFilter = spine.Atlas.TextureFilter[tuple[0]];\n\t\t\tpage.magFilter = spine.Atlas.TextureFilter[tuple[1]];\n\n\t\t\tvar direction = reader.readValue();\n\t\t\tpage.uWrap = spine.Atlas.TextureWrap.clampToEdge;\n\t\t\tpage.vWrap = spine.Atlas.TextureWrap.clampToEdge;\n\t\t\tif (direction == \"x\")\n\t\t\t\tpage.uWrap = spine.Atlas.TextureWrap.repeat;\n\t\t\telse if (direction == \"y\")\n\t\t\t\tpage.vWrap = spine.Atlas.TextureWrap.repeat;\n\t\t\telse if (direction == \"xy\")\n\t\t\t\tpage.uWrap = page.vWrap = spine.Atlas.TextureWrap.repeat;\n\n page.rendererObject = core.BaseTexture.fromImage(baseUrl + line, crossOrigin);\n\n\t\t\tthis.pages.push(page);\n\n\t\t} else {\n\t\t\tvar region = new spine.AtlasRegion();\n\t\t\tregion.name = line;\n\t\t\tregion.page = page;\n\n\t\t\tregion.rotate = reader.readValue() == \"true\";\n\n\t\t\treader.readTuple(tuple);\n\t\t\tvar x = parseInt(tuple[0]);\n\t\t\tvar y = parseInt(tuple[1]);\n\n\t\t\treader.readTuple(tuple);\n\t\t\tvar width = parseInt(tuple[0]);\n\t\t\tvar height = parseInt(tuple[1]);\n\n\t\t\tregion.u = x / page.width;\n\t\t\tregion.v = y / page.height;\n if (region.rotate)\n {\n\t\t\t\tregion.u2 = (x + height) / page.width;\n\t\t\t\tregion.v2 = (y + width) / page.height;\n\t\t\t} else {\n\t\t\t\tregion.u2 = (x + width) / page.width;\n\t\t\t\tregion.v2 = (y + height) / page.height;\n\t\t\t}\n\t\t\tregion.x = x;\n\t\t\tregion.y = y;\n\t\t\tregion.width = Math.abs(width);\n\t\t\tregion.height = Math.abs(height);\n\n if (reader.readTuple(tuple) == 4)\n { // split is optional\n\t\t\t\tregion.splits = [parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])];\n\n if (reader.readTuple(tuple) == 4)\n { // pad is optional, but only present with splits\n\t\t\t\t\tregion.pads = [parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])];\n\n\t\t\t\t\treader.readTuple(tuple);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tregion.originalWidth = parseInt(tuple[0]);\n\t\t\tregion.originalHeight = parseInt(tuple[1]);\n\n\t\t\treader.readTuple(tuple);\n\t\t\tregion.offsetX = parseInt(tuple[0]);\n\t\t\tregion.offsetY = parseInt(tuple[1]);\n\n\t\t\tregion.index = parseInt(reader.readValue());\n\n\t\t\tthis.regions.push(region);\n\t\t}\n\t}\n};\nspine.Atlas.prototype = {\n findRegion: function (name)\n {\n\t\tvar regions = this.regions;\n\t\tfor (var i = 0, n = regions.length; i < n; i++)\n\t\t\tif (regions[i].name == name) return regions[i];\n\t\treturn null;\n\t},\n dispose: function ()\n {\n\t\tvar pages = this.pages;\n\t\tfor (var i = 0, n = pages.length; i < n; i++)\n\t\t\tpages[i].rendererObject.destroy(true);\n\t},\n updateUVs: function (page)\n {\n\t\tvar regions = this.regions;\n for (var i = 0, n = regions.length; i < n; i++)\n {\n\t\t\tvar region = regions[i];\n\t\t\tif (region.page != page) continue;\n\t\t\tregion.u = region.x / page.width;\n\t\t\tregion.v = region.y / page.height;\n if (region.rotate)\n {\n\t\t\t\tregion.u2 = (region.x + region.height) / page.width;\n\t\t\t\tregion.v2 = (region.y + region.width) / page.height;\n\t\t\t} else {\n\t\t\t\tregion.u2 = (region.x + region.width) / page.width;\n\t\t\t\tregion.v2 = (region.y + region.height) / page.height;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.Atlas.Format = {\n\talpha: 0,\n\tintensity: 1,\n\tluminanceAlpha: 2,\n\trgb565: 3,\n\trgba4444: 4,\n\trgb888: 5,\n\trgba8888: 6\n};\n\nspine.Atlas.TextureFilter = {\n\tnearest: 0,\n\tlinear: 1,\n\tmipMap: 2,\n\tmipMapNearestNearest: 3,\n\tmipMapLinearNearest: 4,\n\tmipMapNearestLinear: 5,\n\tmipMapLinearLinear: 6\n};\n\nspine.Atlas.TextureWrap = {\n\tmirroredRepeat: 0,\n\tclampToEdge: 1,\n\trepeat: 2\n};\n\nspine.AtlasPage = function ()\n{};\nspine.AtlasPage.prototype = {\n\tname: null,\n\tformat: null,\n\tminFilter: null,\n\tmagFilter: null,\n\tuWrap: null,\n\tvWrap: null,\n\trendererObject: null,\n\twidth: 0,\n\theight: 0\n};\n\nspine.AtlasRegion = function ()\n{};\nspine.AtlasRegion.prototype = {\n\tpage: null,\n\tname: null,\n\tx: 0, y: 0,\n\twidth: 0, height: 0,\n\tu: 0, v: 0, u2: 0, v2: 0,\n\toffsetX: 0, offsetY: 0,\n\toriginalWidth: 0, originalHeight: 0,\n\tindex: 0,\n\trotate: false,\n\tsplits: null,\n\tpads: null\n};\n\nspine.AtlasReader = function (text)\n{\n\tthis.lines = text.split(/\\r\\n|\\r|\\n/);\n};\nspine.AtlasReader.prototype = {\n\tindex: 0,\n trim: function (value)\n {\n\t\treturn value.replace(/^\\s+|\\s+$/g, \"\");\n\t},\n readLine: function ()\n {\n\t\tif (this.index >= this.lines.length) return null;\n\t\treturn this.lines[this.index++];\n\t},\n readValue: function ()\n {\n\t\tvar line = this.readLine();\n\t\tvar colon = line.indexOf(\":\");\n\t\tif (colon == -1) throw \"Invalid line: \" + line;\n\t\treturn this.trim(line.substring(colon + 1));\n\t},\n\t/** Returns the number of tuple values read (1, 2 or 4). */\n readTuple: function (tuple)\n {\n\t\tvar line = this.readLine();\n\t\tvar colon = line.indexOf(\":\");\n\t\tif (colon == -1) throw \"Invalid line: \" + line;\n\t\tvar i = 0, lastMatch = colon + 1;\n for (; i < 3; i++)\n {\n\t\t\tvar comma = line.indexOf(\",\", lastMatch);\n\t\t\tif (comma == -1) break;\n\t\t\ttuple[i] = this.trim(line.substr(lastMatch, comma - lastMatch));\n\t\t\tlastMatch = comma + 1;\n\t\t}\n\t\ttuple[i] = this.trim(line.substring(lastMatch));\n\t\treturn i + 1;\n\t}\n};\n\nspine.AtlasAttachmentParser = function (atlas)\n{\n\tthis.atlas = atlas;\n};\nspine.AtlasAttachmentParser.prototype = {\n newRegionAttachment: function (skin, name, path)\n {\n\t\tvar region = this.atlas.findRegion(path);\n\t\tif (!region) throw \"Region not found in atlas: \" + path + \" (region attachment: \" + name + \")\";\n\t\tvar attachment = new spine.RegionAttachment(name);\n\t\tattachment.rendererObject = region;\n\t\tattachment.setUVs(region.u, region.v, region.u2, region.v2, region.rotate);\n\t\tattachment.regionOffsetX = region.offsetX;\n\t\tattachment.regionOffsetY = region.offsetY;\n\t\tattachment.regionWidth = region.width;\n\t\tattachment.regionHeight = region.height;\n\t\tattachment.regionOriginalWidth = region.originalWidth;\n\t\tattachment.regionOriginalHeight = region.originalHeight;\n\t\treturn attachment;\n\t},\n newMeshAttachment: function (skin, name, path)\n {\n\t\tvar region = this.atlas.findRegion(path);\n\t\tif (!region) throw \"Region not found in atlas: \" + path + \" (mesh attachment: \" + name + \")\";\n\t\tvar attachment = new spine.MeshAttachment(name);\n\t\tattachment.rendererObject = region;\n\t\tattachment.regionU = region.u;\n\t\tattachment.regionV = region.v;\n\t\tattachment.regionU2 = region.u2;\n\t\tattachment.regionV2 = region.v2;\n\t\tattachment.regionRotate = region.rotate;\n\t\tattachment.regionOffsetX = region.offsetX;\n\t\tattachment.regionOffsetY = region.offsetY;\n\t\tattachment.regionWidth = region.width;\n\t\tattachment.regionHeight = region.height;\n\t\tattachment.regionOriginalWidth = region.originalWidth;\n\t\tattachment.regionOriginalHeight = region.originalHeight;\n\t\treturn attachment;\n\t},\n newSkinnedMeshAttachment: function (skin, name, path)\n {\n\t\tvar region = this.atlas.findRegion(path);\n\t\tif (!region) throw \"Region not found in atlas: \" + path + \" (skinned mesh attachment: \" + name + \")\";\n\t\tvar attachment = new spine.SkinnedMeshAttachment(name);\n\t\tattachment.rendererObject = region;\n\t\tattachment.regionU = region.u;\n\t\tattachment.regionV = region.v;\n\t\tattachment.regionU2 = region.u2;\n\t\tattachment.regionV2 = region.v2;\n\t\tattachment.regionRotate = region.rotate;\n\t\tattachment.regionOffsetX = region.offsetX;\n\t\tattachment.regionOffsetY = region.offsetY;\n\t\tattachment.regionWidth = region.width;\n\t\tattachment.regionHeight = region.height;\n\t\tattachment.regionOriginalWidth = region.originalWidth;\n\t\tattachment.regionOriginalHeight = region.originalHeight;\n\t\treturn attachment;\n\t},\n newBoundingBoxAttachment: function (skin, name)\n {\n\t\treturn new spine.BoundingBoxAttachment(name);\n\t}\n};\n\nspine.SkeletonBounds = function ()\n{\n\tthis.polygonPool = [];\n\tthis.polygons = [];\n\tthis.boundingBoxes = [];\n};\nspine.SkeletonBounds.prototype = {\n\tminX: 0, minY: 0, maxX: 0, maxY: 0,\n update: function (skeleton, updateAabb)\n {\n\t\tvar slots = skeleton.slots;\n\t\tvar slotCount = slots.length;\n\t\tvar x = skeleton.x, y = skeleton.y;\n\t\tvar boundingBoxes = this.boundingBoxes;\n\t\tvar polygonPool = this.polygonPool;\n\t\tvar polygons = this.polygons;\n\n\t\tboundingBoxes.length = 0;\n\t\tfor (var i = 0, n = polygons.length; i < n; i++)\n\t\t\tpolygonPool.push(polygons[i]);\n\t\tpolygons.length = 0;\n\n for (var i = 0; i < slotCount; i++)\n {\n\t\t\tvar slot = slots[i];\n\t\t\tvar boundingBox = slot.attachment;\n\t\t\tif (boundingBox.type != spine.AttachmentType.boundingbox) continue;\n\t\t\tboundingBoxes.push(boundingBox);\n\n\t\t\tvar poolCount = polygonPool.length, polygon;\n if (poolCount > 0)\n {\n\t\t\t\tpolygon = polygonPool[poolCount - 1];\n\t\t\t\tpolygonPool.splice(poolCount - 1, 1);\n\t\t\t} else\n\t\t\t\tpolygon = [];\n\t\t\tpolygons.push(polygon);\n\n\t\t\tpolygon.length = boundingBox.vertices.length;\n\t\t\tboundingBox.computeWorldVertices(x, y, slot.bone, polygon);\n\t\t}\n\n\t\tif (updateAabb) this.aabbCompute();\n\t},\n aabbCompute: function ()\n {\n\t\tvar polygons = this.polygons;\n\t\tvar minX = Number.MAX_VALUE, minY = Number.MAX_VALUE, maxX = Number.MIN_VALUE, maxY = Number.MIN_VALUE;\n for (var i = 0, n = polygons.length; i < n; i++)\n {\n\t\t\tvar vertices = polygons[i];\n for (var ii = 0, nn = vertices.length; ii < nn; ii += 2)\n {\n\t\t\t\tvar x = vertices[ii];\n\t\t\t\tvar y = vertices[ii + 1];\n\t\t\t\tminX = Math.min(minX, x);\n\t\t\t\tminY = Math.min(minY, y);\n\t\t\t\tmaxX = Math.max(maxX, x);\n\t\t\t\tmaxY = Math.max(maxY, y);\n\t\t\t}\n\t\t}\n\t\tthis.minX = minX;\n\t\tthis.minY = minY;\n\t\tthis.maxX = maxX;\n\t\tthis.maxY = maxY;\n\t},\n\t/** Returns true if the axis aligned bounding box contains the point. */\n aabbContainsPoint: function (x, y)\n {\n\t\treturn x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n\t},\n\t/** Returns true if the axis aligned bounding box intersects the line segment. */\n aabbIntersectsSegment: function (x1, y1, x2, y2)\n {\n\t\tvar minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;\n\t\tif ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY))\n\t\t\treturn false;\n\t\tvar m = (y2 - y1) / (x2 - x1);\n\t\tvar y = m * (minX - x1) + y1;\n\t\tif (y > minY && y < maxY) return true;\n\t\ty = m * (maxX - x1) + y1;\n\t\tif (y > minY && y < maxY) return true;\n\t\tvar x = (minY - y1) / m + x1;\n\t\tif (x > minX && x < maxX) return true;\n\t\tx = (maxY - y1) / m + x1;\n\t\tif (x > minX && x < maxX) return true;\n\t\treturn false;\n\t},\n\t/** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */\n aabbIntersectsSkeleton: function (bounds)\n {\n\t\treturn this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\n\t},\n\t/** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more\n\t * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */\n containsPoint: function (x, y)\n {\n\t\tvar polygons = this.polygons;\n\t\tfor (var i = 0, n = polygons.length; i < n; i++)\n\t\t\tif (this.polygonContainsPoint(polygons[i], x, y)) return this.boundingBoxes[i];\n\t\treturn null;\n\t},\n\t/** Returns the first bounding box attachment that contains the line segment, or null. When doing many checks, it is usually\n\t * more efficient to only call this method if {@link #aabbIntersectsSegment(float, float, float, float)} returns true. */\n intersectsSegment: function (x1, y1, x2, y2)\n {\n\t\tvar polygons = this.polygons;\n\t\tfor (var i = 0, n = polygons.length; i < n; i++)\n\t\t\tif (polygons[i].intersectsSegment(x1, y1, x2, y2)) return this.boundingBoxes[i];\n\t\treturn null;\n\t},\n\t/** Returns true if the polygon contains the point. */\n polygonContainsPoint: function (polygon, x, y)\n {\n\t\tvar nn = polygon.length;\n\t\tvar prevIndex = nn - 2;\n\t\tvar inside = false;\n for (var ii = 0; ii < nn; ii += 2)\n {\n\t\t\tvar vertexY = polygon[ii + 1];\n\t\t\tvar prevY = polygon[prevIndex + 1];\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y))\n {\n\t\t\t\tvar vertexX = polygon[ii];\n\t\t\t\tif (vertexX + (y - vertexY) / (prevY - vertexY) * (polygon[prevIndex] - vertexX) < x) inside = !inside;\n\t\t\t}\n\t\t\tprevIndex = ii;\n\t\t}\n\t\treturn inside;\n\t},\n\t/** Returns true if the polygon contains the line segment. */\n polygonIntersectsSegment: function (polygon, x1, y1, x2, y2)\n {\n\t\tvar nn = polygon.length;\n\t\tvar width12 = x1 - x2, height12 = y1 - y2;\n\t\tvar det1 = x1 * y2 - y1 * x2;\n\t\tvar x3 = polygon[nn - 2], y3 = polygon[nn - 1];\n for (var ii = 0; ii < nn; ii += 2)\n {\n\t\t\tvar x4 = polygon[ii], y4 = polygon[ii + 1];\n\t\t\tvar det2 = x3 * y4 - y3 * x4;\n\t\t\tvar width34 = x3 - x4, height34 = y3 - y4;\n\t\t\tvar det3 = width12 * height34 - height12 * width34;\n\t\t\tvar x = (det1 * width34 - width12 * det2) / det3;\n if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1)))\n {\n\t\t\t\tvar y = (det1 * height34 - height12 * det2) / det3;\n\t\t\t\tif (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) return true;\n\t\t\t}\n\t\t\tx3 = x4;\n\t\t\ty3 = y4;\n\t\t}\n\t\treturn false;\n\t},\n getPolygon: function (attachment)\n {\n\t\tvar index = this.boundingBoxes.indexOf(attachment);\n\t\treturn index == -1 ? null : this.polygons[index];\n\t},\n getWidth: function ()\n {\n\t\treturn this.maxX - this.minX;\n\t},\n getHeight: function ()\n {\n\t\treturn this.maxY - this.minY;\n\t}\n};\n", "/**\n * @file Main export of the PIXI spine library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.spine\n */\nmodule.exports = {\n Spine: require('./Spine'),\n SpineRuntime: require('./SpineRuntime')\n};\n", "var core = require('../core');\n\n/**\n * A BitmapText object will create a line or multiple lines of text using bitmap font. To\n * split a line you can use '\\n', '\\r' or '\\r\\n' in your string. You can generate the fnt files using:\n *\n * A BitmapText can only be created when the font is loaded\n *\n * ```js\n * // in this case the font is in a file called 'desyrel.fnt'\n * var bitmapText = new PIXI.BitmapText(\"text using a fancy font!\", {font: \"35px Desyrel\", align: \"right\"});\n * ```\n *\n *\n * http://www.angelcode.com/products/bmfont/ for windows or\n * http://www.bmglyph.com/ for mac.\n *\n * @class\n * @extends Container\n * @memberof PIXI.text\n * @param text {string} The copy that you would like the text to display\n * @param style {object} The style parameters\n * @param style.font {string|object} The font descriptor for the object, can be passed as a string of form\n * \"24px FontName\" or \"FontName\" or as an object with explicit name/size properties.\n * @param [style.font.size] {number} The size of the font in pixels, e.g. 24\n * @param [style.font.name] {string} The bitmap font id\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n */\nfunction BitmapText(text, style)\n{\n core.Container.call(this);\n\n /**\n * The width of the overall text, different from fontSize,\n * which is defined in the style object\n *\n * @member {number}\n * @readOnly\n */\n this.textWidth = 0;\n\n /**\n * The height of the overall text, different from fontSize,\n * which is defined in the style object\n *\n * @member {number}\n * @readOnly\n */\n this.textHeight = 0;\n\n /**\n * Private tracker for the letter sprite pool.\n *\n * @member {Sprite[]}\n * @private\n */\n this._glyphs = [];\n\n /**\n * Private tracker for the current style.\n *\n * @member {object}\n * @private\n */\n this._style = {\n tint: style.tint,\n align: style.align,\n fontName: null,\n fontSize: 0\n };\n\n /**\n * Private tracker for the current font.\n *\n * @member {object}\n * @private\n */\n this.font = style.font; // run font setter\n\n /**\n * Private tracker for the current text.\n *\n * @member {string}\n * @private\n */\n this._text = text;\n\n /**\n * The max width of this bitmap text in pixels. If the text provided is longer than the value provided, line breaks will be automatically inserted in the last whitespace.\n * Disable by setting value to 0\n *\n * @member {number}\n */\n this.maxWidth = 0;\n\n /**\n * The dirty state of this object.\n *\n * @member {boolean}\n */\n this.dirty = false;\n\n this.updateText();\n}\n\n// constructor\nBitmapText.prototype = Object.create(core.Container.prototype);\nBitmapText.prototype.constructor = BitmapText;\nmodule.exports = BitmapText;\n\nObject.defineProperties(BitmapText.prototype, {\n /**\n * The tint of the BitmapText object\n *\n * @member {number}\n * @memberof BitmapText#\n */\n tint: {\n get: function ()\n {\n return this._style.tint;\n },\n set: function (value)\n {\n this._style.tint = (typeof value === 'number' && value >= 0) ? value : 0xFFFFFF;\n\n this.dirty = true;\n }\n },\n\n /**\n * The alignment of the BitmapText object\n *\n * @member {string}\n * @default 'left'\n * @memberof BitmapText#\n */\n align: {\n get: function ()\n {\n return this._style.align;\n },\n set: function (value)\n {\n this._style.align = value;\n\n this.dirty = true;\n }\n },\n\n /**\n * The font descriptor of the BitmapText object\n *\n * @member {Font}\n * @memberof BitmapText#\n */\n font: {\n get: function ()\n {\n return this._style.font;\n },\n set: function (value)\n {\n if (typeof value === 'string') {\n value = value.split(' ');\n\n this._style.fontName = value.slice(1).join(' ');\n this._style.fontSize = value.length >= 2 ? parseInt(value[0], 10) : BitmapText.fonts[this.fontName].size;\n }\n else {\n this._style.fontName = value.name;\n this._style.fontSize = typeof value.size === 'number' ? value.size : parseInt(value.size, 10);\n }\n\n this.dirty = true;\n }\n },\n\n /**\n * The text of the BitmapText object\n *\n * @member {string}\n * @memberof BitmapText#\n */\n text: {\n get: function ()\n {\n return this._text;\n },\n set: function (value)\n {\n this._text = value;\n\n this.dirty = true;\n }\n }\n});\n\n/**\n * Renders text and updates it when needed\n *\n * @private\n */\nBitmapText.prototype.updateText = function ()\n{\n var data = BitmapText.fonts[this._style.fontName];\n var pos = new core.math.Point();\n var prevCharCode = null;\n var chars = [];\n var lastLineWidth = 0;\n var maxLineWidth = 0;\n var lineWidths = [];\n var line = 0;\n var scale = this._style.fontSize / data.size;\n var lastSpace = -1;\n\n for (var i = 0; i < this.text.length; i++)\n {\n var charCode = this.text.charCodeAt(i);\n lastSpace = /(\\s)/.test(this.text.charAt(i)) ? i : lastSpace;\n\n if (/(?:\\r\\n|\\r|\\n)/.test(this.text.charAt(i)))\n {\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n line++;\n\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n continue;\n }\n\n if (lastSpace !== -1 && this.maxWidth > 0 && pos.x * scale > this.maxWidth)\n {\n chars.splice(lastSpace, i - lastSpace);\n i = lastSpace;\n lastSpace = -1;\n\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n line++;\n\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n continue;\n }\n\n var charData = data.chars[charCode];\n\n if (!charData)\n {\n continue;\n }\n\n if (prevCharCode && charData.kerning[prevCharCode])\n {\n pos.x += charData.kerning[prevCharCode];\n }\n\n chars.push({texture:charData.texture, line: line, charCode: charCode, position: new core.math.Point(pos.x + charData.xOffset, pos.y + charData.yOffset)});\n lastLineWidth = pos.x + (charData.texture.width + charData.xOffset);\n pos.x += charData.xAdvance;\n\n prevCharCode = charCode;\n }\n\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n\n var lineAlignOffsets = [];\n\n for (i = 0; i <= line; i++)\n {\n var alignOffset = 0;\n\n if (this._style.align === 'right')\n {\n alignOffset = maxLineWidth - lineWidths[i];\n }\n else if (this._style.align === 'center')\n {\n alignOffset = (maxLineWidth - lineWidths[i]) / 2;\n }\n\n lineAlignOffsets.push(alignOffset);\n }\n\n var lenChars = chars.length;\n var tint = this.tint;\n\n for (i = 0; i < lenChars; i++)\n {\n var c = this._glyphs[i]; // get the next glyph sprite\n\n if (c)\n {\n c.texture = chars[i].texture;\n }\n else\n {\n c = new core.Sprite(chars[i].texture);\n this._glyphs.push(c);\n }\n\n c.position.x = (chars[i].position.x + lineAlignOffsets[chars[i].line]) * scale;\n c.position.y = chars[i].position.y * scale;\n c.scale.x = c.scale.y = scale;\n c.tint = tint;\n\n if (!c.parent)\n {\n this.addChild(c);\n }\n }\n\n // remove unnecessary children.\n for (i = lenChars; i < this._glyphs.length; ++i)\n {\n this.removeChild(this._glyphs[i]);\n }\n\n this.textWidth = maxLineWidth * scale;\n this.textHeight = (pos.y + data.lineHeight) * scale;\n};\n\n/**\n * Updates the transform of this object\n *\n * @private\n */\nBitmapText.prototype.updateTransform = function ()\n{\n if (this.dirty)\n {\n this.updateText();\n this.dirty = false;\n }\n\n this.containerUpdateTransform();\n};\n\nBitmapText.fonts = {};\n", - "var core = require('../core');\n\n/**\n * A Text Object will create a line or multiple lines of text. To split a line you can use '\\n' in your text string,\n * or add a wordWrap property set to true and and wordWrapWidth property with a value in the style object.\n *\n * A Text can be created directly from a string and a style object\n *\n * ```js\n * var text = new PIXI.Text('This is a pixi text',{font : '24px Arial', fill : 0xff1010, align : 'center'});\n * ```\n *\n * @class\n * @extends Sprite\n * @memberof PIXI.text\n * @param text {string} The copy that you would like the text to display\n * @param [style] {object} The style parameters\n * @param [style.font] {string} default 'bold 20px Arial' The style and size of the font\n * @param [style.fill='black'] {String|Number} A canvas fillstyle that will be used on the text e.g 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke] {String|Number} A canvas fillstyle that will be used on the text stroke e.g 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap, it needs wordWrap to be set to true\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/4] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n */\nfunction Text(text, style, resolution)\n{\n /**\n * The canvas element that everything is drawn to\n *\n * @member {HTMLCanvasElement}\n */\n this.canvas = document.createElement('canvas');\n\n /**\n * The canvas 2d context that everything is drawn with\n * @member {HTMLCanvasElement}\n */\n this.context = this.canvas.getContext('2d');\n\n /**\n * The resolution of the canvas.\n * @member {number}\n */\n this.resolution = resolution || core.RESOLUTION;\n\n /**\n * Private tracker for the current text.\n *\n * @member {string}\n * @private\n */\n this._text = null;\n\n /**\n * Private tracker for the current style.\n *\n * @member {object}\n * @private\n */\n this._style = null;\n\n var texture = core.Texture.fromCanvas(this.canvas);\n texture.trim = new core.math.Rectangle();\n core.Sprite.call(this, texture);\n\n\n this.text = text;\n this.style = style;\n}\n\n// constructor\nText.prototype = Object.create(core.Sprite.prototype);\nText.prototype.constructor = Text;\nmodule.exports = Text;\n\nText.fontPropertiesCache = {};\nText.fontPropertiesCanvas = document.createElement('canvas');\nText.fontPropertiesContext = Text.fontPropertiesCanvas.getContext('2d');\n\nObject.defineProperties(Text.prototype, {\n /**\n * The width of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n width: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.x * this._texture._frame.width;\n },\n set: function (value)\n {\n this.scale.x = value / this._texture._frame.width;\n this._width = value;\n }\n },\n\n /**\n * The height of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n height: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.y * this._texture._frame.height;\n },\n set: function (value)\n {\n this.scale.y = value / this._texture._frame.height;\n this._height = value;\n }\n },\n\n /**\n * Set the style of the text\n *\n * @param [style] {object} The style parameters\n * @param [style.font='bold 20pt Arial'] {string} The style and size of the font\n * @param [style.fill='black'] {object} A canvas fillstyle that will be used on the text eg 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke='black'] {string} A canvas fillstyle that will be used on the text stroke eg 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/6] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n * @memberof Text#\n */\n style: {\n get: function ()\n {\n return this._style;\n },\n set: function (style)\n {\n style = style || {};\n style.font = style.font || 'bold 20pt Arial';\n style.fill = style.fill || 'black';\n style.align = style.align || 'left';\n style.stroke = style.stroke || 'black'; //provide a default, see: https://github.com/GoodBoyDigital/pixi.js/issues/136\n style.strokeThickness = style.strokeThickness || 0;\n style.wordWrap = style.wordWrap || false;\n style.wordWrapWidth = style.wordWrapWidth || 100;\n\n style.dropShadow = style.dropShadow || false;\n style.dropShadowColor = style.dropShadowColor || '#000000';\n style.dropShadowAngle = style.dropShadowAngle || Math.PI / 6;\n style.dropShadowDistance = style.dropShadowDistance || 5;\n\n style.padding = style.padding || 0;\n\n this._style = style;\n this.dirty = true;\n }\n },\n\n /**\n * Set the copy for the text object. To split a line you can use '\\n'.\n *\n * @param text {string} The copy that you would like the text to display\n * @memberof Text#\n */\n text: {\n get: function()\n {\n return this._text;\n },\n set: function (text){\n text = text.toString() || ' ';\n if (this._text === text)\n {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n }\n});\n\n/**\n * Renders text and updates it when needed\n *\n * @private\n */\nText.prototype.updateText = function ()\n{\n var style = this._style;\n this.context.font = style.font;\n\n // word wrap\n // preserve original text\n var outputText = style.wordWrap ? this.wordWrap(this._text) : this._text;\n\n // split text into lines\n var lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n\n // calculate text width\n var lineWidths = new Array(lines.length);\n var maxLineWidth = 0;\n var fontProperties = this.determineFontProperties(style.font);\n for (var i = 0; i < lines.length; i++)\n {\n var lineWidth = this.context.measureText(lines[i]).width;\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n\n var width = maxLineWidth + style.strokeThickness;\n if (style.dropShadow)\n {\n width += style.dropShadowDistance;\n }\n\n this.canvas.width = ( width + this.context.lineWidth ) * this.resolution;\n\n // calculate text height\n var lineHeight = this.style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n\n var height = lineHeight * lines.length;\n if (style.dropShadow)\n {\n height += style.dropShadowDistance;\n }\n\n this.canvas.height = ( height + this._style.padding * 2 ) * this.resolution;\n\n this.context.scale( this.resolution, this.resolution);\n\n if (navigator.isCocoonJS)\n {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n }\n\n //this.context.fillStyle=\"#FF0000\";\n //this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n this.context.font = style.font;\n this.context.strokeStyle = style.stroke;\n this.context.lineWidth = style.strokeThickness;\n this.context.textBaseline = 'alphabetic';\n //this.context.lineJoin = 'round';\n\n var linePositionX;\n var linePositionY;\n\n if (style.dropShadow)\n {\n this.context.fillStyle = style.dropShadowColor;\n\n var xShadowOffset = Math.cos(style.dropShadowAngle) * style.dropShadowDistance;\n var yShadowOffset = Math.sin(style.dropShadowAngle) * style.dropShadowDistance;\n\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX + xShadowOffset, linePositionY + yShadowOffset + this._style.padding);\n }\n }\n }\n\n //set canvas text styles\n this.context.fillStyle = style.fill;\n\n //draw lines line by line\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.stroke && style.strokeThickness)\n {\n this.context.strokeText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n }\n\n this.updateTexture();\n};\n\n/**\n * Updates texture size based on canvas size\n *\n * @private\n */\nText.prototype.updateTexture = function ()\n{\n var texture = this._texture;\n\n texture.baseTexture.hasLoaded = true;\n texture.baseTexture.resolution = this.resolution;\n\n texture.baseTexture.width = this.canvas.width / this.resolution;\n texture.baseTexture.height = this.canvas.height / this.resolution;\n texture.crop.width = texture._frame.width = this.canvas.width / this.resolution;\n texture.crop.height = texture._frame.height = this.canvas.height / this.resolution;\n\n texture.trim.x = 0;\n texture.trim.y = -this._style.padding;\n\n texture.trim.width = texture._frame.width;\n texture.trim.height = texture._frame.height - this._style.padding*2;\n\n this._width = this.canvas.width / this.resolution;\n this._height = this.canvas.height / this.resolution;\n\n texture.update();\n\n this.dirty = false;\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer}\n */\nText.prototype.renderWebGL = function (renderer)\n{\n if (this.dirty)\n {\n this.resolution = renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype.renderWebGL.call(this, renderer);\n};\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer}\n */\nText.prototype._renderCanvas = function (renderer)\n{\n if (this.dirty)\n {\n this.resolution = renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype._renderCanvas.call(this, renderer);\n};\n\n/**\n * Calculates the ascent, descent and fontSize of a given fontStyle\n *\n * @param fontStyle {object}\n * @private\n */\nText.prototype.determineFontProperties = function (fontStyle)\n{\n var properties = Text.fontPropertiesCache[fontStyle];\n\n if (!properties)\n {\n properties = {};\n\n var canvas = Text.fontPropertiesCanvas;\n var context = Text.fontPropertiesContext;\n\n context.font = fontStyle;\n\n var width = Math.ceil(context.measureText('|MÉq').width);\n var baseline = Math.ceil(context.measureText('M').width);\n var height = 2 * baseline;\n\n baseline = baseline * 1.4 | 0;\n\n canvas.width = width;\n canvas.height = height;\n\n context.fillStyle = '#f00';\n context.fillRect(0, 0, width, height);\n\n context.font = fontStyle;\n\n context.textBaseline = 'alphabetic';\n context.fillStyle = '#000';\n context.fillText('|MÉq', 0, baseline);\n\n var imagedata = context.getImageData(0, 0, width, height).data;\n var pixels = imagedata.length;\n var line = width * 4;\n\n var i, j;\n\n var idx = 0;\n var stop = false;\n\n // ascent. scan from top to bottom until we find a non red pixel\n for (i = 0; i < baseline; i++)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx += line;\n }\n else\n {\n break;\n }\n }\n\n properties.ascent = baseline - i;\n\n idx = pixels - line;\n stop = false;\n\n // descent. scan from bottom to top until we find a non red pixel\n for (i = height; i > baseline; i--)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx -= line;\n }\n else\n {\n break;\n }\n }\n\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n\n Text.fontPropertiesCache[fontStyle] = properties;\n }\n\n return properties;\n};\n\n/**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n *\n * @param text {string}\n * @private\n */\nText.prototype.wordWrap = function (text)\n{\n // Greedy wrapping algorithm that will wrap words as the line grows longer\n // than its horizontal bounds.\n var result = '';\n var lines = text.split('\\n');\n var wordWrapWidth = this._style.wordWrapWidth;\n for (var i = 0; i < lines.length; i++)\n {\n var spaceLeft = wordWrapWidth;\n var words = lines[i].split(' ');\n for (var j = 0; j < words.length; j++)\n {\n var wordWidth = this.context.measureText(words[j]).width;\n var wordWidthWithSpace = wordWidth + this.context.measureText(' ').width;\n if (j === 0 || wordWidthWithSpace > spaceLeft)\n {\n // Skip printing the newline if it's the first word of the line that is\n // greater than the word wrap width.\n if (j > 0)\n {\n result += '\\n';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth;\n }\n else\n {\n spaceLeft -= wordWidthWithSpace;\n result += ' ' + words[j];\n }\n }\n\n if (i < lines.length-1)\n {\n result += '\\n';\n }\n }\n return result;\n};\n\n/**\n * Returns the bounds of the Text as a rectangle. The bounds calculation takes the worldTransform into account.\n *\n * @param matrix {Matrix} the transformation matrix of the Text\n * @return {Rectangle} the framing rectangle\n */\nText.prototype.getBounds = function (matrix)\n{\n if (this.dirty)\n {\n this.updateText();\n }\n\n return core.Sprite.prototype.getBounds.call(this, matrix);\n};\n\n/**\n * Destroys this text object.\n *\n * @param destroyBaseTexture {boolean} whether to destroy the base texture as well\n */\nText.prototype.destroy = function (destroyBaseTexture)\n{\n // make sure to reset the the context and canvas.. dont want this hanging around in memory!\n this.context = null;\n this.canvas = null;\n\n this._texture.destroy(destroyBaseTexture === undefined ? true : destroyBaseTexture);\n};\n", + "var core = require('../core');\n\n/**\n * A Text Object will create a line or multiple lines of text. To split a line you can use '\\n' in your text string,\n * or add a wordWrap property set to true and and wordWrapWidth property with a value in the style object.\n *\n * A Text can be created directly from a string and a style object\n *\n * ```js\n * var text = new PIXI.Text('This is a pixi text',{font : '24px Arial', fill : 0xff1010, align : 'center'});\n * ```\n *\n * @class\n * @extends Sprite\n * @memberof PIXI.text\n * @param text {string} The copy that you would like the text to display\n * @param [style] {object} The style parameters\n * @param [style.font] {string} default 'bold 20px Arial' The style and size of the font\n * @param [style.fill='black'] {String|Number} A canvas fillstyle that will be used on the text e.g 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke] {String|Number} A canvas fillstyle that will be used on the text stroke e.g 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap, it needs wordWrap to be set to true\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/4] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n */\nfunction Text(text, style, resolution)\n{\n /**\n * The canvas element that everything is drawn to\n *\n * @member {HTMLCanvasElement}\n */\n this.canvas = document.createElement('canvas');\n\n /**\n * The canvas 2d context that everything is drawn with\n * @member {HTMLCanvasElement}\n */\n this.context = this.canvas.getContext('2d');\n\n /**\n * The resolution of the canvas.\n * @member {number}\n */\n this.resolution = resolution || core.RESOLUTION;\n\n /**\n * Private tracker for the current text.\n *\n * @member {string}\n * @private\n */\n this._text = null;\n\n /**\n * Private tracker for the current style.\n *\n * @member {object}\n * @private\n */\n this._style = null;\n\n var texture = core.Texture.fromCanvas(this.canvas);\n texture.trim = new core.math.Rectangle();\n core.Sprite.call(this, texture);\n\n\n this.text = text;\n this.style = style;\n}\n\n// constructor\nText.prototype = Object.create(core.Sprite.prototype);\nText.prototype.constructor = Text;\nmodule.exports = Text;\n\nText.fontPropertiesCache = {};\nText.fontPropertiesCanvas = document.createElement('canvas');\nText.fontPropertiesContext = Text.fontPropertiesCanvas.getContext('2d');\n\nObject.defineProperties(Text.prototype, {\n /**\n * The width of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n width: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.x * this._texture._frame.width;\n },\n set: function (value)\n {\n this.scale.x = value / this._texture._frame.width;\n this._width = value;\n }\n },\n\n /**\n * The height of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n height: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.y * this._texture._frame.height;\n },\n set: function (value)\n {\n this.scale.y = value / this._texture._frame.height;\n this._height = value;\n }\n },\n\n /**\n * Set the style of the text\n *\n * @param [style] {object} The style parameters\n * @param [style.font='bold 20pt Arial'] {string} The style and size of the font\n * @param [style.fill='black'] {object} A canvas fillstyle that will be used on the text eg 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke='black'] {string} A canvas fillstyle that will be used on the text stroke eg 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/6] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n * @memberof Text#\n */\n style: {\n get: function ()\n {\n return this._style;\n },\n set: function (style)\n {\n style = style || {};\n style.font = style.font || 'bold 20pt Arial';\n style.fill = style.fill || 'black';\n style.align = style.align || 'left';\n style.stroke = style.stroke || 'black'; //provide a default, see: https://github.com/GoodBoyDigital/pixi.js/issues/136\n style.strokeThickness = style.strokeThickness || 0;\n style.wordWrap = style.wordWrap || false;\n style.wordWrapWidth = style.wordWrapWidth || 100;\n\n style.dropShadow = style.dropShadow || false;\n style.dropShadowColor = style.dropShadowColor || '#000000';\n style.dropShadowAngle = style.dropShadowAngle || Math.PI / 6;\n style.dropShadowDistance = style.dropShadowDistance || 5;\n\n style.padding = style.padding || 0;\n\n this._style = style;\n this.dirty = true;\n }\n },\n\n /**\n * Set the copy for the text object. To split a line you can use '\\n'.\n *\n * @param text {string} The copy that you would like the text to display\n * @memberof Text#\n */\n text: {\n get: function()\n {\n return this._text;\n },\n set: function (text){\n text = text.toString() || ' ';\n if (this._text === text)\n {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n }\n});\n\n/**\n * Renders text and updates it when needed\n *\n * @private\n */\nText.prototype.updateText = function ()\n{\n var style = this._style;\n this.context.font = style.font;\n\n // word wrap\n // preserve original text\n var outputText = style.wordWrap ? this.wordWrap(this._text) : this._text;\n\n // split text into lines\n var lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n\n // calculate text width\n var lineWidths = new Array(lines.length);\n var maxLineWidth = 0;\n var fontProperties = this.determineFontProperties(style.font);\n for (var i = 0; i < lines.length; i++)\n {\n var lineWidth = this.context.measureText(lines[i]).width;\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n\n var width = maxLineWidth + style.strokeThickness;\n if (style.dropShadow)\n {\n width += style.dropShadowDistance;\n }\n\n this.canvas.width = ( width + this.context.lineWidth ) * this.resolution;\n\n // calculate text height\n var lineHeight = this.style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n\n var height = lineHeight * lines.length;\n if (style.dropShadow)\n {\n height += style.dropShadowDistance;\n }\n\n this.canvas.height = ( height + this._style.padding * 2 ) * this.resolution;\n\n this.context.scale( this.resolution, this.resolution);\n\n if (navigator.isCocoonJS)\n {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n }\n\n //this.context.fillStyle=\"#FF0000\";\n //this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n this.context.font = style.font;\n this.context.strokeStyle = style.stroke;\n this.context.lineWidth = style.strokeThickness;\n this.context.textBaseline = 'alphabetic';\n //this.context.lineJoin = 'round';\n\n var linePositionX;\n var linePositionY;\n\n if (style.dropShadow)\n {\n this.context.fillStyle = style.dropShadowColor;\n\n var xShadowOffset = Math.cos(style.dropShadowAngle) * style.dropShadowDistance;\n var yShadowOffset = Math.sin(style.dropShadowAngle) * style.dropShadowDistance;\n\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX + xShadowOffset, linePositionY + yShadowOffset + this._style.padding);\n }\n }\n }\n\n //set canvas text styles\n this.context.fillStyle = style.fill;\n\n //draw lines line by line\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.stroke && style.strokeThickness)\n {\n this.context.strokeText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n }\n\n this.updateTexture();\n};\n\n/**\n * Updates texture size based on canvas size\n *\n * @private\n */\nText.prototype.updateTexture = function ()\n{\n var texture = this._texture;\n\n texture.baseTexture.hasLoaded = true;\n texture.baseTexture.resolution = this.resolution;\n\n texture.baseTexture.width = this.canvas.width / this.resolution;\n texture.baseTexture.height = this.canvas.height / this.resolution;\n texture.crop.width = texture._frame.width = this.canvas.width / this.resolution;\n texture.crop.height = texture._frame.height = this.canvas.height / this.resolution;\n\n texture.trim.x = 0;\n texture.trim.y = -this._style.padding;\n\n texture.trim.width = texture._frame.width;\n texture.trim.height = texture._frame.height - this._style.padding*2;\n\n this._width = this.canvas.width / this.resolution;\n this._height = this.canvas.height / this.resolution;\n\n texture.update();\n\n this.dirty = false;\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer}\n */\nText.prototype.renderWebGL = function (renderer)\n{\n if (this.dirty)\n {\n //this.resolution = 1//renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype.renderWebGL.call(this, renderer);\n};\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer}\n */\nText.prototype._renderCanvas = function (renderer)\n{\n if (this.dirty)\n {\n // this.resolution = 1//renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype._renderCanvas.call(this, renderer);\n};\n\n/**\n * Calculates the ascent, descent and fontSize of a given fontStyle\n *\n * @param fontStyle {object}\n * @private\n */\nText.prototype.determineFontProperties = function (fontStyle)\n{\n var properties = Text.fontPropertiesCache[fontStyle];\n\n if (!properties)\n {\n properties = {};\n\n var canvas = Text.fontPropertiesCanvas;\n var context = Text.fontPropertiesContext;\n\n context.font = fontStyle;\n\n var width = Math.ceil(context.measureText('|MÉq').width);\n var baseline = Math.ceil(context.measureText('M').width);\n var height = 2 * baseline;\n\n baseline = baseline * 1.4 | 0;\n\n canvas.width = width;\n canvas.height = height;\n\n context.fillStyle = '#f00';\n context.fillRect(0, 0, width, height);\n\n context.font = fontStyle;\n\n context.textBaseline = 'alphabetic';\n context.fillStyle = '#000';\n context.fillText('|MÉq', 0, baseline);\n\n var imagedata = context.getImageData(0, 0, width, height).data;\n var pixels = imagedata.length;\n var line = width * 4;\n\n var i, j;\n\n var idx = 0;\n var stop = false;\n\n // ascent. scan from top to bottom until we find a non red pixel\n for (i = 0; i < baseline; i++)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx += line;\n }\n else\n {\n break;\n }\n }\n\n properties.ascent = baseline - i;\n\n idx = pixels - line;\n stop = false;\n\n // descent. scan from bottom to top until we find a non red pixel\n for (i = height; i > baseline; i--)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx -= line;\n }\n else\n {\n break;\n }\n }\n\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n\n Text.fontPropertiesCache[fontStyle] = properties;\n }\n\n return properties;\n};\n\n/**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n *\n * @param text {string}\n * @private\n */\nText.prototype.wordWrap = function (text)\n{\n // Greedy wrapping algorithm that will wrap words as the line grows longer\n // than its horizontal bounds.\n var result = '';\n var lines = text.split('\\n');\n var wordWrapWidth = this._style.wordWrapWidth;\n for (var i = 0; i < lines.length; i++)\n {\n var spaceLeft = wordWrapWidth;\n var words = lines[i].split(' ');\n for (var j = 0; j < words.length; j++)\n {\n var wordWidth = this.context.measureText(words[j]).width;\n var wordWidthWithSpace = wordWidth + this.context.measureText(' ').width;\n if (j === 0 || wordWidthWithSpace > spaceLeft)\n {\n // Skip printing the newline if it's the first word of the line that is\n // greater than the word wrap width.\n if (j > 0)\n {\n result += '\\n';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth;\n }\n else\n {\n spaceLeft -= wordWidthWithSpace;\n result += ' ' + words[j];\n }\n }\n\n if (i < lines.length-1)\n {\n result += '\\n';\n }\n }\n return result;\n};\n\n/**\n * Returns the bounds of the Text as a rectangle. The bounds calculation takes the worldTransform into account.\n *\n * @param matrix {Matrix} the transformation matrix of the Text\n * @return {Rectangle} the framing rectangle\n */\nText.prototype.getBounds = function (matrix)\n{\n if (this.dirty)\n {\n this.updateText();\n }\n\n return core.Sprite.prototype.getBounds.call(this, matrix);\n};\n\n/**\n * Destroys this text object.\n *\n * @param destroyBaseTexture {boolean} whether to destroy the base texture as well\n */\nText.prototype.destroy = function (destroyBaseTexture)\n{\n // make sure to reset the the context and canvas.. dont want this hanging around in memory!\n this.context = null;\n this.canvas = null;\n\n this._texture.destroy(destroyBaseTexture === undefined ? true : destroyBaseTexture);\n};\n", "/**\n * @file Main export of the PIXI text library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.text\n */\nmodule.exports = {\n Text: require('./Text'),\n BitmapText: require('./BitmapText')\n};\n", "var core = require('./core');\n\nextendCore(require('./extras'));\nextendCore(require('./filters'));\nextendCore(require('./interaction'));\nextendCore(require('./loaders'));\nextendCore(require('./spine'));\nextendCore(require('./text'));\nextendCore(require('./deprecation'));\n\nfunction extendCore(obj)\n{\n for(var key in obj)\n {\n core[key] = obj[key];\n }\n}\n\nmodule.exports = core;\n" ] diff --git a/bin/pixi.js b/bin/pixi.js index bc34fb8..0416880 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -3091,7 +3091,6 @@ "docs": "./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json" }, "devDependencies": { - "brfs": "^1.2.0", "browserify": "^8.0.2", "chai": "^1.10.0", "del": "^1.1.0", @@ -3123,7 +3122,8 @@ }, "dependencies": { "async": "^0.9.0", - "resource-loader": "^1.2.0" + "resource-loader": "^1.2.1", + "brfs": "^1.2.0" }, "browserify": { "transform": [ @@ -10726,6 +10726,7 @@ { // get the bounds of the object.. var bounds = target.filterArea || target.getBounds(); + //bounds = bounds.clone(); // round off the rectangle to get a nice smoooooooth filter :) bounds.x = bounds.x | 0; @@ -10735,7 +10736,7 @@ // padding! - var padding = filters[0].padding; + var padding = filters[0].padding | 0; bounds.x -= padding; bounds.y -= padding; bounds.width += padding * 2; @@ -10801,12 +10802,18 @@ this.quad.map(this.textureSize, input.frame); + // TODO.. this probably only needs to be done once! gl.bindBuffer(gl.ARRAY_BUFFER, this.quad.vertexBuffer); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.quad.indexBuffer); var filters = filterData.filter; + // assuming all filters follow the correct format?? + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0); + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4); + gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4); + if (filters.length === 1) { // TODO (cengler) - There has to be a better way then setting this each time? @@ -10910,10 +10917,11 @@ //TODO can this be optimised? shader.syncUniforms(); - +/* gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0); gl.vertexAttribPointer(shader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4); gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4); +*/ gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, inputTarget.texture); @@ -18731,7 +18739,7 @@ }, set: function (value) { - this.padding = value * 1.5; + this.padding = value * 0.5; this.blurXFilter.blur = this.blurYFilter.blur = value; } }, @@ -18878,7 +18886,7 @@ }, set: function (value) { - this.padding = value; + this.padding = value * 0.5; this.strength = value; } }, @@ -18963,7 +18971,7 @@ }, set: function (value) { - this.padding = value; + this.padding = value * 0.5; this.strength = value; } }, @@ -19882,41 +19890,78 @@ { core.AbstractFilter.call(this, // vertex shader - "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[14];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.028 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.024 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.020 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, -0.016 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 6] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 7] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 8] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 9] = aTextureCoord + vec2(0.0, 0.012 * strength);\n vBlurTexCoords[10] = aTextureCoord + vec2(0.0, 0.016 * strength);\n vBlurTexCoords[11] = aTextureCoord + vec2(0.0, 0.020 * strength);\n vBlurTexCoords[12] = aTextureCoord + vec2(0.0, 0.024 * strength);\n vBlurTexCoords[13] = aTextureCoord + vec2(0.0, 0.028 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n", + "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[6];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n", // fragment shader - "precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[14];\nvarying vec4 vColor;\n\nuniform float blur;\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.0044299121055113265;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 6])*0.147308056121;\n sum += texture2D(uSampler, vTextureCoord )*0.159576912161;\n sum += texture2D(uSampler, vBlurTexCoords[ 7])*0.147308056121;\n sum += texture2D(uSampler, vBlurTexCoords[ 8])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 9])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[10])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[11])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[12])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[13])*0.0044299121055113265;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n", + "precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[6];\nvarying vec4 vColor;\n\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\n sum += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n", // set the uniforms { blur: { type: '1f', value: 1 / 512 }, color: { type: 'c', value: [0,0,0]}, alpha: { type: '1f', value: 0.7 }, - offset: { type: '2f', value:[5, 5]} + offset: { type: '2f', value:[5, 5]}, + strength: { type: '1f', value:1} } ); + + this.passes = 1; + this.strength = 4; } BlurYTintFilter.prototype = Object.create(core.AbstractFilter.prototype); BlurYTintFilter.prototype.constructor = BlurYTintFilter; module.exports = BlurYTintFilter; +BlurYTintFilter.prototype.applyFilter = function (renderer, input, output, clear) +{ + var shader = this.getShader(renderer); + + this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height); + + if(this.passes === 1) + { + renderer.filterManager.applyFilter(shader, input, output, clear); + } + else + { + var renderTarget = renderer.filterManager.getRenderTarget(true); + var flip = input; + var flop = renderTarget; + + for(var i = 0; i < this.passes-1; i++) + { + renderer.filterManager.applyFilter(shader, flip, flop, clear); + + var temp = flop; + flop = flip; + flip = temp; + } + + renderer.filterManager.applyFilter(shader, flip, output, clear); + + renderer.filterManager.returnRenderTarget(renderTarget); + } +}; + + Object.defineProperties(BlurYTintFilter.prototype, { /** * Sets the strength of both the blur. * * @member {number} - * @memberof BlurYTintFilter# + * @memberof BlurYFilter# * @default 2 */ blur: { get: function () { - return this.uniforms.blur.value / blurFactor; + return this.strength; }, set: function (value) { - this.uniforms.blur.value = blurFactor * value; + this.padding = value * 0.5; + this.strength = value; } - } + }, }); },{"../../core":19}],94:[function(require,module,exports){ @@ -22026,8 +22071,7 @@ * @namespace PIXI.loaders */ module.exports = { - // Loader: require('resource-loader'), - Loader: require('./loader'), + Loader: require('./loader'), // parsers bitmapFontParser: require('./bitmapFontParser'), @@ -22036,6 +22080,9 @@ textureParser: require('./textureParser') }; + +module.exports.loader = new module.exports.Loader(); + },{"./bitmapFontParser":113,"./loader":115,"./spineAtlasParser":116,"./spritesheetParser":117,"./textureParser":118}],115:[function(require,module,exports){ var ResourceLoader = require('resource-loader'), textureParser = require('./textureParser'), @@ -26256,7 +26303,7 @@ { if (this.dirty) { - this.resolution = renderer.resolution; + //this.resolution = 1//renderer.resolution; this.updateText(); } @@ -26273,7 +26320,7 @@ { if (this.dirty) { - this.resolution = renderer.resolution; + // this.resolution = 1//renderer.resolution; this.updateText(); } diff --git a/bin/pixi.js.map b/bin/pixi.js.map index f742d5f..45af07e 100644 --- a/bin/pixi.js.map +++ b/bin/pixi.js.map @@ -129,7 +129,7 @@ "src/index" ], "names": [], - "mappings": "AAAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACnmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9mCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC13BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACleA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACniBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", + "mappings": "AAAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACnmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACliBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9mCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC13BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACleA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACniBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -144,7 +144,7 @@ "// a simple in-memory cache for resources\nvar cache = {};\n\nmodule.exports = function () {\n return function (resource, next) {\n // if cached, then set data and complete the resource\n if (cache[resource.url]) {\n resource.data = cache[resource.url];\n resource.complete();\n }\n // if not cached, wait for complete and store it in the cache.\n else {\n resource.once('complete', function () {\n cache[this.url] = this.data;\n });\n\n next();\n }\n };\n};\n", "var Resource = require('../../Resource');\n\nwindow.URL = window.URL || window.webkitURL;\n\n// a middleware for transforming XHR loaded Blobs into more useful objects\n\nmodule.exports = function () {\n return function (resource, next) {\n // if this was an XHR load\n if (resource.xhr && resource.xhrType === Resource.XHR_RESPONSE_TYPE.BLOB) {\n // if content type says this is an image, then we need to transform the blob into an Image object\n if (resource.data.type.indexOf('image') === 0) {\n var src = URL.createObjectURL(resource.data);\n\n resource.data = new Image();\n resource.data.src = src;\n\n // cleanup the no longer used blob after the image loads\n resource.data.onload = function () {\n URL.revokeObjectURL(src);\n resource.data.onload = null;\n\n next();\n };\n }\n }\n else {\n next();\n }\n };\n};\n", "// a simple json-parsing middleware for resources\n\nmodule.exports = function () {\n return function (resource, next) {\n // if this is a string, try to parse it as json\n if (typeof resource.data === 'string') {\n try {\n // resource.data is set by the XHR load\n resource.data = JSON.parse(resource.data);\n }\n catch (e) {\n // this isn't json, just move along\n }\n }\n\n // no matter what, just move along to next middleware\n next();\n };\n};\n", - "module.exports={\n \"name\": \"pixi.js\",\n \"version\": \"3.0.0-rc1\",\n \"description\": \"Pixi.js is a fast lightweight 2D library that works across all devices.\",\n \"author\": \"Mat Groves\",\n \"contributors\": [\n \"Chad Engler \",\n \"Richard Davey \"\n ],\n \"main\": \"./src/index.js\",\n \"homepage\": \"http://goodboydigital.com/\",\n \"bugs\": \"https://github.com/GoodBoyDigital/pixi.js/issues\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/GoodBoyDigital/pixi.js.git\"\n },\n \"scripts\": {\n \"test\": \"gulp test\",\n \"docs\": \"./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json\"\n },\n \"devDependencies\": {\n \"brfs\": \"^1.2.0\",\n \"browserify\": \"^8.0.2\",\n \"chai\": \"^1.10.0\",\n \"del\": \"^1.1.0\",\n \"exorcist\": \"^0.1.6\",\n \"gulp\": \"^3.8.10\",\n \"gulp-cached\": \"^1.0.1\",\n \"gulp-concat\": \"^2.5.2\",\n \"gulp-debug\": \"^2.0.0\",\n \"gulp-jsdoc\": \"^0.1.4\",\n \"gulp-jshint\": \"^1.9.0\",\n \"gulp-plumber\": \"^0.6.6\",\n \"gulp-rename\": \"^1.2.0\",\n \"gulp-uglify\": \"^1.0.2\",\n \"gulp-util\": \"^3.0.1\",\n \"ink-docstrap\": \"^0.5.2\",\n \"jsdoc\": \"^3.3.0-alpha13\",\n \"jshint-summary\": \"^0.4.0\",\n \"karma\": \"^0.12.28\",\n \"karma-firefox-launcher\": \"^0.1.0\",\n \"karma-mocha\": \"^0.1.10\",\n \"karma-spec-reporter\": \"^0.0.16\",\n \"minimist\": \"^1.1.0\",\n \"mocha\": \"^2.1.0\",\n \"require-dir\": \"^0.1.0\",\n \"run-sequence\": \"^1.0.2\",\n \"vinyl-buffer\": \"^1.0.0\",\n \"vinyl-source-stream\": \"^1.0.0\",\n \"watchify\": \"^2.2.1\"\n },\n \"dependencies\": {\n \"async\": \"^0.9.0\",\n \"resource-loader\": \"^1.2.0\"\n },\n \"browserify\": {\n \"transform\": [\n \"brfs\"\n ]\n }\n}\n", + "module.exports={\n \"name\": \"pixi.js\",\n \"version\": \"3.0.0-rc1\",\n \"description\": \"Pixi.js is a fast lightweight 2D library that works across all devices.\",\n \"author\": \"Mat Groves\",\n \"contributors\": [\n \"Chad Engler \",\n \"Richard Davey \"\n ],\n \"main\": \"./src/index.js\",\n \"homepage\": \"http://goodboydigital.com/\",\n \"bugs\": \"https://github.com/GoodBoyDigital/pixi.js/issues\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/GoodBoyDigital/pixi.js.git\"\n },\n \"scripts\": {\n \"test\": \"gulp test\",\n \"docs\": \"./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json\"\n },\n \"devDependencies\": {\n \"browserify\": \"^8.0.2\",\n \"chai\": \"^1.10.0\",\n \"del\": \"^1.1.0\",\n \"exorcist\": \"^0.1.6\",\n \"gulp\": \"^3.8.10\",\n \"gulp-cached\": \"^1.0.1\",\n \"gulp-concat\": \"^2.5.2\",\n \"gulp-debug\": \"^2.0.0\",\n \"gulp-jsdoc\": \"^0.1.4\",\n \"gulp-jshint\": \"^1.9.0\",\n \"gulp-plumber\": \"^0.6.6\",\n \"gulp-rename\": \"^1.2.0\",\n \"gulp-uglify\": \"^1.0.2\",\n \"gulp-util\": \"^3.0.1\",\n \"ink-docstrap\": \"^0.5.2\",\n \"jsdoc\": \"^3.3.0-alpha13\",\n \"jshint-summary\": \"^0.4.0\",\n \"karma\": \"^0.12.28\",\n \"karma-firefox-launcher\": \"^0.1.0\",\n \"karma-mocha\": \"^0.1.10\",\n \"karma-spec-reporter\": \"^0.0.16\",\n \"minimist\": \"^1.1.0\",\n \"mocha\": \"^2.1.0\",\n \"require-dir\": \"^0.1.0\",\n \"run-sequence\": \"^1.0.2\",\n \"vinyl-buffer\": \"^1.0.0\",\n \"vinyl-source-stream\": \"^1.0.0\",\n \"watchify\": \"^2.2.1\"\n },\n \"dependencies\": {\n \"async\": \"^0.9.0\",\n \"resource-loader\": \"^1.2.1\",\n \"brfs\": \"^1.2.0\"\n },\n \"browserify\": {\n \"transform\": [\n \"brfs\"\n ]\n }\n}\n", "/**\n * Constant values used in pixi\n *\n * @memberof PIXI\n */\nmodule.exports = {\n /**\n * String of the current PIXI version\n *\n * @static\n * @constant\n * @property {string} VERSION\n */\n VERSION: require('../../package.json').version,\n\n /**\n * Constant to identify the Renderer Type.\n *\n * @static\n * @constant\n * @property {object} RENDERER_TYPE\n * @property {number} RENDERER_TYPE.UNKNOWN\n * @property {number} RENDERER_TYPE.WEBGL\n * @property {number} RENDERER_TYPE.CANVAS\n */\n RENDERER_TYPE: {\n UNKNOWN: 0,\n WEBGL: 1,\n CANVAS: 2\n },\n\n /**\n * Various blend modes supported by PIXI. IMPORTANT - The WebGL renderer only supports\n * the NORMAL, ADD, MULTIPLY and SCREEN blend modes. Anything else will silently act like\n * NORMAL.\n *\n * @static\n * @constant\n * @property {object} BLEND_MODES\n * @property {number} BLEND_MODES.NORMAL\n * @property {number} BLEND_MODES.ADD\n * @property {number} BLEND_MODES.MULTIPLY\n * @property {number} BLEND_MODES.SCREEN\n * @property {number} BLEND_MODES.OVERLAY\n * @property {number} BLEND_MODES.DARKEN\n * @property {number} BLEND_MODES.LIGHTEN\n * @property {number} BLEND_MODES.COLOR_DODGE\n * @property {number} BLEND_MODES.COLOR_BURN\n * @property {number} BLEND_MODES.HARD_LIGHT\n * @property {number} BLEND_MODES.SOFT_LIGHT\n * @property {number} BLEND_MODES.DIFFERENCE\n * @property {number} BLEND_MODES.EXCLUSION\n * @property {number} BLEND_MODES.HUE\n * @property {number} BLEND_MODES.SATURATION\n * @property {number} BLEND_MODES.COLOR\n * @property {number} BLEND_MODES.LUMINOSITY\n */\n BLEND_MODES: {\n NORMAL: 0,\n ADD: 1,\n MULTIPLY: 2,\n SCREEN: 3,\n OVERLAY: 4,\n DARKEN: 5,\n LIGHTEN: 6,\n COLOR_DODGE: 7,\n COLOR_BURN: 8,\n HARD_LIGHT: 9,\n SOFT_LIGHT: 10,\n DIFFERENCE: 11,\n EXCLUSION: 12,\n HUE: 13,\n SATURATION: 14,\n COLOR: 15,\n LUMINOSITY: 16\n },\n\n /**\n * The scale modes that are supported by pixi.\n *\n * The DEFAULT scale mode affects the default scaling mode of future operations.\n * It can be re-assigned to either LINEAR or NEAREST, depending upon suitability.\n *\n * @static\n * @constant\n * @property {object} SCALE_MODES\n * @property {number} SCALE_MODES.DEFAULT=LINEAR\n * @property {number} SCALE_MODES.LINEAR Smooth scaling\n * @property {number} SCALE_MODES.NEAREST Pixelating scaling\n */\n SCALE_MODES: {\n DEFAULT: 0,\n LINEAR: 0,\n NEAREST: 1\n },\n\n /**\n * The prefix that denotes a URL is for a retina asset\n *\n * @static\n * @constant\n * @property {string} RETINA_PREFIX\n */\n //example: '@2x',\n RETINA_PREFIX: /@(.+)x/,\n\n RESOLUTION:1,\n\n FILTER_RESOLUTION:1,\n\n /**\n * The default render options if none are supplied to {@link PIXI.WebGLRenderer}\n * or {@link PIXI.CanvasRenderer}.\n *\n * @static\n * @constant\n * @property {object} DEFAULT_RENDER_OPTIONS\n * @property {HTMLCanvasElement} DEFAULT_RENDER_OPTIONS.view=null\n * @property {boolean} DEFAULT_RENDER_OPTIONS.transparent=false\n * @property {boolean} DEFAULT_RENDER_OPTIONS.antialias=false\n * @property {boolean} DEFAULT_RENDER_OPTIONS.forceFXAA=false\n * @property {boolean} DEFAULT_RENDER_OPTIONS.preserveDrawingBuffer=false\n * @property {number} DEFAULT_RENDER_OPTIONS.resolution=1\n * @property {number} DEFAULT_RENDER_OPTIONS.backgroundColor=0x000000\n * @property {boolean} DEFAULT_RENDER_OPTIONS.clearBeforeRender=true\n * @property {boolean} DEFAULT_RENDER_OPTIONS.autoResize=false\n */\n DEFAULT_RENDER_OPTIONS: {\n view: null,\n resolution: 1,\n antialias: false,\n forceFXAA: false,\n autoResize: false,\n transparent: false,\n backgroundColor: 0x000000,\n clearBeforeRender: true,\n preserveDrawingBuffer: false\n },\n\n /**\n * Constants that identify shapes, mainly to prevent `instanceof` calls.\n *\n * @static\n * @constant\n * @property {object} SHAPES\n * @property {object} SHAPES.POLY=0\n * @property {object} SHAPES.RECT=1\n * @property {object} SHAPES.CIRC=2\n * @property {object} SHAPES.ELIP=3\n * @property {object} SHAPES.RREC=4\n */\n SHAPES: {\n POLY: 0,\n RECT: 1,\n CIRC: 2,\n ELIP: 3,\n RREC: 4\n },\n\n SPRITE_BATCH_SIZE: 2000 //nice balance between mobile and desktop machines\n};\n", "var math = require('../math'),\n DisplayObject = require('./DisplayObject'),\n RenderTexture = require('../textures/RenderTexture'),\n _tempMatrix = new math.Matrix();\n\n/**\n * A Container represents a collection of display objects.\n * It is the base class of all display objects that act as a container for other objects.\n *\n *```js\n * var container = new PIXI.Container();\n * container.addChild(sprite);\n * ```\n * @class\n * @extends DisplayObject\n * @memberof PIXI\n */\nfunction Container()\n{\n DisplayObject.call(this);\n\n /**\n * The array of children of this container.\n *\n * @member {DisplayObject[]}\n * @readonly\n */\n this.children = [];\n}\n\n// constructor\nContainer.prototype = Object.create(DisplayObject.prototype);\nContainer.prototype.constructor = Container;\nmodule.exports = Container;\n\nObject.defineProperties(Container.prototype, {\n /**\n * The width of the Container, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Container#\n */\n width: {\n get: function ()\n {\n return this.scale.x * this.getLocalBounds().width;\n },\n set: function (value)\n {\n\n var width = this.getLocalBounds().width;\n\n if (width !== 0)\n {\n this.scale.x = value / width;\n }\n else\n {\n this.scale.x = 1;\n }\n\n\n this._width = value;\n }\n },\n\n /**\n * The height of the Container, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Container#\n */\n height: {\n get: function ()\n {\n return this.scale.y * this.getLocalBounds().height;\n },\n set: function (value)\n {\n\n var height = this.getLocalBounds().height;\n\n if (height !== 0)\n {\n this.scale.y = value / height ;\n }\n else\n {\n this.scale.y = 1;\n }\n\n this._height = value;\n }\n }\n});\n\n/**\n * Adds a child to the container.\n *\n * @param child {DisplayObject} The DisplayObject to add to the container\n * @return {DisplayObject} The child that was added.\n */\nContainer.prototype.addChild = function (child)\n{\n return this.addChildAt(child, this.children.length);\n};\n\n/**\n * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown\n *\n * @param child {DisplayObject} The child to add\n * @param index {Number} The index to place the child in\n * @return {DisplayObject} The child that was added.\n */\nContainer.prototype.addChildAt = function (child, index)\n{\n // prevent adding self as child\n if (child === this)\n {\n return child;\n }\n\n if (index >= 0 && index <= this.children.length)\n {\n if (child.parent)\n {\n child.parent.removeChild(child);\n }\n\n child.parent = this;\n\n this.children.splice(index, 0, child);\n return child;\n }\n else\n {\n throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length);\n }\n};\n\n/**\n * Swaps the position of 2 Display Objects within this container.\n *\n * @param child {DisplayObject}\n * @param child2 {DisplayObject}\n */\nContainer.prototype.swapChildren = function (child, child2)\n{\n if (child === child2)\n {\n return;\n }\n\n var index1 = this.getChildIndex(child);\n var index2 = this.getChildIndex(child2);\n\n if (index1 < 0 || index2 < 0)\n {\n throw new Error('swapChildren: Both the supplied DisplayObjects must be children of the caller.');\n }\n\n this.children[index1] = child2;\n this.children[index2] = child;\n};\n\n/**\n * Returns the index position of a child DisplayObject instance\n *\n * @param child {DisplayObject} The DisplayObject instance to identify\n * @return {Number} The index position of the child display object to identify\n */\nContainer.prototype.getChildIndex = function (child)\n{\n var index = this.children.indexOf(child);\n\n if (index === -1)\n {\n throw new Error('The supplied DisplayObject must be a child of the caller');\n }\n\n return index;\n};\n\n/**\n * Changes the position of an existing child in the display object container\n *\n * @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number\n * @param index {Number} The resulting index number for the child display object\n */\nContainer.prototype.setChildIndex = function (child, index)\n{\n if (index < 0 || index >= this.children.length)\n {\n throw new Error('The supplied index is out of bounds');\n }\n\n var currentIndex = this.getChildIndex(child);\n\n this.children.splice(currentIndex, 1); //remove from old position\n this.children.splice(index, 0, child); //add at new position\n};\n\n/**\n * Returns the child at the specified index\n *\n * @param index {Number} The index to get the child at\n * @return {DisplayObject} The child at the given index, if any.\n */\nContainer.prototype.getChildAt = function (index)\n{\n if (index < 0 || index >= this.children.length)\n {\n throw new Error('getChildAt: Supplied index ' + index + ' does not exist in the child list, or the supplied DisplayObject is not a child of the caller');\n }\n\n return this.children[index];\n};\n\n/**\n * Removes a child from the container.\n *\n * @param child {DisplayObject} The DisplayObject to remove\n * @return {DisplayObject} The child that was removed.\n */\nContainer.prototype.removeChild = function (child)\n{\n var index = this.children.indexOf(child);\n\n if (index === -1)\n {\n return;\n }\n\n return this.removeChildAt(index);\n};\n\n/**\n * Removes a child from the specified index position.\n *\n * @param index {Number} The index to get the child from\n * @return {DisplayObject} The child that was removed.\n */\nContainer.prototype.removeChildAt = function (index)\n{\n var child = this.getChildAt(index);\n\n child.parent = null;\n this.children.splice(index, 1);\n\n return child;\n};\n\n/**\n * Removes all children from this container that are within the begin and end indexes.\n *\n * @param beginIndex {Number} The beginning position. Default value is 0.\n * @param endIndex {Number} The ending position. Default value is size of the container.\n */\nContainer.prototype.removeChildren = function (beginIndex, endIndex)\n{\n var begin = beginIndex || 0;\n var end = typeof endIndex === 'number' ? endIndex : this.children.length;\n var range = end - begin;\n\n if (range > 0 && range <= end)\n {\n var removed = this.children.splice(begin, range);\n\n for (var i = 0; i < removed.length; ++i)\n {\n removed[i].parent = null;\n }\n\n return removed;\n }\n else if (range === 0 && this.children.length === 0)\n {\n return [];\n }\n else\n {\n throw new RangeError('removeChildren: numeric values are outside the acceptable range.');\n }\n};\n\n/**\n * Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.\n *\n * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture.\n * @param resolution {Number} The resolution of the texture being generated\n * @param scaleMode {Number} See {@link SCALE_MODES} for possible values\n * @return {Texture} a texture of the display object\n */\nContainer.prototype.generateTexture = function (renderer, resolution, scaleMode)\n{\n var bounds = this.getLocalBounds();\n\n var renderTexture = new RenderTexture(renderer, bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution);\n\n _tempMatrix.tx = -bounds.x;\n _tempMatrix.ty = -bounds.y;\n\n renderTexture.render(this, _tempMatrix);\n\n return renderTexture;\n};\n\n/*\n * Updates the transform on all children of this container for rendering\n *\n * @private\n */\nContainer.prototype.updateTransform = function ()\n{\n if (!this.visible)\n {\n return;\n }\n\n this.displayObjectUpdateTransform();\n\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].updateTransform();\n }\n};\n\n// performance increase to avoid using call.. (10x faster)\nContainer.prototype.containerUpdateTransform = Container.prototype.updateTransform;\n\n/**\n * Retrieves the bounds of the Container as a rectangle. The bounds calculation takes all visible children into consideration.\n *\n * @return {Rectangle} The rectangular bounding area\n */\nContainer.prototype.getBounds = function ()\n{\n if(!this._currentBounds)\n {\n\n if (this.children.length === 0)\n {\n return math.Rectangle.EMPTY;\n }\n\n // TODO the bounds have already been calculated this render session so return what we have\n\n var minX = Infinity;\n var minY = Infinity;\n\n var maxX = -Infinity;\n var maxY = -Infinity;\n\n var childBounds;\n var childMaxX;\n var childMaxY;\n\n var childVisible = false;\n\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n var child = this.children[i];\n\n if (!child.visible)\n {\n continue;\n }\n\n childVisible = true;\n\n childBounds = this.children[i].getBounds();\n\n minX = minX < childBounds.x ? minX : childBounds.x;\n minY = minY < childBounds.y ? minY : childBounds.y;\n\n childMaxX = childBounds.width + childBounds.x;\n childMaxY = childBounds.height + childBounds.y;\n\n maxX = maxX > childMaxX ? maxX : childMaxX;\n maxY = maxY > childMaxY ? maxY : childMaxY;\n }\n\n if (!childVisible)\n {\n return math.Rectangle.EMPTY;\n }\n\n var bounds = this._bounds;\n\n bounds.x = minX;\n bounds.y = minY;\n bounds.width = maxX - minX;\n bounds.height = maxY - minY;\n\n this._currentBounds = bounds;\n }\n\n return this._currentBounds;\n};\n\n/**\n * Retrieves the non-global local bounds of the Container as a rectangle.\n * The calculation takes all visible children into consideration.\n *\n * @return {Rectangle} The rectangular bounding area\n */\nContainer.prototype.getLocalBounds = function ()\n{\n var matrixCache = this.worldTransform;\n\n this.worldTransform = math.Matrix.IDENTITY;\n\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].updateTransform();\n }\n\n this.worldTransform = matrixCache;\n\n this._currentBounds = null;\n\n return this.getBounds();\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer} The renderer\n */\nContainer.prototype.renderWebGL = function (renderer)\n{\n\n // if the object is not visible or the alpha is 0 then no need to render this element\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable)\n {\n return;\n }\n\n var i, j;\n\n // do a quick check to see if this element has a mask or a filter.\n if (this._mask || this._filters)\n {\n renderer.currentRenderer.flush();\n\n // push filter first as we need to ensure the stencil buffer is correct for any masking\n if (this._filters)\n {\n renderer.filterManager.pushFilter(this, this._filters);\n }\n\n if (this._mask)\n {\n renderer.maskManager.pushMask(this, this._mask);\n }\n\n renderer.currentRenderer.start();\n\n // add this object to the batch, only rendered if it has a texture.\n this._renderWebGL(renderer);\n\n // now loop through the children and make sure they get rendered\n for (i = 0, j = this.children.length; i < j; i++)\n {\n this.children[i].renderWebGL(renderer);\n }\n\n renderer.currentRenderer.flush();\n\n if (this._mask)\n {\n renderer.maskManager.popMask(this, this._mask);\n }\n\n if (this._filters)\n {\n renderer.filterManager.popFilter();\n\n }\n renderer.currentRenderer.start();\n }\n else\n {\n this._renderWebGL(renderer);\n\n // simple render children!\n for (i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].renderWebGL(renderer);\n }\n }\n};\n\n/**\n * To be overridden by the subclass\n *\n * @param renderer {WebGLRenderer} The renderer\n * @private\n */\nContainer.prototype._renderWebGL = function (renderer)\n{\n // this is where content itself gets rendered...\n};\n\n/**\n * To be overridden by the subclass\n *\n * @param renderer {CanvasRenderer} The renderer\n * @private\n */\nContainer.prototype._renderCanvas = function (renderer)\n{\n // this is where content itself gets rendered...\n};\n\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer} The renderer\n */\nContainer.prototype.renderCanvas = function (renderer)\n{\n // if not visible or the alpha is 0 then no need to render this\n if (!this.visible || this.alpha <= 0 || !this.renderable)\n {\n return;\n }\n\n if (this._mask)\n {\n renderer.maskManager.pushMask(this._mask, renderer);\n }\n\n this._renderCanvas(renderer);\n for (var i = 0, j = this.children.length; i < j; ++i)\n {\n this.children[i].renderCanvas(renderer);\n }\n\n if (this._mask)\n {\n renderer.maskManager.popMask(renderer);\n }\n};\n", "var math = require('../math'),\n utils = require('../utils'),\n RenderTexture = require('../textures/RenderTexture'),\n _tempMatrix = new math.Matrix();\n\n/**\n * The base class for all objects that are rendered on the screen.\n * This is an abstract class and should not be used on its own rather it should be extended.\n *\n * @class\n * @memberof PIXI\n */\nfunction DisplayObject()\n{\n /**\n * The coordinate of the object relative to the local coordinates of the parent.\n *\n * @member {Point}\n */\n this.position = new math.Point();\n\n /**\n * The scale factor of the object.\n *\n * @member {Point}\n */\n this.scale = new math.Point(1, 1);\n\n /**\n * The pivot point of the displayObject that it rotates around\n *\n * @member {Point}\n */\n this.pivot = new math.Point(0, 0);\n\n /**\n * The rotation of the object in radians.\n *\n * @member {number}\n */\n this.rotation = 0;\n\n /**\n * The opacity of the object.\n *\n * @member {number}\n */\n this.alpha = 1;\n\n /**\n * The visibility of the object. If false the object will not be drawn, and\n * the updateTransform function will not be called.\n *\n * @member {boolean}\n */\n this.visible = true;\n\n /**\n * Can this object be rendered, if false the object will not be drawn but the updateTransform\n * methods will still be called.\n *\n * @member {boolean}\n */\n this.renderable = true;\n\n /**\n * The display object container that contains this display object.\n *\n * @member {Container}\n * @readOnly\n */\n this.parent = null;\n\n /**\n * The multiplied alpha of the displayObject\n *\n * @member {number}\n * @readOnly\n */\n this.worldAlpha = 1;\n\n /**\n * Current transform of the object based on world (parent) factors\n *\n * @member {Matrix}\n * @readOnly\n */\n this.worldTransform = new math.Matrix();\n\n /**\n * The area the filter is applied to. This is used as more of an optimisation\n * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle\n *\n * @member {Rectangle}\n */\n this.filterArea = null;\n\n /**\n * cached sin rotation\n *\n * @member {number}\n * @private\n */\n this._sr = 0;\n\n /**\n * cached cos rotation\n *\n * @member {number}\n * @private\n */\n this._cr = 1;\n\n /**\n * The original, cached bounds of the object\n *\n * @member {Rectangle}\n * @private\n */\n this._bounds = new math.Rectangle(0, 0, 1, 1);\n\n /**\n * The most up-to-date bounds of the object\n *\n * @member {Rectangle}\n * @private\n */\n this._currentBounds = null;\n\n /**\n * The original, cached mask of the object\n *\n * @member {Rectangle}\n * @private\n */\n this._mask = null;\n\n //TODO rename to _isMask\n // this.isMask = false;\n\n /**\n * Cached internal flag.\n *\n * @member {boolean}\n * @private\n */\n this._cacheAsBitmap = false;\n this._cachedObject = null;\n}\n\n// constructor\nDisplayObject.prototype.constructor = DisplayObject;\nutils.eventTarget.mixin(DisplayObject.prototype);\nmodule.exports = DisplayObject;\n\nObject.defineProperties(DisplayObject.prototype, {\n /**\n * The position of the displayObject on the x axis relative to the local coordinates of the parent.\n *\n * @member {number}\n * @memberof DisplayObject#\n */\n x: {\n get: function ()\n {\n return this.position.x;\n },\n set: function (value)\n {\n this.position.x = value;\n }\n },\n\n /**\n * The position of the displayObject on the y axis relative to the local coordinates of the parent.\n *\n * @member {number}\n * @memberof DisplayObject#\n */\n y: {\n get: function ()\n {\n return this.position.y;\n },\n set: function (value)\n {\n this.position.y = value;\n }\n },\n\n /**\n * Indicates if the sprite is globally visible.\n *\n * @member {boolean}\n * @memberof DisplayObject#\n * @readonly\n */\n worldVisible: {\n get: function ()\n {\n var item = this;\n\n do {\n if (!item.visible)\n {\n return false;\n }\n\n item = item.parent;\n } while (item);\n\n return true;\n }\n },\n\n /**\n * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it.\n * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping.\n * To remove a mask, set this property to null.\n *\n * @member {Graphics}\n * @memberof DisplayObject#\n */\n mask: {\n get: function ()\n {\n return this._mask;\n },\n set: function (value)\n {\n if (this._mask)\n {\n this._mask.renderable = true;\n }\n\n this._mask = value;\n\n if (this._mask)\n {\n this._mask.renderable = false;\n }\n }\n },\n\n /**\n * Sets the filters for the displayObject.\n * * IMPORTANT: This is a webGL only feature and will be ignored by the canvas renderer.\n * To remove filters simply set this property to 'null'\n *\n * @member {Filter[]}\n * @memberof DisplayObject#\n */\n filters: {\n get: function ()\n {\n return this._filters && this._filters.slice();\n },\n set: function (value)\n {\n this._filters = value && value.slice();\n }\n }\n\n});\n\n/*\n * Updates the object transform for rendering\n *\n * TODO - Optimization pass!\n *\n * @private\n */\nDisplayObject.prototype.updateTransform = function ()\n{\n\n // create some matrix refs for easy access\n var pt = this.parent.worldTransform;\n var wt = this.worldTransform;\n\n // temporary matrix variables\n var a, b, c, d, tx, ty;\n\n // so if rotation is between 0 then we can simplify the multiplication process...\n if (this.rotation % math.PI_2)\n {\n // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes\n if (this.rotation !== this.rotationCache)\n {\n this.rotationCache = this.rotation;\n this._sr = Math.sin(this.rotation);\n this._cr = Math.cos(this.rotation);\n }\n\n // get the matrix values of the displayobject based on its transform properties..\n a = this._cr * this.scale.x;\n b = this._sr * this.scale.x;\n c = -this._sr * this.scale.y;\n d = this._cr * this.scale.y;\n tx = this.position.x;\n ty = this.position.y;\n\n // check for pivot.. not often used so geared towards that fact!\n if (this.pivot.x || this.pivot.y)\n {\n tx -= this.pivot.x * a + this.pivot.y * c;\n ty -= this.pivot.x * b + this.pivot.y * d;\n }\n\n // concat the parent matrix with the objects transform.\n wt.a = a * pt.a + b * pt.c;\n wt.b = a * pt.b + b * pt.d;\n wt.c = c * pt.a + d * pt.c;\n wt.d = c * pt.b + d * pt.d;\n wt.tx = tx * pt.a + ty * pt.c + pt.tx;\n wt.ty = tx * pt.b + ty * pt.d + pt.ty;\n }\n else\n {\n // lets do the fast version as we know there is no rotation..\n a = this.scale.x;\n d = this.scale.y;\n\n tx = this.position.x - this.pivot.x * a;\n ty = this.position.y - this.pivot.y * d;\n\n wt.a = a * pt.a;\n wt.b = a * pt.b;\n wt.c = d * pt.c;\n wt.d = d * pt.d;\n wt.tx = tx * pt.a + ty * pt.c + pt.tx;\n wt.ty = tx * pt.b + ty * pt.d + pt.ty;\n }\n\n // multiply the alphas..\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n\n // reset the bounds each time this is called!\n this._currentBounds = null;\n};\n\n// performance increase to avoid using call.. (10x faster)\nDisplayObject.prototype.displayObjectUpdateTransform = DisplayObject.prototype.updateTransform;\n\n/**\n *\n *\n * Retrieves the bounds of the displayObject as a rectangle object\n *\n * @param matrix {Matrix}\n * @return {Rectangle} the rectangular bounding area\n */\nDisplayObject.prototype.getBounds = function (matrix)\n{\n return math.Rectangle.EMPTY;\n};\n\n/**\n * Retrieves the local bounds of the displayObject as a rectangle object\n *\n * @return {Rectangle} the rectangular bounding area\n */\nDisplayObject.prototype.getLocalBounds = function ()\n{\n return this.getBounds(math.Matrix.IDENTITY);\n};\n\n/**\n * Calculates the global position of the display object\n *\n * @param position {Point} The world origin to calculate from\n * @return {Point} A point object representing the position of this object\n */\nDisplayObject.prototype.toGlobal = function (position)\n{\n // don't need to update the lot\n this.displayObjectUpdateTransform();\n return this.worldTransform.apply(position);\n};\n\n/**\n * Calculates the local position of the display object relative to another point\n *\n * @param position {Point} The world origin to calculate from\n * @param [from] {DisplayObject} The DisplayObject to calculate the global position from\n * @return {Point} A point object representing the position of this object\n */\nDisplayObject.prototype.toLocal = function (position, from)\n{\n if (from)\n {\n position = from.toGlobal(position);\n }\n\n // don't need to update the lot\n this.displayObjectUpdateTransform();\n return this.worldTransform.applyInverse(position);\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer} The renderer\n * @private\n */\nDisplayObject.prototype.renderWebGL = function (renderer)\n{\n // OVERWRITE;\n};\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer} The renderer\n * @private\n */\nDisplayObject.prototype.renderCanvas = function (renderer)\n{\n // OVERWRITE;\n};\n/**\n * Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.\n *\n * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture.\n * @param resolution {Number} The resolution of the texture being generated\n * @param scaleMode {Number} See {@link SCALE_MODES} for possible values\n * @return {Texture} a texture of the display object\n */\nDisplayObject.prototype.generateTexture = function (renderer, resolution, scaleMode)\n{\n var bounds = this.getLocalBounds();\n\n var renderTexture = new RenderTexture(renderer, bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution);\n\n _tempMatrix.tx = -bounds.x;\n _tempMatrix.ty = -bounds.y;\n\n renderTexture.render(this, _tempMatrix);\n\n return renderTexture;\n};\n", @@ -176,7 +176,7 @@ "var AbstractFilter = require('./AbstractFilter');\n\n\n\n/**\n *\n * Basic FXAA implementation based on the code on geeks3d.com with the\n * modification that the texture2DLod stuff was removed since it's\n * unsupported by WebGL.\n *\n * --\n * From:\n * https://github.com/mitsuhiko/webgl-meincraft\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI\n *\n */\nfunction FXAAFilter()\n{\n AbstractFilter.call(this,\n // vertex shader\n \"\\nprecision mediump float;\\n\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform mat3 projectionMatrix;\\nuniform vec2 resolution;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvarying vec2 vResolution;\\n\\n//texcoords computed in vertex step\\n//to avoid dependent texture reads\\nvarying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\n\\nvoid texcoords(vec2 fragCoord, vec2 resolution,\\n out vec2 v_rgbNW, out vec2 v_rgbNE,\\n out vec2 v_rgbSW, out vec2 v_rgbSE,\\n out vec2 v_rgbM) {\\n vec2 inverseVP = 1.0 / resolution.xy;\\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\\n v_rgbM = vec2(fragCoord * inverseVP);\\n}\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n vResolution = resolution;\\n\\n //compute the texture coords and send them to varyings\\n texcoords(aTextureCoord * resolution, resolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\n\\n/**\\nBasic FXAA implementation based on the code on geeks3d.com with the\\nmodification that the texture2DLod stuff was removed since it's\\nunsupported by WebGL.\\n\\n--\\n\\nFrom:\\nhttps://github.com/mitsuhiko/webgl-meincraft\\n\\nCopyright (c) 2011 by Armin Ronacher.\\n\\nSome rights reserved.\\n\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are\\nmet:\\n\\n * Redistributions of source code must retain the above copyright\\n notice, this list of conditions and the following disclaimer.\\n\\n * Redistributions in binary form must reproduce the above\\n copyright notice, this list of conditions and the following\\n disclaimer in the documentation and/or other materials provided\\n with the distribution.\\n\\n * The names of the contributors may not be used to endorse or\\n promote products derived from this software without specific\\n prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\\n\\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n*/\\n\\n#ifndef FXAA_REDUCE_MIN\\n #define FXAA_REDUCE_MIN (1.0/ 128.0)\\n#endif\\n#ifndef FXAA_REDUCE_MUL\\n #define FXAA_REDUCE_MUL (1.0 / 8.0)\\n#endif\\n#ifndef FXAA_SPAN_MAX\\n #define FXAA_SPAN_MAX 8.0\\n#endif\\n\\n//optimized version for mobile, where dependent\\n//texture reads can be a bottleneck\\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 resolution,\\n vec2 v_rgbNW, vec2 v_rgbNE,\\n vec2 v_rgbSW, vec2 v_rgbSE,\\n vec2 v_rgbM) {\\n vec4 color;\\n mediump vec2 inverseVP = vec2(1.0 / resolution.x, 1.0 / resolution.y);\\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\\n vec4 texColor = texture2D(tex, v_rgbM);\\n vec3 rgbM = texColor.xyz;\\n vec3 luma = vec3(0.299, 0.587, 0.114);\\n float lumaNW = dot(rgbNW, luma);\\n float lumaNE = dot(rgbNE, luma);\\n float lumaSW = dot(rgbSW, luma);\\n float lumaSE = dot(rgbSE, luma);\\n float lumaM = dot(rgbM, luma);\\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\\n\\n mediump vec2 dir;\\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\\n\\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\\n\\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\\n dir * rcpDirMin)) * inverseVP;\\n\\n vec3 rgbA = 0.5 * (\\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\\n\\n float lumaB = dot(rgbB, luma);\\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\\n color = vec4(rgbA, texColor.a);\\n else\\n color = vec4(rgbB, texColor.a);\\n return color;\\n}\\n\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vResolution;\\n\\n//texcoords computed in vertex step\\n//to avoid dependent texture reads\\nvarying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nuniform sampler2D uSampler;\\n\\n\\nvoid main(void){\\n\\n gl_FragColor = fxaa(uSampler, vTextureCoord * vResolution, vResolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n\\n}\\n\",\n // uniforms\n {\n resolution: { type: 'v2', value: { x: 1, y: 1 } }\n }\n );\n\n}\n\nFXAAFilter.prototype = Object.create(AbstractFilter.prototype);\nFXAAFilter.prototype.constructor = FXAAFilter;\nmodule.exports = FXAAFilter;\n\nFXAAFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var filterManager = renderer.filterManager;\n\n var shader = this.getShader( renderer );\n // draw the filter...\n filterManager.applyFilter(shader, input, output);\n};\n", "var AbstractFilter = require('./AbstractFilter'),\n math = require('../../../math');\n\n// fs needs to be decalred alone for brfs to pick it up properly.\n\n\n/**\n * The SpriteMaskFilter class\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI\n * @param sprite {Sprite} the target sprite\n */\nfunction SpriteMaskFilter(sprite)\n{\n var maskMatrix = new math.Matrix();\n\n AbstractFilter.call(this,\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 otherMatrix;\\n\\nvarying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n \"precision lowp float;\\n\\nvarying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\nuniform sampler2D mask;\\n\\nvoid main(void)\\n{\\n // check clip! this will stop the mask bleeding out from the edges\\n vec2 text = abs( vMaskCoord - 0.5 );\\n text = step(0.5, text);\\n float clip = 1.0 - max(text.y, text.x);\\n vec4 original = texture2D(uSampler, vTextureCoord);\\n vec4 masky = texture2D(mask, vMaskCoord);\\n original *= (masky.r * masky.a * clip);\\n gl_FragColor = original;\\n}\\n\",\n {\n mask: { type: 'sampler2D', value: sprite._texture },\n otherMatrix: { type: 'mat3', value: maskMatrix.toArray(true) }\n }\n );\n\n this.maskSprite = sprite;\n this.maskMatrix = maskMatrix;\n}\n\nSpriteMaskFilter.prototype = Object.create(AbstractFilter.prototype);\nSpriteMaskFilter.prototype.constructor = SpriteMaskFilter;\nmodule.exports = SpriteMaskFilter;\n\n/**\n * Applies the filter ? @alvin\n *\n * @param renderer {WebGLRenderer} A reference to the WebGL renderer\n * @param input {RenderTarget}\n * @param output {RenderTarget}\n */\nSpriteMaskFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var filterManager = renderer.filterManager;\n\n this.uniforms.mask.value = this.maskSprite._texture;\n\n filterManager.calculateMappedMatrix(input.frame, this.maskSprite, this.maskMatrix);\n\n this.uniforms.otherMatrix.value = this.maskMatrix.toArray(true);\n\n var shader = this.getShader(renderer);\n // draw the filter...\n filterManager.applyFilter(shader, input, output);\n};\n\n\nObject.defineProperties(SpriteMaskFilter.prototype, {\n /**\n * The texture used for the displacement map. Must be power of 2 sized texture.\n *\n * @member {Texture}\n * @memberof SpriteMaskFilter#\n */\n map: {\n get: function ()\n {\n return this.uniforms.mask.value;\n },\n set: function (value)\n {\n this.uniforms.mask.value = value;\n }\n },\n\n /**\n * The offset used to move the displacement map.\n *\n * @member {Point}\n * @memberof SpriteMaskFilter#\n */\n offset: {\n get: function()\n {\n return this.uniforms.offset.value;\n },\n set: function(value)\n {\n this.uniforms.offset.value = value;\n }\n }\n});\n", "var WebGLManager = require('./WebGLManager');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGlManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction BlendModeManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {number}\n */\n this.currentBlendMode = 99999;\n}\n\nBlendModeManager.prototype = Object.create(WebGLManager.prototype);\nBlendModeManager.prototype.constructor = BlendModeManager;\nmodule.exports = BlendModeManager;\n\n/**\n * Sets-up the given blendMode from WebGL's point of view.\n *\n * @param blendMode {number} the blendMode, should be a Pixi const, such as BlendModes.ADD\n */\nBlendModeManager.prototype.setBlendMode = function (blendMode)\n{\n if (this.currentBlendMode === blendMode)\n {\n return false;\n }\n\n this.currentBlendMode = blendMode;\n\n var mode = this.renderer.blendModes[this.currentBlendMode];\n this.renderer.gl.blendFunc(mode[0], mode[1]);\n\n return true;\n};\n", - "var WebGLManager = require('./WebGLManager'),\n RenderTarget = require('../utils/RenderTarget'),\n CONST = require('../../../const'),\n Quad = require('../utils/Quad'),\n math = require('../../../math');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGLManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction FilterManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {any[]}\n */\n this.filterStack = [];\n\n this.filterStack.push({\n renderTarget:renderer.currentRenderTarget,\n filter:[],\n bounds:null\n });\n\n /**\n * @member {any[]}\n */\n this.texturePool = [];\n\n // listen for context and update necessary buffers\n //TODO make this dynamic!\n //TODO test this out by forces power of two?\n this.textureSize = new math.Rectangle( 0, 0, renderer.width, renderer.height );\n\n this.currentFrame = null;\n}\n\nFilterManager.prototype = Object.create(WebGLManager.prototype);\nFilterManager.prototype.constructor = FilterManager;\nmodule.exports = FilterManager;\n\n\n/**\n * Called when there is a WebGL context change.\n *\n */\nFilterManager.prototype.onContextChange = function ()\n{\n this.texturePool.length = 0;\n\n var gl = this.renderer.gl;\n this.quad = new Quad(gl);\n};\n\n/**\n * @param renderer {WebGLRenderer}\n * @param buffer {ArrayBuffer}\n */\nFilterManager.prototype.setFilterStack = function ( filterStack )\n{\n this.filterStack = filterStack;\n};\n\n/**\n * Applies the filter and adds it to the current filter stack.\n *\n * @param filterBlock {object} the filter that will be pushed to the current filter stack\n */\nFilterManager.prototype.pushFilter = function (target, filters)\n{\n // get the bounds of the object..\n var bounds = target.filterArea || target.getBounds();\n\n // round off the rectangle to get a nice smoooooooth filter :)\n bounds.x = bounds.x | 0;\n bounds.y = bounds.y | 0;\n bounds.width = bounds.width | 0;\n bounds.height = bounds.height | 0;\n\n\n // padding!\n var padding = filters[0].padding;\n bounds.x -= padding;\n bounds.y -= padding;\n bounds.width += padding * 2;\n bounds.height += padding * 2;\n\n\n if(this.renderer.currentRenderTarget.transform)\n {\n //TODO this will break if the renderTexture transform is anything other than a translation.\n //Will need to take the full matrix transform into acount..\n var transform = this.renderer.currentRenderTarget.transform;\n\n bounds.x += transform.tx;\n bounds.y += transform.ty;\n\n this.capFilterArea( bounds );\n\n bounds.x -= transform.tx;\n bounds.y -= transform.ty;\n }\n else\n {\n this.capFilterArea( bounds );\n }\n\n\n this.currentFrame = bounds;\n\n var texture = this.getRenderTarget();\n\n this.renderer.setRenderTarget(texture);\n\n // clear the texture..\n texture.clear();\n\n // TODO get rid of object creation!\n this.filterStack.push({\n renderTarget: texture,\n filter: filters\n });\n\n};\n\n\n/**\n * Removes the last filter from the filter stack and returns it.\n *\n */\nFilterManager.prototype.popFilter = function ()\n{\n var filterData = this.filterStack.pop();\n var previousFilterData = this.filterStack[this.filterStack.length-1];\n\n var input = filterData.renderTarget;\n\n var output = previousFilterData.renderTarget;\n\n // use program\n var gl = this.renderer.gl;\n\n\n this.currentFrame = input.frame;\n\n this.quad.map(this.textureSize, input.frame);\n\n // TODO.. this probably only needs to be done once!\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quad.vertexBuffer);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.quad.indexBuffer);\n\n var filters = filterData.filter;\n\n if (filters.length === 1)\n {\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filters[0].uniforms.dimensions)\n {\n filters[0].uniforms.dimensions.value[0] = this.renderer.width;\n filters[0].uniforms.dimensions.value[1] = this.renderer.height;\n filters[0].uniforms.dimensions.value[2] = this.quad.vertices[0];\n filters[0].uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filters[0].applyFilter( this.renderer, input, output );\n this.returnRenderTarget( input );\n\n }\n else\n {\n var flipTexture = input;\n var flopTexture = this.getRenderTarget(true);\n\n for (var i = 0; i < filters.length-1; i++)\n {\n var filter = filters[i];\n\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filter.uniforms.dimensions)\n {\n filter.uniforms.dimensions.value[0] = this.renderer.width;\n filter.uniforms.dimensions.value[1] = this.renderer.height;\n filter.uniforms.dimensions.value[2] = this.quad.vertices[0];\n filter.uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filter.applyFilter( this.renderer, flipTexture, flopTexture );\n\n var temp = flipTexture;\n flipTexture = flopTexture;\n flopTexture = temp;\n }\n\n filters[filters.length-1].applyFilter( this.renderer, flipTexture, output );\n\n this.returnRenderTarget( flipTexture );\n this.returnRenderTarget( flopTexture );\n }\n\n return filterData.filter;\n};\n\n/**\n * Grabs an render target from the internal pool\n *\n * @param clear {boolean} Whether or not we need to clear the RenderTarget\n * @return {RenderTarget}\n */\nFilterManager.prototype.getRenderTarget = function ( clear )\n{\n var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, CONST.SCALE_MODES.LINEAR, this.renderer.resolution * CONST.FILTER_RESOLUTION);\n renderTarget.frame = this.currentFrame;\n\n if (clear)\n {\n renderTarget.clear(true);\n }\n\n return renderTarget;\n};\n\n/*\n * Returns a RenderTarget to the internal pool\n * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool\n */\nFilterManager.prototype.returnRenderTarget = function (renderTarget)\n{\n this.texturePool.push( renderTarget );\n};\n\n/*\n * Applies the filter\n * @param shader {Shader} The shader to upload\n * @param inputTarget {RenderTarget}\n * @param outputTarget {RenderTarget}\n * @param clear {boolean} Whether or not we want to clear the outputTarget\n */\nFilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear)\n{\n var gl = this.renderer.gl;\n\n this.renderer.setRenderTarget(outputTarget);\n\n if (clear)\n {\n outputTarget.clear();\n }\n\n // set the shader\n this.renderer.shaderManager.setShader(shader);\n\n // TODO (cengler) - Can this be cached and not `toArray`ed each frame?\n shader.uniforms.projectionMatrix.value = this.renderer.currentRenderTarget.projectionMatrix.toArray(true);\n\n //TODO can this be optimised?\n shader.syncUniforms();\n\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0);\n gl.vertexAttribPointer(shader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4);\n gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4);\n\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, inputTarget.texture);\n\n gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n};\n\n/*\n * Calculates the mapped matrix\n * @param filterArea {Rectangle} The filter area\n * @param sprite {Sprite} the target sprite\n * @param outputMatrix {Matrix} @alvin\n */\n// TODO playing around here.. this is temporary - (will end up in the shader)\nFilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix)\n{\n var worldTransform = sprite.worldTransform.copy(math.Matrix.TEMP_MATRIX),\n texture = sprite._texture.baseTexture;\n\n var mappedMatrix = outputMatrix.identity();\n\n // scale..\n var ratio = this.textureSize.height / this.textureSize.width;\n\n mappedMatrix.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height );\n\n mappedMatrix.scale(1 , ratio);\n\n var translateScaleX = (this.textureSize.width / texture.width);\n var translateScaleY = (this.textureSize.height / texture.height);\n\n worldTransform.tx /= texture.width * translateScaleX;\n worldTransform.ty /= texture.width * translateScaleX;\n\n worldTransform.invert();\n\n mappedMatrix.prepend(worldTransform);\n\n // apply inverse scale..\n mappedMatrix.scale(1 , 1/ratio);\n\n mappedMatrix.scale( translateScaleX , translateScaleY );\n\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n\n return mappedMatrix;\n\n // Keeping the orginal as a reminder to me on how this works!\n //\n // var m = new math.Matrix();\n\n // // scale..\n // var ratio = this.textureSize.height / this.textureSize.width;\n\n // m.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height);\n\n\n // m.scale(1 , ratio);\n\n\n // var transform = wt.clone();\n\n // var translateScaleX = (this.textureSize.width / 620);\n // var translateScaleY = (this.textureSize.height / 380);\n\n // transform.tx /= 620 * translateScaleX;\n // transform.ty /= 620 * translateScaleX;\n\n // transform.invert();\n\n // transform.append(m);\n\n // // apply inverse scale..\n // transform.scale(1 , 1/ratio);\n\n // transform.scale( translateScaleX , translateScaleY );\n\n // return transform;\n};\n\n/*\n * Constrains the filter area to the texture size\n * @param filterArea {Rectangle} The filter area we want to cap\n */\nFilterManager.prototype.capFilterArea = function (filterArea)\n{\n if (filterArea.x < 0)\n {\n filterArea.width += filterArea.x;\n filterArea.x = 0;\n }\n\n if (filterArea.y < 0)\n {\n filterArea.height += filterArea.y;\n filterArea.y = 0;\n }\n\n if ( filterArea.x + filterArea.width > this.textureSize.width )\n {\n filterArea.width = this.textureSize.width - filterArea.x;\n }\n\n if ( filterArea.y + filterArea.height > this.textureSize.height )\n {\n filterArea.height = this.textureSize.height - filterArea.y;\n }\n};\n\n/*\n * Resizes all the render targets in the pool\n * @param width {number} the new width\n * @param height {number} the new height\n */\nFilterManager.prototype.resize = function ( width, height )\n{\n this.textureSize.width = width;\n this.textureSize.height = height;\n\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].resize( width, height );\n }\n};\n\n/**\n * Destroys the filter and removes it from the filter stack.\n *\n */\nFilterManager.prototype.destroy = function ()\n{\n this.filterStack = null;\n this.offsetY = 0;\n\n // destroy textures\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].destroy();\n }\n\n this.texturePool = null;\n};\n", + "var WebGLManager = require('./WebGLManager'),\n RenderTarget = require('../utils/RenderTarget'),\n CONST = require('../../../const'),\n Quad = require('../utils/Quad'),\n math = require('../../../math');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGLManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction FilterManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {any[]}\n */\n this.filterStack = [];\n\n this.filterStack.push({\n renderTarget:renderer.currentRenderTarget,\n filter:[],\n bounds:null\n });\n\n /**\n * @member {any[]}\n */\n this.texturePool = [];\n\n // listen for context and update necessary buffers\n //TODO make this dynamic!\n //TODO test this out by forces power of two?\n this.textureSize = new math.Rectangle( 0, 0, renderer.width, renderer.height );\n\n this.currentFrame = null;\n}\n\nFilterManager.prototype = Object.create(WebGLManager.prototype);\nFilterManager.prototype.constructor = FilterManager;\nmodule.exports = FilterManager;\n\n\n/**\n * Called when there is a WebGL context change.\n *\n */\nFilterManager.prototype.onContextChange = function ()\n{\n this.texturePool.length = 0;\n\n var gl = this.renderer.gl;\n this.quad = new Quad(gl);\n};\n\n/**\n * @param renderer {WebGLRenderer}\n * @param buffer {ArrayBuffer}\n */\nFilterManager.prototype.setFilterStack = function ( filterStack )\n{\n this.filterStack = filterStack;\n};\n\n/**\n * Applies the filter and adds it to the current filter stack.\n *\n * @param filterBlock {object} the filter that will be pushed to the current filter stack\n */\nFilterManager.prototype.pushFilter = function (target, filters)\n{\n // get the bounds of the object..\n var bounds = target.filterArea || target.getBounds();\n //bounds = bounds.clone();\n\n // round off the rectangle to get a nice smoooooooth filter :)\n bounds.x = bounds.x | 0;\n bounds.y = bounds.y | 0;\n bounds.width = bounds.width | 0;\n bounds.height = bounds.height | 0;\n\n\n // padding!\n var padding = filters[0].padding | 0;\n bounds.x -= padding;\n bounds.y -= padding;\n bounds.width += padding * 2;\n bounds.height += padding * 2;\n\n\n if(this.renderer.currentRenderTarget.transform)\n {\n //TODO this will break if the renderTexture transform is anything other than a translation.\n //Will need to take the full matrix transform into acount..\n var transform = this.renderer.currentRenderTarget.transform;\n\n bounds.x += transform.tx;\n bounds.y += transform.ty;\n\n this.capFilterArea( bounds );\n\n bounds.x -= transform.tx;\n bounds.y -= transform.ty;\n }\n else\n {\n this.capFilterArea( bounds );\n }\n\n\n this.currentFrame = bounds;\n\n var texture = this.getRenderTarget();\n\n this.renderer.setRenderTarget(texture);\n\n // clear the texture..\n texture.clear();\n\n // TODO get rid of object creation!\n this.filterStack.push({\n renderTarget: texture,\n filter: filters\n });\n\n};\n\n\n/**\n * Removes the last filter from the filter stack and returns it.\n *\n */\nFilterManager.prototype.popFilter = function ()\n{\n var filterData = this.filterStack.pop();\n var previousFilterData = this.filterStack[this.filterStack.length-1];\n\n var input = filterData.renderTarget;\n\n var output = previousFilterData.renderTarget;\n\n // use program\n var gl = this.renderer.gl;\n\n\n this.currentFrame = input.frame;\n\n this.quad.map(this.textureSize, input.frame);\n\n\n // TODO.. this probably only needs to be done once!\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quad.vertexBuffer);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.quad.indexBuffer);\n\n var filters = filterData.filter;\n\n // assuming all filters follow the correct format??\n gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0);\n gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4);\n gl.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4);\n\n if (filters.length === 1)\n {\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filters[0].uniforms.dimensions)\n {\n filters[0].uniforms.dimensions.value[0] = this.renderer.width;\n filters[0].uniforms.dimensions.value[1] = this.renderer.height;\n filters[0].uniforms.dimensions.value[2] = this.quad.vertices[0];\n filters[0].uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filters[0].applyFilter( this.renderer, input, output );\n this.returnRenderTarget( input );\n\n }\n else\n {\n var flipTexture = input;\n var flopTexture = this.getRenderTarget(true);\n\n for (var i = 0; i < filters.length-1; i++)\n {\n var filter = filters[i];\n\n // TODO (cengler) - There has to be a better way then setting this each time?\n if (filter.uniforms.dimensions)\n {\n filter.uniforms.dimensions.value[0] = this.renderer.width;\n filter.uniforms.dimensions.value[1] = this.renderer.height;\n filter.uniforms.dimensions.value[2] = this.quad.vertices[0];\n filter.uniforms.dimensions.value[3] = this.quad.vertices[5];\n }\n\n filter.applyFilter( this.renderer, flipTexture, flopTexture );\n\n var temp = flipTexture;\n flipTexture = flopTexture;\n flopTexture = temp;\n }\n\n filters[filters.length-1].applyFilter( this.renderer, flipTexture, output );\n\n this.returnRenderTarget( flipTexture );\n this.returnRenderTarget( flopTexture );\n }\n\n return filterData.filter;\n};\n\n/**\n * Grabs an render target from the internal pool\n *\n * @param clear {boolean} Whether or not we need to clear the RenderTarget\n * @return {RenderTarget}\n */\nFilterManager.prototype.getRenderTarget = function ( clear )\n{\n var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, CONST.SCALE_MODES.LINEAR, this.renderer.resolution * CONST.FILTER_RESOLUTION);\n renderTarget.frame = this.currentFrame;\n\n if (clear)\n {\n renderTarget.clear(true);\n }\n\n return renderTarget;\n};\n\n/*\n * Returns a RenderTarget to the internal pool\n * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool\n */\nFilterManager.prototype.returnRenderTarget = function (renderTarget)\n{\n this.texturePool.push( renderTarget );\n};\n\n/*\n * Applies the filter\n * @param shader {Shader} The shader to upload\n * @param inputTarget {RenderTarget}\n * @param outputTarget {RenderTarget}\n * @param clear {boolean} Whether or not we want to clear the outputTarget\n */\nFilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear)\n{\n var gl = this.renderer.gl;\n\n this.renderer.setRenderTarget(outputTarget);\n\n if (clear)\n {\n outputTarget.clear();\n }\n\n // set the shader\n this.renderer.shaderManager.setShader(shader);\n\n // TODO (cengler) - Can this be cached and not `toArray`ed each frame?\n shader.uniforms.projectionMatrix.value = this.renderer.currentRenderTarget.projectionMatrix.toArray(true);\n\n //TODO can this be optimised?\n shader.syncUniforms();\n/*\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 0, 0);\n gl.vertexAttribPointer(shader.attributes.aTextureCoord, 2, gl.FLOAT, false, 0, 2 * 4 * 4);\n gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false, 0, 4 * 4 * 4);\n*/\n\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, inputTarget.texture);\n\n gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n};\n\n/*\n * Calculates the mapped matrix\n * @param filterArea {Rectangle} The filter area\n * @param sprite {Sprite} the target sprite\n * @param outputMatrix {Matrix} @alvin\n */\n// TODO playing around here.. this is temporary - (will end up in the shader)\nFilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix)\n{\n var worldTransform = sprite.worldTransform.copy(math.Matrix.TEMP_MATRIX),\n texture = sprite._texture.baseTexture;\n\n var mappedMatrix = outputMatrix.identity();\n\n // scale..\n var ratio = this.textureSize.height / this.textureSize.width;\n\n mappedMatrix.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height );\n\n mappedMatrix.scale(1 , ratio);\n\n var translateScaleX = (this.textureSize.width / texture.width);\n var translateScaleY = (this.textureSize.height / texture.height);\n\n worldTransform.tx /= texture.width * translateScaleX;\n worldTransform.ty /= texture.width * translateScaleX;\n\n worldTransform.invert();\n\n mappedMatrix.prepend(worldTransform);\n\n // apply inverse scale..\n mappedMatrix.scale(1 , 1/ratio);\n\n mappedMatrix.scale( translateScaleX , translateScaleY );\n\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n\n return mappedMatrix;\n\n // Keeping the orginal as a reminder to me on how this works!\n //\n // var m = new math.Matrix();\n\n // // scale..\n // var ratio = this.textureSize.height / this.textureSize.width;\n\n // m.translate(filterArea.x / this.textureSize.width, filterArea.y / this.textureSize.height);\n\n\n // m.scale(1 , ratio);\n\n\n // var transform = wt.clone();\n\n // var translateScaleX = (this.textureSize.width / 620);\n // var translateScaleY = (this.textureSize.height / 380);\n\n // transform.tx /= 620 * translateScaleX;\n // transform.ty /= 620 * translateScaleX;\n\n // transform.invert();\n\n // transform.append(m);\n\n // // apply inverse scale..\n // transform.scale(1 , 1/ratio);\n\n // transform.scale( translateScaleX , translateScaleY );\n\n // return transform;\n};\n\n/*\n * Constrains the filter area to the texture size\n * @param filterArea {Rectangle} The filter area we want to cap\n */\nFilterManager.prototype.capFilterArea = function (filterArea)\n{\n if (filterArea.x < 0)\n {\n filterArea.width += filterArea.x;\n filterArea.x = 0;\n }\n\n if (filterArea.y < 0)\n {\n filterArea.height += filterArea.y;\n filterArea.y = 0;\n }\n\n if ( filterArea.x + filterArea.width > this.textureSize.width )\n {\n filterArea.width = this.textureSize.width - filterArea.x;\n }\n\n if ( filterArea.y + filterArea.height > this.textureSize.height )\n {\n filterArea.height = this.textureSize.height - filterArea.y;\n }\n};\n\n/*\n * Resizes all the render targets in the pool\n * @param width {number} the new width\n * @param height {number} the new height\n */\nFilterManager.prototype.resize = function ( width, height )\n{\n this.textureSize.width = width;\n this.textureSize.height = height;\n\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].resize( width, height );\n }\n};\n\n/**\n * Destroys the filter and removes it from the filter stack.\n *\n */\nFilterManager.prototype.destroy = function ()\n{\n this.filterStack = null;\n this.offsetY = 0;\n\n // destroy textures\n for (var i = 0; i < this.texturePool.length; i++)\n {\n this.texturePool[i].destroy();\n }\n\n this.texturePool = null;\n};\n", "var WebGLManager = require('./WebGLManager'),\n AlphaMaskFilter = require('../filters/SpriteMaskFilter');\n\n/**\n * @class\n * @memberof PIXI\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction MaskManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n this.stencilStack = [];\n this.reverse = true;\n this.count = 0;\n\n this.alphaMaskPool = [];\n}\n\nMaskManager.prototype = Object.create(WebGLManager.prototype);\nMaskManager.prototype.constructor = MaskManager;\nmodule.exports = MaskManager;\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param graphics {Graphics}\n * @param webGLData {any[]}\n */\nMaskManager.prototype.pushMask = function (target, maskData)\n{\n if (maskData.texture)\n {\n this.pushSpriteMask(target, maskData);\n }\n else\n {\n this.pushStencilMask(target, maskData);\n }\n\n};\n\n/**\n * Removes the last mask from the mask stack and doesn't return it.\n * \n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.popMask = function (target, maskData)\n{\n if (maskData.texture)\n {\n this.popSpriteMask(target, maskData);\n }\n else\n {\n this.popStencilMask(target, maskData);\n }\n};\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.pushSpriteMask = function (target, maskData)\n{\n var alphaMaskFilter = this.alphaMaskPool.pop();\n\n if (!alphaMaskFilter)\n {\n alphaMaskFilter = [new AlphaMaskFilter(maskData)];\n }\n\n this.renderer.filterManager.pushFilter(target, alphaMaskFilter);\n};\n\n/**\n * Removes the last filter from the filter stack and doesn't return it.\n *\n */\nMaskManager.prototype.popSpriteMask = function ()\n{\n var filters = this.renderer.filterManager.popFilter();\n\n this.alphaMaskPool.push(filters);\n};\n\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.pushStencilMask = function (target, maskData)\n{\n this.renderer.stencilManager.pushMask(maskData);\n};\n\n/**\n * Removes the last filter from the filter stack and doesn't return it.\n * @param target {RenderTarget}\n * @param maskData {any[]}\n */\nMaskManager.prototype.popStencilMask = function (target, maskData)\n{\n this.renderer.stencilManager.popMask(maskData);\n};\n\n", "var WebGLManager = require('./WebGLManager'),\n TextureShader = require('../shaders/TextureShader'),\n ComplexPrimitiveShader = require('../shaders/ComplexPrimitiveShader'),\n PrimitiveShader = require('../shaders/PrimitiveShader'),\n utils = require('../../../utils');\n\n/**\n * @class\n * @memberof PIXI\n * @extends WebGLManager\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction ShaderManager(renderer)\n{\n WebGLManager.call(this, renderer);\n\n /**\n * @member {number}\n */\n this.maxAttibs = 10;\n\n /**\n * @member {any[]}\n */\n this.attribState = [];\n\n /**\n * @member {any[]}\n */\n this.tempAttribState = [];\n\n for (var i = 0; i < this.maxAttibs; i++)\n {\n this.attribState[i] = false;\n }\n\n /**\n * @member {any[]}\n */\n this.stack = [];\n\n /**\n * @member {number}\n * @private\n */\n this._currentId = -1;\n\n /**\n * @member {Shader}\n * @private\n */\n this.currentShader = null;\n\n// this.initPlugins();\n}\n\nShaderManager.prototype = Object.create(WebGLManager.prototype);\nShaderManager.prototype.constructor = ShaderManager;\nutils.pluginTarget.mixin(ShaderManager);\n\nmodule.exports = ShaderManager;\n\n/**\n * Called when there is a WebGL context change.\n *\n */\nShaderManager.prototype.onContextChange = function ()\n{\n this.initPlugins();\n\n // TODO - Why are these not plugins? We can't decouple primitives unless they are....\n this.defaultShader = new TextureShader(this);\n this.primitiveShader = new PrimitiveShader(this);\n this.complexPrimitiveShader = new ComplexPrimitiveShader(this);\n};\n\n/**\n * Takes the attributes given in parameters and uploads them.\n *\n * @param attribs {Array} attribs\n */\nShaderManager.prototype.setAttribs = function (attribs)\n{\n // reset temp state\n var i;\n\n for (i = 0; i < this.tempAttribState.length; i++)\n {\n this.tempAttribState[i] = false;\n }\n\n // set the new attribs\n for (var a in attribs)\n {\n this.tempAttribState[attribs[a]] = true;\n }\n\n var gl = this.renderer.gl;\n\n for (i = 0; i < this.attribState.length; i++)\n {\n if (this.attribState[i] !== this.tempAttribState[i])\n {\n this.attribState[i] = this.tempAttribState[i];\n\n if (this.attribState[i])\n {\n gl.enableVertexAttribArray(i);\n }\n else\n {\n gl.disableVertexAttribArray(i);\n }\n }\n }\n};\n\n/**\n * Sets the current shader.\n *\n * @param shader {Shader} the shader to upload\n */\nShaderManager.prototype.setShader = function (shader)\n{\n if (this._currentId === shader.uuid)\n {\n return false;\n }\n\n this._currentId = shader.uuid;\n\n this.currentShader = shader;\n\n this.renderer.gl.useProgram(shader.program);\n this.setAttribs(shader.attributes);\n\n return true;\n};\n\n/**\n * Destroys this object.\n *\n */\nShaderManager.prototype.destroy = function ()\n{\n WebGLManager.prototype.destroy.call(this);\n\n this.destroyPlugins();\n\n this.attribState = null;\n\n this.tempAttribState = null;\n};\n", "var WebGLManager = require('./WebGLManager'),\n utils = require('../../../utils');\n\n/**\n * @class\n * @memberof PIXI\n * @param renderer {WebGLRenderer} The renderer this manager works for.\n */\nfunction WebGLMaskManager(renderer)\n{\n WebGLManager.call(this, renderer);\n this.stencilMaskStack = null;\n}\n\nWebGLMaskManager.prototype = Object.create(WebGLManager.prototype);\nWebGLMaskManager.prototype.constructor = WebGLMaskManager;\nmodule.exports = WebGLMaskManager;\n\n/**\n * Changes the mask stack that is used by this manager\n * @param stencilMaskStack {StencilMaskStack} The mask stack \n *\n */\nWebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack )\n{\n this.stencilMaskStack = stencilMaskStack;\n\n var gl = this.renderer.gl;\n\n if (stencilMaskStack.stencilStack.length === 0)\n {\n gl.disable(gl.STENCIL_TEST);\n }\n else\n {\n gl.enable(gl.STENCIL_TEST);\n }\n};\n\n/**\n * Applies the Mask and adds it to the current filter stack. @alvin\n * \n * @param graphics {Graphics}\n * @param webGLData {any[]}\n */\nWebGLMaskManager.prototype.pushStencil = function (graphics, webGLData)\n{\n this.renderer.currentRenderTarget.attachStencilBuffer();\n\n var gl = this.renderer.gl,\n sms = this.stencilMaskStack;\n\n this.bindGraphics(graphics, webGLData, this.renderer);\n\n if (sms.stencilStack.length === 0)\n {\n gl.enable(gl.STENCIL_TEST);\n gl.clear(gl.STENCIL_BUFFER_BIT);\n sms.reverse = true;\n sms.count = 0;\n }\n\n sms.stencilStack.push(webGLData);\n\n var level = sms.count;\n\n gl.colorMask(false, false, false, false);\n\n gl.stencilFunc(gl.ALWAYS,0,0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT);\n\n // draw the triangle strip!\n\n if (webGLData.mode === 1)\n {\n gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 );\n\n if (sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n\n // draw a quad to increment..\n gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 );\n\n if (sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n }\n\n sms.reverse = !sms.reverse;\n }\n else\n {\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n\n gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 );\n\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n }\n }\n\n gl.colorMask(true, true, true, true);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP);\n\n sms.count++;\n};\n\n/**\n * TODO this does not belong here!\n *\n * @param graphics {Graphics}\n * @param webGLData {Array}\n */\nWebGLMaskManager.prototype.bindGraphics = function (graphics, webGLData)\n{\n //if (this._currentGraphics === graphics)return;\n this._currentGraphics = graphics;\n\n var gl = this.renderer.gl;\n\n // bind the graphics object..\n var shader;// = this.renderer.shaderManager.plugins.primitiveShader;\n\n if (webGLData.mode === 1)\n {\n shader = this.renderer.shaderManager.complexPrimitiveShader;\n\n this.renderer.shaderManager.setShader(shader);\n\n gl.uniformMatrix3fv(shader.uniforms.translationMatrix._location, false, graphics.worldTransform.toArray(true));\n\n gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true));\n\n gl.uniform3fv(shader.uniforms.tint._location, utils.hex2rgb(graphics.tint));\n\n gl.uniform3fv(shader.uniforms.color._location, webGLData.color);\n\n gl.uniform1f(shader.uniforms.alpha._location, graphics.worldAlpha);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer);\n\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 4 * 2, 0);\n\n\n // now do the rest..\n // set the index buffer!\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer);\n }\n else\n {\n //this.renderer.shaderManager.activatePrimitiveShader();\n shader = this.renderer.shaderManager.primitiveShader;\n\n this.renderer.shaderManager.setShader( shader );\n\n gl.uniformMatrix3fv(shader.uniforms.translationMatrix._location, false, graphics.worldTransform.toArray(true));\n\n gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true));\n\n gl.uniform3fv(shader.uniforms.tint._location, utils.hex2rgb(graphics.tint));\n\n gl.uniform1f(shader.uniforms.alpha._location, graphics.worldAlpha);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer);\n\n gl.vertexAttribPointer(shader.attributes.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0);\n gl.vertexAttribPointer(shader.attributes.aColor, 4, gl.FLOAT, false,4 * 6, 2 * 4);\n\n // set the index buffer!\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer);\n }\n};\n\n/**\n * TODO @alvin\n * @param graphics {Graphics}\n * @param webGLData {Array}\n */\nWebGLMaskManager.prototype.popStencil = function (graphics, webGLData)\n{\n var gl = this.renderer.gl,\n sms = this.stencilMaskStack;\n\n sms.stencilStack.pop();\n\n sms.count--;\n\n if (sms.stencilStack.length === 0)\n {\n // the stack is empty!\n gl.disable(gl.STENCIL_TEST);\n\n }\n else\n {\n\n var level = sms.count;\n\n this.bindGraphics(graphics, webGLData, this.renderer);\n\n gl.colorMask(false, false, false, false);\n\n if (webGLData.mode === 1)\n {\n sms.reverse = !sms.reverse;\n\n if (sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n\n // draw a quad to increment..\n gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 );\n\n gl.stencilFunc(gl.ALWAYS,0,0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT);\n\n // draw the triangle strip!\n gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 );\n\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n }\n\n }\n else\n {\n // console.log(\"<<>>\")\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level+1, 0xFF);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR);\n }\n\n gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 );\n\n if (!sms.reverse)\n {\n gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF);\n }\n else\n {\n gl.stencilFunc(gl.EQUAL,level, 0xFF);\n }\n }\n\n gl.colorMask(true, true, true, true);\n gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP);\n\n\n }\n};\n\n/**\n * Destroys the mask stack.\n *\n */\nWebGLMaskManager.prototype.destroy = function ()\n{\n WebGLManager.prototype.destroy.call(this);\n\n this.stencilMaskStack.stencilStack = null;\n};\n\n/**\n * Applies the Mask and adds it to the current filter stack.\n *\n * @param maskData {any[]} The mask data structure to use\n */\nWebGLMaskManager.prototype.pushMask = function (maskData)\n{\n\n\n this.renderer.setObjectRenderer(this.renderer.plugins.graphics);\n\n if (maskData.dirty)\n {\n this.renderer.plugins.graphics.updateGraphics(maskData, this.renderer.gl);\n }\n\n if (!maskData._webGL[this.renderer.gl.id].data.length)\n {\n return;\n }\n\n this.pushStencil(maskData, maskData._webGL[this.renderer.gl.id].data[0], this.renderer);\n};\n\n/**\n * Removes the last filter from the filter stack and doesn't return it.\n *\n * @param maskData {any[]}\n */\nWebGLMaskManager.prototype.popMask = function (maskData)\n{\n this.renderer.setObjectRenderer(this.renderer.plugins.graphics);\n\n this.popStencil(maskData, maskData._webGL[this.renderer.gl.id].data[0], this.renderer);\n};\n\n", @@ -216,9 +216,9 @@ "var core = require('../../../core');\n\n/**\n * @class\n * @extends Shader\n * @memberof PIXI.extras\n * @param shaderManager {ShaderManager} The WebGL shader manager this shader works for.\n */\nfunction StripShader(shaderManager)\n{\n core.Shader.call(this,\n shaderManager,\n // vertex shader\n [\n 'precision lowp float;',\n 'attribute vec2 aVertexPosition;',\n 'attribute vec2 aTextureCoord;',\n\n 'uniform mat3 translationMatrix;',\n 'uniform mat3 projectionMatrix;',\n\n 'varying vec2 vTextureCoord;',\n\n 'void main(void){',\n ' gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);',\n ' vTextureCoord = aTextureCoord;',\n '}'\n ].join('\\n'),\n [\n 'precision lowp float;',\n\n 'varying vec2 vTextureCoord;',\n 'uniform float alpha;',\n\n 'uniform sampler2D uSampler;',\n\n 'void main(void){',\n ' gl_FragColor = texture2D(uSampler, vTextureCoord) * alpha ;',\n '}'\n ].join('\\n'),\n // custom uniforms\n {\n alpha: { type: '1f', value: 0 },\n translationMatrix: { type: 'mat3', value: new Float32Array(9) },\n projectionMatrix: { type: 'mat3', value: new Float32Array(9) }\n },\n // custom attributes\n {\n aVertexPosition:0,\n aTextureCoord:0\n }\n );\n}\n\nStripShader.prototype = Object.create(core.Shader.prototype);\nStripShader.prototype.constructor = StripShader;\nmodule.exports = StripShader;\n\ncore.ShaderManager.registerPlugin('meshShader', StripShader);\n", "var core = require('../../core');\n\n\n// TODO (cengler) - The Y is flipped in this shader for some reason.\n\n/**\n * @author Vico @vicocotea\n * original shader : https://www.shadertoy.com/view/lssGDj by @movAX13h\n */\n\n/**\n * An ASCII filter.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction AsciiFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nuniform vec4 dimensions;\\nuniform float pixelSize;\\nuniform sampler2D uSampler;\\n\\nfloat character(float n, vec2 p)\\n{\\n p = floor(p*vec2(4.0, -4.0) + 2.5);\\n if (clamp(p.x, 0.0, 4.0) == p.x && clamp(p.y, 0.0, 4.0) == p.y)\\n {\\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\\n }\\n return 0.0;\\n}\\n\\nvoid main()\\n{\\n vec2 uv = gl_FragCoord.xy;\\n\\n vec3 col = texture2D(uSampler, floor( uv / pixelSize ) * pixelSize / dimensions.xy).rgb;\\n\\n float gray = (col.r + col.g + col.b) / 3.0;\\n\\n float n = 65536.0; // .\\n if (gray > 0.2) n = 65600.0; // :\\n if (gray > 0.3) n = 332772.0; // *\\n if (gray > 0.4) n = 15255086.0; // o\\n if (gray > 0.5) n = 23385164.0; // &\\n if (gray > 0.6) n = 15252014.0; // 8\\n if (gray > 0.7) n = 13199452.0; // @\\n if (gray > 0.8) n = 11512810.0; // #\\n\\n vec2 p = mod( uv / ( pixelSize * 0.5 ), 2.0) - vec2(1.0);\\n col = col * character(n, p);\\n\\n gl_FragColor = vec4(col, 1.0);\\n}\\n\",\n // custom uniforms\n {\n dimensions: { type: '4fv', value: new Float32Array([0, 0, 0, 0]) },\n pixelSize: { type: '1f', value: 8 }\n }\n );\n}\n\nAsciiFilter.prototype = Object.create(core.AbstractFilter.prototype);\nAsciiFilter.prototype.constructor = AsciiFilter;\nmodule.exports = AsciiFilter;\n\nObject.defineProperties(AsciiFilter.prototype, {\n /**\n * The pixel size used by the filter.\n *\n * @member {number}\n * @memberof AsciiFilter#\n */\n size: {\n get: function ()\n {\n return this.uniforms.pixelSize.value;\n },\n set: function (value)\n {\n this.uniforms.pixelSize.value = value;\n }\n }\n});\n", "var core = require('../../core'),\n BlurXFilter = require('../blur/BlurXFilter'),\n BlurYFilter = require('../blur/BlurYFilter');\n\n/**\n * The BloomFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BloomFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYFilter = new BlurYFilter();\n\n this.defaultFilter = new core.AbstractFilter();\n}\n\nBloomFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBloomFilter.prototype.constructor = BloomFilter;\nmodule.exports = BloomFilter;\n\nBloomFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n //TODO - copyTexSubImage2D could be used here?\n this.defaultFilter.applyFilter(renderer, input, output);\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n\n renderer.blendModeManager.setBlendMode(core.CONST.BLEND_MODES.SCREEN);\n\n this.blurYFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.blendModeManager.setBlendMode(core.CONST.BLEND_MODES.NORMAL);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n};\n\nObject.defineProperties(BloomFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf BloomFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf BloomFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf BloomFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYFilter.blur;\n },\n set: function (value)\n {\n this.blurYFilter.blur = value;\n }\n }\n});\n", - "var core = require('../../core'),\n BlurXFilter = require('./BlurXFilter'),\n BlurYFilter = require('./BlurYFilter');\n\n/**\n * The BlurFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYFilter = new BlurYFilter();\n}\n\nBlurFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurFilter.prototype.constructor = BlurFilter;\nmodule.exports = BlurFilter;\n\nBlurFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n this.blurYFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n\n\n};\n\nObject.defineProperties(BlurFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.padding = value * 1.5;\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n }\n },\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 1\n */\n passes: {\n get: function ()\n {\n return this.blurXFilter.passes;\n },\n set: function (value)\n {\n this.blurXFilter.passes = this.blurYFilter.passes = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYFilter.blur;\n },\n set: function (value)\n {\n this.blurYFilter.blur = value;\n }\n }\n});\n", - "var core = require('../../core');\n\n\n/**\n * The BlurXFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurXFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(-0.012 * strength, 0.0);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(-0.008 * strength, 0.0);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(-0.004 * strength, 0.0);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2( 0.004 * strength, 0.0);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2( 0.008 * strength, 0.0);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2( 0.012 * strength, 0.0);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 1\n */\n this.passes = 1;\n\n this.strength = 4;\n}\n\nBlurXFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurXFilter.prototype.constructor = BlurXFilter;\nmodule.exports = BlurXFilter;\n\nBlurXFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.width / input.size.width);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurXFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value;\n this.strength = value;\n }\n },\n});\n", - "var core = require('../../core');\n\n\n/**\n * The BlurYFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n this.passes = 1;\n this.strength = 4;\n}\n\nBlurYFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYFilter.prototype.constructor = BlurYFilter;\nmodule.exports = BlurYFilter;\n\nBlurYFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurYFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value;\n this.strength = value;\n }\n },\n});\n", + "var core = require('../../core'),\n BlurXFilter = require('./BlurXFilter'),\n BlurYFilter = require('./BlurYFilter');\n\n/**\n * The BlurFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYFilter = new BlurYFilter();\n}\n\nBlurFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurFilter.prototype.constructor = BlurFilter;\nmodule.exports = BlurFilter;\n\nBlurFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n this.blurYFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n\n\n};\n\nObject.defineProperties(BlurFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n }\n },\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 1\n */\n passes: {\n get: function ()\n {\n return this.blurXFilter.passes;\n },\n set: function (value)\n {\n this.blurXFilter.passes = this.blurYFilter.passes = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf BlurFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYFilter.blur;\n },\n set: function (value)\n {\n this.blurYFilter.blur = value;\n }\n }\n});\n", + "var core = require('../../core');\n\n\n/**\n * The BlurXFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurXFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(-0.012 * strength, 0.0);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(-0.008 * strength, 0.0);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(-0.004 * strength, 0.0);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2( 0.004 * strength, 0.0);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2( 0.008 * strength, 0.0);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2( 0.012 * strength, 0.0);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n /**\n * Sets the number of passes for blur. More passes means higher quaility bluring.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 1\n */\n this.passes = 1;\n\n this.strength = 4;\n}\n\nBlurXFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurXFilter.prototype.constructor = BlurXFilter;\nmodule.exports = BlurXFilter;\n\nBlurXFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.width / input.size.width);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurXFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurXFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.strength = value;\n }\n },\n});\n", + "var core = require('../../core');\n\n\n/**\n * The BlurYFilter applies a horizontal Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = vec4(0.0);\\n\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n}\\n\",\n // set the uniforms\n {\n strength: { type: '1f', value: 1 }\n }\n );\n\n this.passes = 1;\n this.strength = 4;\n}\n\nBlurYFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYFilter.prototype.constructor = BlurYFilter;\nmodule.exports = BlurYFilter;\n\nBlurYFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurYFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.strength = value;\n }\n },\n});\n", "var core = require('../../core');\n\n\n/**\n * A Smart Blur Filter.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction SmartBlurFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nconst vec2 delta = vec2(1.0/10.0, 0.0);\\n\\nfloat random(vec3 scale, float seed)\\n{\\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\\n}\\n\\nvoid main(void)\\n{\\n vec4 color = vec4(0.0);\\n float total = 0.0;\\n\\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\\n\\n for (float t = -30.0; t <= 30.0; t++)\\n {\\n float percent = (t + offset - 0.5) / 30.0;\\n float weight = 1.0 - abs(percent);\\n vec4 sample = texture2D(uSampler, vTextureCoord + delta * percent);\\n sample.rgb *= sample.a;\\n color += sample * weight;\\n total += weight;\\n }\\n\\n gl_FragColor = color / total;\\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\\n}\\n\"\n );\n}\n\nSmartBlurFilter.prototype = Object.create(core.AbstractFilter.prototype);\nSmartBlurFilter.prototype.constructor = SmartBlurFilter;\nmodule.exports = SmartBlurFilter;\n", "var core = require('../../core');\n\n\n/**\n * The ColorMatrixFilter class lets you apply a 5x5 matrix transformation on the RGBA\n * color and alpha values of every pixel on your displayObject to produce a result\n * with a new set of RGBA color and alpha values. It's pretty powerful!\n *\n * ```js\n * var colorMatrix = new PIXI.ColorMatrixFilter();\n * container.filters = [colorMatrix];\n * colorMatrix.contrast(2);\n * ```\n * @author Clément Chenebault \n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction ColorMatrixFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform float m[24];\\n\\nuniform vec4 d;\\n\\nvoid main(void)\\n{\\n \\n vec4 c = texture2D(uSampler, vTextureCoord);\\n\\n\\tgl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];\\n\\tgl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];\\n\\tgl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];\\n\\tgl_FragColor.a = c.a;\\n}\\n\",\n // custom uniforms\n {\n m: { type: '1fv', value: [1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1] },\n }\n );\n}\n\nColorMatrixFilter.prototype = Object.create(core.AbstractFilter.prototype);\nColorMatrixFilter.prototype.constructor = ColorMatrixFilter;\nmodule.exports = ColorMatrixFilter;\n\n\n/**\n * Transforms current matrix and set the new one\n *\n * @param matrix {array} (mat 5x5)\n * @param multiply {boolean} if true, current matrix and matrix are multiplied. If false, just set the current matrix with @param matrix\n */\nColorMatrixFilter.prototype._loadMatrix = function(matrix, multiply)\n{\n multiply = !!multiply;\n\n var newMatrix = matrix;\n\n if(multiply)\n {\n this._multiply(newMatrix, this.uniforms.m.value, matrix);\n newMatrix = this._colorMatrix(newMatrix);\n }\n\n // set the new matrix\n this.uniforms.m.value = newMatrix;\n};\n\n/**\n * Multiplies two mat5's\n *\n * @param out {array} (mat 5x5) the receiving matrix\n * @param a {array} (mat 5x5) the first operand\n * @param b {array} (mat 5x5) the second operand\n * @returns out {array} (mat 5x5)\n */\nColorMatrixFilter.prototype._multiply = function (out, a, b) {\n\n // first line\n out[0] = a[0]*b[0] + a[1]*b[5] + a[2]*b[10] + a[3]*b[15] + a[4]*b[20];\n out[1] = a[0]*b[1] + a[1]*b[6] + a[2]*b[11] + a[3]*b[16] +a[4]*b[21];\n out[2] = a[0]*b[2] + a[1]*b[7] + a[2]*b[12] + a[3]*b[17] +a[4]*b[22];\n out[3] = a[0]*b[3] + a[1]*b[8] + a[2]*b[13] + a[3]*b[18] +a[4]*b[23];\n out[4] = a[0]*b[4] + a[1]*b[9] + a[2]*b[14] + a[3]*b[19]+a[4]*b[24];\n\n // second line\n out[5] = a[5]*b[0] + a[6]*b[5] + a[7]*b[10]+ a[8]*b[15]+a[9]*b[20];\n out[6] = a[5]*b[1] + a[6]*b[6] + a[7]*b[11]+ a[8]*b[16]+a[9]*b[21];\n out[7] = a[5]*b[2] + a[6]*b[7] + a[7]*b[12]+ a[8]*b[17]+a[9]*b[22];\n out[8] = a[5]*b[3] + a[6]*b[8] + a[7]*b[13]+ a[8]*b[18]+a[9]*b[23];\n out[9] = a[5]*b[4] + a[6]*b[9] + a[7]*b[14]+ a[8]*b[19]+a[9]*b[24];\n\n // third line\n out[10] = a[10]*b[0] + a[11]*b[5] + a[12]*b[10]+ a[13]*b[15]+a[14]*b[20];\n out[11] = a[10]*b[1] + a[11]*b[6] + a[12]*b[11]+ a[13]*b[16]+a[14]*b[21];\n out[12] = a[10]*b[2] + a[11]*b[7] + a[12]*b[12]+ a[13]*b[17]+a[14]*b[22];\n out[13] = a[10]*b[3] + a[11]*b[8] + a[12]*b[13]+ a[13]*b[18]+a[14]*b[23];\n out[14] = a[10]*b[4] + a[11]*b[9] + a[12]*b[14]+ a[13]*b[19]+a[14]*b[24];\n\n // fourth line\n out[15] = a[15]*b[0] + a[16]*b[5] + a[17]*b[10]+ a[18]*b[15]+a[19]*b[20];\n out[16] = a[15]*b[1] + a[16]*b[6] + a[17]*b[11]+ a[18]*b[16]+a[19]*b[21];\n out[17] = a[15]*b[2] + a[16]*b[7] + a[17]*b[12]+ a[18]*b[17]+a[19]*b[22];\n out[18] = a[15]*b[3] + a[16]*b[8] + a[17]*b[13]+ a[18]*b[18]+a[19]*b[23];\n out[19] = a[15]*b[4] + a[16]*b[9] + a[17]*b[14]+ a[18]*b[19]+a[19]*b[24];\n\n // fifth line\n out[20] = a[20]*b[0] + a[21]*b[5] + a[22]*b[10]+ a[23]*b[15]+a[24]*b[20];\n out[21] = a[20]*b[1] + a[21]*b[6] + a[22]*b[11]+ a[23]*b[16]+a[24]*b[21];\n out[22] = a[20]*b[2] + a[21]*b[7] + a[22]*b[12]+ a[23]*b[17]+a[24]*b[22];\n out[23] = a[20]*b[3] + a[21]*b[8] + a[22]*b[13]+ a[23]*b[18]+a[24]*b[23];\n out[24] = a[20]*b[4] + a[21]*b[9] + a[22]*b[14]+ a[23]*b[19]+a[24]*b[24];\n\n return out;\n};\n\n/**\n * Create a Float32 Array and normalize the offset component to 0-1\n *\n * @param matrix {array} (mat 5x5)\n * @return m { array } (mat 5x5) with all values between 0-1\n */\nColorMatrixFilter.prototype._colorMatrix = function( matrix )\n{\n // Create a Float32 Array and normalize the offset component to 0-1\n var m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n return m;\n};\n\n/**\n * Adjusts brightness\n *\n * Multiply the current matrix\n * @param b {number} value of the brigthness (0 is black)\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.brightness = function(b, multiply)\n{\n var matrix = [\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the matrices in grey scales\n *\n * Multiply the current matrix\n * @param scale {number} value of the grey (0 is black)\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.greyscale = function(scale, multiply)\n{\n var matrix = [\n scale, scale, scale, 0, 0,\n scale, scale, scale, 0, 0,\n scale, scale, scale, 0, 0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the black and white matrice\n * Multiply the current matrix\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.blackAndWhite = function(multiply)\n{\n var matrix = [\n 0.3, 0.6, 0.1, 0, 0,\n 0.3, 0.6, 0.1, 0, 0,\n 0.3, 0.6, 0.1, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the hue propertie of the color\n *\n * Multiply the current matrix\n * @param rotation {number} in degrees\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.hue = function(rotation, multiply)\n{\n rotation = (rotation || 0)/180 * Math.PI;\n var cos = Math.cos(rotation),\n sin = Math.sin(rotation);\n\n // luminanceRed, luminanceGreen, luminanceBlue\n var lumR = 0.213, // or 0.3086\n lumG = 0.715, // or 0.6094\n lumB = 0.072; // or 0.0820\n\n var matrix = [\n lumR+cos*(1-lumR)+sin*(-lumR), lumG+cos*(-lumG)+sin*(-lumG), lumB+cos*(-lumB)+sin*(1-lumB), 0, 0,\n lumR+cos*(-lumR)+sin*(0.143), lumG+cos*(1-lumG)+sin*(0.140), lumB+cos*(-lumB)+sin*(-0.283), 0, 0,\n lumR+cos*(-lumR)+sin*(-(1-lumR)), lumG+cos*(-lumG)+sin*(lumG), lumB+cos*(1-lumB)+sin*(lumB), 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n\n/**\n * Set the contrast matrix, increase the separation between dark and bright\n * Increase contrast : shadows darker and highlights brighter\n * Decrease contrast : bring the shadows up and the highlights down\n *\n * @param amount {number} value of the contrast\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.contrast = function(amount, multiply)\n{\n var v = (amount || 0) + 1;\n var o = -128 * (v-1);\n\n var matrix = [\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Set the saturation matrix, increase the separation between colors\n * Increase saturation : increase contrast, brightness, and sharpness\n * @param amount {number}\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.saturation = function(amount, multiply)\n{\n var x = (amount || 0) * 2/3 + 1;\n var y = ((x-1) *-0.5);\n\n var matrix = [\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Desaturate image (remove color)\n *\n * Call the saturate function\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.desaturate = function(multiply)\n{\n this.saturation(-1);\n};\n\n/**\n * Negative image (inverse of classic rgb matrix)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.negative = function(multiply)\n{\n var matrix = [\n 0, 1, 1, 0, 0,\n 1, 0, 1, 0, 0,\n 1, 1, 0, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Sepia image\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.sepia = function(multiply)\n{\n var matrix = [\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Color motion picture process invented in 1916 (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.technicolor = function(multiply)\n{\n var matrix = [\n 1.9125277891456083,-0.8545344976951645,-0.09155508482755585,0,11.793603434377337,\n -0.3087833385928097,1.7658908555458428,-0.10601743074722245,0,-70.35205161461398,\n -0.231103377548616,-0.7501899197440212,1.847597816108189,0,30.950940869491138,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 0];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Polaroid filter\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.polaroid = function(multiply)\n{\n var matrix = [\n 1.438,-0.062,-0.062,0,0,\n -0.122,1.378,-0.122,0,0,\n -0.016,-0.016,1.483,0,0,\n 0,0,0,1,0,\n 0,0,0,0,1];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Filter who transforms : Red -> Blue and Blue -> Red\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.toBGR = function(multiply)\n{\n var matrix = [\n 0,0,1,0,0,\n 0,1,0,0,0,\n 1,0,0,0,0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Color reversal film introduced by Eastman Kodak in 1935. (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.kodachrome = function(multiply)\n{\n var matrix = [\n 1.1285582396593525,-0.3967382283601348,-0.03992559172921793,0,63.72958762196502,\n -0.16404339962244616,1.0835251566291304,-0.05498805115633132,0,24.732407896706203,\n -0.16786010706155763,-0.5603416277695248,1.6014850761964943,0,35.62982807460946,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/**\n * Brown delicious browni filter (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.browni = function(multiply)\n{\n var matrix = [\n 0.5997023498159715,0.34553243048391263,-0.2708298674538042,0,47.43192855600873,\n -0.037703249837783157,0.8609577587992641,0.15059552388459913,0,-36.96841498319127,\n 0.24113635128153335,-0.07441037908422492,0.44972182064877153,0,-7.562075277591283,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * Vintage filter (thanks Dominic Szablewski)\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.vintage = function(multiply)\n{\n var matrix = [\n 0.6279345635605994,0.3202183420819367,-0.03965408211312453,0,9.651285835294123,\n 0.02578397704808868,0.6441188644374771,0.03259127616149294,0,7.462829176470591,\n 0.0466055556782719,-0.0851232987247891,0.5241648018700465,0,5.159190588235296,\n 0,0,0,1,0,\n 0,0,0,0,1,\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * We don't know exactly what it does, kind of gradient map, but funny to play with!\n *\n * @param desaturation {number}\n * @param toned {number}\n * @param lightColor {string} (example : \"0xFFE580\")\n * @param darkColor {string} (example : \"0xFFE580\")\n *\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.colorTone = function(desaturation, toned, lightColor, darkColor, multiply)\n{\n desaturation = desaturation || 0.2;\n toned = toned || 0.15;\n lightColor = lightColor || 0xFFE580;\n darkColor = darkColor || 0x338000;\n\n var lR = ((lightColor >> 16) & 0xFF) / 255;\n var lG = ((lightColor >> 8) & 0xFF) / 255;\n var lB = (lightColor & 0xFF) / 255;\n\n var dR = ((darkColor >> 16) & 0xFF) / 255;\n var dG = ((darkColor >> 8) & 0xFF) / 255;\n var dB = (darkColor & 0xFF) / 255;\n\n var matrix = [\n 0.3, 0.59, 0.11, 0, 0,\n lR, lG, lB, desaturation, 0,\n dR, dG, dB, toned, 0,\n lR-dR, lG-dG, lB-dB, 0, 0,\n 0, 0, 0, 0, 1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * Night effect\n *\n * @param intensity {number}\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.night = function(intensity, multiply)\n{\n intensity = intensity || 0.1;\n var matrix = [\n intensity * ( -2.0), -intensity, 0, 0, 0,\n -intensity, 0, intensity, 0, 0,\n 0, intensity, intensity * 2.0, 0, 0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n\n/*\n * Predator effect\n *\n * Erase the current matrix by setting a new indepent one\n *\n * @param amount {number} how much the predator feels his future victim\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.predator = function(amount, multiply)\n{\n var matrix = [\n 11.224130630493164*amount, -4.794486999511719*amount, -2.8746118545532227*amount, 0*amount, 0.40342438220977783*amount,\n -3.6330697536468506*amount, 9.193157196044922*amount, -2.951810836791992*amount, 0*amount, -1.316135048866272*amount,\n -3.2184197902679443*amount, -4.2375030517578125*amount, 7.476448059082031*amount, 0*amount, 0.8044459223747253*amount,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 0\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * LSD effect\n *\n * Multiply the current matrix\n *\n * @param amount {number} How crazy is your effect\n * @param multiply {boolean} refer to ._loadMatrix() method\n */\nColorMatrixFilter.prototype.lsd = function(multiply)\n{\n var matrix = [\n 2, -0.4, 0.5, 0, 0,\n -0.5, 2, -0.4, 0, 0,\n -0.4, -0.5, 3, 0, 0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, multiply);\n};\n\n/*\n * Reset function\n *\n * Erase the current matrix by setting the default one\n *\n */\nColorMatrixFilter.prototype.reset = function()\n{\n var matrix = [\n 1,0,0,0,0,\n 0,1,0,0,0,\n 0,0,1,0,0,\n 0,0,0,1,0,\n 0,0,0,0,1\n ];\n\n this._loadMatrix(matrix, false);\n};\n\n\nObject.defineProperties(ColorMatrixFilter.prototype, {\n /**\n * Sets the matrix of the color matrix filter\n *\n * @member {number[]}\n * @memberof ColorMatrixFilter#\n * @default [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n */\n matrix: {\n get: function ()\n {\n return this.uniforms.matrix.value;\n },\n set: function (value)\n {\n this.uniforms.matrix.value = value;\n }\n }\n});\n", "var core = require('../../core');\n\n\n/**\n * This lowers the color depth of your image by the given amount, producing an image with a smaller palette.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction ColorStepFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform float step;\\n\\nvoid main(void)\\n{\\n vec4 color = texture2D(uSampler, vTextureCoord);\\n\\n color = floor(color * step) / step;\\n\\n gl_FragColor = color;\\n}\\n\",\n // custom uniforms\n {\n step: { type: '1f', value: 5 }\n }\n );\n}\n\nColorStepFilter.prototype = Object.create(core.AbstractFilter.prototype);\nColorStepFilter.prototype.constructor = ColorStepFilter;\nmodule.exports = ColorStepFilter;\n\nObject.defineProperties(ColorStepFilter.prototype, {\n /**\n * The number of steps to reduce the palette by.\n *\n * @member {number}\n * @memberof ColorStepFilter#\n */\n step: {\n get: function ()\n {\n return this.uniforms.step.value;\n },\n set: function (value)\n {\n this.uniforms.step.value = value;\n }\n }\n});\n", @@ -226,7 +226,7 @@ "var core = require('../../core');\n\n\n/**\n * A Cross Hatch effect filter.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction CrossHatchFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\\n\\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n if (lum < 1.00)\\n {\\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n\\n if (lum < 0.75)\\n {\\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n\\n if (lum < 0.50)\\n {\\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n\\n if (lum < 0.3)\\n {\\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\\n {\\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\n }\\n }\\n}\\n\"\n );\n}\n\nCrossHatchFilter.prototype = Object.create(core.AbstractFilter.prototype);\nCrossHatchFilter.prototype.constructor = CrossHatchFilter;\nmodule.exports = CrossHatchFilter;\n", "var core = require('../../core');\n\n\n/**\n * The DisplacementFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object.\n * You can use this filter to apply all manor of crazy warping effects\n * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y.\n *\n * @class\n * @extends AbstractFilter\n * @namespace PIXI\n * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment\n */\nfunction DisplacementFilter(sprite)\n{\n var maskMatrix = new core.math.Matrix();\n sprite.renderable = false;\n\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 otherMatrix;\\n\\nvarying vec2 vMapCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n vMapCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vMapCoord;\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform vec2 scale;\\n\\nuniform sampler2D uSampler;\\nuniform sampler2D mapSampler;\\n\\nvoid main(void)\\n{\\n vec4 original = texture2D(uSampler, vTextureCoord);\\n vec4 map = texture2D(mapSampler, vMapCoord);\\n\\n map -= 0.5;\\n map.xy *= scale;\\n\\n gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y));\\n}\\n\",\n // uniforms\n {\n mapSampler: { type: 'sampler2D', value: sprite.texture },\n otherMatrix: { type: 'mat3', value: maskMatrix.toArray(true) },\n scale: { type: 'v2', value: { x: 1, y: 1 } }\n }\n );\n\n this.maskSprite = sprite;\n this.maskMatrix = maskMatrix;\n\n\n this.scale = new core.math.Point(20,20);\n\n}\n\nDisplacementFilter.prototype = Object.create(core.AbstractFilter.prototype);\nDisplacementFilter.prototype.constructor = DisplacementFilter;\nmodule.exports = DisplacementFilter;\n\nDisplacementFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var filterManager = renderer.filterManager;\n\n filterManager.calculateMappedMatrix(input.frame, this.maskSprite, this.maskMatrix);\n\n this.uniforms.otherMatrix.value = this.maskMatrix.toArray(true);\n this.uniforms.scale.value.x = this.scale.x * (1/input.frame.width);\n this.uniforms.scale.value.y = this.scale.y * (1/input.frame.height);\n\n var shader = this.getShader(renderer);\n // draw the filter...\n filterManager.applyFilter(shader, input, output);\n};\n\n\nObject.defineProperties(DisplacementFilter.prototype, {\n /**\n * The texture used for the displacement map. Must be power of 2 sized texture.\n *\n * @member {Texture}\n * @memberof DisplacementFilter#\n */\n map: {\n get: function ()\n {\n return this.uniforms.mapSampler.value;\n },\n set: function (value)\n {\n this.uniforms.mapSampler.value = value;\n\n }\n }\n});\n", "var core = require('../../core');\n\n\n/**\n * @author Mat Groves http://matgroves.com/ @Doormat23\n * original filter: https://github.com/evanw/glfx.js/blob/master/src/filters/fun/dotscreen.js\n */\n\n/**\n * This filter applies a dotscreen effect making display objects appear to be made out of\n * black and white halftone dots like an old printer.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction DotScreenFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform vec4 dimensions;\\nuniform sampler2D uSampler;\\n\\nuniform float angle;\\nuniform float scale;\\n\\nfloat pattern()\\n{\\n float s = sin(angle), c = cos(angle);\\n vec2 tex = vTextureCoord * dimensions.xy;\\n vec2 point = vec2(\\n c * tex.x - s * tex.y,\\n s * tex.x + c * tex.y\\n ) * scale;\\n return (sin(point.x) * sin(point.y)) * 4.0;\\n}\\n\\nvoid main()\\n{\\n vec4 color = texture2D(uSampler, vTextureCoord);\\n float average = (color.r + color.g + color.b) / 3.0;\\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\\n}\\n\",\n // custom uniforms\n {\n scale: { type: '1f', value: 1 },\n angle: { type: '1f', value: 5 },\n dimensions: { type: '4fv', value: [0, 0, 0, 0] }\n }\n );\n}\n\nDotScreenFilter.prototype = Object.create(core.AbstractFilter.prototype);\nDotScreenFilter.prototype.constructor = DotScreenFilter;\nmodule.exports = DotScreenFilter;\n\nObject.defineProperties(DotScreenFilter.prototype, {\n /**\n * The scale of the effect.\n * @member {number}\n * @memberof DotScreenFilter#\n */\n scale: {\n get: function ()\n {\n return this.uniforms.scale.value;\n },\n set: function (value)\n {\n this.uniforms.scale.value = value;\n }\n },\n\n /**\n * The radius of the effect.\n * @member {number}\n * @memberof DotScreenFilter#\n */\n angle: {\n get: function ()\n {\n return this.uniforms.angle.value;\n },\n set: function (value)\n {\n this.uniforms.angle.value = value;\n }\n }\n});\n", - "var core = require('../../core'),\n blurFactor = 1 / 7000;\n\n\n/**\n * The BlurYTintFilter applies a vertical Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYTintFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform vec2 offset;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[14];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.028 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.024 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.020 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, -0.016 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 6] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 7] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 8] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 9] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n vBlurTexCoords[10] = aTextureCoord + vec2(0.0, 0.016 * strength);\\n vBlurTexCoords[11] = aTextureCoord + vec2(0.0, 0.020 * strength);\\n vBlurTexCoords[12] = aTextureCoord + vec2(0.0, 0.024 * strength);\\n vBlurTexCoords[13] = aTextureCoord + vec2(0.0, 0.028 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[14];\\nvarying vec4 vColor;\\n\\nuniform float blur;\\nuniform vec3 color;\\nuniform float alpha;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n vec4 sum = vec4(0.0);\\n\\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.0044299121055113265;\\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.00895781211794;\\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.0215963866053;\\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.0443683338718;\\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.0776744219933;\\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.115876621105;\\n sum += texture2D(uSampler, vBlurTexCoords[ 6])*0.147308056121;\\n sum += texture2D(uSampler, vTextureCoord )*0.159576912161;\\n sum += texture2D(uSampler, vBlurTexCoords[ 7])*0.147308056121;\\n sum += texture2D(uSampler, vBlurTexCoords[ 8])*0.115876621105;\\n sum += texture2D(uSampler, vBlurTexCoords[ 9])*0.0776744219933;\\n sum += texture2D(uSampler, vBlurTexCoords[10])*0.0443683338718;\\n sum += texture2D(uSampler, vBlurTexCoords[11])*0.0215963866053;\\n sum += texture2D(uSampler, vBlurTexCoords[12])*0.00895781211794;\\n sum += texture2D(uSampler, vBlurTexCoords[13])*0.0044299121055113265;\\n\\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\\n}\\n\",\n // set the uniforms\n {\n blur: { type: '1f', value: 1 / 512 },\n color: { type: 'c', value: [0,0,0]},\n alpha: { type: '1f', value: 0.7 },\n offset: { type: '2f', value:[5, 5]}\n }\n );\n}\n\nBlurYTintFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYTintFilter.prototype.constructor = BlurYTintFilter;\nmodule.exports = BlurYTintFilter;\n\nObject.defineProperties(BlurYTintFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYTintFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.uniforms.blur.value / blurFactor;\n },\n set: function (value)\n {\n this.uniforms.blur.value = blurFactor * value;\n }\n }\n});\n", + "var core = require('../../core'),\n blurFactor = 1 / 7000;\n\n\n/**\n * The BlurYTintFilter applies a vertical Gaussian blur to an object.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction BlurYTintFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nuniform float strength;\\nuniform vec2 offset;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying vec2 vBlurTexCoords[6];\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n\\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\\n\\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\\n}\\n\",\n // fragment shader\n \"precision lowp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vBlurTexCoords[6];\\nvarying vec4 vColor;\\n\\nuniform vec3 color;\\nuniform float alpha;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n vec4 sum = vec4(0.0);\\n\\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\\n sum += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\\n\\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\\n}\\n\",\n // set the uniforms\n {\n blur: { type: '1f', value: 1 / 512 },\n color: { type: 'c', value: [0,0,0]},\n alpha: { type: '1f', value: 0.7 },\n offset: { type: '2f', value:[5, 5]},\n strength: { type: '1f', value:1}\n }\n );\n\n this.passes = 1;\n this.strength = 4;\n}\n\nBlurYTintFilter.prototype = Object.create(core.AbstractFilter.prototype);\nBlurYTintFilter.prototype.constructor = BlurYTintFilter;\nmodule.exports = BlurYTintFilter;\n\nBlurYTintFilter.prototype.applyFilter = function (renderer, input, output, clear)\n{\n var shader = this.getShader(renderer);\n\n this.uniforms.strength.value = this.strength / 4 / this.passes * (input.frame.height / input.size.height);\n\n if(this.passes === 1)\n {\n renderer.filterManager.applyFilter(shader, input, output, clear);\n }\n else\n {\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n var flip = input;\n var flop = renderTarget;\n\n for(var i = 0; i < this.passes-1; i++)\n {\n renderer.filterManager.applyFilter(shader, flip, flop, clear);\n\n var temp = flop;\n flop = flip;\n flip = temp;\n }\n\n renderer.filterManager.applyFilter(shader, flip, output, clear);\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n }\n};\n\n\nObject.defineProperties(BlurYTintFilter.prototype, {\n /**\n * Sets the strength of both the blur.\n *\n * @member {number}\n * @memberof BlurYFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.strength;\n },\n set: function (value)\n {\n this.padding = value * 0.5;\n this.strength = value;\n }\n },\n});\n", "var core = require('../../core'),\n BlurXFilter = require('../blur/BlurXFilter'),\n BlurYTintFilter = require('./BlurYTintFilter');\n\n/**\n * The DropShadowFilter applies a Gaussian blur to an object.\n * The strength of the blur can be set for x- and y-axis separately.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction DropShadowFilter()\n{\n core.AbstractFilter.call(this);\n\n this.blurXFilter = new BlurXFilter();\n this.blurYTintFilter = new BlurYTintFilter();\n\n this.defaultFilter = new core.AbstractFilter();\n\n this.padding = 30;\n\n this._dirtyPosition = true;\n this._angle = 45 * Math.PI / 180;\n this._distance = 10;\n this.alpha = 0.75;\n this.hideObject = false;\n this.blendMode = core.CONST.BLEND_MODES.MULTIPLY;\n}\n\nDropShadowFilter.prototype = Object.create(core.AbstractFilter.prototype);\nDropShadowFilter.prototype.constructor = DropShadowFilter;\nmodule.exports = DropShadowFilter;\n\nDropShadowFilter.prototype.applyFilter = function (renderer, input, output)\n{\n var renderTarget = renderer.filterManager.getRenderTarget(true);\n\n //TODO - copyTexSubImage2D could be used here?\n if(this._dirtyPosition)\n {\n this._dirtyPosition = false;\n\n this.blurYTintFilter.uniforms.offset.value[0] = Math.sin(this._angle) * this._distance;\n this.blurYTintFilter.uniforms.offset.value[1] = Math.cos(this._angle) * this._distance;\n }\n\n this.blurXFilter.applyFilter(renderer, input, renderTarget);\n\n renderer.blendModeManager.setBlendMode(this.blendMode);\n\n this.blurYTintFilter.applyFilter(renderer, renderTarget, output);\n\n renderer.blendModeManager.setBlendMode(core.CONST.BLEND_MODES.NORMAL);\n\n if(!this.hideObject)\n {\n\n this.defaultFilter.applyFilter(renderer, input, output);\n }\n\n\n renderer.filterManager.returnRenderTarget(renderTarget);\n};\n\nObject.defineProperties(DropShadowFilter.prototype, {\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n *\n * @member {number}\n * @memberOf DropShadowFilter#\n * @default 2\n */\n blur: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = this.blurYTintFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurX property\n *\n * @member {number}\n * @memberOf DropShadowFilter#\n * @default 2\n */\n blurX: {\n get: function ()\n {\n return this.blurXFilter.blur;\n },\n set: function (value)\n {\n this.blurXFilter.blur = value;\n }\n },\n\n /**\n * Sets the strength of the blurY property\n *\n * @member {number}\n * @memberOf DropShadowFilter#\n * @default 2\n */\n blurY: {\n get: function ()\n {\n return this.blurYTintFilter.blur;\n },\n set: function (value)\n {\n this.blurYTintFilter.blur = value;\n }\n },\n\n color: {\n get: function ()\n {\n return core.utils.rgb2hex( this.blurYTintFilter.uniforms.color.value );\n },\n set: function (value)\n {\n this.blurYTintFilter.uniforms.color.value = core.utils.hex2rgb(value);\n }\n },\n\n alpha: {\n get: function ()\n {\n return this.blurYTintFilter.uniforms.alpha.value;\n },\n set: function (value)\n {\n this.blurYTintFilter.uniforms.alpha.value = value;\n }\n },\n\n distance: {\n get: function ()\n {\n return this._distance;\n },\n set: function (value)\n {\n this._dirtyPosition = true;\n this._distance = value;\n }\n },\n\n angle: {\n get: function ()\n {\n return this._angle;\n },\n set: function (value)\n {\n this._dirtyPosition = true;\n this._angle = value;\n }\n }\n});\n", "var core = require('../../core');\n\n\n/**\n * This greyscales the palette of your Display Objects.\n *\n * @class\n * @extends AbstractFilter\n * @memberof PIXI.filters\n */\nfunction GrayFilter()\n{\n core.AbstractFilter.call(this,\n // vertex shader\n null,\n // fragment shader\n \"precision mediump float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\nuniform float gray;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord);\\n gl_FragColor.rgb = mix(gl_FragColor.rgb, vec3(0.2126*gl_FragColor.r + 0.7152*gl_FragColor.g + 0.0722*gl_FragColor.b), gray);\\n}\\n\",\n // set the uniforms\n {\n gray: { type: '1f', value: 1 }\n }\n );\n}\n\nGrayFilter.prototype = Object.create(core.AbstractFilter.prototype);\nGrayFilter.prototype.constructor = GrayFilter;\nmodule.exports = GrayFilter;\n\nObject.defineProperties(GrayFilter.prototype, {\n /**\n * The strength of the gray. 1 will make the object black and white, 0 will make the object its normal color.\n *\n * @member {number}\n * @memberof GrayFilter#\n */\n gray: {\n get: function ()\n {\n return this.uniforms.gray.value;\n },\n set: function (value)\n {\n this.uniforms.gray.value = value;\n }\n }\n});\n", "/**\n * @file Main export of the PIXI filters library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.filters\n */\nmodule.exports = {\n // expose some internal filters...\n AbstractFilter: require('../core/renderers/webgl/filters/AbstractFilter'),\n FXAAFilter: require('../core/renderers/webgl/filters/FXAAFilter'),\n SpriteMaskFilter: require('../core/renderers/webgl/filters/SpriteMaskFilter'),\n // add the rest!\n AsciiFilter: require('./ascii/AsciiFilter'),\n BloomFilter: require('./bloom/BloomFilter'),\n BlurFilter: require('./blur/BlurFilter'),\n BlurXFilter: require('./blur/BlurXFilter'),\n BlurYFilter: require('./blur/BlurYFilter'),\n ColorMatrixFilter: require('./color/ColorMatrixFilter'),\n ColorStepFilter: require('./color/ColorStepFilter'),\n ConvolutionFilter: require('./convolution/ConvolutionFilter'),\n CrossHatchFilter: require('./crosshatch/CrossHatchFilter'),\n DisplacementFilter: require('./displacement/DisplacementFilter'),\n DotScreenFilter: require('./dot/DotScreenFilter'),\n GrayFilter: require('./gray/GrayFilter'),\n DropShadowFilter: require('./dropshadow/DropShadowFilter'),\n InvertFilter: require('./invert/InvertFilter'),\n NoiseFilter: require('./noise/NoiseFilter'),\n NormalMapFilter: require('./normal/NormalMapFilter'),\n PixelateFilter: require('./pixelate/PixelateFilter'),\n RGBSplitFilter: require('./rgb/RGBSplitFilter'),\n ShockwaveFilter: require('./shockwave/ShockwaveFilter'),\n SepiaFilter: require('./sepia/SepiaFilter'),\n SmartBlurFilter: require('./blur/SmartBlurFilter'),\n TiltShiftFilter: require('./tiltshift/TiltShiftFilter'),\n TiltShiftXFilter: require('./tiltshift/TiltShiftXFilter'),\n TiltShiftYFilter: require('./tiltshift/TiltShiftYFilter'),\n TwistFilter: require('./twist/TwistFilter')\n};\n", @@ -247,7 +247,7 @@ "/**\n * @file Main export of the PIXI interactions library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.interaction\n */\nmodule.exports = {\n InteractionData: require('./InteractionData'),\n InteractionManager: require('./InteractionManager'),\n interactiveTarget: require('./interactiveTarget')\n};\n", "var core = require('../core');\n\n\ncore.DisplayObject.prototype.interactive = false;\ncore.DisplayObject.prototype.buttonMode = false;\ncore.DisplayObject.prototype.interactiveChildren = true;\ncore.DisplayObject.prototype.defaultCursor = 'pointer';\n\n// some internal checks..\ncore.DisplayObject.prototype._over = false;\ncore.DisplayObject.prototype._touchDown = false;\n\nmodule.exports = {};\n", "var Resource = require('resource-loader').Resource,\n core = require('../core'),\n text = require('../text');\n\nmodule.exports = function ()\n{\n return function (resource, next)\n {\n if (!resource.data || navigator.isCocoonJS)\n {\n if (window.DOMParser)\n {\n var domparser = new DOMParser();\n resource.data = domparser.parseFromString(this.xhr.responseText, 'text/xml');\n }\n else\n {\n var div = document.createElement('div');\n div.innerHTML = this.xhr.responseText;\n resource.data = div;\n }\n }\n\n var name = resource.data.nodeName;\n\n // skip if no data\n if (!resource.data || !name || (name.toLowerCase() !== '#document' && name.toLowerCase() !== 'div'))\n {\n return next();\n }\n\n var textureUrl = this.baseUrl + resource.data.getElementsByTagName('page')[0].getAttribute('file');\n var loadOptions = {\n crossOrigin: resource.crossOrigin,\n loadType: Resource.LOAD_TYPE.IMAGE\n };\n\n // load the texture for the font\n this.add(resource.name + '_image', textureUrl, loadOptions, function (res)\n {\n var data = {};\n var info = resource.data.getElementsByTagName('info')[0];\n var common = resource.data.getElementsByTagName('common')[0];\n\n data.font = info.getAttribute('face');\n data.size = parseInt(info.getAttribute('size'), 10);\n data.lineHeight = parseInt(common.getAttribute('lineHeight'), 10);\n data.chars = {};\n\n //parse letters\n var letters = resource.data.getElementsByTagName('char');\n\n for (var i = 0; i < letters.length; i++)\n {\n var charCode = parseInt(letters[i].getAttribute('id'), 10);\n\n var textureRect = new core.math.Rectangle(\n parseInt(letters[i].getAttribute('x'), 10),\n parseInt(letters[i].getAttribute('y'), 10),\n parseInt(letters[i].getAttribute('width'), 10),\n parseInt(letters[i].getAttribute('height'), 10)\n );\n\n data.chars[charCode] = {\n xOffset: parseInt(letters[i].getAttribute('xoffset'), 10),\n yOffset: parseInt(letters[i].getAttribute('yoffset'), 10),\n xAdvance: parseInt(letters[i].getAttribute('xadvance'), 10),\n kerning: {},\n texture: core.utils.TextureCache[charCode] = new core.Texture(res.texture.baseTexture, textureRect)\n\n };\n }\n\n //parse kernings\n var kernings = resource.data.getElementsByTagName('kerning');\n for (i = 0; i < kernings.length; i++)\n {\n var first = parseInt(kernings[i].getAttribute('first'), 10);\n var second = parseInt(kernings[i].getAttribute('second'), 10);\n var amount = parseInt(kernings[i].getAttribute('amount'), 10);\n\n data.chars[second].kerning[first] = amount;\n\n }\n\n resource.bitmapFont = data;\n\n // I'm leaving this as a temporary fix so we can test the bitmap fonts in v3\n // but it's very likely to change\n text.BitmapText.fonts[data.font] = data;\n\n next();\n });\n };\n};\n", - "/**\n * @file Main export of the PIXI loaders library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.loaders\n */\nmodule.exports = {\n // Loader: require('resource-loader'),\n Loader: require('./loader'),\n\n // parsers\n bitmapFontParser: require('./bitmapFontParser'),\n spineAtlasParser: require('./spineAtlasParser'),\n spritesheetParser: require('./spritesheetParser'),\n textureParser: require('./textureParser')\n};\n", + "/**\n * @file Main export of the PIXI loaders library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.loaders\n */\nmodule.exports = {\n Loader: require('./loader'),\n\n // parsers\n bitmapFontParser: require('./bitmapFontParser'),\n spineAtlasParser: require('./spineAtlasParser'),\n spritesheetParser: require('./spritesheetParser'),\n textureParser: require('./textureParser')\n};\n\n\nmodule.exports.loader = new module.exports.Loader();\n", "var ResourceLoader = require('resource-loader'),\n textureParser = require('./textureParser'),\n spritesheetParser = require('./spritesheetParser'),\n spineAtlasParser = require('./spineAtlasParser'),\n bitmapFontParser = require('./bitmapFontParser');\n\n/**\n *\n * The new loader, extends Resource Loader by Chad Engler : https://github.com/englercj/resource-loader\n *\n * ```js\n * var loader = new PIXI.loader();\n *\n * loader.add('spineboy',\"data/spineboy.json\");\n *\n * loader.once('complete',onAssetsLoaded);\n *\n * loader.load();\n * ```\n *\n * @class\n * @extends ResourceLoader\n * @memberof PIXI.loaders\n */\nvar Loader = function()\n{\n ResourceLoader.call(this);\n\n // parse any json strings into objects\n this.use(ResourceLoader.middleware.parsing.json())\n\n // parse any blob into more usable objects (e.g. Image)\n .use(ResourceLoader.middleware.parsing.blob())\n\n // parse any Image objects into textures\n .use(textureParser())\n\n // parse any spritesheet data into multiple textures\n .use(spritesheetParser())\n\n // parse any spine data into a spine object\n .use(spineAtlasParser())\n\n // parse any spritesheet data into multiple textures\n .use(bitmapFontParser());\n};\n\nLoader.prototype = Object.create(ResourceLoader.prototype);\nLoader.prototype.constructor = Loader;\n\nmodule.exports = Loader;\n", "var Resource = require('resource-loader').Resource,\n async = require('async'),\n spine = require('../spine');\n\nmodule.exports = function ()\n{\n return function (resource, next)\n {\n // if this is a spritesheet object\n if (resource.data && resource.data.bones)\n {\n /**\n * use a bit of hackery to load the atlas file, here we assume that the .json, .atlas and .png files\n * that correspond to the spine file are in the same base URL and that the .json and .atlas files\n * have the same name\n */\n var atlasPath = resource.url.substr(0, resource.url.lastIndexOf('.')) + '.atlas';\n var atlasOptions = {\n crossOrigin: resource.crossOrigin,\n xhrType: Resource.XHR_RESPONSE_TYPE.TEXT\n };\n var baseUrl = resource.url.substr(0, resource.url.lastIndexOf('/') + 1);\n\n\n this.add(resource.name + '_atlas', atlasPath, atlasOptions, function (res)\n {\n // create a spine atlas using the loaded text\n var spineAtlas = new spine.SpineRuntime.Atlas(this.xhr.responseText, baseUrl, res.crossOrigin);\n\n // spine animation\n var spineJsonParser = new spine.SpineRuntime.SkeletonJsonParser(new spine.SpineRuntime.AtlasAttachmentParser(spineAtlas));\n var skeletonData = spineJsonParser.readSkeletonData(resource.data);\n\n resource.spineData = skeletonData;\n resource.spineAtlas = spineAtlas;\n\n // Go through each spineAtlas.pages and wait for page.rendererObject (a baseTexture) to\n // load. Once all loaded, then call the next function.\n async.each(spineAtlas.pages, function (page, done)\n {\n if (page.rendererObject.hasLoaded)\n {\n done();\n }\n else\n {\n page.rendererObject.once('loaded', done);\n }\n }, next);\n });\n }\n else {\n next();\n }\n };\n};\n", "var Resource = require('resource-loader').Resource,\n path = require('path'),\n core = require('../core');\n\nmodule.exports = function ()\n{\n return function (resource, next)\n {\n // if this is a spritesheet object\n if (resource.data && resource.data.frames)\n {\n var loadOptions = {\n crossOrigin: resource.crossOrigin,\n loadType: Resource.LOAD_TYPE.IMAGE\n };\n\n var route = path.dirname(resource.url.replace(this.baseUrl, ''));\n\n var resolution = core.utils.getResolutionOfUrl( resource.url );\n\n // load the image for this sheet\n this.add(resource.name + '_image', this.baseUrl + route + '/' + resource.data.meta.image, loadOptions, function (res)\n {\n resource.textures = {};\n\n var frames = resource.data.frames;\n\n for (var i in frames)\n {\n var rect = frames[i].frame;\n\n if (rect)\n {\n var size = null;\n var trim = null;\n\n if (frames[i].rotated) {\n size = new core.math.Rectangle(rect.x, rect.y, rect.h, rect.w);\n }\n else {\n size = new core.math.Rectangle(rect.x, rect.y, rect.w, rect.h);\n }\n\n // Check to see if the sprite is trimmed\n if (frames[i].trimmed)\n {\n trim = new core.math.Rectangle(\n frames[i].spriteSourceSize.x / resolution,\n frames[i].spriteSourceSize.y / resolution,\n frames[i].sourceSize.w / resolution,\n frames[i].sourceSize.h / resolution\n );\n }\n\n // flip the width and height!\n if (frames[i].rotated)\n {\n var temp = size.width;\n size.width = size.height;\n size.height = temp;\n }\n\n size.x /= resolution;\n size.y /= resolution;\n size.width /= resolution;\n size.height /= resolution;\n\n resource.textures[i] = new core.Texture(res.texture.baseTexture, size, size.clone(), trim, frames[i].rotated);\n\n // lets also add the frame to pixi's global cache for fromFrame and fromImage fucntions\n core.utils.TextureCache[i] = resource.textures[i];\n }\n }\n\n next();\n });\n }\n else {\n next();\n }\n };\n};\n", @@ -256,7 +256,7 @@ "/******************************************************************************\n * Spine Runtimes Software License\n * Version 2.1\n *\n * Copyright (c) 2013, Esoteric Software\n * All rights reserved.\n *\n * You are granted a perpetual, non-exclusive, non-sublicensable and\n * non-transferable license to install, execute and perform the Spine Runtimes\n * Software (the \"Software\") solely for internal use. Without the written\n * permission of Esoteric Software (typically granted by licensing Spine), you\n * may not (a) modify, translate, adapt or otherwise create derivative works,\n * improvements of the Software or develop new applications using the Software\n * or (b) remove, delete, alter or obscure any trademarks or any copyright,\n * trademark, patent or other intellectual property or proprietary rights\n * notices on or in the Software, including any copy thereof. Redistributions\n * in binary or source form must include this license and terms.\n *\n * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE \"AS IS\" AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nvar core = require('../core');\n\n\nvar spine = module.exports = {\n\tradDeg: 180 / Math.PI,\n\tdegRad: Math.PI / 180,\n\ttemp: [],\n Float32Array: (typeof(Float32Array) === 'undefined') ? Array : Float32Array,\n Uint16Array: (typeof(Uint16Array) === 'undefined') ? Array : Uint16Array\n};\n\nspine.BoneData = function (name, parent)\n{\n\tthis.name = name;\n\tthis.parent = parent;\n};\nspine.BoneData.prototype = {\n\tlength: 0,\n\tx: 0, y: 0,\n\trotation: 0,\n\tscaleX: 1, scaleY: 1,\n\tinheritScale: true,\n\tinheritRotation: true,\n\tflipX: false, flipY: false\n};\n\nspine.SlotData = function (name, boneData)\n{\n\tthis.name = name;\n\tthis.boneData = boneData;\n};\nspine.SlotData.prototype = {\n\tr: 1, g: 1, b: 1, a: 1,\n\tattachmentName: null,\n\tadditiveBlending: false\n};\n\nspine.IkConstraintData = function (name)\n{\n\tthis.name = name;\n\tthis.bones = [];\n};\nspine.IkConstraintData.prototype = {\n\ttarget: null,\n\tbendDirection: 1,\n\tmix: 1\n};\n\nspine.Bone = function (boneData, skeleton, parent)\n{\n\tthis.data = boneData;\n\tthis.skeleton = skeleton;\n\tthis.parent = parent;\n\tthis.setToSetupPose();\n};\nspine.Bone.yDown = false;\nspine.Bone.prototype = {\n\tx: 0, y: 0,\n\trotation: 0, rotationIK: 0,\n\tscaleX: 1, scaleY: 1,\n\tflipX: false, flipY: false,\n\tm00: 0, m01: 0, worldX: 0, // a b x\n\tm10: 0, m11: 0, worldY: 0, // c d y\n\tworldRotation: 0,\n\tworldScaleX: 1, worldScaleY: 1,\n\tworldFlipX: false, worldFlipY: false,\n updateWorldTransform: function ()\n {\n\t\tvar parent = this.parent;\n if (parent)\n {\n\t\t\tthis.worldX = this.x * parent.m00 + this.y * parent.m01 + parent.worldX;\n\t\t\tthis.worldY = this.x * parent.m10 + this.y * parent.m11 + parent.worldY;\n if (this.data.inheritScale)\n {\n\t\t\t\tthis.worldScaleX = parent.worldScaleX * this.scaleX;\n\t\t\t\tthis.worldScaleY = parent.worldScaleY * this.scaleY;\n\t\t\t} else {\n\t\t\t\tthis.worldScaleX = this.scaleX;\n\t\t\t\tthis.worldScaleY = this.scaleY;\n\t\t\t}\n\t\t\tthis.worldRotation = this.data.inheritRotation ? (parent.worldRotation + this.rotationIK) : this.rotationIK;\n\t\t\tthis.worldFlipX = parent.worldFlipX != this.flipX;\n\t\t\tthis.worldFlipY = parent.worldFlipY != this.flipY;\n\t\t} else {\n\t\t\tvar skeletonFlipX = this.skeleton.flipX, skeletonFlipY = this.skeleton.flipY;\n\t\t\tthis.worldX = skeletonFlipX ? -this.x : this.x;\n\t\t\tthis.worldY = (skeletonFlipY != spine.Bone.yDown) ? -this.y : this.y;\n\t\t\tthis.worldScaleX = this.scaleX;\n\t\t\tthis.worldScaleY = this.scaleY;\n\t\t\tthis.worldRotation = this.rotationIK;\n\t\t\tthis.worldFlipX = skeletonFlipX != this.flipX;\n\t\t\tthis.worldFlipY = skeletonFlipY != this.flipY;\n\t\t}\n\t\tvar radians = this.worldRotation * spine.degRad;\n\t\tvar cos = Math.cos(radians);\n\t\tvar sin = Math.sin(radians);\n if (this.worldFlipX)\n {\n\t\t\tthis.m00 = -cos * this.worldScaleX;\n\t\t\tthis.m01 = sin * this.worldScaleY;\n\t\t} else {\n\t\t\tthis.m00 = cos * this.worldScaleX;\n\t\t\tthis.m01 = -sin * this.worldScaleY;\n\t\t}\n if (this.worldFlipY != spine.Bone.yDown)\n {\n\t\t\tthis.m10 = -sin * this.worldScaleX;\n\t\t\tthis.m11 = -cos * this.worldScaleY;\n\t\t} else {\n\t\t\tthis.m10 = sin * this.worldScaleX;\n\t\t\tthis.m11 = cos * this.worldScaleY;\n\t\t}\n\t},\n setToSetupPose: function ()\n {\n\t\tvar data = this.data;\n\t\tthis.x = data.x;\n\t\tthis.y = data.y;\n\t\tthis.rotation = data.rotation;\n\t\tthis.rotationIK = this.rotation;\n\t\tthis.scaleX = data.scaleX;\n\t\tthis.scaleY = data.scaleY;\n\t\tthis.flipX = data.flipX;\n\t\tthis.flipY = data.flipY;\n\t},\n worldToLocal: function (world)\n {\n\t\tvar dx = world[0] - this.worldX, dy = world[1] - this.worldY;\n\t\tvar m00 = this.m00, m10 = this.m10, m01 = this.m01, m11 = this.m11;\n if (this.worldFlipX != (this.worldFlipY != spine.Bone.yDown))\n {\n\t\t\tm00 = -m00;\n\t\t\tm11 = -m11;\n\t\t}\n\t\tvar invDet = 1 / (m00 * m11 - m01 * m10);\n\t\tworld[0] = dx * m00 * invDet - dy * m01 * invDet;\n\t\tworld[1] = dy * m11 * invDet - dx * m10 * invDet;\n\t},\n localToWorld: function (local)\n {\n\t\tvar localX = local[0], localY = local[1];\n\t\tlocal[0] = localX * this.m00 + localY * this.m01 + this.worldX;\n\t\tlocal[1] = localX * this.m10 + localY * this.m11 + this.worldY;\n\t}\n};\n\nspine.Slot = function (slotData, bone)\n{\n\tthis.data = slotData;\n\tthis.bone = bone;\n\tthis.setToSetupPose();\n};\nspine.Slot.prototype = {\n\tr: 1, g: 1, b: 1, a: 1,\n\t_attachmentTime: 0,\n\tattachment: null,\n\tattachmentVertices: [],\n setAttachment: function (attachment)\n {\n\t\tthis.attachment = attachment;\n\t\tthis._attachmentTime = this.bone.skeleton.time;\n\t\tthis.attachmentVertices.length = 0;\n\t},\n setAttachmentTime: function (time)\n {\n\t\tthis._attachmentTime = this.bone.skeleton.time - time;\n\t},\n getAttachmentTime: function ()\n {\n\t\treturn this.bone.skeleton.time - this._attachmentTime;\n\t},\n setToSetupPose: function ()\n {\n\t\tvar data = this.data;\n\t\tthis.r = data.r;\n\t\tthis.g = data.g;\n\t\tthis.b = data.b;\n\t\tthis.a = data.a;\n\n\t\tvar slotDatas = this.bone.skeleton.data.slots;\n for (var i = 0, n = slotDatas.length; i < n; i++)\n {\n if (slotDatas[i] == data)\n {\n\t\t\t\tthis.setAttachment(!data.attachmentName ? null : this.bone.skeleton.getAttachmentBySlotIndex(i, data.attachmentName));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.IkConstraint = function (data, skeleton)\n{\n\tthis.data = data;\n\tthis.mix = data.mix;\n\tthis.bendDirection = data.bendDirection;\n\n\tthis.bones = [];\n\tfor (var i = 0, n = data.bones.length; i < n; i++)\n\t\tthis.bones.push(skeleton.findBone(data.bones[i].name));\n\tthis.target = skeleton.findBone(data.target.name);\n};\nspine.IkConstraint.prototype = {\n apply: function ()\n {\n\t\tvar target = this.target;\n\t\tvar bones = this.bones;\n switch (bones.length)\n {\n\t\tcase 1:\n\t\t\tspine.IkConstraint.apply1(bones[0], target.worldX, target.worldY, this.mix);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tspine.IkConstraint.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix);\n\t\t\tbreak;\n\t\t}\n\t}\n};\n/** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world\n * coordinate system. */\nspine.IkConstraint.apply1 = function (bone, targetX, targetY, alpha)\n{\n\tvar parentRotation = (!bone.data.inheritRotation || !bone.parent) ? 0 : bone.parent.worldRotation;\n\tvar rotation = bone.rotation;\n\tvar rotationIK = Math.atan2(targetY - bone.worldY, targetX - bone.worldX) * spine.radDeg - parentRotation;\n\tbone.rotationIK = rotation + (rotationIK - rotation) * alpha;\n};\n/** Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as possible. The\n * target is specified in the world coordinate system.\n * @param child Any descendant bone of the parent. */\nspine.IkConstraint.apply2 = function (parent, child, targetX, targetY, bendDirection, alpha)\n{\n\tvar childRotation = child.rotation, parentRotation = parent.rotation;\n if (!alpha)\n {\n\t\tchild.rotationIK = childRotation;\n\t\tparent.rotationIK = parentRotation;\n\t\treturn;\n\t}\n\tvar positionX, positionY, tempPosition = spine.temp;\n\tvar parentParent = parent.parent;\n if (parentParent)\n {\n\t\ttempPosition[0] = targetX;\n\t\ttempPosition[1] = targetY;\n\t\tparentParent.worldToLocal(tempPosition);\n\t\ttargetX = (tempPosition[0] - parent.x) * parentParent.worldScaleX;\n\t\ttargetY = (tempPosition[1] - parent.y) * parentParent.worldScaleY;\n\t} else {\n\t\ttargetX -= parent.x;\n\t\ttargetY -= parent.y;\n\t}\n if (child.parent == parent)\n {\n\t\tpositionX = child.x;\n\t\tpositionY = child.y;\n\t} else {\n\t\ttempPosition[0] = child.x;\n\t\ttempPosition[1] = child.y;\n\t\tchild.parent.localToWorld(tempPosition);\n\t\tparent.worldToLocal(tempPosition);\n\t\tpositionX = tempPosition[0];\n\t\tpositionY = tempPosition[1];\n\t}\n\tvar childX = positionX * parent.worldScaleX, childY = positionY * parent.worldScaleY;\n\tvar offset = Math.atan2(childY, childX);\n\tvar len1 = Math.sqrt(childX * childX + childY * childY), len2 = child.data.length * child.worldScaleX;\n\t// Based on code by Ryan Juckett with permission: Copyright (c) 2008-2009 Ryan Juckett, http://www.ryanjuckett.com/\n\tvar cosDenom = 2 * len1 * len2;\n if (cosDenom < 0.0001)\n {\n\t\tchild.rotationIK = childRotation + (Math.atan2(targetY, targetX) * spine.radDeg - parentRotation - childRotation) * alpha;\n\t\treturn;\n\t}\n\tvar cos = (targetX * targetX + targetY * targetY - len1 * len1 - len2 * len2) / cosDenom;\n\tif (cos < -1)\n\t\tcos = -1;\n\telse if (cos > 1)\n\t\tcos = 1;\n\tvar childAngle = Math.acos(cos) * bendDirection;\n\tvar adjacent = len1 + len2 * cos, opposite = len2 * Math.sin(childAngle);\n\tvar parentAngle = Math.atan2(targetY * adjacent - targetX * opposite, targetX * adjacent + targetY * opposite);\n\tvar rotation = (parentAngle - offset) * spine.radDeg - parentRotation;\n\tif (rotation > 180)\n\t\trotation -= 360;\n\telse if (rotation < -180) //\n\t\trotation += 360;\n\tparent.rotationIK = parentRotation + rotation * alpha;\n\trotation = (childAngle + offset) * spine.radDeg - childRotation;\n\tif (rotation > 180)\n\t\trotation -= 360;\n\telse if (rotation < -180) //\n\t\trotation += 360;\n\tchild.rotationIK = childRotation + (rotation + parent.worldRotation - child.parent.worldRotation) * alpha;\n};\n\nspine.Skin = function (name)\n{\n\tthis.name = name;\n\tthis.attachments = {};\n};\nspine.Skin.prototype = {\n addAttachment: function (slotIndex, name, attachment)\n {\n\t\tthis.attachments[slotIndex + \":\" + name] = attachment;\n\t},\n getAttachment: function (slotIndex, name)\n {\n\t\treturn this.attachments[slotIndex + \":\" + name];\n\t},\n _attachAll: function (skeleton, oldSkin)\n {\n for (var key in oldSkin.attachments)\n {\n\t\t\tvar colon = key.indexOf(\":\");\n\t\t\tvar slotIndex = parseInt(key.substring(0, colon));\n\t\t\tvar name = key.substring(colon + 1);\n\t\t\tvar slot = skeleton.slots[slotIndex];\n if (slot.attachment && slot.attachment.name == name)\n {\n\t\t\t\tvar attachment = this.getAttachment(slotIndex, name);\n\t\t\t\tif (attachment) slot.setAttachment(attachment);\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.Animation = function (name, timelines, duration)\n{\n\tthis.name = name;\n\tthis.timelines = timelines;\n\tthis.duration = duration;\n};\nspine.Animation.prototype = {\n apply: function (skeleton, lastTime, time, loop, events)\n {\n if (loop && this.duration != 0)\n {\n\t\t\ttime %= this.duration;\n\t\t\tlastTime %= this.duration;\n\t\t}\n\t\tvar timelines = this.timelines;\n\t\tfor (var i = 0, n = timelines.length; i < n; i++)\n\t\t\ttimelines[i].apply(skeleton, lastTime, time, events, 1);\n\t},\n mix: function (skeleton, lastTime, time, loop, events, alpha)\n {\n if (loop && this.duration != 0)\n {\n\t\t\ttime %= this.duration;\n\t\t\tlastTime %= this.duration;\n\t\t}\n\t\tvar timelines = this.timelines;\n\t\tfor (var i = 0, n = timelines.length; i < n; i++)\n\t\t\ttimelines[i].apply(skeleton, lastTime, time, events, alpha);\n\t}\n};\nspine.Animation.binarySearch = function (values, target, step)\n{\n\tvar low = 0;\n\tvar high = Math.floor(values.length / step) - 2;\n\tif (!high) return step;\n\tvar current = high >>> 1;\n while (true)\n {\n\t\tif (values[(current + 1) * step] <= target)\n\t\t\tlow = current + 1;\n\t\telse\n\t\t\thigh = current;\n\t\tif (low == high) return (low + 1) * step;\n\t\tcurrent = (low + high) >>> 1;\n\t}\n};\nspine.Animation.binarySearch1 = function (values, target)\n{\n\tvar low = 0;\n\tvar high = values.length - 2;\n\tif (!high) return 1;\n\tvar current = high >>> 1;\n while (true)\n {\n\t\tif (values[current + 1] <= target)\n\t\t\tlow = current + 1;\n\t\telse\n\t\t\thigh = current;\n\t\tif (low == high) return low + 1;\n\t\tcurrent = (low + high) >>> 1;\n\t}\n};\nspine.Animation.linearSearch = function (values, target, step)\n{\n\tfor (var i = 0, last = values.length - step; i <= last; i += step)\n\t\tif (values[i] > target) return i;\n\treturn -1;\n};\n\nspine.Curves = function (frameCount)\n{\n\tthis.curves = []; // type, x, y, ...\n\t//this.curves.length = (frameCount - 1) * 19/*BEZIER_SIZE*/;\n};\nspine.Curves.prototype = {\n setLinear: function (frameIndex)\n {\n\t\tthis.curves[frameIndex * 19/*BEZIER_SIZE*/] = 0/*LINEAR*/;\n\t},\n setStepped: function (frameIndex)\n {\n\t\tthis.curves[frameIndex * 19/*BEZIER_SIZE*/] = 1/*STEPPED*/;\n\t},\n\t/** Sets the control handle positions for an interpolation bezier curve used to transition from this keyframe to the next.\n\t * cx1 and cx2 are from 0 to 1, representing the percent of time between the two keyframes. cy1 and cy2 are the percent of\n\t * the difference between the keyframe's values. */\n setCurve: function (frameIndex, cx1, cy1, cx2, cy2)\n {\n\t\tvar subdiv1 = 1 / 10/*BEZIER_SEGMENTS*/, subdiv2 = subdiv1 * subdiv1, subdiv3 = subdiv2 * subdiv1;\n\t\tvar pre1 = 3 * subdiv1, pre2 = 3 * subdiv2, pre4 = 6 * subdiv2, pre5 = 6 * subdiv3;\n\t\tvar tmp1x = -cx1 * 2 + cx2, tmp1y = -cy1 * 2 + cy2, tmp2x = (cx1 - cx2) * 3 + 1, tmp2y = (cy1 - cy2) * 3 + 1;\n\t\tvar dfx = cx1 * pre1 + tmp1x * pre2 + tmp2x * subdiv3, dfy = cy1 * pre1 + tmp1y * pre2 + tmp2y * subdiv3;\n\t\tvar ddfx = tmp1x * pre4 + tmp2x * pre5, ddfy = tmp1y * pre4 + tmp2y * pre5;\n\t\tvar dddfx = tmp2x * pre5, dddfy = tmp2y * pre5;\n\n\t\tvar i = frameIndex * 19/*BEZIER_SIZE*/;\n\t\tvar curves = this.curves;\n\t\tcurves[i++] = 2/*BEZIER*/;\n\n\t\tvar x = dfx, y = dfy;\n for (var n = i + 19/*BEZIER_SIZE*/ - 1; i < n; i += 2)\n {\n\t\t\tcurves[i] = x;\n\t\t\tcurves[i + 1] = y;\n\t\t\tdfx += ddfx;\n\t\t\tdfy += ddfy;\n\t\t\tddfx += dddfx;\n\t\t\tddfy += dddfy;\n\t\t\tx += dfx;\n\t\t\ty += dfy;\n\t\t}\n\t},\n getCurvePercent: function (frameIndex, percent)\n {\n\t\tpercent = percent < 0 ? 0 : (percent > 1 ? 1 : percent);\n\t\tvar curves = this.curves;\n\t\tvar i = frameIndex * 19/*BEZIER_SIZE*/;\n\t\tvar type = curves[i];\n\t\tif (type === 0/*LINEAR*/) return percent;\n\t\tif (type == 1/*STEPPED*/) return 0;\n\t\ti++;\n\t\tvar x = 0;\n for (var start = i, n = i + 19/*BEZIER_SIZE*/ - 1; i < n; i += 2)\n {\n\t\t\tx = curves[i];\n if (x >= percent)\n {\n\t\t\t\tvar prevX, prevY;\n if (i == start)\n {\n\t\t\t\t\tprevX = 0;\n\t\t\t\t\tprevY = 0;\n\t\t\t\t} else {\n\t\t\t\t\tprevX = curves[i - 2];\n\t\t\t\t\tprevY = curves[i - 1];\n\t\t\t\t}\n\t\t\t\treturn prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX);\n\t\t\t}\n\t\t}\n\t\tvar y = curves[i - 1];\n\t\treturn y + (1 - y) * (percent - x) / (1 - x); // Last point is 1,1.\n\t}\n};\n\nspine.RotateTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, angle, ...\n\tthis.frames.length = frameCount * 2;\n};\nspine.RotateTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 2;\n\t},\n setFrame: function (frameIndex, time, angle)\n {\n\t\tframeIndex *= 2;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = angle;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar bone = skeleton.bones[this.boneIndex];\n\n if (time >= frames[frames.length - 2])\n { // Time is after last frame.\n\t\t\tvar amount = bone.data.rotation + frames[frames.length - 1] - bone.rotation;\n\t\t\twhile (amount > 180)\n\t\t\t\tamount -= 360;\n\t\t\twhile (amount < -180)\n\t\t\t\tamount += 360;\n\t\t\tbone.rotation += amount * alpha;\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 2);\n\t\tvar prevFrameValue = frames[frameIndex - 1];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex - 2/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 2 - 1, percent);\n\n\t\tvar amount = frames[frameIndex + 1/*FRAME_VALUE*/] - prevFrameValue;\n\t\twhile (amount > 180)\n\t\t\tamount -= 360;\n\t\twhile (amount < -180)\n\t\t\tamount += 360;\n\t\tamount = bone.data.rotation + (prevFrameValue + amount * percent) - bone.rotation;\n\t\twhile (amount > 180)\n\t\t\tamount -= 360;\n\t\twhile (amount < -180)\n\t\t\tamount += 360;\n\t\tbone.rotation += amount * alpha;\n\t}\n};\n\nspine.TranslateTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, x, y, ...\n\tthis.frames.length = frameCount * 3;\n};\nspine.TranslateTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 3;\n\t},\n setFrame: function (frameIndex, time, x, y)\n {\n\t\tframeIndex *= 3;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = x;\n\t\tthis.frames[frameIndex + 2] = y;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar bone = skeleton.bones[this.boneIndex];\n\n if (time >= frames[frames.length - 3])\n { // Time is after last frame.\n\t\t\tbone.x += (bone.data.x + frames[frames.length - 2] - bone.x) * alpha;\n\t\t\tbone.y += (bone.data.y + frames[frames.length - 1] - bone.y) * alpha;\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 3);\n\t\tvar prevFrameX = frames[frameIndex - 2];\n\t\tvar prevFrameY = frames[frameIndex - 1];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex + -3/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 3 - 1, percent);\n\n\t\tbone.x += (bone.data.x + prevFrameX + (frames[frameIndex + 1/*FRAME_X*/] - prevFrameX) * percent - bone.x) * alpha;\n\t\tbone.y += (bone.data.y + prevFrameY + (frames[frameIndex + 2/*FRAME_Y*/] - prevFrameY) * percent - bone.y) * alpha;\n\t}\n};\n\nspine.ScaleTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, x, y, ...\n\tthis.frames.length = frameCount * 3;\n};\nspine.ScaleTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 3;\n\t},\n setFrame: function (frameIndex, time, x, y)\n {\n\t\tframeIndex *= 3;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = x;\n\t\tthis.frames[frameIndex + 2] = y;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar bone = skeleton.bones[this.boneIndex];\n\n if (time >= frames[frames.length - 3])\n { // Time is after last frame.\n\t\t\tbone.scaleX += (bone.data.scaleX * frames[frames.length - 2] - bone.scaleX) * alpha;\n\t\t\tbone.scaleY += (bone.data.scaleY * frames[frames.length - 1] - bone.scaleY) * alpha;\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 3);\n\t\tvar prevFrameX = frames[frameIndex - 2];\n\t\tvar prevFrameY = frames[frameIndex - 1];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex + -3/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 3 - 1, percent);\n\n\t\tbone.scaleX += (bone.data.scaleX * (prevFrameX + (frames[frameIndex + 1/*FRAME_X*/] - prevFrameX) * percent) - bone.scaleX) * alpha;\n\t\tbone.scaleY += (bone.data.scaleY * (prevFrameY + (frames[frameIndex + 2/*FRAME_Y*/] - prevFrameY) * percent) - bone.scaleY) * alpha;\n\t}\n};\n\nspine.ColorTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, r, g, b, a, ...\n\tthis.frames.length = frameCount * 5;\n};\nspine.ColorTimeline.prototype = {\n\tslotIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 5;\n\t},\n setFrame: function (frameIndex, time, r, g, b, a)\n {\n\t\tframeIndex *= 5;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = r;\n\t\tthis.frames[frameIndex + 2] = g;\n\t\tthis.frames[frameIndex + 3] = b;\n\t\tthis.frames[frameIndex + 4] = a;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar r, g, b, a;\n if (time >= frames[frames.length - 5])\n {\n\t\t\t// Time is after last frame.\n\t\t\tvar i = frames.length - 1;\n\t\t\tr = frames[i - 3];\n\t\t\tg = frames[i - 2];\n\t\t\tb = frames[i - 1];\n\t\t\ta = frames[i];\n\t\t} else {\n\t\t\t// Interpolate between the previous frame and the current frame.\n\t\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 5);\n\t\t\tvar prevFrameR = frames[frameIndex - 4];\n\t\t\tvar prevFrameG = frames[frameIndex - 3];\n\t\t\tvar prevFrameB = frames[frameIndex - 2];\n\t\t\tvar prevFrameA = frames[frameIndex - 1];\n\t\t\tvar frameTime = frames[frameIndex];\n\t\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex - 5/*PREV_FRAME_TIME*/] - frameTime);\n\t\t\tpercent = this.curves.getCurvePercent(frameIndex / 5 - 1, percent);\n\n\t\t\tr = prevFrameR + (frames[frameIndex + 1/*FRAME_R*/] - prevFrameR) * percent;\n\t\t\tg = prevFrameG + (frames[frameIndex + 2/*FRAME_G*/] - prevFrameG) * percent;\n\t\t\tb = prevFrameB + (frames[frameIndex + 3/*FRAME_B*/] - prevFrameB) * percent;\n\t\t\ta = prevFrameA + (frames[frameIndex + 4/*FRAME_A*/] - prevFrameA) * percent;\n\t\t}\n\t\tvar slot = skeleton.slots[this.slotIndex];\n if (alpha < 1)\n {\n\t\t\tslot.r += (r - slot.r) * alpha;\n\t\t\tslot.g += (g - slot.g) * alpha;\n\t\t\tslot.b += (b - slot.b) * alpha;\n\t\t\tslot.a += (a - slot.a) * alpha;\n\t\t} else {\n\t\t\tslot.r = r;\n\t\t\tslot.g = g;\n\t\t\tslot.b = b;\n\t\t\tslot.a = a;\n\t\t}\n\t}\n};\n\nspine.AttachmentTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, ...\n\tthis.frames.length = frameCount;\n\tthis.attachmentNames = [];\n\tthis.attachmentNames.length = frameCount;\n};\nspine.AttachmentTimeline.prototype = {\n\tslotIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, attachmentName)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.attachmentNames[frameIndex] = attachmentName;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n if (time < frames[0])\n {\n\t\t\tif (lastTime > time) this.apply(skeleton, lastTime, Number.MAX_VALUE, null, 0);\n\t\t\treturn;\n\t\t} else if (lastTime > time) //\n\t\t\tlastTime = -1;\n\n\t\tvar frameIndex = time >= frames[frames.length - 1] ? frames.length - 1 : spine.Animation.binarySearch1(frames, time) - 1;\n\t\tif (frames[frameIndex] < lastTime) return;\n\n\t\tvar attachmentName = this.attachmentNames[frameIndex];\n\t\tskeleton.slots[this.slotIndex].setAttachment(\n\t\t\t!attachmentName ? null : skeleton.getAttachmentBySlotIndex(this.slotIndex, attachmentName));\n\t}\n};\n\nspine.EventTimeline = function (frameCount)\n{\n\tthis.frames = []; // time, ...\n\tthis.frames.length = frameCount;\n\tthis.events = [];\n\tthis.events.length = frameCount;\n};\nspine.EventTimeline.prototype = {\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, event)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.events[frameIndex] = event;\n\t},\n\t/** Fires events for frames > lastTime and <= time. */\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tif (!firedEvents) return;\n\n\t\tvar frames = this.frames;\n\t\tvar frameCount = frames.length;\n\n if (lastTime > time)\n { // Fire events after last time for looped animations.\n\t\t\tthis.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha);\n\t\t\tlastTime = -1;\n\t\t} else if (lastTime >= frames[frameCount - 1]) // Last time is after last frame.\n\t\t\treturn;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar frameIndex;\n\t\tif (lastTime < frames[0])\n\t\t\tframeIndex = 0;\n else\n {\n\t\t\tframeIndex = spine.Animation.binarySearch1(frames, lastTime);\n\t\t\tvar frame = frames[frameIndex];\n while (frameIndex > 0)\n { // Fire multiple events with the same frame.\n\t\t\t\tif (frames[frameIndex - 1] != frame) break;\n\t\t\t\tframeIndex--;\n\t\t\t}\n\t\t}\n\t\tvar events = this.events;\n\t\tfor (; frameIndex < frameCount && time >= frames[frameIndex]; frameIndex++)\n\t\t\tfiredEvents.push(events[frameIndex]);\n\t}\n};\n\nspine.DrawOrderTimeline = function (frameCount)\n{\n\tthis.frames = []; // time, ...\n\tthis.frames.length = frameCount;\n\tthis.drawOrders = [];\n\tthis.drawOrders.length = frameCount;\n};\nspine.DrawOrderTimeline.prototype = {\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, drawOrder)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.drawOrders[frameIndex] = drawOrder;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar frameIndex;\n\t\tif (time >= frames[frames.length - 1]) // Time is after last frame.\n\t\t\tframeIndex = frames.length - 1;\n\t\telse\n\t\t\tframeIndex = spine.Animation.binarySearch1(frames, time) - 1;\n\n\t\tvar drawOrder = skeleton.drawOrder;\n\t\tvar slots = skeleton.slots;\n\t\tvar drawOrderToSetupIndex = this.drawOrders[frameIndex];\n if (!drawOrderToSetupIndex)\n {\n\t\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\t\tdrawOrder[i] = slots[i];\n\t\t} else {\n\t\t\tfor (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++)\n\t\t\t\tdrawOrder[i] = skeleton.slots[drawOrderToSetupIndex[i]];\n\t\t}\n\n\t}\n};\n\nspine.FfdTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = [];\n\tthis.frames.length = frameCount;\n\tthis.frameVertices = [];\n\tthis.frameVertices.length = frameCount;\n};\nspine.FfdTimeline.prototype = {\n\tslotIndex: 0,\n\tattachment: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length;\n\t},\n setFrame: function (frameIndex, time, vertices)\n {\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frameVertices[frameIndex] = vertices;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar slot = skeleton.slots[this.slotIndex];\n\t\tif (slot.attachment != this.attachment) return;\n\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar frameVertices = this.frameVertices;\n\t\tvar vertexCount = frameVertices[0].length;\n\n\t\tvar vertices = slot.attachmentVertices;\n\t\tif (vertices.length != vertexCount) alpha = 1;\n\t\tvertices.length = vertexCount;\n\n if (time >= frames[frames.length - 1])\n { // Time is after last frame.\n\t\t\tvar lastVertices = frameVertices[frames.length - 1];\n if (alpha < 1)\n {\n\t\t\t\tfor (var i = 0; i < vertexCount; i++)\n\t\t\t\t\tvertices[i] += (lastVertices[i] - vertices[i]) * alpha;\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vertexCount; i++)\n\t\t\t\t\tvertices[i] = lastVertices[i];\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch1(frames, time);\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex - 1] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));\n\n\t\tvar prevVertices = frameVertices[frameIndex - 1];\n\t\tvar nextVertices = frameVertices[frameIndex];\n\n if (alpha < 1)\n {\n for (var i = 0; i < vertexCount; i++)\n {\n\t\t\t\tvar prev = prevVertices[i];\n\t\t\t\tvertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha;\n\t\t\t}\n\t\t} else {\n for (var i = 0; i < vertexCount; i++)\n {\n\t\t\t\tvar prev = prevVertices[i];\n\t\t\t\tvertices[i] = prev + (nextVertices[i] - prev) * percent;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.IkConstraintTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, mix, bendDirection, ...\n\tthis.frames.length = frameCount * 3;\n};\nspine.IkConstraintTimeline.prototype = {\n\tikConstraintIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 3;\n\t},\n setFrame: function (frameIndex, time, mix, bendDirection)\n {\n\t\tframeIndex *= 3;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = mix;\n\t\tthis.frames[frameIndex + 2] = bendDirection;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n\t\tif (time < frames[0]) return; // Time is before first frame.\n\n\t\tvar ikConstraint = skeleton.ikConstraints[this.ikConstraintIndex];\n\n if (time >= frames[frames.length - 3])\n { // Time is after last frame.\n\t\t\tikConstraint.mix += (frames[frames.length - 2] - ikConstraint.mix) * alpha;\n\t\t\tikConstraint.bendDirection = frames[frames.length - 1];\n\t\t\treturn;\n\t\t}\n\n\t\t// Interpolate between the previous frame and the current frame.\n\t\tvar frameIndex = spine.Animation.binarySearch(frames, time, 3);\n\t\tvar prevFrameMix = frames[frameIndex + -2/*PREV_FRAME_MIX*/];\n\t\tvar frameTime = frames[frameIndex];\n\t\tvar percent = 1 - (time - frameTime) / (frames[frameIndex + -3/*PREV_FRAME_TIME*/] - frameTime);\n\t\tpercent = this.curves.getCurvePercent(frameIndex / 3 - 1, percent);\n\n\t\tvar mix = prevFrameMix + (frames[frameIndex + 1/*FRAME_MIX*/] - prevFrameMix) * percent;\n\t\tikConstraint.mix += (mix - ikConstraint.mix) * alpha;\n\t\tikConstraint.bendDirection = frames[frameIndex + -1/*PREV_FRAME_BEND_DIRECTION*/];\n\t}\n};\n\nspine.FlipXTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, flip, ...\n\tthis.frames.length = frameCount * 2;\n};\nspine.FlipXTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 2;\n\t},\n setFrame: function (frameIndex, time, flip)\n {\n\t\tframeIndex *= 2;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = flip ? 1 : 0;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n if (time < frames[0])\n {\n\t\t\tif (lastTime > time) this.apply(skeleton, lastTime, Number.MAX_VALUE, null, 0);\n\t\t\treturn;\n\t\t} else if (lastTime > time) //\n\t\t\tlastTime = -1;\n\t\tvar frameIndex = (time >= frames[frames.length - 2] ? frames.length : spine.Animation.binarySearch(frames, time, 2)) - 2;\n\t\tif (frames[frameIndex] < lastTime) return;\n\t\tskeleton.bones[boneIndex].flipX = frames[frameIndex + 1] != 0;\n\t}\n};\n\nspine.FlipYTimeline = function (frameCount)\n{\n\tthis.curves = new spine.Curves(frameCount);\n\tthis.frames = []; // time, flip, ...\n\tthis.frames.length = frameCount * 2;\n};\nspine.FlipYTimeline.prototype = {\n\tboneIndex: 0,\n getFrameCount: function ()\n {\n\t\treturn this.frames.length / 2;\n\t},\n setFrame: function (frameIndex, time, flip)\n {\n\t\tframeIndex *= 2;\n\t\tthis.frames[frameIndex] = time;\n\t\tthis.frames[frameIndex + 1] = flip ? 1 : 0;\n\t},\n apply: function (skeleton, lastTime, time, firedEvents, alpha)\n {\n\t\tvar frames = this.frames;\n if (time < frames[0])\n {\n\t\t\tif (lastTime > time) this.apply(skeleton, lastTime, Number.MAX_VALUE, null, 0);\n\t\t\treturn;\n\t\t} else if (lastTime > time) //\n\t\t\tlastTime = -1;\n\t\tvar frameIndex = (time >= frames[frames.length - 2] ? frames.length : spine.Animation.binarySearch(frames, time, 2)) - 2;\n\t\tif (frames[frameIndex] < lastTime) return;\n\t\tskeleton.bones[boneIndex].flipY = frames[frameIndex + 1] != 0;\n\t}\n};\n\nspine.SkeletonData = function ()\n{\n\tthis.bones = [];\n\tthis.slots = [];\n\tthis.skins = [];\n\tthis.events = [];\n\tthis.animations = [];\n\tthis.ikConstraints = [];\n};\nspine.SkeletonData.prototype = {\n\tname: null,\n\tdefaultSkin: null,\n\twidth: 0, height: 0,\n\tversion: null, hash: null,\n\t/** @return May be null. */\n findBone: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].name == boneName) return bones[i];\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findBoneIndex: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].name == boneName) return i;\n\t\treturn -1;\n\t},\n\t/** @return May be null. */\n findSlot: function (slotName)\n {\n\t\tvar slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tif (slots[i].name == slotName) return slot[i];\n\t\t}\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findSlotIndex: function (slotName)\n {\n\t\tvar slots = this.slots;\n\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\tif (slots[i].name == slotName) return i;\n\t\treturn -1;\n\t},\n\t/** @return May be null. */\n findSkin: function (skinName)\n {\n\t\tvar skins = this.skins;\n\t\tfor (var i = 0, n = skins.length; i < n; i++)\n\t\t\tif (skins[i].name == skinName) return skins[i];\n\t\treturn null;\n\t},\n\t/** @return May be null. */\n findEvent: function (eventName)\n {\n\t\tvar events = this.events;\n\t\tfor (var i = 0, n = events.length; i < n; i++)\n\t\t\tif (events[i].name == eventName) return events[i];\n\t\treturn null;\n\t},\n\t/** @return May be null. */\n findAnimation: function (animationName)\n {\n\t\tvar animations = this.animations;\n\t\tfor (var i = 0, n = animations.length; i < n; i++)\n\t\t\tif (animations[i].name == animationName) return animations[i];\n\t\treturn null;\n\t},\n\t/** @return May be null. */\n findIkConstraint: function (ikConstraintName)\n {\n\t\tvar ikConstraints = this.ikConstraints;\n\t\tfor (var i = 0, n = ikConstraints.length; i < n; i++)\n\t\t\tif (ikConstraints[i].name == ikConstraintName) return ikConstraints[i];\n\t\treturn null;\n\t}\n};\n\nspine.Skeleton = function (skeletonData)\n{\n\tthis.data = skeletonData;\n\n\tthis.bones = [];\n for (var i = 0, n = skeletonData.bones.length; i < n; i++)\n {\n\t\tvar boneData = skeletonData.bones[i];\n\t\tvar parent = !boneData.parent ? null : this.bones[skeletonData.bones.indexOf(boneData.parent)];\n\t\tthis.bones.push(new spine.Bone(boneData, this, parent));\n\t}\n\n\tthis.slots = [];\n\tthis.drawOrder = [];\n for (var i = 0, n = skeletonData.slots.length; i < n; i++)\n {\n\t\tvar slotData = skeletonData.slots[i];\n\t\tvar bone = this.bones[skeletonData.bones.indexOf(slotData.boneData)];\n\t\tvar slot = new spine.Slot(slotData, bone);\n\t\tthis.slots.push(slot);\n\t\tthis.drawOrder.push(slot);\n\t}\n\n\tthis.ikConstraints = [];\n\tfor (var i = 0, n = skeletonData.ikConstraints.length; i < n; i++)\n\t\tthis.ikConstraints.push(new spine.IkConstraint(skeletonData.ikConstraints[i], this));\n\n\tthis.boneCache = [];\n\tthis.updateCache();\n};\nspine.Skeleton.prototype = {\n\tx: 0, y: 0,\n\tskin: null,\n\tr: 1, g: 1, b: 1, a: 1,\n\ttime: 0,\n\tflipX: false, flipY: false,\n\t/** Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or removed. */\n updateCache: function ()\n {\n\t\tvar ikConstraints = this.ikConstraints;\n\t\tvar ikConstraintsCount = ikConstraints.length;\n\n\t\tvar arrayCount = ikConstraintsCount + 1;\n\t\tvar boneCache = this.boneCache;\n\t\tif (boneCache.length > arrayCount) boneCache.length = arrayCount;\n\t\tfor (var i = 0, n = boneCache.length; i < n; i++)\n\t\t\tboneCache[i].length = 0;\n\t\twhile (boneCache.length < arrayCount)\n\t\t\tboneCache[boneCache.length] = [];\n\n\t\tvar nonIkBones = boneCache[0];\n\t\tvar bones = this.bones;\n\n\t\touter:\n for (var i = 0, n = bones.length; i < n; i++)\n {\n\t\t\tvar bone = bones[i];\n\t\t\tvar current = bone;\n\t\t\tdo {\n for (var ii = 0; ii < ikConstraintsCount; ii++)\n {\n\t\t\t\t\tvar ikConstraint = ikConstraints[ii];\n\t\t\t\t\tvar parent = ikConstraint.bones[0];\n\t\t\t\t\tvar child= ikConstraint.bones[ikConstraint.bones.length - 1];\n while (true)\n {\n if (current == child)\n {\n\t\t\t\t\t\t\tboneCache[ii].push(bone);\n\t\t\t\t\t\t\tboneCache[ii + 1].push(bone);\n\t\t\t\t\t\t\tcontinue outer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (child == parent) break;\n\t\t\t\t\t\tchild = child.parent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcurrent = current.parent;\n\t\t\t} while (current);\n\t\t\tnonIkBones[nonIkBones.length] = bone;\n\t\t}\n\t},\n\t/** Updates the world transform for each bone. */\n updateWorldTransform: function ()\n {\n\t\tvar bones = this.bones;\n for (var i = 0, n = bones.length; i < n; i++)\n {\n\t\t\tvar bone = bones[i];\n\t\t\tbone.rotationIK = bone.rotation;\n\t\t}\n\t\tvar i = 0, last = this.boneCache.length - 1;\n while (true)\n {\n\t\t\tvar cacheBones = this.boneCache[i];\n\t\t\tfor (var ii = 0, nn = cacheBones.length; ii < nn; ii++)\n\t\t\t\tcacheBones[ii].updateWorldTransform();\n\t\t\tif (i == last) break;\n\t\t\tthis.ikConstraints[i].apply();\n\t\t\ti++;\n\t\t}\n\t},\n\t/** Sets the bones and slots to their setup pose values. */\n setToSetupPose: function ()\n {\n\t\tthis.setBonesToSetupPose();\n\t\tthis.setSlotsToSetupPose();\n\t},\n setBonesToSetupPose: function ()\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tbones[i].setToSetupPose();\n\n\t\tvar ikConstraints = this.ikConstraints;\n for (var i = 0, n = ikConstraints.length; i < n; i++)\n {\n\t\t\tvar ikConstraint = ikConstraints[i];\n\t\t\tikConstraint.bendDirection = ikConstraint.data.bendDirection;\n\t\t\tikConstraint.mix = ikConstraint.data.mix;\n\t\t}\n\t},\n setSlotsToSetupPose: function ()\n {\n\t\tvar slots = this.slots;\n\t\tvar drawOrder = this.drawOrder;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tdrawOrder[i] = slots[i];\n\t\t\tslots[i].setToSetupPose(i);\n\t\t}\n\t},\n\t/** @return May return null. */\n getRootBone: function ()\n {\n\t\treturn this.bones.length ? this.bones[0] : null;\n\t},\n\t/** @return May be null. */\n findBone: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].data.name == boneName) return bones[i];\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findBoneIndex: function (boneName)\n {\n\t\tvar bones = this.bones;\n\t\tfor (var i = 0, n = bones.length; i < n; i++)\n\t\t\tif (bones[i].data.name == boneName) return i;\n\t\treturn -1;\n\t},\n\t/** @return May be null. */\n findSlot: function (slotName)\n {\n\t\tvar slots = this.slots;\n\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\tif (slots[i].data.name == slotName) return slots[i];\n\t\treturn null;\n\t},\n\t/** @return -1 if the bone was not found. */\n findSlotIndex: function (slotName)\n {\n\t\tvar slots = this.slots;\n\t\tfor (var i = 0, n = slots.length; i < n; i++)\n\t\t\tif (slots[i].data.name == slotName) return i;\n\t\treturn -1;\n\t},\n setSkinByName: function (skinName)\n {\n\t\tvar skin = this.data.findSkin(skinName);\n\t\tif (!skin) throw \"Skin not found: \" + skinName;\n\t\tthis.setSkin(skin);\n\t},\n\t/** Sets the skin used to look up attachments before looking in the {@link SkeletonData#getDefaultSkin() default skin}.\n\t * Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. If there was\n\t * no old skin, each slot's setup mode attachment is attached from the new skin.\n\t * @param newSkin May be null. */\n setSkin: function (newSkin)\n {\n if (newSkin)\n {\n\t\t\tif (this.skin)\n\t\t\t\tnewSkin._attachAll(this, this.skin);\n else\n {\n\t\t\t\tvar slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\t\t\tvar slot = slots[i];\n\t\t\t\t\tvar name = slot.data.attachmentName;\n if (name)\n {\n\t\t\t\t\t\tvar attachment = newSkin.getAttachment(i, name);\n\t\t\t\t\t\tif (attachment) slot.setAttachment(attachment);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.skin = newSkin;\n\t},\n\t/** @return May be null. */\n getAttachmentBySlotName: function (slotName, attachmentName)\n {\n\t\treturn this.getAttachmentBySlotIndex(this.data.findSlotIndex(slotName), attachmentName);\n\t},\n\t/** @return May be null. */\n getAttachmentBySlotIndex: function (slotIndex, attachmentName)\n {\n if (this.skin)\n {\n\t\t\tvar attachment = this.skin.getAttachment(slotIndex, attachmentName);\n\t\t\tif (attachment) return attachment;\n\t\t}\n\t\tif (this.data.defaultSkin) return this.data.defaultSkin.getAttachment(slotIndex, attachmentName);\n\t\treturn null;\n\t},\n\t/** @param attachmentName May be null. */\n setAttachment: function (slotName, attachmentName)\n {\n\t\tvar slots = this.slots;\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tvar slot = slots[i];\n if (slot.data.name == slotName)\n {\n\t\t\t\tvar attachment = null;\n if (attachmentName)\n {\n\t\t\t\t\tattachment = this.getAttachmentBySlotIndex(i, attachmentName);\n\t\t\t\t\tif (!attachment) throw \"Attachment not found: \" + attachmentName + \", for slot: \" + slotName;\n\t\t\t\t}\n\t\t\t\tslot.setAttachment(attachment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthrow \"Slot not found: \" + slotName;\n\t},\n\t/** @return May be null. */\n findIkConstraint: function (ikConstraintName)\n {\n\t\tvar ikConstraints = this.ikConstraints;\n\t\tfor (var i = 0, n = ikConstraints.length; i < n; i++)\n\t\t\tif (ikConstraints[i].data.name == ikConstraintName) return ikConstraints[i];\n\t\treturn null;\n\t},\n update: function (delta)\n {\n\t\tthis.time += delta;\n\t}\n};\n\nspine.EventData = function (name)\n{\n\tthis.name = name;\n};\nspine.EventData.prototype = {\n\tintValue: 0,\n\tfloatValue: 0,\n\tstringValue: null\n};\n\nspine.Event = function (data)\n{\n\tthis.data = data;\n};\nspine.Event.prototype = {\n\tintValue: 0,\n\tfloatValue: 0,\n\tstringValue: null\n};\n\nspine.AttachmentType = {\n\tregion: 0,\n\tboundingbox: 1,\n\tmesh: 2,\n\tskinnedmesh: 3\n};\n\nspine.RegionAttachment = function (name)\n{\n\tthis.name = name;\n\tthis.offset = [];\n\tthis.offset.length = 8;\n\tthis.uvs = [];\n\tthis.uvs.length = 8;\n};\nspine.RegionAttachment.prototype = {\n\ttype: spine.AttachmentType.region,\n\tx: 0, y: 0,\n\trotation: 0,\n\tscaleX: 1, scaleY: 1,\n\twidth: 0, height: 0,\n\tr: 1, g: 1, b: 1, a: 1,\n\tpath: null,\n\trendererObject: null,\n\tregionOffsetX: 0, regionOffsetY: 0,\n\tregionWidth: 0, regionHeight: 0,\n\tregionOriginalWidth: 0, regionOriginalHeight: 0,\n setUVs: function (u, v, u2, v2, rotate)\n {\n\t\tvar uvs = this.uvs;\n if (rotate)\n {\n\t\t\tuvs[2/*X2*/] = u;\n\t\t\tuvs[3/*Y2*/] = v2;\n\t\t\tuvs[4/*X3*/] = u;\n\t\t\tuvs[5/*Y3*/] = v;\n\t\t\tuvs[6/*X4*/] = u2;\n\t\t\tuvs[7/*Y4*/] = v;\n\t\t\tuvs[0/*X1*/] = u2;\n\t\t\tuvs[1/*Y1*/] = v2;\n\t\t} else {\n\t\t\tuvs[0/*X1*/] = u;\n\t\t\tuvs[1/*Y1*/] = v2;\n\t\t\tuvs[2/*X2*/] = u;\n\t\t\tuvs[3/*Y2*/] = v;\n\t\t\tuvs[4/*X3*/] = u2;\n\t\t\tuvs[5/*Y3*/] = v;\n\t\t\tuvs[6/*X4*/] = u2;\n\t\t\tuvs[7/*Y4*/] = v2;\n\t\t}\n\t},\n updateOffset: function ()\n {\n\t\tvar regionScaleX = this.width / this.regionOriginalWidth * this.scaleX;\n\t\tvar regionScaleY = this.height / this.regionOriginalHeight * this.scaleY;\n\t\tvar localX = -this.width / 2 * this.scaleX + this.regionOffsetX * regionScaleX;\n\t\tvar localY = -this.height / 2 * this.scaleY + this.regionOffsetY * regionScaleY;\n\t\tvar localX2 = localX + this.regionWidth * regionScaleX;\n\t\tvar localY2 = localY + this.regionHeight * regionScaleY;\n\t\tvar radians = this.rotation * spine.degRad;\n\t\tvar cos = Math.cos(radians);\n\t\tvar sin = Math.sin(radians);\n\t\tvar localXCos = localX * cos + this.x;\n\t\tvar localXSin = localX * sin;\n\t\tvar localYCos = localY * cos + this.y;\n\t\tvar localYSin = localY * sin;\n\t\tvar localX2Cos = localX2 * cos + this.x;\n\t\tvar localX2Sin = localX2 * sin;\n\t\tvar localY2Cos = localY2 * cos + this.y;\n\t\tvar localY2Sin = localY2 * sin;\n\t\tvar offset = this.offset;\n\t\toffset[0/*X1*/] = localXCos - localYSin;\n\t\toffset[1/*Y1*/] = localYCos + localXSin;\n\t\toffset[2/*X2*/] = localXCos - localY2Sin;\n\t\toffset[3/*Y2*/] = localY2Cos + localXSin;\n\t\toffset[4/*X3*/] = localX2Cos - localY2Sin;\n\t\toffset[5/*Y3*/] = localY2Cos + localX2Sin;\n\t\toffset[6/*X4*/] = localX2Cos - localYSin;\n\t\toffset[7/*Y4*/] = localYCos + localX2Sin;\n\t},\n computeVertices: function (x, y, bone, vertices)\n {\n\t\tx += bone.worldX;\n\t\ty += bone.worldY;\n\t\tvar m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11;\n\t\tvar offset = this.offset;\n\t\tvertices[0/*X1*/] = offset[0/*X1*/] * m00 + offset[1/*Y1*/] * m01 + x;\n\t\tvertices[1/*Y1*/] = offset[0/*X1*/] * m10 + offset[1/*Y1*/] * m11 + y;\n\t\tvertices[2/*X2*/] = offset[2/*X2*/] * m00 + offset[3/*Y2*/] * m01 + x;\n\t\tvertices[3/*Y2*/] = offset[2/*X2*/] * m10 + offset[3/*Y2*/] * m11 + y;\n\t\tvertices[4/*X3*/] = offset[4/*X3*/] * m00 + offset[5/*X3*/] * m01 + x;\n\t\tvertices[5/*X3*/] = offset[4/*X3*/] * m10 + offset[5/*X3*/] * m11 + y;\n\t\tvertices[6/*X4*/] = offset[6/*X4*/] * m00 + offset[7/*Y4*/] * m01 + x;\n\t\tvertices[7/*Y4*/] = offset[6/*X4*/] * m10 + offset[7/*Y4*/] * m11 + y;\n\t}\n};\n\nspine.MeshAttachment = function (name)\n{\n\tthis.name = name;\n};\nspine.MeshAttachment.prototype = {\n\ttype: spine.AttachmentType.mesh,\n\tvertices: null,\n\tuvs: null,\n\tregionUVs: null,\n\ttriangles: null,\n\thullLength: 0,\n\tr: 1, g: 1, b: 1, a: 1,\n\tpath: null,\n\trendererObject: null,\n\tregionU: 0, regionV: 0, regionU2: 0, regionV2: 0, regionRotate: false,\n\tregionOffsetX: 0, regionOffsetY: 0,\n\tregionWidth: 0, regionHeight: 0,\n\tregionOriginalWidth: 0, regionOriginalHeight: 0,\n\tedges: null,\n\twidth: 0, height: 0,\n updateUVs: function ()\n {\n\t\tvar width = this.regionU2 - this.regionU, height = this.regionV2 - this.regionV;\n\t\tvar n = this.regionUVs.length;\n if (!this.uvs || this.uvs.length != n)\n {\n this.uvs = new spine.Float32Array(n);\n\t\t}\n if (this.regionRotate)\n {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i + 1] * width;\n this.uvs[i + 1] = this.regionV + height - this.regionUVs[i] * height;\n\t\t\t}\n\t\t} else {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i] * width;\n this.uvs[i + 1] = this.regionV + this.regionUVs[i + 1] * height;\n\t\t\t}\n\t\t}\n\t},\n computeWorldVertices: function (x, y, slot, worldVertices)\n {\n\t\tvar bone = slot.bone;\n\t\tx += bone.worldX;\n\t\ty += bone.worldY;\n\t\tvar m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11;\n\t\tvar vertices = this.vertices;\n\t\tvar verticesCount = vertices.length;\n\t\tif (slot.attachmentVertices.length == verticesCount) vertices = slot.attachmentVertices;\n for (var i = 0; i < verticesCount; i += 2)\n {\n\t\t\tvar vx = vertices[i];\n\t\t\tvar vy = vertices[i + 1];\n\t\t\tworldVertices[i] = vx * m00 + vy * m01 + x;\n\t\t\tworldVertices[i + 1] = vx * m10 + vy * m11 + y;\n\t\t}\n\t}\n};\n\nspine.SkinnedMeshAttachment = function (name)\n{\n\tthis.name = name;\n};\nspine.SkinnedMeshAttachment.prototype = {\n\ttype: spine.AttachmentType.skinnedmesh,\n\tbones: null,\n\tweights: null,\n\tuvs: null,\n\tregionUVs: null,\n\ttriangles: null,\n\thullLength: 0,\n\tr: 1, g: 1, b: 1, a: 1,\n\tpath: null,\n\trendererObject: null,\n\tregionU: 0, regionV: 0, regionU2: 0, regionV2: 0, regionRotate: false,\n\tregionOffsetX: 0, regionOffsetY: 0,\n\tregionWidth: 0, regionHeight: 0,\n\tregionOriginalWidth: 0, regionOriginalHeight: 0,\n\tedges: null,\n\twidth: 0, height: 0,\n updateUVs: function (u, v, u2, v2, rotate)\n {\n\t\tvar width = this.regionU2 - this.regionU, height = this.regionV2 - this.regionV;\n\t\tvar n = this.regionUVs.length;\n if (!this.uvs || this.uvs.length != n)\n {\n this.uvs = new spine.Float32Array(n);\n\t\t}\n if (this.regionRotate)\n {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i + 1] * width;\n this.uvs[i + 1] = this.regionV + height - this.regionUVs[i] * height;\n\t\t\t}\n\t\t} else {\n for (var i = 0; i < n; i += 2)\n {\n this.uvs[i] = this.regionU + this.regionUVs[i] * width;\n this.uvs[i + 1] = this.regionV + this.regionUVs[i + 1] * height;\n\t\t\t}\n\t\t}\n\t},\n computeWorldVertices: function (x, y, slot, worldVertices)\n {\n\t\tvar skeletonBones = slot.bone.skeleton.bones;\n\t\tvar weights = this.weights;\n\t\tvar bones = this.bones;\n\n\t\tvar w = 0, v = 0, b = 0, f = 0, n = bones.length, nn;\n\t\tvar wx, wy, bone, vx, vy, weight;\n if (!slot.attachmentVertices.length)\n {\n for (; v < n; w += 2)\n {\n\t\t\t\twx = 0;\n\t\t\t\twy = 0;\n\t\t\t\tnn = bones[v++] + v;\n for (; v < nn; v++, b += 3)\n {\n\t\t\t\t\tbone = skeletonBones[bones[v]];\n\t\t\t\t\tvx = weights[b];\n\t\t\t\t\tvy = weights[b + 1];\n\t\t\t\t\tweight = weights[b + 2];\n\t\t\t\t\twx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight;\n\t\t\t\t\twy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight;\n\t\t\t\t}\n\t\t\t\tworldVertices[w] = wx + x;\n\t\t\t\tworldVertices[w + 1] = wy + y;\n\t\t\t}\n\t\t} else {\n\t\t\tvar ffd = slot.attachmentVertices;\n for (; v < n; w += 2)\n {\n\t\t\t\twx = 0;\n\t\t\t\twy = 0;\n\t\t\t\tnn = bones[v++] + v;\n for (; v < nn; v++, b += 3, f += 2)\n {\n\t\t\t\t\tbone = skeletonBones[bones[v]];\n\t\t\t\t\tvx = weights[b] + ffd[f];\n\t\t\t\t\tvy = weights[b + 1] + ffd[f + 1];\n\t\t\t\t\tweight = weights[b + 2];\n\t\t\t\t\twx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight;\n\t\t\t\t\twy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight;\n\t\t\t\t}\n\t\t\t\tworldVertices[w] = wx + x;\n\t\t\t\tworldVertices[w + 1] = wy + y;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.BoundingBoxAttachment = function (name)\n{\n\tthis.name = name;\n\tthis.vertices = [];\n};\nspine.BoundingBoxAttachment.prototype = {\n\ttype: spine.AttachmentType.boundingbox,\n computeWorldVertices: function (x, y, bone, worldVertices)\n {\n\t\tx += bone.worldX;\n\t\ty += bone.worldY;\n\t\tvar m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11;\n\t\tvar vertices = this.vertices;\n for (var i = 0, n = vertices.length; i < n; i += 2)\n {\n\t\t\tvar px = vertices[i];\n\t\t\tvar py = vertices[i + 1];\n\t\t\tworldVertices[i] = px * m00 + py * m01 + x;\n\t\t\tworldVertices[i + 1] = px * m10 + py * m11 + y;\n\t\t}\n\t}\n};\n\nspine.AnimationStateData = function (skeletonData)\n{\n\tthis.skeletonData = skeletonData;\n\tthis.animationToMixTime = {};\n};\nspine.AnimationStateData.prototype = {\n\tdefaultMix: 0,\n setMixByName: function (fromName, toName, duration)\n {\n\t\tvar from = this.skeletonData.findAnimation(fromName);\n\t\tif (!from) throw \"Animation not found: \" + fromName;\n\t\tvar to = this.skeletonData.findAnimation(toName);\n\t\tif (!to) throw \"Animation not found: \" + toName;\n\t\tthis.setMix(from, to, duration);\n\t},\n setMix: function (from, to, duration)\n {\n\t\tthis.animationToMixTime[from.name + \":\" + to.name] = duration;\n\t},\n getMix: function (from, to)\n {\n\t\tvar key = from.name + \":\" + to.name;\n\t\treturn this.animationToMixTime.hasOwnProperty(key) ? this.animationToMixTime[key] : this.defaultMix;\n\t}\n};\n\nspine.TrackEntry = function ()\n{};\nspine.TrackEntry.prototype = {\n\tnext: null, previous: null,\n\tanimation: null,\n\tloop: false,\n\tdelay: 0, time: 0, lastTime: -1, endTime: 0,\n\ttimeScale: 1,\n\tmixTime: 0, mixDuration: 0, mix: 1,\n\tonStart: null, onEnd: null, onComplete: null, onEvent: null\n};\n\nspine.AnimationState = function (stateData)\n{\n\tthis.data = stateData;\n\tthis.tracks = [];\n\tthis.events = [];\n};\nspine.AnimationState.prototype = {\n\tonStart: null,\n\tonEnd: null,\n\tonComplete: null,\n\tonEvent: null,\n\ttimeScale: 1,\n update: function (delta)\n {\n\t\tdelta *= this.timeScale;\n for (var i = 0; i < this.tracks.length; i++)\n {\n\t\t\tvar current = this.tracks[i];\n\t\t\tif (!current) continue;\n\n\t\t\tcurrent.time += delta * current.timeScale;\n if (current.previous)\n {\n\t\t\t\tvar previousDelta = delta * current.previous.timeScale;\n\t\t\t\tcurrent.previous.time += previousDelta;\n\t\t\t\tcurrent.mixTime += previousDelta;\n\t\t\t}\n\n\t\t\tvar next = current.next;\n if (next)\n {\n\t\t\t\tnext.time = current.lastTime - next.delay;\n\t\t\t\tif (next.time >= 0) this.setCurrent(i, next);\n\t\t\t} else {\n\t\t\t\t// End non-looping animation when it reaches its end time and there is no next entry.\n\t\t\t\tif (!current.loop && current.lastTime >= current.endTime) this.clearTrack(i);\n\t\t\t}\n\t\t}\n\t},\n apply: function (skeleton)\n {\n for (var i = 0; i < this.tracks.length; i++)\n {\n\t\t\tvar current = this.tracks[i];\n\t\t\tif (!current) continue;\n\n\t\t\tthis.events.length = 0;\n\n\t\t\tvar time = current.time;\n\t\t\tvar lastTime = current.lastTime;\n\t\t\tvar endTime = current.endTime;\n\t\t\tvar loop = current.loop;\n\t\t\tif (!loop && time > endTime) time = endTime;\n\n\t\t\tvar previous = current.previous;\n if (!previous)\n {\n\t\t\t\tif (current.mix == 1)\n\t\t\t\t\tcurrent.animation.apply(skeleton, current.lastTime, time, loop, this.events);\n\t\t\t\telse\n\t\t\t\t\tcurrent.animation.mix(skeleton, current.lastTime, time, loop, this.events, current.mix);\n\t\t\t} else {\n\t\t\t\tvar previousTime = previous.time;\n\t\t\t\tif (!previous.loop && previousTime > previous.endTime) previousTime = previous.endTime;\n\t\t\t\tprevious.animation.apply(skeleton, previousTime, previousTime, previous.loop, null);\n\n\t\t\t\tvar alpha = current.mixTime / current.mixDuration * current.mix;\n if (alpha >= 1)\n {\n\t\t\t\t\talpha = 1;\n\t\t\t\t\tcurrent.previous = null;\n\t\t\t\t}\n\t\t\t\tcurrent.animation.mix(skeleton, current.lastTime, time, loop, this.events, alpha);\n\t\t\t}\n\n for (var ii = 0, nn = this.events.length; ii < nn; ii++)\n {\n\t\t\t\tvar event = this.events[ii];\n\t\t\t\tif (current.onEvent) current.onEvent(i, event);\n\t\t\t\tif (this.onEvent) this.onEvent(i, event);\n\t\t\t}\n\n\t\t\t// Check if completed the animation or a loop iteration.\n if (loop ? (lastTime % endTime > time % endTime) : (lastTime < endTime && time >= endTime))\n {\n\t\t\t\tvar count = Math.floor(time / endTime);\n\t\t\t\tif (current.onComplete) current.onComplete(i, count);\n\t\t\t\tif (this.onComplete) this.onComplete(i, count);\n\t\t\t}\n\n\t\t\tcurrent.lastTime = current.time;\n\t\t}\n\t},\n clearTracks: function ()\n {\n\t\tfor (var i = 0, n = this.tracks.length; i < n; i++)\n\t\t\tthis.clearTrack(i);\n\t\tthis.tracks.length = 0;\n\t},\n clearTrack: function (trackIndex)\n {\n\t\tif (trackIndex >= this.tracks.length) return;\n\t\tvar current = this.tracks[trackIndex];\n\t\tif (!current) return;\n\n\t\tif (current.onEnd) current.onEnd(trackIndex);\n\t\tif (this.onEnd) this.onEnd(trackIndex);\n\n\t\tthis.tracks[trackIndex] = null;\n\t},\n _expandToIndex: function (index)\n {\n\t\tif (index < this.tracks.length) return this.tracks[index];\n\t\twhile (index >= this.tracks.length)\n\t\t\tthis.tracks.push(null);\n\t\treturn null;\n\t},\n setCurrent: function (index, entry)\n {\n\t\tvar current = this._expandToIndex(index);\n if (current)\n {\n\t\t\tvar previous = current.previous;\n\t\t\tcurrent.previous = null;\n\n\t\t\tif (current.onEnd) current.onEnd(index);\n\t\t\tif (this.onEnd) this.onEnd(index);\n\n\t\t\tentry.mixDuration = this.data.getMix(current.animation, entry.animation);\n if (entry.mixDuration > 0)\n {\n\t\t\t\tentry.mixTime = 0;\n\t\t\t\t// If a mix is in progress, mix from the closest animation.\n\t\t\t\tif (previous && current.mixTime / current.mixDuration < 0.5)\n\t\t\t\t\tentry.previous = previous;\n\t\t\t\telse\n\t\t\t\t\tentry.previous = current;\n\t\t\t}\n\t\t}\n\n\t\tthis.tracks[index] = entry;\n\n\t\tif (entry.onStart) entry.onStart(index);\n\t\tif (this.onStart) this.onStart(index);\n\t},\n setAnimationByName: function (trackIndex, animationName, loop)\n {\n\t\tvar animation = this.data.skeletonData.findAnimation(animationName);\n\t\tif (!animation) throw \"Animation not found: \" + animationName;\n\t\treturn this.setAnimation(trackIndex, animation, loop);\n\t},\n\t/** Set the current animation. Any queued animations are cleared. */\n setAnimation: function (trackIndex, animation, loop)\n {\n\t\tvar entry = new spine.TrackEntry();\n\t\tentry.animation = animation;\n\t\tentry.loop = loop;\n\t\tentry.endTime = animation.duration;\n\t\tthis.setCurrent(trackIndex, entry);\n\t\treturn entry;\n\t},\n addAnimationByName: function (trackIndex, animationName, loop, delay)\n {\n\t\tvar animation = this.data.skeletonData.findAnimation(animationName);\n\t\tif (!animation) throw \"Animation not found: \" + animationName;\n\t\treturn this.addAnimation(trackIndex, animation, loop, delay);\n\t},\n\t/** Adds an animation to be played delay seconds after the current or last queued animation.\n\t * @param delay May be <= 0 to use duration of previous animation minus any mix duration plus the negative delay. */\n addAnimation: function (trackIndex, animation, loop, delay)\n {\n\t\tvar entry = new spine.TrackEntry();\n\t\tentry.animation = animation;\n\t\tentry.loop = loop;\n\t\tentry.endTime = animation.duration;\n\n\t\tvar last = this._expandToIndex(trackIndex);\n if (last)\n {\n\t\t\twhile (last.next)\n\t\t\t\tlast = last.next;\n\t\t\tlast.next = entry;\n\t\t} else\n\t\t\tthis.tracks[trackIndex] = entry;\n\n if (delay <= 0)\n {\n\t\t\tif (last)\n\t\t\t\tdelay += last.endTime - this.data.getMix(last.animation, animation);\n\t\t\telse\n\t\t\t\tdelay = 0;\n\t\t}\n\t\tentry.delay = delay;\n\n\t\treturn entry;\n\t},\n\t/** May be null. */\n getCurrent: function (trackIndex)\n {\n\t\tif (trackIndex >= this.tracks.length) return null;\n\t\treturn this.tracks[trackIndex];\n\t}\n};\n\nspine.SkeletonJsonParser = function (attachmentLoader)\n{\n\tthis.attachmentLoader = attachmentLoader;\n};\nspine.SkeletonJsonParser.prototype = {\n\tscale: 1,\n readSkeletonData: function (root, name)\n {\n\t\tvar skeletonData = new spine.SkeletonData();\n\t\tskeletonData.name = name;\n\n\t\t// Skeleton.\n\t\tvar skeletonMap = root[\"skeleton\"];\n if (skeletonMap)\n {\n\t\t\tskeletonData.hash = skeletonMap[\"hash\"];\n\t\t\tskeletonData.version = skeletonMap[\"spine\"];\n\t\t\tskeletonData.width = skeletonMap[\"width\"] || 0;\n\t\t\tskeletonData.height = skeletonMap[\"height\"] || 0;\n\t\t}\n\n\t\t// Bones.\n\t\tvar bones = root[\"bones\"];\n for (var i = 0, n = bones.length; i < n; i++)\n {\n\t\t\tvar boneMap = bones[i];\n\t\t\tvar parent = null;\n if (boneMap[\"parent\"])\n {\n\t\t\t\tparent = skeletonData.findBone(boneMap[\"parent\"]);\n\t\t\t\tif (!parent) throw \"Parent bone not found: \" + boneMap[\"parent\"];\n\t\t\t}\n\t\t\tvar boneData = new spine.BoneData(boneMap[\"name\"], parent);\n\t\t\tboneData.length = (boneMap[\"length\"] || 0) * this.scale;\n\t\t\tboneData.x = (boneMap[\"x\"] || 0) * this.scale;\n\t\t\tboneData.y = (boneMap[\"y\"] || 0) * this.scale;\n\t\t\tboneData.rotation = (boneMap[\"rotation\"] || 0);\n\t\t\tboneData.scaleX = boneMap.hasOwnProperty(\"scaleX\") ? boneMap[\"scaleX\"] : 1;\n\t\t\tboneData.scaleY = boneMap.hasOwnProperty(\"scaleY\") ? boneMap[\"scaleY\"] : 1;\n\t\t\tboneData.inheritScale = boneMap.hasOwnProperty(\"inheritScale\") ? boneMap[\"inheritScale\"] : true;\n\t\t\tboneData.inheritRotation = boneMap.hasOwnProperty(\"inheritRotation\") ? boneMap[\"inheritRotation\"] : true;\n\t\t\tskeletonData.bones.push(boneData);\n\t\t}\n\n\t\t// IK constraints.\n\t\tvar ik = root[\"ik\"];\n if (ik)\n {\n for (var i = 0, n = ik.length; i < n; i++)\n {\n\t\t\t\tvar ikMap = ik[i];\n\t\t\t\tvar ikConstraintData = new spine.IkConstraintData(ikMap[\"name\"]);\n\n\t\t\t\tvar bones = ikMap[\"bones\"];\n for (var ii = 0, nn = bones.length; ii < nn; ii++)\n {\n\t\t\t\t\tvar bone = skeletonData.findBone(bones[ii]);\n\t\t\t\t\tif (!bone) throw \"IK bone not found: \" + bones[ii];\n\t\t\t\t\tikConstraintData.bones.push(bone);\n\t\t\t\t}\n\n\t\t\t\tikConstraintData.target = skeletonData.findBone(ikMap[\"target\"]);\n\t\t\t\tif (!ikConstraintData.target) throw \"Target bone not found: \" + ikMap[\"target\"];\n\n\t\t\t\tikConstraintData.bendDirection = (!ikMap.hasOwnProperty(\"bendPositive\") || ikMap[\"bendPositive\"]) ? 1 : -1;\n\t\t\t\tikConstraintData.mix = ikMap.hasOwnProperty(\"mix\") ? ikMap[\"mix\"] : 1;\n\n\t\t\t\tskeletonData.ikConstraints.push(ikConstraintData);\n\t\t\t}\n\t\t}\n\n\t\t// Slots.\n\t\tvar slots = root[\"slots\"];\n for (var i = 0, n = slots.length; i < n; i++)\n {\n\t\t\tvar slotMap = slots[i];\n\t\t\tvar boneData = skeletonData.findBone(slotMap[\"bone\"]);\n\t\t\tif (!boneData) throw \"Slot bone not found: \" + slotMap[\"bone\"];\n\t\t\tvar slotData = new spine.SlotData(slotMap[\"name\"], boneData);\n\n\t\t\tvar color = slotMap[\"color\"];\n if (color)\n {\n\t\t\t\tslotData.r = this.toColor(color, 0);\n\t\t\t\tslotData.g = this.toColor(color, 1);\n\t\t\t\tslotData.b = this.toColor(color, 2);\n\t\t\t\tslotData.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tslotData.attachmentName = slotMap[\"attachment\"];\n\t\t\tslotData.additiveBlending = slotMap[\"additive\"] && slotMap[\"additive\"] == \"true\";\n\n\t\t\tskeletonData.slots.push(slotData);\n\t\t}\n\n\t\t// Skins.\n\t\tvar skins = root[\"skins\"];\n for (var skinName in skins)\n {\n\t\t\tif (!skins.hasOwnProperty(skinName)) continue;\n\t\t\tvar skinMap = skins[skinName];\n\t\t\tvar skin = new spine.Skin(skinName);\n for (var slotName in skinMap)\n {\n\t\t\t\tif (!skinMap.hasOwnProperty(slotName)) continue;\n\t\t\t\tvar slotIndex = skeletonData.findSlotIndex(slotName);\n\t\t\t\tvar slotEntry = skinMap[slotName];\n for (var attachmentName in slotEntry)\n {\n\t\t\t\t\tif (!slotEntry.hasOwnProperty(attachmentName)) continue;\n\t\t\t\t\tvar attachment = this.readAttachment(skin, attachmentName, slotEntry[attachmentName]);\n\t\t\t\t\tif (attachment) skin.addAttachment(slotIndex, attachmentName, attachment);\n\t\t\t\t}\n\t\t\t}\n\t\t\tskeletonData.skins.push(skin);\n\t\t\tif (skin.name == \"default\") skeletonData.defaultSkin = skin;\n\t\t}\n\n\t\t// Events.\n\t\tvar events = root[\"events\"];\n for (var eventName in events)\n {\n\t\t\tif (!events.hasOwnProperty(eventName)) continue;\n\t\t\tvar eventMap = events[eventName];\n\t\t\tvar eventData = new spine.EventData(eventName);\n\t\t\teventData.intValue = eventMap[\"int\"] || 0;\n\t\t\teventData.floatValue = eventMap[\"float\"] || 0;\n\t\t\teventData.stringValue = eventMap[\"string\"] || null;\n\t\t\tskeletonData.events.push(eventData);\n\t\t}\n\n\t\t// Animations.\n\t\tvar animations = root[\"animations\"];\n for (var animationName in animations)\n {\n\t\t\tif (!animations.hasOwnProperty(animationName)) continue;\n\t\t\tthis.readAnimation(animationName, animations[animationName], skeletonData);\n\t\t}\n\n\t\treturn skeletonData;\n\t},\n readAttachment: function (skin, name, map)\n {\n\t\tname = map[\"name\"] || name;\n\n\t\tvar type = spine.AttachmentType[map[\"type\"] || \"region\"];\n\t\tvar path = map[\"path\"] || name;\n\n\t\tvar scale = this.scale;\n if (type == spine.AttachmentType.region)\n {\n\t\t\tvar region = this.attachmentLoader.newRegionAttachment(skin, name, path);\n\t\t\tif (!region) return null;\n\t\t\tregion.path = path;\n\t\t\tregion.x = (map[\"x\"] || 0) * scale;\n\t\t\tregion.y = (map[\"y\"] || 0) * scale;\n\t\t\tregion.scaleX = map.hasOwnProperty(\"scaleX\") ? map[\"scaleX\"] : 1;\n\t\t\tregion.scaleY = map.hasOwnProperty(\"scaleY\") ? map[\"scaleY\"] : 1;\n\t\t\tregion.rotation = map[\"rotation\"] || 0;\n\t\t\tregion.width = (map[\"width\"] || 0) * scale;\n\t\t\tregion.height = (map[\"height\"] || 0) * scale;\n\n\t\t\tvar color = map[\"color\"];\n if (color)\n {\n\t\t\t\tregion.r = this.toColor(color, 0);\n\t\t\t\tregion.g = this.toColor(color, 1);\n\t\t\t\tregion.b = this.toColor(color, 2);\n\t\t\t\tregion.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tregion.updateOffset();\n\t\t\treturn region;\n } else if (type == spine.AttachmentType.mesh)\n {\n\t\t\tvar mesh = this.attachmentLoader.newMeshAttachment(skin, name, path);\n\t\t\tif (!mesh) return null;\n\t\t\tmesh.path = path;\n\t\t\tmesh.vertices = this.getFloatArray(map, \"vertices\", scale);\n\t\t\tmesh.triangles = this.getIntArray(map, \"triangles\");\n\t\t\tmesh.regionUVs = this.getFloatArray(map, \"uvs\", 1);\n\t\t\tmesh.updateUVs();\n\n\t\t\tcolor = map[\"color\"];\n if (color)\n {\n\t\t\t\tmesh.r = this.toColor(color, 0);\n\t\t\t\tmesh.g = this.toColor(color, 1);\n\t\t\t\tmesh.b = this.toColor(color, 2);\n\t\t\t\tmesh.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tmesh.hullLength = (map[\"hull\"] || 0) * 2;\n\t\t\tif (map[\"edges\"]) mesh.edges = this.getIntArray(map, \"edges\");\n\t\t\tmesh.width = (map[\"width\"] || 0) * scale;\n\t\t\tmesh.height = (map[\"height\"] || 0) * scale;\n\t\t\treturn mesh;\n } else if (type == spine.AttachmentType.skinnedmesh)\n {\n\t\t\tvar mesh = this.attachmentLoader.newSkinnedMeshAttachment(skin, name, path);\n\t\t\tif (!mesh) return null;\n\t\t\tmesh.path = path;\n\n\t\t\tvar uvs = this.getFloatArray(map, \"uvs\", 1);\n\t\t\tvar vertices = this.getFloatArray(map, \"vertices\", 1);\n\t\t\tvar weights = [];\n\t\t\tvar bones = [];\n for (var i = 0, n = vertices.length; i < n; )\n {\n\t\t\t\tvar boneCount = vertices[i++] | 0;\n\t\t\t\tbones[bones.length] = boneCount;\n for (var nn = i + boneCount * 4; i < nn; )\n {\n\t\t\t\t\tbones[bones.length] = vertices[i];\n\t\t\t\t\tweights[weights.length] = vertices[i + 1] * scale;\n\t\t\t\t\tweights[weights.length] = vertices[i + 2] * scale;\n\t\t\t\t\tweights[weights.length] = vertices[i + 3];\n\t\t\t\t\ti += 4;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmesh.bones = bones;\n\t\t\tmesh.weights = weights;\n\t\t\tmesh.triangles = this.getIntArray(map, \"triangles\");\n\t\t\tmesh.regionUVs = uvs;\n\t\t\tmesh.updateUVs();\n\n\t\t\tcolor = map[\"color\"];\n if (color)\n {\n\t\t\t\tmesh.r = this.toColor(color, 0);\n\t\t\t\tmesh.g = this.toColor(color, 1);\n\t\t\t\tmesh.b = this.toColor(color, 2);\n\t\t\t\tmesh.a = this.toColor(color, 3);\n\t\t\t}\n\n\t\t\tmesh.hullLength = (map[\"hull\"] || 0) * 2;\n\t\t\tif (map[\"edges\"]) mesh.edges = this.getIntArray(map, \"edges\");\n\t\t\tmesh.width = (map[\"width\"] || 0) * scale;\n\t\t\tmesh.height = (map[\"height\"] || 0) * scale;\n\t\t\treturn mesh;\n } else if (type == spine.AttachmentType.boundingbox)\n {\n\t\t\tvar attachment = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n\t\t\tvar vertices = map[\"vertices\"];\n\t\t\tfor (var i = 0, n = vertices.length; i < n; i++)\n\t\t\t\tattachment.vertices.push(vertices[i] * scale);\n\t\t\treturn attachment;\n\t\t}\n\t\tthrow \"Unknown attachment type: \" + type;\n\t},\n readAnimation: function (name, map, skeletonData)\n {\n\t\tvar timelines = [];\n\t\tvar duration = 0;\n\n\t\tvar slots = map[\"slots\"];\n for (var slotName in slots)\n {\n\t\t\tif (!slots.hasOwnProperty(slotName)) continue;\n\t\t\tvar slotMap = slots[slotName];\n\t\t\tvar slotIndex = skeletonData.findSlotIndex(slotName);\n\n for (var timelineName in slotMap)\n {\n\t\t\t\tif (!slotMap.hasOwnProperty(timelineName)) continue;\n\t\t\t\tvar values = slotMap[timelineName];\n if (timelineName == \"color\")\n {\n\t\t\t\t\tvar timeline = new spine.ColorTimeline(values.length);\n\t\t\t\t\ttimeline.slotIndex = slotIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\tvar color = valueMap[\"color\"];\n\t\t\t\t\t\tvar r = this.toColor(color, 0);\n\t\t\t\t\t\tvar g = this.toColor(color, 1);\n\t\t\t\t\t\tvar b = this.toColor(color, 2);\n\t\t\t\t\t\tvar a = this.toColor(color, 3);\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], r, g, b, a);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 5 - 5]);\n\n } else if (timelineName == \"attachment\")\n {\n\t\t\t\t\tvar timeline = new spine.AttachmentTimeline(values.length);\n\t\t\t\t\ttimeline.slotIndex = slotIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\ttimeline.setFrame(frameIndex++, valueMap[\"time\"], valueMap[\"name\"]);\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n\n\t\t\t\t} else\n\t\t\t\t\tthrow \"Invalid timeline type for a slot: \" + timelineName + \" (\" + slotName + \")\";\n\t\t\t}\n\t\t}\n\n\t\tvar bones = map[\"bones\"];\n for (var boneName in bones)\n {\n\t\t\tif (!bones.hasOwnProperty(boneName)) continue;\n\t\t\tvar boneIndex = skeletonData.findBoneIndex(boneName);\n\t\t\tif (boneIndex == -1) throw \"Bone not found: \" + boneName;\n\t\t\tvar boneMap = bones[boneName];\n\n for (var timelineName in boneMap)\n {\n\t\t\t\tif (!boneMap.hasOwnProperty(timelineName)) continue;\n\t\t\t\tvar values = boneMap[timelineName];\n if (timelineName == \"rotate\")\n {\n\t\t\t\t\tvar timeline = new spine.RotateTimeline(values.length);\n\t\t\t\t\ttimeline.boneIndex = boneIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], valueMap[\"angle\"]);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 2 - 2]);\n\n } else if (timelineName == \"translate\" || timelineName == \"scale\")\n {\n\t\t\t\t\tvar timeline;\n\t\t\t\t\tvar timelineScale = 1;\n\t\t\t\t\tif (timelineName == \"scale\")\n\t\t\t\t\t\ttimeline = new spine.ScaleTimeline(values.length);\n else\n {\n\t\t\t\t\t\ttimeline = new spine.TranslateTimeline(values.length);\n\t\t\t\t\t\ttimelineScale = this.scale;\n\t\t\t\t\t}\n\t\t\t\t\ttimeline.boneIndex = boneIndex;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\tvar x = (valueMap[\"x\"] || 0) * timelineScale;\n\t\t\t\t\t\tvar y = (valueMap[\"y\"] || 0) * timelineScale;\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], x, y);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 3 - 3]);\n\n } else if (timelineName == \"flipX\" || timelineName == \"flipY\")\n {\n\t\t\t\t\tvar x = timelineName == \"flipX\";\n\t\t\t\t\tvar timeline = x ? new spine.FlipXTimeline(values.length) : new spine.FlipYTimeline(values.length);\n\t\t\t\t\ttimeline.boneIndex = boneIndex;\n\n\t\t\t\t\tvar field = x ? \"x\" : \"y\";\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], valueMap[field] || false);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines.push(timeline);\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() * 2 - 2]);\n\t\t\t\t} else\n\t\t\t\t\tthrow \"Invalid timeline type for a bone: \" + timelineName + \" (\" + boneName + \")\";\n\t\t\t}\n\t\t}\n\n\t\tvar ikMap = map[\"ik\"];\n for (var ikConstraintName in ikMap)\n {\n\t\t\tif (!ikMap.hasOwnProperty(ikConstraintName)) continue;\n\t\t\tvar ikConstraint = skeletonData.findIkConstraint(ikConstraintName);\n\t\t\tvar values = ikMap[ikConstraintName];\n\t\t\tvar timeline = new spine.IkConstraintTimeline(values.length);\n\t\t\ttimeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(ikConstraint);\n\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\tvar valueMap = values[i];\n\t\t\t\tvar mix = valueMap.hasOwnProperty(\"mix\") ? valueMap[\"mix\"] : 1;\n\t\t\t\tvar bendDirection = (!valueMap.hasOwnProperty(\"bendPositive\") || valueMap[\"bendPositive\"]) ? 1 : -1;\n\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], mix, bendDirection);\n\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\tframeIndex++;\n\t\t\t}\n\t\t\ttimelines.push(timeline);\n\t\t\tduration = Math.max(duration, timeline.frames[timeline.frameCount * 3 - 3]);\n\t\t}\n\n\t\tvar ffd = map[\"ffd\"];\n for (var skinName in ffd)\n {\n\t\t\tvar skin = skeletonData.findSkin(skinName);\n\t\t\tvar slotMap = ffd[skinName];\n for (slotName in slotMap)\n {\n\t\t\t\tvar slotIndex = skeletonData.findSlotIndex(slotName);\n\t\t\t\tvar meshMap = slotMap[slotName];\n for (var meshName in meshMap)\n {\n\t\t\t\t\tvar values = meshMap[meshName];\n\t\t\t\t\tvar timeline = new spine.FfdTimeline(values.length);\n\t\t\t\t\tvar attachment = skin.getAttachment(slotIndex, meshName);\n\t\t\t\t\tif (!attachment) throw \"FFD attachment not found: \" + meshName;\n\t\t\t\t\ttimeline.slotIndex = slotIndex;\n\t\t\t\t\ttimeline.attachment = attachment;\n\n\t\t\t\t\tvar isMesh = attachment.type == spine.AttachmentType.mesh;\n\t\t\t\t\tvar vertexCount;\n\t\t\t\t\tif (isMesh)\n\t\t\t\t\t\tvertexCount = attachment.vertices.length;\n\t\t\t\t\telse\n\t\t\t\t\t\tvertexCount = attachment.weights.length / 3 * 2;\n\n\t\t\t\t\tvar frameIndex = 0;\n for (var i = 0, n = values.length; i < n; i++)\n {\n\t\t\t\t\t\tvar valueMap = values[i];\n\t\t\t\t\t\tvar vertices;\n if (!valueMap[\"vertices\"])\n {\n\t\t\t\t\t\t\tif (isMesh)\n\t\t\t\t\t\t\t\tvertices = attachment.vertices;\n else\n {\n\t\t\t\t\t\t\t\tvertices = [];\n\t\t\t\t\t\t\t\tvertices.length = vertexCount;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar verticesValue = valueMap[\"vertices\"];\n\t\t\t\t\t\t\tvar vertices = [];\n\t\t\t\t\t\t\tvertices.length = vertexCount;\n\t\t\t\t\t\t\tvar start = valueMap[\"offset\"] || 0;\n\t\t\t\t\t\t\tvar nn = verticesValue.length;\n if (this.scale == 1)\n {\n\t\t\t\t\t\t\t\tfor (var ii = 0; ii < nn; ii++)\n\t\t\t\t\t\t\t\t\tvertices[ii + start] = verticesValue[ii];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor (var ii = 0; ii < nn; ii++)\n\t\t\t\t\t\t\t\t\tvertices[ii + start] = verticesValue[ii] * this.scale;\n\t\t\t\t\t\t\t}\n if (isMesh)\n {\n\t\t\t\t\t\t\t\tvar meshVertices = attachment.vertices;\n\t\t\t\t\t\t\t\tfor (var ii = 0, nn = vertices.length; ii < nn; ii++)\n\t\t\t\t\t\t\t\t\tvertices[ii] += meshVertices[ii];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttimeline.setFrame(frameIndex, valueMap[\"time\"], vertices);\n\t\t\t\t\t\tthis.readCurve(timeline, frameIndex, valueMap);\n\t\t\t\t\t\tframeIndex++;\n\t\t\t\t\t}\n\t\t\t\t\ttimelines[timelines.length] = timeline;\n\t\t\t\t\tduration = Math.max(duration, timeline.frames[timeline.frameCount - 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar drawOrderValues = map[\"drawOrder\"];\n\t\tif (!drawOrderValues) drawOrderValues = map[\"draworder\"];\n if (drawOrderValues)\n {\n\t\t\tvar timeline = new spine.DrawOrderTimeline(drawOrderValues.length);\n\t\t\tvar slotCount = skeletonData.slots.length;\n\t\t\tvar frameIndex = 0;\n for (var i = 0, n = drawOrderValues.length; i < n; i++)\n {\n\t\t\t\tvar drawOrderMap = drawOrderValues[i];\n\t\t\t\tvar drawOrder = null;\n if (drawOrderMap[\"offsets\"])\n {\n\t\t\t\t\tdrawOrder = [];\n\t\t\t\t\tdrawOrder.length = slotCount;\n\t\t\t\t\tfor (var ii = slotCount - 1; ii >= 0; ii--)\n\t\t\t\t\t\tdrawOrder[ii] = -1;\n\t\t\t\t\tvar offsets = drawOrderMap[\"offsets\"];\n\t\t\t\t\tvar unchanged = [];\n\t\t\t\t\tunchanged.length = slotCount - offsets.length;\n\t\t\t\t\tvar originalIndex = 0, unchangedIndex = 0;\n for (var ii = 0, nn = offsets.length; ii < nn; ii++)\n {\n\t\t\t\t\t\tvar offsetMap = offsets[ii];\n\t\t\t\t\t\tvar slotIndex = skeletonData.findSlotIndex(offsetMap[\"slot\"]);\n\t\t\t\t\t\tif (slotIndex == -1) throw \"Slot not found: \" + offsetMap[\"slot\"];\n\t\t\t\t\t\t// Collect unchanged items.\n\t\t\t\t\t\twhile (originalIndex != slotIndex)\n\t\t\t\t\t\t\tunchanged[unchangedIndex++] = originalIndex++;\n\t\t\t\t\t\t// Set changed items.\n\t\t\t\t\t\tdrawOrder[originalIndex + offsetMap[\"offset\"]] = originalIndex++;\n\t\t\t\t\t}\n\t\t\t\t\t// Collect remaining unchanged items.\n\t\t\t\t\twhile (originalIndex < slotCount)\n\t\t\t\t\t\tunchanged[unchangedIndex++] = originalIndex++;\n\t\t\t\t\t// Fill in unchanged items.\n\t\t\t\t\tfor (var ii = slotCount - 1; ii >= 0; ii--)\n\t\t\t\t\t\tif (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex];\n\t\t\t\t}\n\t\t\t\ttimeline.setFrame(frameIndex++, drawOrderMap[\"time\"], drawOrder);\n\t\t\t}\n\t\t\ttimelines.push(timeline);\n\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n\t\t}\n\n\t\tvar events = map[\"events\"];\n if (events)\n {\n\t\t\tvar timeline = new spine.EventTimeline(events.length);\n\t\t\tvar frameIndex = 0;\n for (var i = 0, n = events.length; i < n; i++)\n {\n\t\t\t\tvar eventMap = events[i];\n\t\t\t\tvar eventData = skeletonData.findEvent(eventMap[\"name\"]);\n\t\t\t\tif (!eventData) throw \"Event not found: \" + eventMap[\"name\"];\n\t\t\t\tvar event = new spine.Event(eventData);\n\t\t\t\tevent.intValue = eventMap.hasOwnProperty(\"int\") ? eventMap[\"int\"] : eventData.intValue;\n\t\t\t\tevent.floatValue = eventMap.hasOwnProperty(\"float\") ? eventMap[\"float\"] : eventData.floatValue;\n\t\t\t\tevent.stringValue = eventMap.hasOwnProperty(\"string\") ? eventMap[\"string\"] : eventData.stringValue;\n\t\t\t\ttimeline.setFrame(frameIndex++, eventMap[\"time\"], event);\n\t\t\t}\n\t\t\ttimelines.push(timeline);\n\t\t\tduration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]);\n\t\t}\n\n\t\tskeletonData.animations.push(new spine.Animation(name, timelines, duration));\n\t},\n readCurve: function (timeline, frameIndex, valueMap)\n {\n\t\tvar curve = valueMap[\"curve\"];\n\t\tif (!curve)\n\t\t\ttimeline.curves.setLinear(frameIndex);\n\t\telse if (curve == \"stepped\")\n\t\t\ttimeline.curves.setStepped(frameIndex);\n\t\telse if (curve instanceof Array)\n\t\t\ttimeline.curves.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]);\n\t},\n toColor: function (hexString, colorIndex)\n {\n\t\tif (hexString.length != 8) throw \"Color hexidecimal length must be 8, recieved: \" + hexString;\n\t\treturn parseInt(hexString.substring(colorIndex * 2, (colorIndex * 2) + 2), 16) / 255;\n\t},\n getFloatArray: function (map, name, scale)\n {\n\t\tvar list = map[name];\n\t\tvar values = new spine.Float32Array(list.length);\n\t\tvar i = 0, n = list.length;\n if (scale == 1)\n {\n\t\t\tfor (; i < n; i++)\n\t\t\t\tvalues[i] = list[i];\n\t\t} else {\n\t\t\tfor (; i < n; i++)\n\t\t\t\tvalues[i] = list[i] * scale;\n\t\t}\n\t\treturn values;\n\t},\n getIntArray: function (map, name)\n {\n\t\tvar list = map[name];\n\t\tvar values = new spine.Uint16Array(list.length);\n\t\tfor (var i = 0, n = list.length; i < n; i++)\n\t\t\tvalues[i] = list[i] | 0;\n\t\treturn values;\n\t}\n};\n\nspine.Atlas = function (atlasText, baseUrl, crossOrigin)\n{\n if (baseUrl && baseUrl.indexOf('/') !== baseUrl.length)\n {\n baseUrl += '/';\n }\n\n\tthis.pages = [];\n\tthis.regions = [];\n\n this.texturesLoading = 0;\n\n var self = this;\n\n\tvar reader = new spine.AtlasReader(atlasText);\n\tvar tuple = [];\n\ttuple.length = 4;\n\tvar page = null;\n while (true)\n {\n\t\tvar line = reader.readLine();\n\t\tif (line === null) break;\n\t\tline = reader.trim(line);\n\t\tif (!line.length)\n\t\t\tpage = null;\n else if (!page)\n {\n\t\t\tpage = new spine.AtlasPage();\n\t\t\tpage.name = line;\n\n if (reader.readTuple(tuple) == 2)\n { // size is only optional for an atlas packed with an old TexturePacker.\n\t\t\t\tpage.width = parseInt(tuple[0]);\n\t\t\t\tpage.height = parseInt(tuple[1]);\n\t\t\t\treader.readTuple(tuple);\n\t\t\t}\n\t\t\tpage.format = spine.Atlas.Format[tuple[0]];\n\n\t\t\treader.readTuple(tuple);\n\t\t\tpage.minFilter = spine.Atlas.TextureFilter[tuple[0]];\n\t\t\tpage.magFilter = spine.Atlas.TextureFilter[tuple[1]];\n\n\t\t\tvar direction = reader.readValue();\n\t\t\tpage.uWrap = spine.Atlas.TextureWrap.clampToEdge;\n\t\t\tpage.vWrap = spine.Atlas.TextureWrap.clampToEdge;\n\t\t\tif (direction == \"x\")\n\t\t\t\tpage.uWrap = spine.Atlas.TextureWrap.repeat;\n\t\t\telse if (direction == \"y\")\n\t\t\t\tpage.vWrap = spine.Atlas.TextureWrap.repeat;\n\t\t\telse if (direction == \"xy\")\n\t\t\t\tpage.uWrap = page.vWrap = spine.Atlas.TextureWrap.repeat;\n\n page.rendererObject = core.BaseTexture.fromImage(baseUrl + line, crossOrigin);\n\n\t\t\tthis.pages.push(page);\n\n\t\t} else {\n\t\t\tvar region = new spine.AtlasRegion();\n\t\t\tregion.name = line;\n\t\t\tregion.page = page;\n\n\t\t\tregion.rotate = reader.readValue() == \"true\";\n\n\t\t\treader.readTuple(tuple);\n\t\t\tvar x = parseInt(tuple[0]);\n\t\t\tvar y = parseInt(tuple[1]);\n\n\t\t\treader.readTuple(tuple);\n\t\t\tvar width = parseInt(tuple[0]);\n\t\t\tvar height = parseInt(tuple[1]);\n\n\t\t\tregion.u = x / page.width;\n\t\t\tregion.v = y / page.height;\n if (region.rotate)\n {\n\t\t\t\tregion.u2 = (x + height) / page.width;\n\t\t\t\tregion.v2 = (y + width) / page.height;\n\t\t\t} else {\n\t\t\t\tregion.u2 = (x + width) / page.width;\n\t\t\t\tregion.v2 = (y + height) / page.height;\n\t\t\t}\n\t\t\tregion.x = x;\n\t\t\tregion.y = y;\n\t\t\tregion.width = Math.abs(width);\n\t\t\tregion.height = Math.abs(height);\n\n if (reader.readTuple(tuple) == 4)\n { // split is optional\n\t\t\t\tregion.splits = [parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])];\n\n if (reader.readTuple(tuple) == 4)\n { // pad is optional, but only present with splits\n\t\t\t\t\tregion.pads = [parseInt(tuple[0]), parseInt(tuple[1]), parseInt(tuple[2]), parseInt(tuple[3])];\n\n\t\t\t\t\treader.readTuple(tuple);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tregion.originalWidth = parseInt(tuple[0]);\n\t\t\tregion.originalHeight = parseInt(tuple[1]);\n\n\t\t\treader.readTuple(tuple);\n\t\t\tregion.offsetX = parseInt(tuple[0]);\n\t\t\tregion.offsetY = parseInt(tuple[1]);\n\n\t\t\tregion.index = parseInt(reader.readValue());\n\n\t\t\tthis.regions.push(region);\n\t\t}\n\t}\n};\nspine.Atlas.prototype = {\n findRegion: function (name)\n {\n\t\tvar regions = this.regions;\n\t\tfor (var i = 0, n = regions.length; i < n; i++)\n\t\t\tif (regions[i].name == name) return regions[i];\n\t\treturn null;\n\t},\n dispose: function ()\n {\n\t\tvar pages = this.pages;\n\t\tfor (var i = 0, n = pages.length; i < n; i++)\n\t\t\tpages[i].rendererObject.destroy(true);\n\t},\n updateUVs: function (page)\n {\n\t\tvar regions = this.regions;\n for (var i = 0, n = regions.length; i < n; i++)\n {\n\t\t\tvar region = regions[i];\n\t\t\tif (region.page != page) continue;\n\t\t\tregion.u = region.x / page.width;\n\t\t\tregion.v = region.y / page.height;\n if (region.rotate)\n {\n\t\t\t\tregion.u2 = (region.x + region.height) / page.width;\n\t\t\t\tregion.v2 = (region.y + region.width) / page.height;\n\t\t\t} else {\n\t\t\t\tregion.u2 = (region.x + region.width) / page.width;\n\t\t\t\tregion.v2 = (region.y + region.height) / page.height;\n\t\t\t}\n\t\t}\n\t}\n};\n\nspine.Atlas.Format = {\n\talpha: 0,\n\tintensity: 1,\n\tluminanceAlpha: 2,\n\trgb565: 3,\n\trgba4444: 4,\n\trgb888: 5,\n\trgba8888: 6\n};\n\nspine.Atlas.TextureFilter = {\n\tnearest: 0,\n\tlinear: 1,\n\tmipMap: 2,\n\tmipMapNearestNearest: 3,\n\tmipMapLinearNearest: 4,\n\tmipMapNearestLinear: 5,\n\tmipMapLinearLinear: 6\n};\n\nspine.Atlas.TextureWrap = {\n\tmirroredRepeat: 0,\n\tclampToEdge: 1,\n\trepeat: 2\n};\n\nspine.AtlasPage = function ()\n{};\nspine.AtlasPage.prototype = {\n\tname: null,\n\tformat: null,\n\tminFilter: null,\n\tmagFilter: null,\n\tuWrap: null,\n\tvWrap: null,\n\trendererObject: null,\n\twidth: 0,\n\theight: 0\n};\n\nspine.AtlasRegion = function ()\n{};\nspine.AtlasRegion.prototype = {\n\tpage: null,\n\tname: null,\n\tx: 0, y: 0,\n\twidth: 0, height: 0,\n\tu: 0, v: 0, u2: 0, v2: 0,\n\toffsetX: 0, offsetY: 0,\n\toriginalWidth: 0, originalHeight: 0,\n\tindex: 0,\n\trotate: false,\n\tsplits: null,\n\tpads: null\n};\n\nspine.AtlasReader = function (text)\n{\n\tthis.lines = text.split(/\\r\\n|\\r|\\n/);\n};\nspine.AtlasReader.prototype = {\n\tindex: 0,\n trim: function (value)\n {\n\t\treturn value.replace(/^\\s+|\\s+$/g, \"\");\n\t},\n readLine: function ()\n {\n\t\tif (this.index >= this.lines.length) return null;\n\t\treturn this.lines[this.index++];\n\t},\n readValue: function ()\n {\n\t\tvar line = this.readLine();\n\t\tvar colon = line.indexOf(\":\");\n\t\tif (colon == -1) throw \"Invalid line: \" + line;\n\t\treturn this.trim(line.substring(colon + 1));\n\t},\n\t/** Returns the number of tuple values read (1, 2 or 4). */\n readTuple: function (tuple)\n {\n\t\tvar line = this.readLine();\n\t\tvar colon = line.indexOf(\":\");\n\t\tif (colon == -1) throw \"Invalid line: \" + line;\n\t\tvar i = 0, lastMatch = colon + 1;\n for (; i < 3; i++)\n {\n\t\t\tvar comma = line.indexOf(\",\", lastMatch);\n\t\t\tif (comma == -1) break;\n\t\t\ttuple[i] = this.trim(line.substr(lastMatch, comma - lastMatch));\n\t\t\tlastMatch = comma + 1;\n\t\t}\n\t\ttuple[i] = this.trim(line.substring(lastMatch));\n\t\treturn i + 1;\n\t}\n};\n\nspine.AtlasAttachmentParser = function (atlas)\n{\n\tthis.atlas = atlas;\n};\nspine.AtlasAttachmentParser.prototype = {\n newRegionAttachment: function (skin, name, path)\n {\n\t\tvar region = this.atlas.findRegion(path);\n\t\tif (!region) throw \"Region not found in atlas: \" + path + \" (region attachment: \" + name + \")\";\n\t\tvar attachment = new spine.RegionAttachment(name);\n\t\tattachment.rendererObject = region;\n\t\tattachment.setUVs(region.u, region.v, region.u2, region.v2, region.rotate);\n\t\tattachment.regionOffsetX = region.offsetX;\n\t\tattachment.regionOffsetY = region.offsetY;\n\t\tattachment.regionWidth = region.width;\n\t\tattachment.regionHeight = region.height;\n\t\tattachment.regionOriginalWidth = region.originalWidth;\n\t\tattachment.regionOriginalHeight = region.originalHeight;\n\t\treturn attachment;\n\t},\n newMeshAttachment: function (skin, name, path)\n {\n\t\tvar region = this.atlas.findRegion(path);\n\t\tif (!region) throw \"Region not found in atlas: \" + path + \" (mesh attachment: \" + name + \")\";\n\t\tvar attachment = new spine.MeshAttachment(name);\n\t\tattachment.rendererObject = region;\n\t\tattachment.regionU = region.u;\n\t\tattachment.regionV = region.v;\n\t\tattachment.regionU2 = region.u2;\n\t\tattachment.regionV2 = region.v2;\n\t\tattachment.regionRotate = region.rotate;\n\t\tattachment.regionOffsetX = region.offsetX;\n\t\tattachment.regionOffsetY = region.offsetY;\n\t\tattachment.regionWidth = region.width;\n\t\tattachment.regionHeight = region.height;\n\t\tattachment.regionOriginalWidth = region.originalWidth;\n\t\tattachment.regionOriginalHeight = region.originalHeight;\n\t\treturn attachment;\n\t},\n newSkinnedMeshAttachment: function (skin, name, path)\n {\n\t\tvar region = this.atlas.findRegion(path);\n\t\tif (!region) throw \"Region not found in atlas: \" + path + \" (skinned mesh attachment: \" + name + \")\";\n\t\tvar attachment = new spine.SkinnedMeshAttachment(name);\n\t\tattachment.rendererObject = region;\n\t\tattachment.regionU = region.u;\n\t\tattachment.regionV = region.v;\n\t\tattachment.regionU2 = region.u2;\n\t\tattachment.regionV2 = region.v2;\n\t\tattachment.regionRotate = region.rotate;\n\t\tattachment.regionOffsetX = region.offsetX;\n\t\tattachment.regionOffsetY = region.offsetY;\n\t\tattachment.regionWidth = region.width;\n\t\tattachment.regionHeight = region.height;\n\t\tattachment.regionOriginalWidth = region.originalWidth;\n\t\tattachment.regionOriginalHeight = region.originalHeight;\n\t\treturn attachment;\n\t},\n newBoundingBoxAttachment: function (skin, name)\n {\n\t\treturn new spine.BoundingBoxAttachment(name);\n\t}\n};\n\nspine.SkeletonBounds = function ()\n{\n\tthis.polygonPool = [];\n\tthis.polygons = [];\n\tthis.boundingBoxes = [];\n};\nspine.SkeletonBounds.prototype = {\n\tminX: 0, minY: 0, maxX: 0, maxY: 0,\n update: function (skeleton, updateAabb)\n {\n\t\tvar slots = skeleton.slots;\n\t\tvar slotCount = slots.length;\n\t\tvar x = skeleton.x, y = skeleton.y;\n\t\tvar boundingBoxes = this.boundingBoxes;\n\t\tvar polygonPool = this.polygonPool;\n\t\tvar polygons = this.polygons;\n\n\t\tboundingBoxes.length = 0;\n\t\tfor (var i = 0, n = polygons.length; i < n; i++)\n\t\t\tpolygonPool.push(polygons[i]);\n\t\tpolygons.length = 0;\n\n for (var i = 0; i < slotCount; i++)\n {\n\t\t\tvar slot = slots[i];\n\t\t\tvar boundingBox = slot.attachment;\n\t\t\tif (boundingBox.type != spine.AttachmentType.boundingbox) continue;\n\t\t\tboundingBoxes.push(boundingBox);\n\n\t\t\tvar poolCount = polygonPool.length, polygon;\n if (poolCount > 0)\n {\n\t\t\t\tpolygon = polygonPool[poolCount - 1];\n\t\t\t\tpolygonPool.splice(poolCount - 1, 1);\n\t\t\t} else\n\t\t\t\tpolygon = [];\n\t\t\tpolygons.push(polygon);\n\n\t\t\tpolygon.length = boundingBox.vertices.length;\n\t\t\tboundingBox.computeWorldVertices(x, y, slot.bone, polygon);\n\t\t}\n\n\t\tif (updateAabb) this.aabbCompute();\n\t},\n aabbCompute: function ()\n {\n\t\tvar polygons = this.polygons;\n\t\tvar minX = Number.MAX_VALUE, minY = Number.MAX_VALUE, maxX = Number.MIN_VALUE, maxY = Number.MIN_VALUE;\n for (var i = 0, n = polygons.length; i < n; i++)\n {\n\t\t\tvar vertices = polygons[i];\n for (var ii = 0, nn = vertices.length; ii < nn; ii += 2)\n {\n\t\t\t\tvar x = vertices[ii];\n\t\t\t\tvar y = vertices[ii + 1];\n\t\t\t\tminX = Math.min(minX, x);\n\t\t\t\tminY = Math.min(minY, y);\n\t\t\t\tmaxX = Math.max(maxX, x);\n\t\t\t\tmaxY = Math.max(maxY, y);\n\t\t\t}\n\t\t}\n\t\tthis.minX = minX;\n\t\tthis.minY = minY;\n\t\tthis.maxX = maxX;\n\t\tthis.maxY = maxY;\n\t},\n\t/** Returns true if the axis aligned bounding box contains the point. */\n aabbContainsPoint: function (x, y)\n {\n\t\treturn x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n\t},\n\t/** Returns true if the axis aligned bounding box intersects the line segment. */\n aabbIntersectsSegment: function (x1, y1, x2, y2)\n {\n\t\tvar minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;\n\t\tif ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY))\n\t\t\treturn false;\n\t\tvar m = (y2 - y1) / (x2 - x1);\n\t\tvar y = m * (minX - x1) + y1;\n\t\tif (y > minY && y < maxY) return true;\n\t\ty = m * (maxX - x1) + y1;\n\t\tif (y > minY && y < maxY) return true;\n\t\tvar x = (minY - y1) / m + x1;\n\t\tif (x > minX && x < maxX) return true;\n\t\tx = (maxY - y1) / m + x1;\n\t\tif (x > minX && x < maxX) return true;\n\t\treturn false;\n\t},\n\t/** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */\n aabbIntersectsSkeleton: function (bounds)\n {\n\t\treturn this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\n\t},\n\t/** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more\n\t * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */\n containsPoint: function (x, y)\n {\n\t\tvar polygons = this.polygons;\n\t\tfor (var i = 0, n = polygons.length; i < n; i++)\n\t\t\tif (this.polygonContainsPoint(polygons[i], x, y)) return this.boundingBoxes[i];\n\t\treturn null;\n\t},\n\t/** Returns the first bounding box attachment that contains the line segment, or null. When doing many checks, it is usually\n\t * more efficient to only call this method if {@link #aabbIntersectsSegment(float, float, float, float)} returns true. */\n intersectsSegment: function (x1, y1, x2, y2)\n {\n\t\tvar polygons = this.polygons;\n\t\tfor (var i = 0, n = polygons.length; i < n; i++)\n\t\t\tif (polygons[i].intersectsSegment(x1, y1, x2, y2)) return this.boundingBoxes[i];\n\t\treturn null;\n\t},\n\t/** Returns true if the polygon contains the point. */\n polygonContainsPoint: function (polygon, x, y)\n {\n\t\tvar nn = polygon.length;\n\t\tvar prevIndex = nn - 2;\n\t\tvar inside = false;\n for (var ii = 0; ii < nn; ii += 2)\n {\n\t\t\tvar vertexY = polygon[ii + 1];\n\t\t\tvar prevY = polygon[prevIndex + 1];\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y))\n {\n\t\t\t\tvar vertexX = polygon[ii];\n\t\t\t\tif (vertexX + (y - vertexY) / (prevY - vertexY) * (polygon[prevIndex] - vertexX) < x) inside = !inside;\n\t\t\t}\n\t\t\tprevIndex = ii;\n\t\t}\n\t\treturn inside;\n\t},\n\t/** Returns true if the polygon contains the line segment. */\n polygonIntersectsSegment: function (polygon, x1, y1, x2, y2)\n {\n\t\tvar nn = polygon.length;\n\t\tvar width12 = x1 - x2, height12 = y1 - y2;\n\t\tvar det1 = x1 * y2 - y1 * x2;\n\t\tvar x3 = polygon[nn - 2], y3 = polygon[nn - 1];\n for (var ii = 0; ii < nn; ii += 2)\n {\n\t\t\tvar x4 = polygon[ii], y4 = polygon[ii + 1];\n\t\t\tvar det2 = x3 * y4 - y3 * x4;\n\t\t\tvar width34 = x3 - x4, height34 = y3 - y4;\n\t\t\tvar det3 = width12 * height34 - height12 * width34;\n\t\t\tvar x = (det1 * width34 - width12 * det2) / det3;\n if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1)))\n {\n\t\t\t\tvar y = (det1 * height34 - height12 * det2) / det3;\n\t\t\t\tif (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) return true;\n\t\t\t}\n\t\t\tx3 = x4;\n\t\t\ty3 = y4;\n\t\t}\n\t\treturn false;\n\t},\n getPolygon: function (attachment)\n {\n\t\tvar index = this.boundingBoxes.indexOf(attachment);\n\t\treturn index == -1 ? null : this.polygons[index];\n\t},\n getWidth: function ()\n {\n\t\treturn this.maxX - this.minX;\n\t},\n getHeight: function ()\n {\n\t\treturn this.maxY - this.minY;\n\t}\n};\n", "/**\n * @file Main export of the PIXI spine library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.spine\n */\nmodule.exports = {\n Spine: require('./Spine'),\n SpineRuntime: require('./SpineRuntime')\n};\n", "var core = require('../core');\n\n/**\n * A BitmapText object will create a line or multiple lines of text using bitmap font. To\n * split a line you can use '\\n', '\\r' or '\\r\\n' in your string. You can generate the fnt files using:\n *\n * A BitmapText can only be created when the font is loaded\n *\n * ```js\n * // in this case the font is in a file called 'desyrel.fnt'\n * var bitmapText = new PIXI.BitmapText(\"text using a fancy font!\", {font: \"35px Desyrel\", align: \"right\"});\n * ```\n *\n *\n * http://www.angelcode.com/products/bmfont/ for windows or\n * http://www.bmglyph.com/ for mac.\n *\n * @class\n * @extends Container\n * @memberof PIXI.text\n * @param text {string} The copy that you would like the text to display\n * @param style {object} The style parameters\n * @param style.font {string|object} The font descriptor for the object, can be passed as a string of form\n * \"24px FontName\" or \"FontName\" or as an object with explicit name/size properties.\n * @param [style.font.size] {number} The size of the font in pixels, e.g. 24\n * @param [style.font.name] {string} The bitmap font id\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n */\nfunction BitmapText(text, style)\n{\n core.Container.call(this);\n\n /**\n * The width of the overall text, different from fontSize,\n * which is defined in the style object\n *\n * @member {number}\n * @readOnly\n */\n this.textWidth = 0;\n\n /**\n * The height of the overall text, different from fontSize,\n * which is defined in the style object\n *\n * @member {number}\n * @readOnly\n */\n this.textHeight = 0;\n\n /**\n * Private tracker for the letter sprite pool.\n *\n * @member {Sprite[]}\n * @private\n */\n this._glyphs = [];\n\n /**\n * Private tracker for the current style.\n *\n * @member {object}\n * @private\n */\n this._style = {\n tint: style.tint,\n align: style.align,\n fontName: null,\n fontSize: 0\n };\n\n /**\n * Private tracker for the current font.\n *\n * @member {object}\n * @private\n */\n this.font = style.font; // run font setter\n\n /**\n * Private tracker for the current text.\n *\n * @member {string}\n * @private\n */\n this._text = text;\n\n /**\n * The max width of this bitmap text in pixels. If the text provided is longer than the value provided, line breaks will be automatically inserted in the last whitespace.\n * Disable by setting value to 0\n *\n * @member {number}\n */\n this.maxWidth = 0;\n\n /**\n * The dirty state of this object.\n *\n * @member {boolean}\n */\n this.dirty = false;\n\n this.updateText();\n}\n\n// constructor\nBitmapText.prototype = Object.create(core.Container.prototype);\nBitmapText.prototype.constructor = BitmapText;\nmodule.exports = BitmapText;\n\nObject.defineProperties(BitmapText.prototype, {\n /**\n * The tint of the BitmapText object\n *\n * @member {number}\n * @memberof BitmapText#\n */\n tint: {\n get: function ()\n {\n return this._style.tint;\n },\n set: function (value)\n {\n this._style.tint = (typeof value === 'number' && value >= 0) ? value : 0xFFFFFF;\n\n this.dirty = true;\n }\n },\n\n /**\n * The alignment of the BitmapText object\n *\n * @member {string}\n * @default 'left'\n * @memberof BitmapText#\n */\n align: {\n get: function ()\n {\n return this._style.align;\n },\n set: function (value)\n {\n this._style.align = value;\n\n this.dirty = true;\n }\n },\n\n /**\n * The font descriptor of the BitmapText object\n *\n * @member {Font}\n * @memberof BitmapText#\n */\n font: {\n get: function ()\n {\n return this._style.font;\n },\n set: function (value)\n {\n if (typeof value === 'string') {\n value = value.split(' ');\n\n this._style.fontName = value.slice(1).join(' ');\n this._style.fontSize = value.length >= 2 ? parseInt(value[0], 10) : BitmapText.fonts[this.fontName].size;\n }\n else {\n this._style.fontName = value.name;\n this._style.fontSize = typeof value.size === 'number' ? value.size : parseInt(value.size, 10);\n }\n\n this.dirty = true;\n }\n },\n\n /**\n * The text of the BitmapText object\n *\n * @member {string}\n * @memberof BitmapText#\n */\n text: {\n get: function ()\n {\n return this._text;\n },\n set: function (value)\n {\n this._text = value;\n\n this.dirty = true;\n }\n }\n});\n\n/**\n * Renders text and updates it when needed\n *\n * @private\n */\nBitmapText.prototype.updateText = function ()\n{\n var data = BitmapText.fonts[this._style.fontName];\n var pos = new core.math.Point();\n var prevCharCode = null;\n var chars = [];\n var lastLineWidth = 0;\n var maxLineWidth = 0;\n var lineWidths = [];\n var line = 0;\n var scale = this._style.fontSize / data.size;\n var lastSpace = -1;\n\n for (var i = 0; i < this.text.length; i++)\n {\n var charCode = this.text.charCodeAt(i);\n lastSpace = /(\\s)/.test(this.text.charAt(i)) ? i : lastSpace;\n\n if (/(?:\\r\\n|\\r|\\n)/.test(this.text.charAt(i)))\n {\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n line++;\n\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n continue;\n }\n\n if (lastSpace !== -1 && this.maxWidth > 0 && pos.x * scale > this.maxWidth)\n {\n chars.splice(lastSpace, i - lastSpace);\n i = lastSpace;\n lastSpace = -1;\n\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n line++;\n\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n continue;\n }\n\n var charData = data.chars[charCode];\n\n if (!charData)\n {\n continue;\n }\n\n if (prevCharCode && charData.kerning[prevCharCode])\n {\n pos.x += charData.kerning[prevCharCode];\n }\n\n chars.push({texture:charData.texture, line: line, charCode: charCode, position: new core.math.Point(pos.x + charData.xOffset, pos.y + charData.yOffset)});\n lastLineWidth = pos.x + (charData.texture.width + charData.xOffset);\n pos.x += charData.xAdvance;\n\n prevCharCode = charCode;\n }\n\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n\n var lineAlignOffsets = [];\n\n for (i = 0; i <= line; i++)\n {\n var alignOffset = 0;\n\n if (this._style.align === 'right')\n {\n alignOffset = maxLineWidth - lineWidths[i];\n }\n else if (this._style.align === 'center')\n {\n alignOffset = (maxLineWidth - lineWidths[i]) / 2;\n }\n\n lineAlignOffsets.push(alignOffset);\n }\n\n var lenChars = chars.length;\n var tint = this.tint;\n\n for (i = 0; i < lenChars; i++)\n {\n var c = this._glyphs[i]; // get the next glyph sprite\n\n if (c)\n {\n c.texture = chars[i].texture;\n }\n else\n {\n c = new core.Sprite(chars[i].texture);\n this._glyphs.push(c);\n }\n\n c.position.x = (chars[i].position.x + lineAlignOffsets[chars[i].line]) * scale;\n c.position.y = chars[i].position.y * scale;\n c.scale.x = c.scale.y = scale;\n c.tint = tint;\n\n if (!c.parent)\n {\n this.addChild(c);\n }\n }\n\n // remove unnecessary children.\n for (i = lenChars; i < this._glyphs.length; ++i)\n {\n this.removeChild(this._glyphs[i]);\n }\n\n this.textWidth = maxLineWidth * scale;\n this.textHeight = (pos.y + data.lineHeight) * scale;\n};\n\n/**\n * Updates the transform of this object\n *\n * @private\n */\nBitmapText.prototype.updateTransform = function ()\n{\n if (this.dirty)\n {\n this.updateText();\n this.dirty = false;\n }\n\n this.containerUpdateTransform();\n};\n\nBitmapText.fonts = {};\n", - "var core = require('../core');\n\n/**\n * A Text Object will create a line or multiple lines of text. To split a line you can use '\\n' in your text string,\n * or add a wordWrap property set to true and and wordWrapWidth property with a value in the style object.\n *\n * A Text can be created directly from a string and a style object\n *\n * ```js\n * var text = new PIXI.Text('This is a pixi text',{font : '24px Arial', fill : 0xff1010, align : 'center'});\n * ```\n *\n * @class\n * @extends Sprite\n * @memberof PIXI.text\n * @param text {string} The copy that you would like the text to display\n * @param [style] {object} The style parameters\n * @param [style.font] {string} default 'bold 20px Arial' The style and size of the font\n * @param [style.fill='black'] {String|Number} A canvas fillstyle that will be used on the text e.g 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke] {String|Number} A canvas fillstyle that will be used on the text stroke e.g 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap, it needs wordWrap to be set to true\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/4] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n */\nfunction Text(text, style, resolution)\n{\n /**\n * The canvas element that everything is drawn to\n *\n * @member {HTMLCanvasElement}\n */\n this.canvas = document.createElement('canvas');\n\n /**\n * The canvas 2d context that everything is drawn with\n * @member {HTMLCanvasElement}\n */\n this.context = this.canvas.getContext('2d');\n\n /**\n * The resolution of the canvas.\n * @member {number}\n */\n this.resolution = resolution || core.RESOLUTION;\n\n /**\n * Private tracker for the current text.\n *\n * @member {string}\n * @private\n */\n this._text = null;\n\n /**\n * Private tracker for the current style.\n *\n * @member {object}\n * @private\n */\n this._style = null;\n\n var texture = core.Texture.fromCanvas(this.canvas);\n texture.trim = new core.math.Rectangle();\n core.Sprite.call(this, texture);\n\n\n this.text = text;\n this.style = style;\n}\n\n// constructor\nText.prototype = Object.create(core.Sprite.prototype);\nText.prototype.constructor = Text;\nmodule.exports = Text;\n\nText.fontPropertiesCache = {};\nText.fontPropertiesCanvas = document.createElement('canvas');\nText.fontPropertiesContext = Text.fontPropertiesCanvas.getContext('2d');\n\nObject.defineProperties(Text.prototype, {\n /**\n * The width of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n width: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.x * this._texture._frame.width;\n },\n set: function (value)\n {\n this.scale.x = value / this._texture._frame.width;\n this._width = value;\n }\n },\n\n /**\n * The height of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n height: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.y * this._texture._frame.height;\n },\n set: function (value)\n {\n this.scale.y = value / this._texture._frame.height;\n this._height = value;\n }\n },\n\n /**\n * Set the style of the text\n *\n * @param [style] {object} The style parameters\n * @param [style.font='bold 20pt Arial'] {string} The style and size of the font\n * @param [style.fill='black'] {object} A canvas fillstyle that will be used on the text eg 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke='black'] {string} A canvas fillstyle that will be used on the text stroke eg 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/6] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n * @memberof Text#\n */\n style: {\n get: function ()\n {\n return this._style;\n },\n set: function (style)\n {\n style = style || {};\n style.font = style.font || 'bold 20pt Arial';\n style.fill = style.fill || 'black';\n style.align = style.align || 'left';\n style.stroke = style.stroke || 'black'; //provide a default, see: https://github.com/GoodBoyDigital/pixi.js/issues/136\n style.strokeThickness = style.strokeThickness || 0;\n style.wordWrap = style.wordWrap || false;\n style.wordWrapWidth = style.wordWrapWidth || 100;\n\n style.dropShadow = style.dropShadow || false;\n style.dropShadowColor = style.dropShadowColor || '#000000';\n style.dropShadowAngle = style.dropShadowAngle || Math.PI / 6;\n style.dropShadowDistance = style.dropShadowDistance || 5;\n\n style.padding = style.padding || 0;\n\n this._style = style;\n this.dirty = true;\n }\n },\n\n /**\n * Set the copy for the text object. To split a line you can use '\\n'.\n *\n * @param text {string} The copy that you would like the text to display\n * @memberof Text#\n */\n text: {\n get: function()\n {\n return this._text;\n },\n set: function (text){\n text = text.toString() || ' ';\n if (this._text === text)\n {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n }\n});\n\n/**\n * Renders text and updates it when needed\n *\n * @private\n */\nText.prototype.updateText = function ()\n{\n var style = this._style;\n this.context.font = style.font;\n\n // word wrap\n // preserve original text\n var outputText = style.wordWrap ? this.wordWrap(this._text) : this._text;\n\n // split text into lines\n var lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n\n // calculate text width\n var lineWidths = new Array(lines.length);\n var maxLineWidth = 0;\n var fontProperties = this.determineFontProperties(style.font);\n for (var i = 0; i < lines.length; i++)\n {\n var lineWidth = this.context.measureText(lines[i]).width;\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n\n var width = maxLineWidth + style.strokeThickness;\n if (style.dropShadow)\n {\n width += style.dropShadowDistance;\n }\n\n this.canvas.width = ( width + this.context.lineWidth ) * this.resolution;\n\n // calculate text height\n var lineHeight = this.style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n\n var height = lineHeight * lines.length;\n if (style.dropShadow)\n {\n height += style.dropShadowDistance;\n }\n\n this.canvas.height = ( height + this._style.padding * 2 ) * this.resolution;\n\n this.context.scale( this.resolution, this.resolution);\n\n if (navigator.isCocoonJS)\n {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n }\n\n //this.context.fillStyle=\"#FF0000\";\n //this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n this.context.font = style.font;\n this.context.strokeStyle = style.stroke;\n this.context.lineWidth = style.strokeThickness;\n this.context.textBaseline = 'alphabetic';\n //this.context.lineJoin = 'round';\n\n var linePositionX;\n var linePositionY;\n\n if (style.dropShadow)\n {\n this.context.fillStyle = style.dropShadowColor;\n\n var xShadowOffset = Math.cos(style.dropShadowAngle) * style.dropShadowDistance;\n var yShadowOffset = Math.sin(style.dropShadowAngle) * style.dropShadowDistance;\n\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX + xShadowOffset, linePositionY + yShadowOffset + this._style.padding);\n }\n }\n }\n\n //set canvas text styles\n this.context.fillStyle = style.fill;\n\n //draw lines line by line\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.stroke && style.strokeThickness)\n {\n this.context.strokeText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n }\n\n this.updateTexture();\n};\n\n/**\n * Updates texture size based on canvas size\n *\n * @private\n */\nText.prototype.updateTexture = function ()\n{\n var texture = this._texture;\n\n texture.baseTexture.hasLoaded = true;\n texture.baseTexture.resolution = this.resolution;\n\n texture.baseTexture.width = this.canvas.width / this.resolution;\n texture.baseTexture.height = this.canvas.height / this.resolution;\n texture.crop.width = texture._frame.width = this.canvas.width / this.resolution;\n texture.crop.height = texture._frame.height = this.canvas.height / this.resolution;\n\n texture.trim.x = 0;\n texture.trim.y = -this._style.padding;\n\n texture.trim.width = texture._frame.width;\n texture.trim.height = texture._frame.height - this._style.padding*2;\n\n this._width = this.canvas.width / this.resolution;\n this._height = this.canvas.height / this.resolution;\n\n texture.update();\n\n this.dirty = false;\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer}\n */\nText.prototype.renderWebGL = function (renderer)\n{\n if (this.dirty)\n {\n this.resolution = renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype.renderWebGL.call(this, renderer);\n};\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer}\n */\nText.prototype._renderCanvas = function (renderer)\n{\n if (this.dirty)\n {\n this.resolution = renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype._renderCanvas.call(this, renderer);\n};\n\n/**\n * Calculates the ascent, descent and fontSize of a given fontStyle\n *\n * @param fontStyle {object}\n * @private\n */\nText.prototype.determineFontProperties = function (fontStyle)\n{\n var properties = Text.fontPropertiesCache[fontStyle];\n\n if (!properties)\n {\n properties = {};\n\n var canvas = Text.fontPropertiesCanvas;\n var context = Text.fontPropertiesContext;\n\n context.font = fontStyle;\n\n var width = Math.ceil(context.measureText('|MÉq').width);\n var baseline = Math.ceil(context.measureText('M').width);\n var height = 2 * baseline;\n\n baseline = baseline * 1.4 | 0;\n\n canvas.width = width;\n canvas.height = height;\n\n context.fillStyle = '#f00';\n context.fillRect(0, 0, width, height);\n\n context.font = fontStyle;\n\n context.textBaseline = 'alphabetic';\n context.fillStyle = '#000';\n context.fillText('|MÉq', 0, baseline);\n\n var imagedata = context.getImageData(0, 0, width, height).data;\n var pixels = imagedata.length;\n var line = width * 4;\n\n var i, j;\n\n var idx = 0;\n var stop = false;\n\n // ascent. scan from top to bottom until we find a non red pixel\n for (i = 0; i < baseline; i++)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx += line;\n }\n else\n {\n break;\n }\n }\n\n properties.ascent = baseline - i;\n\n idx = pixels - line;\n stop = false;\n\n // descent. scan from bottom to top until we find a non red pixel\n for (i = height; i > baseline; i--)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx -= line;\n }\n else\n {\n break;\n }\n }\n\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n\n Text.fontPropertiesCache[fontStyle] = properties;\n }\n\n return properties;\n};\n\n/**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n *\n * @param text {string}\n * @private\n */\nText.prototype.wordWrap = function (text)\n{\n // Greedy wrapping algorithm that will wrap words as the line grows longer\n // than its horizontal bounds.\n var result = '';\n var lines = text.split('\\n');\n var wordWrapWidth = this._style.wordWrapWidth;\n for (var i = 0; i < lines.length; i++)\n {\n var spaceLeft = wordWrapWidth;\n var words = lines[i].split(' ');\n for (var j = 0; j < words.length; j++)\n {\n var wordWidth = this.context.measureText(words[j]).width;\n var wordWidthWithSpace = wordWidth + this.context.measureText(' ').width;\n if (j === 0 || wordWidthWithSpace > spaceLeft)\n {\n // Skip printing the newline if it's the first word of the line that is\n // greater than the word wrap width.\n if (j > 0)\n {\n result += '\\n';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth;\n }\n else\n {\n spaceLeft -= wordWidthWithSpace;\n result += ' ' + words[j];\n }\n }\n\n if (i < lines.length-1)\n {\n result += '\\n';\n }\n }\n return result;\n};\n\n/**\n * Returns the bounds of the Text as a rectangle. The bounds calculation takes the worldTransform into account.\n *\n * @param matrix {Matrix} the transformation matrix of the Text\n * @return {Rectangle} the framing rectangle\n */\nText.prototype.getBounds = function (matrix)\n{\n if (this.dirty)\n {\n this.updateText();\n }\n\n return core.Sprite.prototype.getBounds.call(this, matrix);\n};\n\n/**\n * Destroys this text object.\n *\n * @param destroyBaseTexture {boolean} whether to destroy the base texture as well\n */\nText.prototype.destroy = function (destroyBaseTexture)\n{\n // make sure to reset the the context and canvas.. dont want this hanging around in memory!\n this.context = null;\n this.canvas = null;\n\n this._texture.destroy(destroyBaseTexture === undefined ? true : destroyBaseTexture);\n};\n", + "var core = require('../core');\n\n/**\n * A Text Object will create a line or multiple lines of text. To split a line you can use '\\n' in your text string,\n * or add a wordWrap property set to true and and wordWrapWidth property with a value in the style object.\n *\n * A Text can be created directly from a string and a style object\n *\n * ```js\n * var text = new PIXI.Text('This is a pixi text',{font : '24px Arial', fill : 0xff1010, align : 'center'});\n * ```\n *\n * @class\n * @extends Sprite\n * @memberof PIXI.text\n * @param text {string} The copy that you would like the text to display\n * @param [style] {object} The style parameters\n * @param [style.font] {string} default 'bold 20px Arial' The style and size of the font\n * @param [style.fill='black'] {String|Number} A canvas fillstyle that will be used on the text e.g 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke] {String|Number} A canvas fillstyle that will be used on the text stroke e.g 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap, it needs wordWrap to be set to true\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/4] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n */\nfunction Text(text, style, resolution)\n{\n /**\n * The canvas element that everything is drawn to\n *\n * @member {HTMLCanvasElement}\n */\n this.canvas = document.createElement('canvas');\n\n /**\n * The canvas 2d context that everything is drawn with\n * @member {HTMLCanvasElement}\n */\n this.context = this.canvas.getContext('2d');\n\n /**\n * The resolution of the canvas.\n * @member {number}\n */\n this.resolution = resolution || core.RESOLUTION;\n\n /**\n * Private tracker for the current text.\n *\n * @member {string}\n * @private\n */\n this._text = null;\n\n /**\n * Private tracker for the current style.\n *\n * @member {object}\n * @private\n */\n this._style = null;\n\n var texture = core.Texture.fromCanvas(this.canvas);\n texture.trim = new core.math.Rectangle();\n core.Sprite.call(this, texture);\n\n\n this.text = text;\n this.style = style;\n}\n\n// constructor\nText.prototype = Object.create(core.Sprite.prototype);\nText.prototype.constructor = Text;\nmodule.exports = Text;\n\nText.fontPropertiesCache = {};\nText.fontPropertiesCanvas = document.createElement('canvas');\nText.fontPropertiesContext = Text.fontPropertiesCanvas.getContext('2d');\n\nObject.defineProperties(Text.prototype, {\n /**\n * The width of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n width: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.x * this._texture._frame.width;\n },\n set: function (value)\n {\n this.scale.x = value / this._texture._frame.width;\n this._width = value;\n }\n },\n\n /**\n * The height of the Text, setting this will actually modify the scale to achieve the value set\n *\n * @member {number}\n * @memberof Text#\n */\n height: {\n get: function ()\n {\n if (this.dirty)\n {\n this.updateText();\n }\n\n return this.scale.y * this._texture._frame.height;\n },\n set: function (value)\n {\n this.scale.y = value / this._texture._frame.height;\n this._height = value;\n }\n },\n\n /**\n * Set the style of the text\n *\n * @param [style] {object} The style parameters\n * @param [style.font='bold 20pt Arial'] {string} The style and size of the font\n * @param [style.fill='black'] {object} A canvas fillstyle that will be used on the text eg 'red', '#00FF00'\n * @param [style.align='left'] {string} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text\n * @param [style.stroke='black'] {string} A canvas fillstyle that will be used on the text stroke eg 'blue', '#FCFF00'\n * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke)\n * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used\n * @param [style.wordWrapWidth=100] {number} The width at which text will wrap\n * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses\n * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text\n * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00'\n * @param [style.dropShadowAngle=Math.PI/6] {number} Set a angle of the drop shadow\n * @param [style.dropShadowDistance=5] {number} Set a distance of the drop shadow\n * @param [style.padding=0] {number} Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n * @memberof Text#\n */\n style: {\n get: function ()\n {\n return this._style;\n },\n set: function (style)\n {\n style = style || {};\n style.font = style.font || 'bold 20pt Arial';\n style.fill = style.fill || 'black';\n style.align = style.align || 'left';\n style.stroke = style.stroke || 'black'; //provide a default, see: https://github.com/GoodBoyDigital/pixi.js/issues/136\n style.strokeThickness = style.strokeThickness || 0;\n style.wordWrap = style.wordWrap || false;\n style.wordWrapWidth = style.wordWrapWidth || 100;\n\n style.dropShadow = style.dropShadow || false;\n style.dropShadowColor = style.dropShadowColor || '#000000';\n style.dropShadowAngle = style.dropShadowAngle || Math.PI / 6;\n style.dropShadowDistance = style.dropShadowDistance || 5;\n\n style.padding = style.padding || 0;\n\n this._style = style;\n this.dirty = true;\n }\n },\n\n /**\n * Set the copy for the text object. To split a line you can use '\\n'.\n *\n * @param text {string} The copy that you would like the text to display\n * @memberof Text#\n */\n text: {\n get: function()\n {\n return this._text;\n },\n set: function (text){\n text = text.toString() || ' ';\n if (this._text === text)\n {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n }\n});\n\n/**\n * Renders text and updates it when needed\n *\n * @private\n */\nText.prototype.updateText = function ()\n{\n var style = this._style;\n this.context.font = style.font;\n\n // word wrap\n // preserve original text\n var outputText = style.wordWrap ? this.wordWrap(this._text) : this._text;\n\n // split text into lines\n var lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n\n // calculate text width\n var lineWidths = new Array(lines.length);\n var maxLineWidth = 0;\n var fontProperties = this.determineFontProperties(style.font);\n for (var i = 0; i < lines.length; i++)\n {\n var lineWidth = this.context.measureText(lines[i]).width;\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n\n var width = maxLineWidth + style.strokeThickness;\n if (style.dropShadow)\n {\n width += style.dropShadowDistance;\n }\n\n this.canvas.width = ( width + this.context.lineWidth ) * this.resolution;\n\n // calculate text height\n var lineHeight = this.style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n\n var height = lineHeight * lines.length;\n if (style.dropShadow)\n {\n height += style.dropShadowDistance;\n }\n\n this.canvas.height = ( height + this._style.padding * 2 ) * this.resolution;\n\n this.context.scale( this.resolution, this.resolution);\n\n if (navigator.isCocoonJS)\n {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n }\n\n //this.context.fillStyle=\"#FF0000\";\n //this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n this.context.font = style.font;\n this.context.strokeStyle = style.stroke;\n this.context.lineWidth = style.strokeThickness;\n this.context.textBaseline = 'alphabetic';\n //this.context.lineJoin = 'round';\n\n var linePositionX;\n var linePositionY;\n\n if (style.dropShadow)\n {\n this.context.fillStyle = style.dropShadowColor;\n\n var xShadowOffset = Math.cos(style.dropShadowAngle) * style.dropShadowDistance;\n var yShadowOffset = Math.sin(style.dropShadowAngle) * style.dropShadowDistance;\n\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX + xShadowOffset, linePositionY + yShadowOffset + this._style.padding);\n }\n }\n }\n\n //set canvas text styles\n this.context.fillStyle = style.fill;\n\n //draw lines line by line\n for (i = 0; i < lines.length; i++)\n {\n linePositionX = style.strokeThickness / 2;\n linePositionY = (style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style.stroke && style.strokeThickness)\n {\n this.context.strokeText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n\n if (style.fill)\n {\n this.context.fillText(lines[i], linePositionX, linePositionY + this._style.padding);\n }\n }\n\n this.updateTexture();\n};\n\n/**\n * Updates texture size based on canvas size\n *\n * @private\n */\nText.prototype.updateTexture = function ()\n{\n var texture = this._texture;\n\n texture.baseTexture.hasLoaded = true;\n texture.baseTexture.resolution = this.resolution;\n\n texture.baseTexture.width = this.canvas.width / this.resolution;\n texture.baseTexture.height = this.canvas.height / this.resolution;\n texture.crop.width = texture._frame.width = this.canvas.width / this.resolution;\n texture.crop.height = texture._frame.height = this.canvas.height / this.resolution;\n\n texture.trim.x = 0;\n texture.trim.y = -this._style.padding;\n\n texture.trim.width = texture._frame.width;\n texture.trim.height = texture._frame.height - this._style.padding*2;\n\n this._width = this.canvas.width / this.resolution;\n this._height = this.canvas.height / this.resolution;\n\n texture.update();\n\n this.dirty = false;\n};\n\n/**\n * Renders the object using the WebGL renderer\n *\n * @param renderer {WebGLRenderer}\n */\nText.prototype.renderWebGL = function (renderer)\n{\n if (this.dirty)\n {\n //this.resolution = 1//renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype.renderWebGL.call(this, renderer);\n};\n\n/**\n * Renders the object using the Canvas renderer\n *\n * @param renderer {CanvasRenderer}\n */\nText.prototype._renderCanvas = function (renderer)\n{\n if (this.dirty)\n {\n // this.resolution = 1//renderer.resolution;\n\n this.updateText();\n }\n\n core.Sprite.prototype._renderCanvas.call(this, renderer);\n};\n\n/**\n * Calculates the ascent, descent and fontSize of a given fontStyle\n *\n * @param fontStyle {object}\n * @private\n */\nText.prototype.determineFontProperties = function (fontStyle)\n{\n var properties = Text.fontPropertiesCache[fontStyle];\n\n if (!properties)\n {\n properties = {};\n\n var canvas = Text.fontPropertiesCanvas;\n var context = Text.fontPropertiesContext;\n\n context.font = fontStyle;\n\n var width = Math.ceil(context.measureText('|MÉq').width);\n var baseline = Math.ceil(context.measureText('M').width);\n var height = 2 * baseline;\n\n baseline = baseline * 1.4 | 0;\n\n canvas.width = width;\n canvas.height = height;\n\n context.fillStyle = '#f00';\n context.fillRect(0, 0, width, height);\n\n context.font = fontStyle;\n\n context.textBaseline = 'alphabetic';\n context.fillStyle = '#000';\n context.fillText('|MÉq', 0, baseline);\n\n var imagedata = context.getImageData(0, 0, width, height).data;\n var pixels = imagedata.length;\n var line = width * 4;\n\n var i, j;\n\n var idx = 0;\n var stop = false;\n\n // ascent. scan from top to bottom until we find a non red pixel\n for (i = 0; i < baseline; i++)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx += line;\n }\n else\n {\n break;\n }\n }\n\n properties.ascent = baseline - i;\n\n idx = pixels - line;\n stop = false;\n\n // descent. scan from bottom to top until we find a non red pixel\n for (i = height; i > baseline; i--)\n {\n for (j = 0; j < line; j += 4)\n {\n if (imagedata[idx + j] !== 255)\n {\n stop = true;\n break;\n }\n }\n if (!stop)\n {\n idx -= line;\n }\n else\n {\n break;\n }\n }\n\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n\n Text.fontPropertiesCache[fontStyle] = properties;\n }\n\n return properties;\n};\n\n/**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n *\n * @param text {string}\n * @private\n */\nText.prototype.wordWrap = function (text)\n{\n // Greedy wrapping algorithm that will wrap words as the line grows longer\n // than its horizontal bounds.\n var result = '';\n var lines = text.split('\\n');\n var wordWrapWidth = this._style.wordWrapWidth;\n for (var i = 0; i < lines.length; i++)\n {\n var spaceLeft = wordWrapWidth;\n var words = lines[i].split(' ');\n for (var j = 0; j < words.length; j++)\n {\n var wordWidth = this.context.measureText(words[j]).width;\n var wordWidthWithSpace = wordWidth + this.context.measureText(' ').width;\n if (j === 0 || wordWidthWithSpace > spaceLeft)\n {\n // Skip printing the newline if it's the first word of the line that is\n // greater than the word wrap width.\n if (j > 0)\n {\n result += '\\n';\n }\n result += words[j];\n spaceLeft = wordWrapWidth - wordWidth;\n }\n else\n {\n spaceLeft -= wordWidthWithSpace;\n result += ' ' + words[j];\n }\n }\n\n if (i < lines.length-1)\n {\n result += '\\n';\n }\n }\n return result;\n};\n\n/**\n * Returns the bounds of the Text as a rectangle. The bounds calculation takes the worldTransform into account.\n *\n * @param matrix {Matrix} the transformation matrix of the Text\n * @return {Rectangle} the framing rectangle\n */\nText.prototype.getBounds = function (matrix)\n{\n if (this.dirty)\n {\n this.updateText();\n }\n\n return core.Sprite.prototype.getBounds.call(this, matrix);\n};\n\n/**\n * Destroys this text object.\n *\n * @param destroyBaseTexture {boolean} whether to destroy the base texture as well\n */\nText.prototype.destroy = function (destroyBaseTexture)\n{\n // make sure to reset the the context and canvas.. dont want this hanging around in memory!\n this.context = null;\n this.canvas = null;\n\n this._texture.destroy(destroyBaseTexture === undefined ? true : destroyBaseTexture);\n};\n", "/**\n * @file Main export of the PIXI text library\n * @author Mat Groves \n * @copyright 2013-2015 GoodBoyDigital\n * @license {@link https://github.com/GoodBoyDigital/pixi.js/blob/master/LICENSE|MIT License}\n */\n\n/**\n * @namespace PIXI.text\n */\nmodule.exports = {\n Text: require('./Text'),\n BitmapText: require('./BitmapText')\n};\n", "var core = require('./core');\n\nextendCore(require('./extras'));\nextendCore(require('./filters'));\nextendCore(require('./interaction'));\nextendCore(require('./loaders'));\nextendCore(require('./spine'));\nextendCore(require('./text'));\nextendCore(require('./deprecation'));\n\nfunction extendCore(obj)\n{\n for(var key in obj)\n {\n core[key] = obj[key];\n }\n}\n\nmodule.exports = core;\n" ] diff --git a/bin/pixi.min.js b/bin/pixi.min.js index c0e3097..9678809 100644 --- a/bin/pixi.min.js +++ b/bin/pixi.min.js @@ -1,9 +1,9 @@ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.PIXI=t()}}(function(){var t;return function e(t,r,i){function n(s,a){if(!r[s]){if(!t[s]){var h="function"==typeof require&&require;if(!a&&h)return h(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=r[s]={exports:{}};t[s][0].call(u.exports,function(e){var r=t[s][1][e];return n(r?r:e)},u,u.exports,e,t,r,i)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s=t.length&&r())}if(r=r||function(){},!t.length)return r();var o=0;l(t,function(t){e(t,i(n))})},s.forEach=s.each,s.eachSeries=function(t,e,r){if(r=r||function(){},!t.length)return r();var i=0,n=function(){e(t[i],function(e){e?(r(e),r=function(){}):(i+=1,i>=t.length?r():n())})};n()},s.forEachSeries=s.eachSeries,s.eachLimit=function(t,e,r,i){var n=p(e);n.apply(null,[t,r,i])},s.forEachLimit=s.eachLimit;var p=function(t){return function(e,r,i){if(i=i||function(){},!e.length||0>=t)return i();var n=0,o=0,s=0;!function a(){if(n>=e.length)return i();for(;t>s&&o=e.length?i():a())})}()}},f=function(t){return function(){var e=Array.prototype.slice.call(arguments);return t.apply(null,[s.each].concat(e))}},g=function(t,e){return function(){var r=Array.prototype.slice.call(arguments);return e.apply(null,[p(t)].concat(r))}},v=function(t){return function(){var e=Array.prototype.slice.call(arguments);return t.apply(null,[s.eachSeries].concat(e))}},m=function(t,e,r,i){if(e=u(e,function(t,e){return{index:e,value:t}}),i){var n=[];t(e,function(t,e){r(t.value,function(r,i){n[t.index]=i,e(r)})},function(t){i(t,n)})}else t(e,function(t,e){r(t.value,function(t){e(t)})})};s.map=f(m),s.mapSeries=v(m),s.mapLimit=function(t,e,r,i){return y(e)(t,r,i)};var y=function(t){return g(t,m)};s.reduce=function(t,e,r,i){s.eachSeries(t,function(t,i){r(e,t,function(t,r){e=r,i(t)})},function(t){i(t,e)})},s.inject=s.reduce,s.foldl=s.reduce,s.reduceRight=function(t,e,r,i){var n=u(t,function(t){return t}).reverse();s.reduce(n,e,r,i)},s.foldr=s.reduceRight;var x=function(t,e,r,i){var n=[];e=u(e,function(t,e){return{index:e,value:t}}),t(e,function(t,e){r(t.value,function(r){r&&n.push(t),e()})},function(){i(u(n.sort(function(t,e){return t.index-e.index}),function(t){return t.value}))})};s.filter=f(x),s.filterSeries=v(x),s.select=s.filter,s.selectSeries=s.filterSeries;var b=function(t,e,r,i){var n=[];e=u(e,function(t,e){return{index:e,value:t}}),t(e,function(t,e){r(t.value,function(r){r||n.push(t),e()})},function(){i(u(n.sort(function(t,e){return t.index-e.index}),function(t){return t.value}))})};s.reject=f(b),s.rejectSeries=v(b);var T=function(t,e,r,i){t(e,function(t,e){r(t,function(r){r?(i(t),i=function(){}):e()})},function(){i()})};s.detect=f(T),s.detectSeries=v(T),s.some=function(t,e,r){s.each(t,function(t,i){e(t,function(t){t&&(r(!0),r=function(){}),i()})},function(){r(!1)})},s.any=s.some,s.every=function(t,e,r){s.each(t,function(t,i){e(t,function(t){t||(r(!1),r=function(){}),i()})},function(){r(!0)})},s.all=s.every,s.sortBy=function(t,e,r){s.map(t,function(t,r){e(t,function(e,i){e?r(e):r(null,{value:t,criteria:i})})},function(t,e){if(t)return r(t);var i=function(t,e){var r=t.criteria,i=e.criteria;return i>r?-1:r>i?1:0};r(null,u(e.sort(i),function(t){return t.value}))})},s.auto=function(t,e){e=e||function(){};var r=d(t),i=r.length;if(!i)return e();var n={},o=[],a=function(t){o.unshift(t)},u=function(t){for(var e=0;ei;){var o=i+(n-i+1>>>1);r(e,t[o])>=0?i=o:n=o-1}return i}function n(t,e,n,o){return t.started||(t.started=!0),h(e)||(e=[e]),0==e.length?s.setImmediate(function(){t.drain&&t.drain()}):void l(e,function(e){var a={data:e,priority:n,callback:"function"==typeof o?o:null};t.tasks.splice(i(t.tasks,a,r)+1,0,a),t.saturated&&t.tasks.length===t.concurrency&&t.saturated(),s.setImmediate(t.process)})}var o=s.queue(t,e);return o.push=function(t,e,r){n(o,t,e,r)},delete o.unshift,o},s.cargo=function(t,e){var r=!1,i=[],n={tasks:i,payload:e,saturated:null,empty:null,drain:null,drained:!0,push:function(t,r){h(t)||(t=[t]),l(t,function(t){i.push({data:t,callback:"function"==typeof r?r:null}),n.drained=!1,n.saturated&&i.length===e&&n.saturated()}),s.setImmediate(n.process)},process:function o(){if(!r){if(0===i.length)return n.drain&&!n.drained&&n.drain(),void(n.drained=!0);var s="number"==typeof e?i.splice(0,e):i.splice(0,i.length),a=u(s,function(t){return t.data});n.empty&&n.empty(),r=!0,t(a,function(){r=!1;var t=arguments;l(s,function(e){e.callback&&e.callback.apply(null,t)}),o()})}},length:function(){return i.length},running:function(){return r}};return n};var w=function(t){return function(e){var r=Array.prototype.slice.call(arguments,1);e.apply(null,r.concat([function(e){var r=Array.prototype.slice.call(arguments,1);"undefined"!=typeof console&&(e?console.error&&console.error(e):console[t]&&l(r,function(e){console[t](e)}))}]))}};s.log=w("log"),s.dir=w("dir"),s.memoize=function(t,e){var r={},i={};e=e||function(t){return t};var n=function(){var n=Array.prototype.slice.call(arguments),o=n.pop(),a=e.apply(null,n);a in r?s.nextTick(function(){o.apply(null,r[a])}):a in i?i[a].push(o):(i[a]=[o],t.apply(null,n.concat([function(){r[a]=arguments;var t=i[a];delete i[a];for(var e=0,n=t.length;n>e;e++)t[e].apply(null,arguments)}])))};return n.memo=r,n.unmemoized=t,n},s.unmemoize=function(t){return function(){return(t.unmemoized||t).apply(null,arguments)}},s.times=function(t,e,r){for(var i=[],n=0;t>n;n++)i.push(n);return s.map(i,e,r)},s.timesSeries=function(t,e,r){for(var i=[],n=0;t>n;n++)i.push(n);return s.mapSeries(i,e,r)},s.seq=function(){var t=arguments;return function(){var e=this,r=Array.prototype.slice.call(arguments),i=r.pop();s.reduce(t,r,function(t,r,i){r.apply(e,t.concat([function(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);i(t,e)}]))},function(t,r){i.apply(e,[t].concat(r))})}},s.compose=function(){return s.seq.apply(null,Array.prototype.reverse.call(arguments))};var S=function(t,e){var r=function(){var r=this,i=Array.prototype.slice.call(arguments),n=i.pop();return t(e,function(t,e){t.apply(r,i.concat([e]))},n)};if(arguments.length>2){var i=Array.prototype.slice.call(arguments,2);return r.apply(this,i)}return r};s.applyEach=f(S),s.applyEachSeries=v(S),s.forever=function(t,e){function r(i){if(i){if(e)return e(i);throw i}t(r)}r()},"undefined"!=typeof r&&r.exports?r.exports=s:"undefined"!=typeof t&&t.amd?t([],function(){return s}):n.async=s}()}).call(this,e("_process"))},{_process:3}],2:[function(t,e,r){(function(t){function e(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];"."===n?t.splice(i,1):".."===n?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function i(t,e){if(t.filter)return t.filter(e);for(var r=[],i=0;i=-1&&!n;o--){var s=o>=0?arguments[o]:t.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(r=s+"/"+r,n="/"===s.charAt(0))}return r=e(i(r.split("/"),function(t){return!!t}),!n).join("/"),(n?"/":"")+r||"."},r.normalize=function(t){var n=r.isAbsolute(t),o="/"===s(t,-1);return t=e(i(t.split("/"),function(t){return!!t}),!n).join("/"),t||n||(t="."),t&&o&&(t+="/"),(n?"/":"")+t},r.isAbsolute=function(t){return"/"===t.charAt(0)},r.join=function(){var t=Array.prototype.slice.call(arguments,0);return r.normalize(i(t,function(t){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))},r.relative=function(t,e){function i(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=r.resolve(t).substr(1),e=r.resolve(e).substr(1);for(var n=i(t.split("/")),o=i(e.split("/")),s=Math.min(n.length,o.length),a=s,h=0;s>h;h++)if(n[h]!==o[h]){a=h;break}for(var l=[],h=a;he&&(e=t.length+e),t.substr(e,r)}}).call(this,t("_process"))},{_process:3}],3:[function(t,e){function r(){if(!s){s=!0;for(var t,e=o.length;e;){t=o,o=[];for(var r=-1;++rn;n++)t&&t.push(r._listeners[n]);return[r]}if("*"===f||"**"===f||r[f]){if("*"===f){for(a in r)"_listeners"!==a&&r.hasOwnProperty(a)&&(d=d.concat(o(t,e,r[a],i+1)));return d}if("**"===f){c=i+1===p||i+2===p&&"*"===g,c&&r._listeners&&(d=d.concat(o(t,e,r,p)));for(a in r)"_listeners"!==a&&r.hasOwnProperty(a)&&("*"===a||"**"===a?(r[a]._listeners&&!c&&(d=d.concat(o(t,e,r[a],p))),d=d.concat(o(t,e,r[a],i))):d=d.concat(a===g?o(t,e,r[a],i+2):o(t,e,r[a],i)));return d}d=d.concat(o(t,e,r[f],i+1))}if(h=r["*"],h&&o(t,e,h,i+1),l=r["**"])if(p>i){l._listeners&&o(t,e,l,p);for(a in l)"_listeners"!==a&&l.hasOwnProperty(a)&&(a===g?o(t,e,l[a],i+2):a===f?o(t,e,l[a],i+1):(u={},u[a]=l[a],o(t,e,{"**":u},i+1)))}else l._listeners?o(t,e,l,p):l["*"]&&l["*"]._listeners&&o(t,e,l["*"],p);return d}function s(t,e){t="string"==typeof t?t.split(this.delimiter):t.slice();for(var r=0,i=t.length;i>r+1;r++)if("**"===t[r]&&"**"===t[r+1])return;for(var n=this.listenerTree,o=t.shift();o;){if(n[o]||(n[o]={}),n=n[o],0===t.length){if(n._listeners){if("function"==typeof n._listeners)n._listeners=[n._listeners,e];else if(a(n._listeners)&&(n._listeners.push(e),!n._listeners.warned)){var s=h;"undefined"!=typeof this._events.maxListeners&&(s=this._events.maxListeners),s>0&&n._listeners.length>s&&(n._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",n._listeners.length),console.trace())}}else n._listeners=e;return!0}o=t.shift()}return!0}var a=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},h=10;n.prototype.delimiter=".",n.prototype.setMaxListeners=function(t){this._events||e.call(this),this._events.maxListeners=t,this._conf||(this._conf={}),this._conf.maxListeners=t},n.prototype.event="",n.prototype.once=function(t,e){return this.many(t,1,e),this},n.prototype.many=function(t,e,r){function i(){0===--e&&n.off(t,i),r.apply(this,arguments)}var n=this;if("function"!=typeof r)throw new Error("many only accepts instances of Function");return i._origin=r,this.on(t,i),n},n.prototype.emit=function(){this._events||e.call(this);var t=arguments[0];if("newListener"===t&&!this.newListener&&!this._events.newListener)return!1;if(this._all){for(var r=arguments.length,i=new Array(r-1),n=1;r>n;n++)i[n-1]=arguments[n];for(n=0,r=this._all.length;r>n;n++)this.event=t,this._all[n].apply(this,i)}if("error"===t&&!(this._all||this._events.error||this.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var s;if(this.wildcard){s=[];var a="string"==typeof t?t.split(this.delimiter):t.slice();o.call(this,s,a,this.listenerTree,0)}else s=this._events[t];if("function"==typeof s){if(this.event=t,1===arguments.length)s.call(this);else if(arguments.length>1)switch(arguments.length){case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:for(var r=arguments.length,i=new Array(r-1),n=1;r>n;n++)i[n-1]=arguments[n];s.apply(this,i)}return!0}if(s){for(var r=arguments.length,i=new Array(r-1),n=1;r>n;n++)i[n-1]=arguments[n];for(var h=s.slice(),n=0,r=h.length;r>n;n++)this.event=t,h[n].apply(this,i);return h.length>0||!!this._all}return!!this._all},n.prototype.on=function(t,r){if("function"==typeof t)return this.onAny(t),this;if("function"!=typeof r)throw new Error("on only accepts instances of Function");if(this._events||e.call(this),this.emit("newListener",t,r),this.wildcard)return s.call(this,t,r),this;if(this._events[t]){if("function"==typeof this._events[t])this._events[t]=[this._events[t],r];else if(a(this._events[t])&&(this._events[t].push(r),!this._events[t].warned)){var i=h;"undefined"!=typeof this._events.maxListeners&&(i=this._events.maxListeners),i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),console.trace())}}else this._events[t]=r;return this},n.prototype.onAny=function(t){if("function"!=typeof t)throw new Error("onAny only accepts instances of Function");return this._all||(this._all=[]),this._all.push(t),this},n.prototype.addListener=n.prototype.on,n.prototype.off=function(t,e){if("function"!=typeof e)throw new Error("removeListener only takes instances of Function");var r,i=[];if(this.wildcard){var n="string"==typeof t?t.split(this.delimiter):t.slice();i=o.call(this,null,n,this.listenerTree,0)}else{if(!this._events[t])return this;r=this._events[t],i.push({_listeners:r})}for(var s=0;su;u++)if(r[u]===e||r[u].listener&&r[u].listener===e||r[u]._origin&&r[u]._origin===e){l=u;break}if(0>l)continue;return this.wildcard?h._listeners.splice(l,1):this._events[t].splice(l,1),0===r.length&&(this.wildcard?delete h._listeners:delete this._events[t]),this}(r===e||r.listener&&r.listener===e||r._origin&&r._origin===e)&&(this.wildcard?delete h._listeners:delete this._events[t])}return this},n.prototype.offAny=function(t){var e,r=0,i=0;if(t&&this._all&&this._all.length>0){for(e=this._all,r=0,i=e.length;i>r;r++)if(t===e[r])return e.splice(r,1),this}else this._all=[];return this},n.prototype.removeListener=n.prototype.off,n.prototype.removeAllListeners=function(t){if(0===arguments.length)return!this._events||e.call(this),this;if(this.wildcard)for(var r="string"==typeof t?t.split(this.delimiter):t.slice(),i=o.call(this,null,r,this.listenerTree,0),n=0;n","Richard Davey "],main:"./src/index.js",homepage:"http://goodboydigital.com/",bugs:"https://github.com/GoodBoyDigital/pixi.js/issues",license:"MIT",repository:{type:"git",url:"https://github.com/GoodBoyDigital/pixi.js.git"},scripts:{test:"gulp test",docs:"./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json"},devDependencies:{brfs:"^1.2.0",browserify:"^8.0.2",chai:"^1.10.0",del:"^1.1.0",exorcist:"^0.1.6",gulp:"^3.8.10","gulp-cached":"^1.0.1","gulp-concat":"^2.5.2","gulp-debug":"^2.0.0","gulp-jsdoc":"^0.1.4","gulp-jshint":"^1.9.0","gulp-plumber":"^0.6.6","gulp-rename":"^1.2.0","gulp-uglify":"^1.0.2","gulp-util":"^3.0.1","ink-docstrap":"^0.5.2",jsdoc:"^3.3.0-alpha13","jshint-summary":"^0.4.0",karma:"^0.12.28","karma-firefox-launcher":"^0.1.0","karma-mocha":"^0.1.10","karma-spec-reporter":"^0.0.16",minimist:"^1.1.0",mocha:"^2.1.0","require-dir":"^0.1.0","run-sequence":"^1.0.2","vinyl-buffer":"^1.0.0","vinyl-source-stream":"^1.0.0",watchify:"^2.2.1"},dependencies:{async:"^0.9.0","resource-loader":"^1.2.0"},browserify:{transform:["brfs"]}} +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.PIXI=t()}}(function(){var t;return function e(t,r,i){function n(s,a){if(!r[s]){if(!t[s]){var h="function"==typeof require&&require;if(!a&&h)return h(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=r[s]={exports:{}};t[s][0].call(u.exports,function(e){var r=t[s][1][e];return n(r?r:e)},u,u.exports,e,t,r,i)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s=t.length&&r())}if(r=r||function(){},!t.length)return r();var o=0;l(t,function(t){e(t,i(n))})},s.forEach=s.each,s.eachSeries=function(t,e,r){if(r=r||function(){},!t.length)return r();var i=0,n=function(){e(t[i],function(e){e?(r(e),r=function(){}):(i+=1,i>=t.length?r():n())})};n()},s.forEachSeries=s.eachSeries,s.eachLimit=function(t,e,r,i){var n=p(e);n.apply(null,[t,r,i])},s.forEachLimit=s.eachLimit;var p=function(t){return function(e,r,i){if(i=i||function(){},!e.length||0>=t)return i();var n=0,o=0,s=0;!function a(){if(n>=e.length)return i();for(;t>s&&o=e.length?i():a())})}()}},f=function(t){return function(){var e=Array.prototype.slice.call(arguments);return t.apply(null,[s.each].concat(e))}},g=function(t,e){return function(){var r=Array.prototype.slice.call(arguments);return e.apply(null,[p(t)].concat(r))}},v=function(t){return function(){var e=Array.prototype.slice.call(arguments);return t.apply(null,[s.eachSeries].concat(e))}},m=function(t,e,r,i){if(e=u(e,function(t,e){return{index:e,value:t}}),i){var n=[];t(e,function(t,e){r(t.value,function(r,i){n[t.index]=i,e(r)})},function(t){i(t,n)})}else t(e,function(t,e){r(t.value,function(t){e(t)})})};s.map=f(m),s.mapSeries=v(m),s.mapLimit=function(t,e,r,i){return y(e)(t,r,i)};var y=function(t){return g(t,m)};s.reduce=function(t,e,r,i){s.eachSeries(t,function(t,i){r(e,t,function(t,r){e=r,i(t)})},function(t){i(t,e)})},s.inject=s.reduce,s.foldl=s.reduce,s.reduceRight=function(t,e,r,i){var n=u(t,function(t){return t}).reverse();s.reduce(n,e,r,i)},s.foldr=s.reduceRight;var x=function(t,e,r,i){var n=[];e=u(e,function(t,e){return{index:e,value:t}}),t(e,function(t,e){r(t.value,function(r){r&&n.push(t),e()})},function(){i(u(n.sort(function(t,e){return t.index-e.index}),function(t){return t.value}))})};s.filter=f(x),s.filterSeries=v(x),s.select=s.filter,s.selectSeries=s.filterSeries;var b=function(t,e,r,i){var n=[];e=u(e,function(t,e){return{index:e,value:t}}),t(e,function(t,e){r(t.value,function(r){r||n.push(t),e()})},function(){i(u(n.sort(function(t,e){return t.index-e.index}),function(t){return t.value}))})};s.reject=f(b),s.rejectSeries=v(b);var T=function(t,e,r,i){t(e,function(t,e){r(t,function(r){r?(i(t),i=function(){}):e()})},function(){i()})};s.detect=f(T),s.detectSeries=v(T),s.some=function(t,e,r){s.each(t,function(t,i){e(t,function(t){t&&(r(!0),r=function(){}),i()})},function(){r(!1)})},s.any=s.some,s.every=function(t,e,r){s.each(t,function(t,i){e(t,function(t){t||(r(!1),r=function(){}),i()})},function(){r(!0)})},s.all=s.every,s.sortBy=function(t,e,r){s.map(t,function(t,r){e(t,function(e,i){e?r(e):r(null,{value:t,criteria:i})})},function(t,e){if(t)return r(t);var i=function(t,e){var r=t.criteria,i=e.criteria;return i>r?-1:r>i?1:0};r(null,u(e.sort(i),function(t){return t.value}))})},s.auto=function(t,e){e=e||function(){};var r=d(t),i=r.length;if(!i)return e();var n={},o=[],a=function(t){o.unshift(t)},u=function(t){for(var e=0;ei;){var o=i+(n-i+1>>>1);r(e,t[o])>=0?i=o:n=o-1}return i}function n(t,e,n,o){return t.started||(t.started=!0),h(e)||(e=[e]),0==e.length?s.setImmediate(function(){t.drain&&t.drain()}):void l(e,function(e){var a={data:e,priority:n,callback:"function"==typeof o?o:null};t.tasks.splice(i(t.tasks,a,r)+1,0,a),t.saturated&&t.tasks.length===t.concurrency&&t.saturated(),s.setImmediate(t.process)})}var o=s.queue(t,e);return o.push=function(t,e,r){n(o,t,e,r)},delete o.unshift,o},s.cargo=function(t,e){var r=!1,i=[],n={tasks:i,payload:e,saturated:null,empty:null,drain:null,drained:!0,push:function(t,r){h(t)||(t=[t]),l(t,function(t){i.push({data:t,callback:"function"==typeof r?r:null}),n.drained=!1,n.saturated&&i.length===e&&n.saturated()}),s.setImmediate(n.process)},process:function o(){if(!r){if(0===i.length)return n.drain&&!n.drained&&n.drain(),void(n.drained=!0);var s="number"==typeof e?i.splice(0,e):i.splice(0,i.length),a=u(s,function(t){return t.data});n.empty&&n.empty(),r=!0,t(a,function(){r=!1;var t=arguments;l(s,function(e){e.callback&&e.callback.apply(null,t)}),o()})}},length:function(){return i.length},running:function(){return r}};return n};var w=function(t){return function(e){var r=Array.prototype.slice.call(arguments,1);e.apply(null,r.concat([function(e){var r=Array.prototype.slice.call(arguments,1);"undefined"!=typeof console&&(e?console.error&&console.error(e):console[t]&&l(r,function(e){console[t](e)}))}]))}};s.log=w("log"),s.dir=w("dir"),s.memoize=function(t,e){var r={},i={};e=e||function(t){return t};var n=function(){var n=Array.prototype.slice.call(arguments),o=n.pop(),a=e.apply(null,n);a in r?s.nextTick(function(){o.apply(null,r[a])}):a in i?i[a].push(o):(i[a]=[o],t.apply(null,n.concat([function(){r[a]=arguments;var t=i[a];delete i[a];for(var e=0,n=t.length;n>e;e++)t[e].apply(null,arguments)}])))};return n.memo=r,n.unmemoized=t,n},s.unmemoize=function(t){return function(){return(t.unmemoized||t).apply(null,arguments)}},s.times=function(t,e,r){for(var i=[],n=0;t>n;n++)i.push(n);return s.map(i,e,r)},s.timesSeries=function(t,e,r){for(var i=[],n=0;t>n;n++)i.push(n);return s.mapSeries(i,e,r)},s.seq=function(){var t=arguments;return function(){var e=this,r=Array.prototype.slice.call(arguments),i=r.pop();s.reduce(t,r,function(t,r,i){r.apply(e,t.concat([function(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);i(t,e)}]))},function(t,r){i.apply(e,[t].concat(r))})}},s.compose=function(){return s.seq.apply(null,Array.prototype.reverse.call(arguments))};var S=function(t,e){var r=function(){var r=this,i=Array.prototype.slice.call(arguments),n=i.pop();return t(e,function(t,e){t.apply(r,i.concat([e]))},n)};if(arguments.length>2){var i=Array.prototype.slice.call(arguments,2);return r.apply(this,i)}return r};s.applyEach=f(S),s.applyEachSeries=v(S),s.forever=function(t,e){function r(i){if(i){if(e)return e(i);throw i}t(r)}r()},"undefined"!=typeof r&&r.exports?r.exports=s:"undefined"!=typeof t&&t.amd?t([],function(){return s}):n.async=s}()}).call(this,e("_process"))},{_process:3}],2:[function(t,e,r){(function(t){function e(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];"."===n?t.splice(i,1):".."===n?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function i(t,e){if(t.filter)return t.filter(e);for(var r=[],i=0;i=-1&&!n;o--){var s=o>=0?arguments[o]:t.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(r=s+"/"+r,n="/"===s.charAt(0))}return r=e(i(r.split("/"),function(t){return!!t}),!n).join("/"),(n?"/":"")+r||"."},r.normalize=function(t){var n=r.isAbsolute(t),o="/"===s(t,-1);return t=e(i(t.split("/"),function(t){return!!t}),!n).join("/"),t||n||(t="."),t&&o&&(t+="/"),(n?"/":"")+t},r.isAbsolute=function(t){return"/"===t.charAt(0)},r.join=function(){var t=Array.prototype.slice.call(arguments,0);return r.normalize(i(t,function(t){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))},r.relative=function(t,e){function i(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=r.resolve(t).substr(1),e=r.resolve(e).substr(1);for(var n=i(t.split("/")),o=i(e.split("/")),s=Math.min(n.length,o.length),a=s,h=0;s>h;h++)if(n[h]!==o[h]){a=h;break}for(var l=[],h=a;he&&(e=t.length+e),t.substr(e,r)}}).call(this,t("_process"))},{_process:3}],3:[function(t,e){function r(){if(!s){s=!0;for(var t,e=o.length;e;){t=o,o=[];for(var r=-1;++rn;n++)t&&t.push(r._listeners[n]);return[r]}if("*"===f||"**"===f||r[f]){if("*"===f){for(a in r)"_listeners"!==a&&r.hasOwnProperty(a)&&(d=d.concat(o(t,e,r[a],i+1)));return d}if("**"===f){c=i+1===p||i+2===p&&"*"===g,c&&r._listeners&&(d=d.concat(o(t,e,r,p)));for(a in r)"_listeners"!==a&&r.hasOwnProperty(a)&&("*"===a||"**"===a?(r[a]._listeners&&!c&&(d=d.concat(o(t,e,r[a],p))),d=d.concat(o(t,e,r[a],i))):d=d.concat(a===g?o(t,e,r[a],i+2):o(t,e,r[a],i)));return d}d=d.concat(o(t,e,r[f],i+1))}if(h=r["*"],h&&o(t,e,h,i+1),l=r["**"])if(p>i){l._listeners&&o(t,e,l,p);for(a in l)"_listeners"!==a&&l.hasOwnProperty(a)&&(a===g?o(t,e,l[a],i+2):a===f?o(t,e,l[a],i+1):(u={},u[a]=l[a],o(t,e,{"**":u},i+1)))}else l._listeners?o(t,e,l,p):l["*"]&&l["*"]._listeners&&o(t,e,l["*"],p);return d}function s(t,e){t="string"==typeof t?t.split(this.delimiter):t.slice();for(var r=0,i=t.length;i>r+1;r++)if("**"===t[r]&&"**"===t[r+1])return;for(var n=this.listenerTree,o=t.shift();o;){if(n[o]||(n[o]={}),n=n[o],0===t.length){if(n._listeners){if("function"==typeof n._listeners)n._listeners=[n._listeners,e];else if(a(n._listeners)&&(n._listeners.push(e),!n._listeners.warned)){var s=h;"undefined"!=typeof this._events.maxListeners&&(s=this._events.maxListeners),s>0&&n._listeners.length>s&&(n._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",n._listeners.length),console.trace())}}else n._listeners=e;return!0}o=t.shift()}return!0}var a=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},h=10;n.prototype.delimiter=".",n.prototype.setMaxListeners=function(t){this._events||e.call(this),this._events.maxListeners=t,this._conf||(this._conf={}),this._conf.maxListeners=t},n.prototype.event="",n.prototype.once=function(t,e){return this.many(t,1,e),this},n.prototype.many=function(t,e,r){function i(){0===--e&&n.off(t,i),r.apply(this,arguments)}var n=this;if("function"!=typeof r)throw new Error("many only accepts instances of Function");return i._origin=r,this.on(t,i),n},n.prototype.emit=function(){this._events||e.call(this);var t=arguments[0];if("newListener"===t&&!this.newListener&&!this._events.newListener)return!1;if(this._all){for(var r=arguments.length,i=new Array(r-1),n=1;r>n;n++)i[n-1]=arguments[n];for(n=0,r=this._all.length;r>n;n++)this.event=t,this._all[n].apply(this,i)}if("error"===t&&!(this._all||this._events.error||this.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var s;if(this.wildcard){s=[];var a="string"==typeof t?t.split(this.delimiter):t.slice();o.call(this,s,a,this.listenerTree,0)}else s=this._events[t];if("function"==typeof s){if(this.event=t,1===arguments.length)s.call(this);else if(arguments.length>1)switch(arguments.length){case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:for(var r=arguments.length,i=new Array(r-1),n=1;r>n;n++)i[n-1]=arguments[n];s.apply(this,i)}return!0}if(s){for(var r=arguments.length,i=new Array(r-1),n=1;r>n;n++)i[n-1]=arguments[n];for(var h=s.slice(),n=0,r=h.length;r>n;n++)this.event=t,h[n].apply(this,i);return h.length>0||!!this._all}return!!this._all},n.prototype.on=function(t,r){if("function"==typeof t)return this.onAny(t),this;if("function"!=typeof r)throw new Error("on only accepts instances of Function");if(this._events||e.call(this),this.emit("newListener",t,r),this.wildcard)return s.call(this,t,r),this;if(this._events[t]){if("function"==typeof this._events[t])this._events[t]=[this._events[t],r];else if(a(this._events[t])&&(this._events[t].push(r),!this._events[t].warned)){var i=h;"undefined"!=typeof this._events.maxListeners&&(i=this._events.maxListeners),i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),console.trace())}}else this._events[t]=r;return this},n.prototype.onAny=function(t){if("function"!=typeof t)throw new Error("onAny only accepts instances of Function");return this._all||(this._all=[]),this._all.push(t),this},n.prototype.addListener=n.prototype.on,n.prototype.off=function(t,e){if("function"!=typeof e)throw new Error("removeListener only takes instances of Function");var r,i=[];if(this.wildcard){var n="string"==typeof t?t.split(this.delimiter):t.slice();i=o.call(this,null,n,this.listenerTree,0)}else{if(!this._events[t])return this;r=this._events[t],i.push({_listeners:r})}for(var s=0;su;u++)if(r[u]===e||r[u].listener&&r[u].listener===e||r[u]._origin&&r[u]._origin===e){l=u;break}if(0>l)continue;return this.wildcard?h._listeners.splice(l,1):this._events[t].splice(l,1),0===r.length&&(this.wildcard?delete h._listeners:delete this._events[t]),this}(r===e||r.listener&&r.listener===e||r._origin&&r._origin===e)&&(this.wildcard?delete h._listeners:delete this._events[t])}return this},n.prototype.offAny=function(t){var e,r=0,i=0;if(t&&this._all&&this._all.length>0){for(e=this._all,r=0,i=e.length;i>r;r++)if(t===e[r])return e.splice(r,1),this}else this._all=[];return this},n.prototype.removeListener=n.prototype.off,n.prototype.removeAllListeners=function(t){if(0===arguments.length)return!this._events||e.call(this),this;if(this.wildcard)for(var r="string"==typeof t?t.split(this.delimiter):t.slice(),i=o.call(this,null,r,this.listenerTree,0),n=0;n","Richard Davey "],main:"./src/index.js",homepage:"http://goodboydigital.com/",bugs:"https://github.com/GoodBoyDigital/pixi.js/issues",license:"MIT",repository:{type:"git",url:"https://github.com/GoodBoyDigital/pixi.js.git"},scripts:{test:"gulp test",docs:"./node_modules/.bin/jsdoc -c ./gulp/util/jsdoc.conf.json"},devDependencies:{browserify:"^8.0.2",chai:"^1.10.0",del:"^1.1.0",exorcist:"^0.1.6",gulp:"^3.8.10","gulp-cached":"^1.0.1","gulp-concat":"^2.5.2","gulp-debug":"^2.0.0","gulp-jsdoc":"^0.1.4","gulp-jshint":"^1.9.0","gulp-plumber":"^0.6.6","gulp-rename":"^1.2.0","gulp-uglify":"^1.0.2","gulp-util":"^3.0.1","ink-docstrap":"^0.5.2",jsdoc:"^3.3.0-alpha13","jshint-summary":"^0.4.0",karma:"^0.12.28","karma-firefox-launcher":"^0.1.0","karma-mocha":"^0.1.10","karma-spec-reporter":"^0.0.16",minimist:"^1.1.0",mocha:"^2.1.0","require-dir":"^0.1.0","run-sequence":"^1.0.2","vinyl-buffer":"^1.0.0","vinyl-source-stream":"^1.0.0",watchify:"^2.2.1"},dependencies:{async:"^0.9.0","resource-loader":"^1.2.1",brfs:"^1.2.0"},browserify:{transform:["brfs"]}} },{}],12:[function(t,e){e.exports={VERSION:t("../../package.json").version,RENDERER_TYPE:{UNKNOWN:0,WEBGL:1,CANVAS:2},BLEND_MODES:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},SCALE_MODES:{DEFAULT:0,LINEAR:0,NEAREST:1},RETINA_PREFIX:/@(.+)x/,RESOLUTION:1,FILTER_RESOLUTION:1,DEFAULT_RENDER_OPTIONS:{view:null,resolution:1,antialias:!1,forceFXAA:!1,autoResize:!1,transparent:!1,backgroundColor:0,clearBeforeRender:!0,preserveDrawingBuffer:!1},SHAPES:{POLY:0,RECT:1,CIRC:2,ELIP:3,RREC:4},SPRITE_BATCH_SIZE:2e3}},{"../../package.json":11}],13:[function(t,e){function r(){n.call(this),this.children=[]}var i=t("../math"),n=t("./DisplayObject"),o=t("../textures/RenderTexture"),s=new i.Matrix;r.prototype=Object.create(n.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{width:{get:function(){return this.scale.x*this.getLocalBounds().width},set:function(t){var e=this.getLocalBounds().width;this.scale.x=0!==e?t/e:1,this._width=t}},height:{get:function(){return this.scale.y*this.getLocalBounds().height},set:function(t){var e=this.getLocalBounds().height;this.scale.y=0!==e?t/e:1,this._height=t}}}),r.prototype.addChild=function(t){return this.addChildAt(t,this.children.length)},r.prototype.addChildAt=function(t,e){if(t===this)return t;if(e>=0&&e<=this.children.length)return t.parent&&t.parent.removeChild(t),t.parent=this,this.children.splice(e,0,t),t;throw new Error(t+"addChildAt: The index "+e+" supplied is out of bounds "+this.children.length)},r.prototype.swapChildren=function(t,e){if(t!==e){var r=this.getChildIndex(t),i=this.getChildIndex(e);if(0>r||0>i)throw new Error("swapChildren: Both the supplied DisplayObjects must be children of the caller.");this.children[r]=e,this.children[i]=t}},r.prototype.getChildIndex=function(t){var e=this.children.indexOf(t);if(-1===e)throw new Error("The supplied DisplayObject must be a child of the caller");return e},r.prototype.setChildIndex=function(t,e){if(0>e||e>=this.children.length)throw new Error("The supplied index is out of bounds");var r=this.getChildIndex(t);this.children.splice(r,1),this.children.splice(e,0,t)},r.prototype.getChildAt=function(t){if(0>t||t>=this.children.length)throw new Error("getChildAt: Supplied index "+t+" does not exist in the child list, or the supplied DisplayObject is not a child of the caller");return this.children[t]},r.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1!==e)return this.removeChildAt(e)},r.prototype.removeChildAt=function(t){var e=this.getChildAt(t);return e.parent=null,this.children.splice(t,1),e},r.prototype.removeChildren=function(t,e){var r=t||0,i="number"==typeof e?e:this.children.length,n=i-r;if(n>0&&i>=n){for(var o=this.children.splice(r,n),s=0;st;++t)this.children[t].updateTransform()}},r.prototype.containerUpdateTransform=r.prototype.updateTransform,r.prototype.getBounds=function(){if(!this._currentBounds){if(0===this.children.length)return i.Rectangle.EMPTY;for(var t,e,r,n=1/0,o=1/0,s=-1/0,a=-1/0,h=!1,l=0,u=this.children.length;u>l;++l){var c=this.children[l];c.visible&&(h=!0,t=this.children[l].getBounds(),n=ne?s:e,a=a>r?a:r)}if(!h)return i.Rectangle.EMPTY;var d=this._bounds;d.x=n,d.y=o,d.width=s-n,d.height=a-o,this._currentBounds=d}return this._currentBounds},r.prototype.getLocalBounds=function(){var t=this.worldTransform;this.worldTransform=i.Matrix.IDENTITY;for(var e=0,r=this.children.length;r>e;++e)this.children[e].updateTransform();return this.worldTransform=t,this._currentBounds=null,this.getBounds()},r.prototype.renderWebGL=function(t){if(this.visible&&!(this.worldAlpha<=0)&&this.renderable){var e,r;if(this._mask||this._filters){for(t.currentRenderer.flush(),this._filters&&t.filterManager.pushFilter(this,this._filters),this._mask&&t.maskManager.pushMask(this,this._mask),t.currentRenderer.start(),this._renderWebGL(t),e=0,r=this.children.length;r>e;e++)this.children[e].renderWebGL(t);t.currentRenderer.flush(),this._mask&&t.maskManager.popMask(this,this._mask),this._filters&&t.filterManager.popFilter(),t.currentRenderer.start()}else for(this._renderWebGL(t),e=0,r=this.children.length;r>e;++e)this.children[e].renderWebGL(t)}},r.prototype._renderWebGL=function(){},r.prototype._renderCanvas=function(){},r.prototype.renderCanvas=function(t){if(this.visible&&!(this.alpha<=0)&&this.renderable){this._mask&&t.maskManager.pushMask(this._mask,t),this._renderCanvas(t);for(var e=0,r=this.children.length;r>e;++e)this.children[e].renderCanvas(t);this._mask&&t.maskManager.popMask(t)}}},{"../math":22,"../textures/RenderTexture":59,"./DisplayObject":14}],14:[function(t,e){function r(){this.position=new i.Point,this.scale=new i.Point(1,1),this.pivot=new i.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.renderable=!0,this.parent=null,this.worldAlpha=1,this.worldTransform=new i.Matrix,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new i.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cachedObject=null}var i=t("../math"),n=t("../utils"),o=t("../textures/RenderTexture"),s=new i.Matrix;r.prototype.constructor=r,n.eventTarget.mixin(r.prototype),e.exports=r,Object.defineProperties(r.prototype,{x:{get:function(){return this.position.x},set:function(t){this.position.x=t}},y:{get:function(){return this.position.y},set:function(t){this.position.y=t}},worldVisible:{get:function(){var t=this;do{if(!t.visible)return!1;t=t.parent}while(t);return!0}},mask:{get:function(){return this._mask},set:function(t){this._mask&&(this._mask.renderable=!0),this._mask=t,this._mask&&(this._mask.renderable=!1)}},filters:{get:function(){return this._filters&&this._filters.slice()},set:function(t){this._filters=t&&t.slice()}}}),r.prototype.updateTransform=function(){var t,e,r,n,o,s,a=this.parent.worldTransform,h=this.worldTransform;this.rotation%i.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),t=this._cr*this.scale.x,e=this._sr*this.scale.x,r=-this._sr*this.scale.y,n=this._cr*this.scale.y,o=this.position.x,s=this.position.y,(this.pivot.x||this.pivot.y)&&(o-=this.pivot.x*t+this.pivot.y*r,s-=this.pivot.x*e+this.pivot.y*n),h.a=t*a.a+e*a.c,h.b=t*a.b+e*a.d,h.c=r*a.a+n*a.c,h.d=r*a.b+n*a.d,h.tx=o*a.a+s*a.c+a.tx,h.ty=o*a.b+s*a.d+a.ty):(t=this.scale.x,n=this.scale.y,o=this.position.x-this.pivot.x*t,s=this.position.y-this.pivot.y*n,h.a=t*a.a,h.b=t*a.b,h.c=n*a.c,h.d=n*a.d,h.tx=o*a.a+s*a.c+a.tx,h.ty=o*a.b+s*a.d+a.ty),this.worldAlpha=this.alpha*this.parent.worldAlpha,this._currentBounds=null},r.prototype.displayObjectUpdateTransform=r.prototype.updateTransform,r.prototype.getBounds=function(){return i.Rectangle.EMPTY},r.prototype.getLocalBounds=function(){return this.getBounds(i.Matrix.IDENTITY)},r.prototype.toGlobal=function(t){return this.displayObjectUpdateTransform(),this.worldTransform.apply(t)},r.prototype.toLocal=function(t,e){return e&&(t=e.toGlobal(t)),this.displayObjectUpdateTransform(),this.worldTransform.applyInverse(t)},r.prototype.renderWebGL=function(){},r.prototype.renderCanvas=function(){},r.prototype.generateTexture=function(t,e,r){var i=this.getLocalBounds(),n=new o(t,0|i.width,0|i.height,t,r,e);return s.tx=-i.x,s.ty=-i.y,n.render(this,s),n}},{"../math":22,"../textures/RenderTexture":59,"../utils":67}],15:[function(t,e){function r(){i.call(this),this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this._prevTint=16777215,this.blendMode=u.BLEND_MODES.NORMAL,this.currentPath=null,this._webGL={},this.isMask=!1,this.boundsPadding=0,this._localBounds=new l.Rectangle(0,0,1,1),this.dirty=!0,this.glDirty=!1,this.cachedSpriteDirty=!1}var i=t("../display/Container"),n=t("../sprites/Sprite"),o=t("../textures/Texture"),s=t("../renderers/canvas/utils/CanvasBuffer"),a=t("../renderers/canvas/utils/CanvasGraphics"),h=t("./GraphicsData"),l=t("../math"),u=t("../const"),c=new l.Point;r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{}),r.prototype.clone=function(){var t=new r;t.renderable=this.renderable,t.fillAlpha=this.fillAlpha,t.lineWidth=this.lineWidth,t.lineColor=this.lineColor,t.tint=this.tint,t.blendMode=this.blendMode,t.isMask=this.isMask,t.boundsPadding=this.boundsPadding,t.dirty=this.dirty,t.glDirty=this.glDirty,t.cachedSpriteDirty=this.cachedSpriteDirty;for(var e=0;e=c;++c)u=c/s,n=h+(t-h)*u,o=l+(e-l)*u,a.push(n+(t+(r-t)*u-n)*u,o+(e+(i-e)*u-o)*u);return this.dirty=!0,this},r.prototype.bezierCurveTo=function(t,e,r,i,n,o){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var s,a,h,l,u,c=20,d=this.currentPath.shape.points,p=d[d.length-2],f=d[d.length-1],g=0,v=1;c>=v;++v)g=v/c,s=1-g,a=s*s,h=a*s,l=g*g,u=l*g,d.push(h*p+3*a*g*t+3*s*l*r+u*n,h*f+3*a*g*e+3*s*l*i+u*o);return this.dirty=!0,this},r.prototype.arcTo=function(t,e,r,i,n){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(t,e):this.moveTo(t,e);var o=this.currentPath.shape.points,s=o[o.length-2],a=o[o.length-1],h=a-e,l=s-t,u=i-e,c=r-t,d=Math.abs(h*c-l*u);if(1e-8>d||0===n)(o[o.length-2]!==t||o[o.length-1]!==e)&&o.push(t,e);else{var p=h*h+l*l,f=u*u+c*c,g=h*u+l*c,v=n*Math.sqrt(p)/d,m=n*Math.sqrt(f)/d,y=v*g/p,x=m*g/f,b=v*c+m*l,T=v*u+m*h,_=l*(m+y),E=h*(m+y),w=c*(v+x),S=u*(v+x),A=Math.atan2(E-T,_-b),C=Math.atan2(S-T,w-b);this.arc(b+t,T+e,n,A,C,l*u>c*h)}return this.dirty=!0,this},r.prototype.arc=function(t,e,r,i,n,o){var s,a=t+Math.cos(i)*r,h=e+Math.sin(i)*r;if(this.currentPath?(s=this.currentPath.shape.points,0===s.length?s.push(a,h):(s[s.length-2]!==a||s[s.length-1]!==h)&&s.push(a,h)):(this.moveTo(a,h),s=this.currentPath.shape.points),i===n)return this;!o&&i>=n?n+=2*Math.PI:o&&n>=i&&(i+=2*Math.PI);var l=o?-1*(i-n):n-i,u=40*Math.ceil(Math.abs(l)/(2*Math.PI));if(0===l)return this;for(var c=l/(2*u),d=2*c,p=Math.cos(c),f=Math.sin(c),g=u-1,v=g%1/g,m=0;g>=m;m++){var y=m+v*m,x=c+i+d*y,b=Math.cos(x),T=-Math.sin(x);s.push((p*b+f*T)*r+t,(p*-T+f*b)*r+e)}return this.dirty=!0,this},r.prototype.beginFill=function(t,e){return this.filling=!0,this.fillColor=t||0,this.fillAlpha=void 0===e?1:e,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},r.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},r.prototype.drawRect=function(t,e,r,i){return this.drawShape(new l.Rectangle(t,e,r,i)),this},r.prototype.drawRoundedRect=function(t,e,r,i,n){return this.drawShape(new l.RoundedRectangle(t,e,r,i,n)),this},r.prototype.drawCircle=function(t,e,r){return this.drawShape(new l.Circle(t,e,r)),this},r.prototype.drawEllipse=function(t,e,r,i){return this.drawShape(new l.Ellipse(t,e,r,i)),this},r.prototype.drawPolygon=function(t){return t instanceof Array||(t=Array.prototype.slice.call(arguments)),this.drawShape(new l.Polygon(t)),this},r.prototype.clear=function(){return this.lineWidth=0,this.filling=!1,this.dirty=!0,this.clearDirty=!0,this.graphicsData=[],this},r.prototype.generateTexture=function(t,e){t=t||1;var r=this.getBounds(),i=new s(r.width*t,r.height*t),n=o.fromCanvas(i.canvas,e);return n.baseTexture.resolution=t,i.context.scale(t,t),i.context.translate(-r.x,-r.y),a.renderGraphics(this,i.context),n},r.prototype._renderWebGL=function(t){this.glDirty&&(this.dirty=!0,this.glDirty=!1),t.setObjectRenderer(t.plugins.graphics),t.plugins.graphics.render(this)},r.prototype._renderCanvas=function(t){if(this.isMask!==!0){if(this._prevTint!==this.tint&&(this.dirty=!0,this._prevTint=this.tint),this._cacheAsBitmap)return(this.dirty||this.cachedSpriteDirty)&&(this._generateCachedSprite(),this.updateCachedSpriteTexture(),this.cachedSpriteDirty=!1,this.dirty=!1),this._cachedSprite.alpha=this.alpha,void n.prototype._renderCanvas.call(this._cachedSprite,t);var e=t.context,r=this.worldTransform;this.blendMode!==t.currentBlendMode&&(t.currentBlendMode=this.blendMode,e.globalCompositeOperation=t.blendModes[t.currentBlendMode]);var i=t.resolution;e.setTransform(r.a*i,r.b*i,r.c*i,r.d*i,r.tx*i,r.ty*i),a.renderGraphics(this,e)}},r.prototype.getBounds=function(t){if(!this._currentBounds){if(!this.renderable)return l.Rectangle.EMPTY;this.dirty&&(this.updateLocalBounds(),this.glDirty=!0,this.cachedSpriteDirty=!0,this.dirty=!1);var e=this._localBounds,r=e.x,i=e.width+e.x,n=e.y,o=e.height+e.y,s=t||this.worldTransform,a=s.a,h=s.b,u=s.c,c=s.d,d=s.tx,p=s.ty,f=a*i+u*o+d,g=c*o+h*i+p,v=a*r+u*o+d,m=c*o+h*r+p,y=a*r+u*n+d,x=c*n+h*r+p,b=a*i+u*n+d,T=c*n+h*i+p,_=f,E=g,w=f,S=g;w=w>v?v:w,w=w>y?y:w,w=w>b?b:w,S=S>m?m:S,S=S>x?x:S,S=S>T?T:S,_=v>_?v:_,_=y>_?y:_,_=b>_?b:_,E=m>E?m:E,E=x>E?x:E,E=T>E?T:E,this._bounds.x=w,this._bounds.width=_-w,this._bounds.y=S,this._bounds.height=E-S,this._currentBounds=this._bounds}return this._currentBounds},r.prototype.containsPoint=function(t){this.worldTransform.applyInverse(t,c);for(var e=this.graphicsData,r=0;rs?s:t,e=s+h>e?s+h:e,r=r>a?a:r,i=a+l>i?a+l:i;else if(p===u.SHAPES.CIRC)s=n.x,a=n.y,h=n.radius+f/2,l=n.radius+f/2,t=t>s-h?s-h:t,e=s+h>e?s+h:e,r=r>a-l?a-l:r,i=a+l>i?a+l:i;else if(p===u.SHAPES.ELIP)s=n.x,a=n.y,h=n.width+f/2,l=n.height+f/2,t=t>s-h?s-h:t,e=s+h>e?s+h:e,r=r>a-l?a-l:r,i=a+l>i?a+l:i;else{o=n.points;for(var g=0;gs-f?s-f:t,e=s+f>e?s+f:e,r=r>a-f?a-f:r,i=a+f>i?a+f:i}}else t=0,e=0,r=0,i=0;var v=this.boundsPadding;this._localBounds.x=t-v,this._localBounds.width=e-t+2*v,this._localBounds.y=r-v,this._localBounds.height=i-r+2*v},r.prototype.drawShape=function(t){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null;var e=new h(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,t);return this.graphicsData.push(e),e.type===u.SHAPES.POLY&&(e.shape.closed=this.filling,this.currentPath=e),this.dirty=!0,e}},{"../const":12,"../display/Container":13,"../math":22,"../renderers/canvas/utils/CanvasBuffer":34,"../renderers/canvas/utils/CanvasGraphics":35,"../sprites/Sprite":56,"../textures/Texture":60,"./GraphicsData":16}],16:[function(t,e){function r(t,e,r,i,n,o,s){this.lineWidth=t,this.lineColor=e,this.lineAlpha=r,this._lineTint=e,this.fillColor=i,this.fillAlpha=n,this._fillTint=i,this.fill=o,this.shape=s,this.type=s.type}r.prototype.constructor=r,e.exports=r,r.prototype.clone=function(){return new r(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)}},{}],17:[function(t,e){function r(t){s.call(this,t),this.graphicsDataPool=[],this.primitiveShader=null,this.complexPrimitiveShader=null}var i=t("../../utils"),n=t("../../math"),o=t("../../const"),s=t("../../renderers/webgl/utils/ObjectRenderer"),a=t("../../renderers/webgl/WebGLRenderer"),h=t("./WebGLGraphicsData");r.prototype=Object.create(s.prototype),r.prototype.constructor=r,e.exports=r,a.registerPlugin("graphics",r),r.prototype.onContextChange=function(){},r.prototype.destroy=function(){s.prototype.destroy.call(this),this.graphicsDataPool=null},r.prototype.render=function(t){var e,r=this.renderer,n=r.gl,o=r.shaderManager.plugins.primitiveShader;t.dirty&&this.updateGraphics(t,n);var s=t._webGL[n.id];r.blendModeManager.setBlendMode(t.blendMode);for(var a=0;a=6)if(a.points.length<12){s=this.switchMode(r,0);var h=this.buildPoly(a,s);h||(s=this.switchMode(r,1),this.buildComplexPoly(a,s))}else s=this.switchMode(r,1),this.buildComplexPoly(a,s);a.lineWidth>0&&(s=this.switchMode(r,0),this.buildLine(a,s))}else s=this.switchMode(r,0),a.type===o.SHAPES.RECT?this.buildRectangle(a,s):a.type===o.SHAPES.CIRC||a.type===o.SHAPES.ELIP?this.buildCircle(a,s):a.type===o.SHAPES.RREC&&this.buildRoundedRectangle(a,s);r.lastIndex++}for(i=0;i32e4||r.mode!==e||1===e)&&(r=this.graphicsDataPool.pop()||new h(t.gl),r.mode=e,t.data.push(r))):(r=this.graphicsDataPool.pop()||new h(t.gl),r.mode=e,t.data.push(r)),r.dirty=!0,r},r.prototype.buildRectangle=function(t,e){var r=t.shape,n=r.x,o=r.y,s=r.width,a=r.height;if(t.fill){var h=i.hex2rgb(t.fillColor),l=t.fillAlpha,u=h[0]*l,c=h[1]*l,d=h[2]*l,p=e.points,f=e.indices,g=p.length/6;p.push(n,o),p.push(u,c,d,l),p.push(n+s,o),p.push(u,c,d,l),p.push(n,o+a),p.push(u,c,d,l),p.push(n+s,o+a),p.push(u,c,d,l),f.push(g,g,g+1,g+2,g+3,g+3)}if(t.lineWidth){var v=t.points;t.points=[n,o,n+s,o,n+s,o+a,n,o+a,n,o],this.buildLine(t,e),t.points=v}},r.prototype.buildRoundedRectangle=function(t,e){var r=t.shape,n=r.x,o=r.y,s=r.width,a=r.height,h=r.radius,l=[];if(l.push(n,o+h),l=l.concat(this.quadraticBezierCurve(n,o+a-h,n,o+a,n+h,o+a)),l=l.concat(this.quadraticBezierCurve(n+s-h,o+a,n+s,o+a,n+s,o+a-h)),l=l.concat(this.quadraticBezierCurve(n+s,o+h,n+s,o,n+s-h,o)),l=l.concat(this.quadraticBezierCurve(n+h,o,n,o,n,o+h)),t.fill){var u=i.hex2rgb(t.fillColor),c=t.fillAlpha,d=u[0]*c,p=u[1]*c,f=u[2]*c,g=e.points,v=e.indices,m=g.length/6,y=i.PolyK.Triangulate(l),x=0;for(x=0;x=v;v++)g=v/p,a=s(t,r,g),h=s(e,i,g),l=s(r,n,g),u=s(i,o,g),c=s(a,l,g),d=s(h,u,g),f.push(c,d);return f},r.prototype.buildCircle=function(t,e){var r,n,s=t.shape,a=s.x,h=s.y;t.type===o.SHAPES.CIRC?(r=s.radius,n=s.radius):(r=s.width,n=s.height);var l=40,u=2*Math.PI/l,c=0;if(t.fill){var d=i.hex2rgb(t.fillColor),p=t.fillAlpha,f=d[0]*p,g=d[1]*p,v=d[2]*p,m=e.points,y=e.indices,x=m.length/6;for(y.push(x),c=0;l+1>c;c++)m.push(a,h,f,g,v,p),m.push(a+Math.sin(u*c)*r,h+Math.cos(u*c)*n,f,g,v,p),y.push(x++,x++);y.push(x-1)}if(t.lineWidth){var b=t.points;for(t.points=[],c=0;l+1>c;c++)t.points.push(a+Math.sin(u*c)*r,h+Math.cos(u*c)*n);this.buildLine(t,e),t.points=b}},r.prototype.buildLine=function(t,e){var r=0,o=t.points;if(0!==o.length){if(t.lineWidth%2)for(r=0;rr;r++)d=o[2*(r-1)],p=o[2*(r-1)+1],f=o[2*r],g=o[2*r+1],v=o[2*(r+1)],m=o[2*(r+1)+1],y=-(p-g),x=d-f,O=Math.sqrt(y*y+x*x),y/=O,x/=O,y*=k,x*=k,b=-(g-m),T=f-v,O=Math.sqrt(b*b+T*T),b/=O,T/=O,b*=k,T*=k,w=-x+p-(-x+g),S=-y+f-(-y+d),A=(-y+d)*(-x+g)-(-y+f)*(-x+p),C=-T+m-(-T+g),M=-b+f-(-b+v),R=(-b+v)*(-T+g)-(-b+f)*(-T+m),F=w*M-C*S,Math.abs(F)<.1?(F+=10.1,P.push(f-y,g-x,X,Y,W,j),P.push(f+y,g+x,X,Y,W,j)):(u=(S*R-M*A)/F,c=(C*A-w*R)/F,D=(u-f)*(u-f)+(c-g)+(c-g),D>19600?(_=y-b,E=x-T,O=Math.sqrt(_*_+E*E),_/=O,E/=O,_*=k,E*=k,P.push(f-_,g-E),P.push(X,Y,W,j),P.push(f+_,g+E),P.push(X,Y,W,j),P.push(f-_,g-E),P.push(X,Y,W,j),I++):(P.push(u,c),P.push(X,Y,W,j),P.push(f-(u-f),g-(c-g)),P.push(X,Y,W,j)));for(d=o[2*(L-2)],p=o[2*(L-2)+1],f=o[2*(L-1)],g=o[2*(L-1)+1],y=-(p-g),x=d-f,O=Math.sqrt(y*y+x*x),y/=O,x/=O,y*=k,x*=k,P.push(f-y,g-x),P.push(X,Y,W,j),P.push(f+y,g+x),P.push(X,Y,W,j),B.push(N),r=0;I>r;r++)B.push(N++);B.push(N-1)}},r.prototype.buildComplexPoly=function(t,e){var r=t.points.slice();if(!(r.length<6)){var n=e.indices;e.points=r,e.alpha=t.fillAlpha,e.color=i.hex2rgb(t.fillColor);for(var o,s,a=1/0,h=-1/0,l=1/0,u=-1/0,c=0;co?o:a,h=o>h?o:h,l=l>s?s:l,u=s>u?s:u;r.push(a,l,h,l,h,u,a,u);var d=r.length/2;for(c=0;d>c;c++)n.push(c)}},r.prototype.buildPoly=function(t,e){var r=t.points;if(!(r.length<6)){var n=e.points,o=e.indices,s=r.length/2,a=i.hex2rgb(t.fillColor),h=t.fillAlpha,l=a[0]*h,u=a[1]*h,c=a[2]*h,d=i.PolyK.Triangulate(r);if(!d)return!1;var p=n.length/6,f=0;for(f=0;ff;f++)n.push(r[2*f],r[2*f+1],l,u,c,h);return!0}}},{"../../const":12,"../../math":22,"../../renderers/webgl/WebGLRenderer":38,"../../renderers/webgl/utils/ObjectRenderer":52,"../../utils":67,"./WebGLGraphicsData":18}],18:[function(t,e){function r(t){this.gl=t,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0}r.prototype.constructor=r,e.exports=r,r.prototype.reset=function(){this.points=[],this.indices=[]},r.prototype.upload=function(){var t=this.gl;this.glPoints=new Float32Array(this.points),t.bindBuffer(t.ARRAY_BUFFER,this.buffer),t.bufferData(t.ARRAY_BUFFER,this.glPoints,t.STATIC_DRAW),this.glIndices=new Uint16Array(this.indices),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.glIndices,t.STATIC_DRAW),this.dirty=!1}},{}],19:[function(t,e){function r(){try{if(!window.WebGLRenderingContext)return!1;var t=document.createElement("canvas"),e=t.getContext("webgl",s)||t.getContext("experimental-webgl",s);return!(!e||!e.getContextAttributes().stencil)}catch(r){return!1}}var i=e.exports={utils:t("./utils"),math:t("./math"),CONST:t("./const"),DisplayObject:t("./display/DisplayObject"),Container:t("./display/Container"),Stage:t("./display/Container"),DisplayObjectContainer:t("./display/Container"),Sprite:t("./sprites/Sprite"),ParticleContainer:t("./particles/ParticleContainer"),SpriteRenderer:t("./sprites/webgl/SpriteRenderer"),ParticleRenderer:t("./particles/webgl/ParticleRenderer"),Graphics:t("./graphics/Graphics"),GraphicsData:t("./graphics/GraphicsData"),GraphicsRenderer:t("./graphics/webgl/GraphicsRenderer"),Texture:t("./textures/Texture"),BaseTexture:t("./textures/BaseTexture"),RenderTexture:t("./textures/RenderTexture"),VideoBaseTexture:t("./textures/VideoBaseTexture"),CanvasRenderer:t("./renderers/canvas/CanvasRenderer"),CanvasGraphics:t("./renderers/canvas/utils/CanvasGraphics"),CanvasBuffer:t("./renderers/canvas/utils/CanvasBuffer"),WebGLRenderer:t("./renderers/webgl/WebGLRenderer"),ShaderManager:t("./renderers/webgl/managers/ShaderManager"),Shader:t("./renderers/webgl/shaders/Shader"),AbstractFilter:t("./renderers/webgl/filters/AbstractFilter"),autoDetectRenderer:function(t,e,n,o){return t=t||800,e=e||600,!o&&r()?new i.WebGLRenderer(t,e,n):new i.CanvasRenderer(t,e,n)}},n=t("./const");for(var o in n)i[o]=n[o];var s={stencil:!0}},{"./const":12,"./display/Container":13,"./display/DisplayObject":14,"./graphics/Graphics":15,"./graphics/GraphicsData":16,"./graphics/webgl/GraphicsRenderer":17,"./math":22,"./particles/ParticleContainer":28,"./particles/webgl/ParticleRenderer":30,"./renderers/canvas/CanvasRenderer":33,"./renderers/canvas/utils/CanvasBuffer":34,"./renderers/canvas/utils/CanvasGraphics":35,"./renderers/webgl/WebGLRenderer":38,"./renderers/webgl/filters/AbstractFilter":39,"./renderers/webgl/managers/ShaderManager":45,"./renderers/webgl/shaders/Shader":50,"./sprites/Sprite":56,"./sprites/webgl/SpriteRenderer":57,"./textures/BaseTexture":58,"./textures/RenderTexture":59,"./textures/Texture":60,"./textures/VideoBaseTexture":62,"./utils":67}],20:[function(t,e){function r(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0}var i=t("./Point");r.prototype.constructor=r,e.exports=r,r.prototype.fromArray=function(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]},r.prototype.toArray=function(t){this.array||(this.array=new Float32Array(9));var e=this.array;return t?(e[0]=this.a,e[1]=this.b,e[2]=0,e[3]=this.c,e[4]=this.d,e[5]=0,e[6]=this.tx,e[7]=this.ty,e[8]=1):(e[0]=this.a,e[1]=this.c,e[2]=this.tx,e[3]=this.b,e[4]=this.d,e[5]=this.ty,e[6]=0,e[7]=0,e[8]=1),e},r.prototype.apply=function(t,e){e=e||new i;var r=t.x,n=t.y;return e.x=this.a*r+this.c*n+this.tx,e.y=this.b*r+this.d*n+this.ty,e},r.prototype.applyInverse=function(t,e){e=e||new i;var r=1/(this.a*this.d+this.c*-this.b),n=t.x,o=t.y;return e.x=this.d*r*n+-this.c*r*o+(this.ty*this.c-this.tx*this.d)*r,e.y=this.a*r*o+-this.b*r*n+(-this.ty*this.a+this.tx*this.b)*r,e},r.prototype.translate=function(t,e){return this.tx+=t,this.ty+=e,this},r.prototype.scale=function(t,e){return this.a*=t,this.d*=e,this.c*=t,this.b*=e,this.tx*=t,this.ty*=e,this},r.prototype.rotate=function(t){var e=Math.cos(t),r=Math.sin(t),i=this.a,n=this.c,o=this.tx;return this.a=i*e-this.b*r,this.b=i*r+this.b*e,this.c=n*e-this.d*r,this.d=n*r+this.d*e,this.tx=o*e-this.ty*r,this.ty=o*r+this.ty*e,this},r.prototype.append=function(t){var e=this.a,r=this.b,i=this.c,n=this.d;return this.a=t.a*e+t.b*i,this.b=t.a*r+t.b*n,this.c=t.c*e+t.d*i,this.d=t.c*r+t.d*n,this.tx=t.tx*e+t.ty*i+this.tx,this.ty=t.tx*r+t.ty*n+this.ty,this},r.prototype.prepend=function(t){var e=this.tx;if(1!==t.a||0!==t.b||0!==t.c||1!==t.d){var r=this.a,i=this.c;this.a=r*t.a+this.b*t.c,this.b=r*t.b+this.b*t.d,this.c=i*t.a+this.d*t.c,this.d=i*t.b+this.d*t.d}return this.tx=e*t.a+this.ty*t.c+t.tx,this.ty=e*t.b+this.ty*t.d+t.ty,this},r.prototype.invert=function(){var t=this.a,e=this.b,r=this.c,i=this.d,n=this.tx,o=t*i-e*r;return this.a=i/o,this.b=-e/o,this.c=-r/o,this.d=t/o,this.tx=(r*this.ty-i*n)/o,this.ty=-(t*this.ty-e*n)/o,this},r.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},r.prototype.clone=function(){var t=new r;return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t},r.prototype.copy=function(t){return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t},r.IDENTITY=new r,r.TEMP_MATRIX=new r},{"./Point":21}],21:[function(t,e){function r(t,e){this.x=t||0,this.y=e||0}r.prototype.constructor=r,e.exports=r,r.prototype.clone=function(){return new r(this.x,this.y)},r.prototype.set=function(t,e){this.x=t||0,this.y=e||(0!==e?this.x:0)}},{}],22:[function(t,e){e.exports={PI_2:2*Math.PI,RAD_TO_DEG:180/Math.PI,DEG_TO_RAD:Math.PI/180,Point:t("./Point"),Matrix:t("./Matrix"),Circle:t("./shapes/Circle"),Ellipse:t("./shapes/Ellipse"),Polygon:t("./shapes/Polygon"),Rectangle:t("./shapes/Rectangle"),RoundedRectangle:t("./shapes/RoundedRectangle")}},{"./Matrix":20,"./Point":21,"./shapes/Circle":23,"./shapes/Ellipse":24,"./shapes/Polygon":25,"./shapes/Rectangle":26,"./shapes/RoundedRectangle":27}],23:[function(t,e){function r(t,e,r){this.x=t||0,this.y=e||0,this.radius=r||0,this.type=n.SHAPES.CIRC}var i=t("./Rectangle"),n=t("../../const");r.prototype.constructor=r,e.exports=r,r.prototype.clone=function(){return new r(this.x,this.y,this.radius)},r.prototype.contains=function(t,e){if(this.radius<=0)return!1;var r=this.x-t,i=this.y-e,n=this.radius*this.radius;return r*=r,i*=i,n>=r+i},r.prototype.getBounds=function(){return new i(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius)}},{"../../const":12,"./Rectangle":26}],24:[function(t,e){function r(t,e,r,i){this.x=t||0,this.y=e||0,this.width=r||0,this.height=i||0,this.type=n.SHAPES.ELIP}var i=t("./Rectangle"),n=t("../../const");r.prototype.constructor=r,e.exports=r,r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.contains=function(t,e){if(this.width<=0||this.height<=0)return!1;var r=(t-this.x)/this.width,i=(e-this.y)/this.height;return r*=r,i*=i,1>=r+i},r.prototype.getBounds=function(){return new i(this.x-this.width,this.y-this.height,this.width,this.height)}},{"../../const":12,"./Rectangle":26}],25:[function(t,e){function r(t){if(t instanceof Array||(t=Array.prototype.slice.call(arguments)),t[0]instanceof i){for(var e=[],r=0,o=t.length;o>r;r++)e.push(t[r].x,t[r].y);t=e}this.closed=!0,this.points=t,this.type=n.SHAPES.POLY}var i=t("../Point"),n=t("../../const");r.prototype.constructor=r,e.exports=r,r.prototype.clone=function(){return new r(this.points.slice())},r.prototype.contains=function(t,e){for(var r=!1,i=this.points.length/2,n=0,o=i-1;i>n;o=n++){var s=this.points[2*n],a=this.points[2*n+1],h=this.points[2*o],l=this.points[2*o+1],u=a>e!=l>e&&(h-s)*(e-a)/(l-a)+s>t;u&&(r=!r)}return r}},{"../../const":12,"../Point":21}],26:[function(t,e){function r(t,e,r,n){this.x=t||0,this.y=e||0,this.width=r||0,this.height=n||0,this.type=i.SHAPES.RECT }var i=t("../../const");r.prototype.constructor=r,e.exports=r,r.EMPTY=new r(0,0,0,0),r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.contains=function(t,e){return this.width<=0||this.height<=0?!1:t>=this.x&&t=this.y&&e=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height?!0:!1}},{"../../const":12}],28:[function(t,e){function r(t,e){i.call(this),this._properties=e||[!1,!0,!1,!1,!1],this._size=t||15e3,this._buffers=null,this._updateStatic=!1,this.interactiveChildren=!1}var i=t("../display/Container");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.updateTransform=function(){this.displayObjectUpdateTransform()},r.prototype.renderWebGL=function(t){this.visible&&!(this.worldAlpha<=0)&&this.children.length&&this.renderable&&(t.setObjectRenderer(t.plugins.particle),t.plugins.particle.render(this))},r.prototype.addChildAt=function(t,e){if(t===this)return t;if(e>=0&&e<=this.children.length)return t.parent&&t.parent.removeChild(t),t.parent=this,this.children.splice(e,0,t),this._updateStatic=!0,t;throw new Error(t+"addChildAt: The index "+e+" supplied is out of bounds "+this.children.length)},r.prototype.removeChildAt=function(t){var e=this.getChildAt(t);return e.parent=null,this.children.splice(t,1),this._updateStatic=!0,e},r.prototype.renderCanvas=function(t){if(this.visible&&!(this.worldAlpha<=0)&&this.children.length&&this.renderable){var e=t.context,r=this.worldTransform,i=!0;e.globalAlpha=this.worldAlpha,this.displayObjectUpdateTransform();for(var n=0;nr;r+=6,n+=4)this.indices[r+0]=n+0,this.indices[r+1]=n+1,this.indices[r+2]=n+2,this.indices[r+3]=n+0,this.indices[r+4]=n+2,this.indices[r+5]=n+3;this.shader=null,this.tempMatrix=new a.Matrix}var i=t("../../renderers/webgl/utils/ObjectRenderer"),n=t("../../renderers/webgl/WebGLRenderer"),o=t("./ParticleShader"),s=t("./ParticleBuffer"),a=t("../../math");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,n.registerPlugin("particle",r),r.prototype.onContextChange=function(){var t=this.renderer.gl;this.shader=new o(this.renderer.shaderManager),this.indexBuffer=t.createBuffer(),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW),this.properties=[{attribute:this.shader.attributes.aVertexPosition,dynamic:!1,size:2,uploadFunction:this.uploadVertices,offset:0},{attribute:this.shader.attributes.aPositionCoord,dynamic:!0,size:2,uploadFunction:this.uploadPosition,offset:0},{attribute:this.shader.attributes.aRotation,dynamic:!1,size:1,uploadFunction:this.uploadRotation,offset:0},{attribute:this.shader.attributes.aTextureCoord,dynamic:!1,size:2,uploadFunction:this.uploadUvs,offset:0},{attribute:this.shader.attributes.aColor,dynamic:!1,size:1,uploadFunction:this.uploadAlpha,offset:0}]},r.prototype.start=function(){var t=this.renderer.gl;t.activeTexture(t.TEXTURE0),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var e=this.shader;this.renderer.shaderManager.setShader(e)},r.prototype.render=function(t){var e=t.children,r=e.length,i=t._size;if(0!==r){r>i&&(r=i),t._buffers||(t._buffers=this.generateBuffers(t));var n=this.renderer.gl,o=t.worldTransform.copy(this.tempMatrix);o.prepend(this.renderer.currentRenderTarget.projectionMatrix),n.uniformMatrix3fv(this.shader.uniforms.projectionMatrix._location,!1,o.toArray(!0));var s=t._updateStatic,a=e[0]._texture.baseTexture;a._glTextures[n.id]?n.bindTexture(n.TEXTURE_2D,a._glTextures[n.id]):(this.renderer.updateTexture(a),this.properties[0].dynamic&&this.properties[3].dynamic||(s=!0));for(var h=0,l=0;r>l;l+=this.size){var u=r-l;u>this.size&&(u=this.size);var c=t._buffers[h++];c.uploadDynamic(e,l,u),s&&c.uploadStatic(e,l,u),c.bind(this.shader),n.drawElements(n.TRIANGLES,6*u,n.UNSIGNED_SHORT,0),this.renderer.drawCount++}t._updateStatic=!1}},r.prototype.generateBuffers=function(t){var e,r=this.renderer.gl,i=[],n=t._size;for(e=0;ee;e+=this.size)i.push(new s(r,this.properties,this.size,this.shader));return i},r.prototype.uploadVertices=function(t,e,r,i,n,o){for(var s,a,h,l,u,c,d,p,f,g=0;r>g;g++)s=t[e+g],a=s._texture,l=s.scale.x,u=s.scale.y,a.trim?(h=a.trim,d=h.x-s.anchor.x*h.width,c=d+a.crop.width,f=h.y-s.anchor.y*h.height,p=f+a.crop.height):(c=a._frame.width*(1-s.anchor.x),d=a._frame.width*-s.anchor.x,p=a._frame.height*(1-s.anchor.y),f=a._frame.height*-s.anchor.y),i[o]=d*l,i[o+1]=f*u,i[o+n]=c*l,i[o+n+1]=f*u,i[o+2*n]=c*l,i[o+2*n+1]=p*u,i[o+3*n]=d*l,i[o+3*n+1]=p*u,o+=4*n},r.prototype.uploadPosition=function(t,e,r,i,n,o){for(var s=0;r>s;s++){var a=t[e+s].position;i[o]=a.x,i[o+1]=a.y,i[o+n]=a.x,i[o+n+1]=a.y,i[o+2*n]=a.x,i[o+2*n+1]=a.y,i[o+3*n]=a.x,i[o+3*n+1]=a.y,o+=4*n}},r.prototype.uploadRotation=function(t,e,r,i,n,o){for(var s=0;r>s;s++){var a=t[e+s].rotation;i[o]=a,i[o+n]=a,i[o+2*n]=a,i[o+3*n]=a,o+=4*n}},r.prototype.uploadUvs=function(t,e,r,i,n,o){for(var s=0;r>s;s++){var a=t[e+s]._texture._uvs;a?(i[o]=a.x0,i[o+1]=a.y0,i[o+n]=a.x1,i[o+n+1]=a.y1,i[o+2*n]=a.x2,i[o+2*n+1]=a.y2,i[o+3*n]=a.x3,i[o+3*n+1]=a.y3,o+=4*n):(i[o]=0,i[o+1]=0,i[o+n]=0,i[o+n+1]=0,i[o+2*n]=0,i[o+2*n+1]=0,i[o+3*n]=0,i[o+3*n+1]=0,o+=4*n)}},r.prototype.uploadAlpha=function(t,e,r,i,n,o){for(var s=0;r>s;s++){var a=t[e+s].alpha;i[o]=a,i[o+n]=a,i[o+2*n]=a,i[o+3*n]=a,o+=4*n}},r.prototype.destroy=function(){this.shader.destroy()}},{"../../math":22,"../../renderers/webgl/WebGLRenderer":38,"../../renderers/webgl/utils/ObjectRenderer":52,"./ParticleBuffer":29,"./ParticleShader":31}],31:[function(t,e){function r(t){i.call(this,t,["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","uniform mat3 projectionMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void){"," vec2 v = aVertexPosition;"," v.x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);"," v.y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);"," v = v + aPositionCoord;"," gl_Position = vec4((projectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"].join("\n"),["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void){"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"].join("\n"),null,{aPositionCoord:0,aRotation:0})}var i=t("../../renderers/webgl/shaders/TextureShader");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r},{"../../renderers/webgl/shaders/TextureShader":51}],32:[function(t,e){function r(t,e,r,s){if(i.sayHello(t),s)for(var a in o.DEFAULT_RENDER_OPTIONS)"undefined"==typeof s[a]&&(s[a]=o.DEFAULT_RENDER_OPTIONS[a]);else s=o.DEFAULT_RENDER_OPTIONS;this.type=o.RENDERER_TYPE.UNKNOWN,this.width=e||800,this.height=r||600,this.view=s.view||document.createElement("canvas"),this.resolution=s.resolution,this.transparent=s.transparent,this.autoResize=s.autoResize||!1,this.blendModes=null,this.preserveDrawingBuffer=s.preserveDrawingBuffer,this.clearBeforeRender=s.clearBeforeRender,this._backgroundColor=16777215,this._backgroundColorRgb=[1,1,1],this._backgroundColorString="#000000",this.backgroundColor=s.backgroundColor||this._backgroundColor,this._tempDisplayObjectParent={worldTransform:new n.Matrix,worldAlpha:1,children:[]},this._lastObjectRendered=this._tempDisplayObjectParent}var i=t("../utils"),n=t("../math"),o=t("../const");r.prototype.constructor=r,e.exports=r,i.eventTarget.mixin(r.prototype),Object.defineProperties(r.prototype,{backgroundColor:{get:function(){return this._backgroundColor},set:function(t){this._backgroundColor=t,this._backgroundColorString=i.hex2string(t),i.hex2rgb(t,this._backgroundColorRgb)}}}),r.prototype.resize=function(t,e){this.width=t*this.resolution,this.height=e*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px")},r.prototype.destroy=function(t){t&&this.view.parent&&this.view.parent.removeChild(this.view),this.type=o.RENDERER_TYPE.UNKNOWN,this.width=0,this.height=0,this.view=null,this.resolution=0,this.transparent=!1,this.autoResize=!1,this.blendModes=null,this.preserveDrawingBuffer=!1,this.clearBeforeRender=!1,this._backgroundColor=0,this._backgroundColorRgb=null,this._backgroundColorString=null}},{"../const":12,"../math":22,"../utils":67}],33:[function(t,e){function r(t,e,r){i.call(this,"Canvas",t,e,r),this.type=a.RENDERER_TYPE.CANVAS,this.context=this.view.getContext("2d",{alpha:this.transparent}),this.refresh=!0,this.maskManager=new n,this.roundPixels=!1,this.currentScaleMode=a.SCALE_MODES.DEFAULT,this.currentBlendMode=a.BLEND_MODES.NORMAL,this.smoothProperty="imageSmoothingEnabled",this.context.imageSmoothingEnabled||(this.context.webkitImageSmoothingEnabled?this.smoothProperty="webkitImageSmoothingEnabled":this.context.mozImageSmoothingEnabled?this.smoothProperty="mozImageSmoothingEnabled":this.context.oImageSmoothingEnabled?this.smoothProperty="oImageSmoothingEnabled":this.context.msImageSmoothingEnabled&&(this.smoothProperty="msImageSmoothingEnabled")),this.initPlugins(),this._mapBlendModes(),this._tempDisplayObjectParent={worldTransform:new s.Matrix,worldAlpha:1},this.resize(t,e)}var i=t("../SystemRenderer"),n=t("./utils/CanvasMaskManager"),o=t("../../utils"),s=t("../../math"),a=t("../../const");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,o.pluginTarget.mixin(r),r.prototype.render=function(t){var e=t.parent;this._lastObjectRendered=t,t.parent=this._tempDisplayObjectParent,t.updateTransform(),t.parent=e,this.context.setTransform(1,0,0,1,0,0),this.context.globalAlpha=1,this.currentBlendMode=a.BLEND_MODES.NORMAL,this.context.globalCompositeOperation=this.blendModes[a.BLEND_MODES.NORMAL],navigator.isCocoonJS&&this.view.screencanvas&&(this.context.fillStyle="black",this.context.clear()),this.clearBeforeRender&&(this.transparent?this.context.clearRect(0,0,this.width,this.height):(this.context.fillStyle=this._backgroundColorString,this.context.fillRect(0,0,this.width,this.height))),this.renderDisplayObject(t,this.context)},r.prototype.destroy=function(t){this.destroyPlugins(),i.prototype.destroy.call(this,t),this.context=null,this.refresh=!0,this.maskManager.destroy(),this.maskManager=null,this.roundPixels=!1,this.currentScaleMode=0,this.currentBlendMode=0,this.smoothProperty=null},r.prototype.renderDisplayObject=function(t,e){var r=this.context;this.context=e,t.renderCanvas(this),this.context=r},r.prototype._mapBlendModes=function(){this.blendModes||(this.blendModes={},o.canUseNewCanvasBlendModes()?(this.blendModes[a.BLEND_MODES.NORMAL]="source-over",this.blendModes[a.BLEND_MODES.ADD]="lighter",this.blendModes[a.BLEND_MODES.MULTIPLY]="multiply",this.blendModes[a.BLEND_MODES.SCREEN]="screen",this.blendModes[a.BLEND_MODES.OVERLAY]="overlay",this.blendModes[a.BLEND_MODES.DARKEN]="darken",this.blendModes[a.BLEND_MODES.LIGHTEN]="lighten",this.blendModes[a.BLEND_MODES.COLOR_DODGE]="color-dodge",this.blendModes[a.BLEND_MODES.COLOR_BURN]="color-burn",this.blendModes[a.BLEND_MODES.HARD_LIGHT]="hard-light",this.blendModes[a.BLEND_MODES.SOFT_LIGHT]="soft-light",this.blendModes[a.BLEND_MODES.DIFFERENCE]="difference",this.blendModes[a.BLEND_MODES.EXCLUSION]="exclusion",this.blendModes[a.BLEND_MODES.HUE]="hue",this.blendModes[a.BLEND_MODES.SATURATION]="saturation",this.blendModes[a.BLEND_MODES.COLOR]="color",this.blendModes[a.BLEND_MODES.LUMINOSITY]="luminosity"):(this.blendModes[a.BLEND_MODES.NORMAL]="source-over",this.blendModes[a.BLEND_MODES.ADD]="lighter",this.blendModes[a.BLEND_MODES.MULTIPLY]="source-over",this.blendModes[a.BLEND_MODES.SCREEN]="source-over",this.blendModes[a.BLEND_MODES.OVERLAY]="source-over",this.blendModes[a.BLEND_MODES.DARKEN]="source-over",this.blendModes[a.BLEND_MODES.LIGHTEN]="source-over",this.blendModes[a.BLEND_MODES.COLOR_DODGE]="source-over",this.blendModes[a.BLEND_MODES.COLOR_BURN]="source-over",this.blendModes[a.BLEND_MODES.HARD_LIGHT]="source-over",this.blendModes[a.BLEND_MODES.SOFT_LIGHT]="source-over",this.blendModes[a.BLEND_MODES.DIFFERENCE]="source-over",this.blendModes[a.BLEND_MODES.EXCLUSION]="source-over",this.blendModes[a.BLEND_MODES.HUE]="source-over",this.blendModes[a.BLEND_MODES.SATURATION]="source-over",this.blendModes[a.BLEND_MODES.COLOR]="source-over",this.blendModes[a.BLEND_MODES.LUMINOSITY]="source-over"))}},{"../../const":12,"../../math":22,"../../utils":67,"../SystemRenderer":32,"./utils/CanvasMaskManager":36}],34:[function(t,e){function r(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.canvas.width=t,this.canvas.height=e}r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{width:{get:function(){return this.canvas.width},set:function(t){this.canvas.width=t}},height:{get:function(){return this.canvas.height},set:function(t){this.canvas.height=t}}}),r.prototype.clear=function(){this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.canvas.width,this.canvas.height)},r.prototype.resize=function(t,e){this.canvas.width=t,this.canvas.height=e},r.prototype.destroy=function(){this.context=null,this.canvas=null}},{}],35:[function(t,e){var r=t("../../../const"),i=e.exports={};i.renderGraphics=function(t,e){var i=t.worldAlpha;t.dirty&&(this.updateGraphicsTint(t),t.dirty=!1);for(var n=0;nC?C:A,e.beginPath(),e.moveTo(_,E+A),e.lineTo(_,E+S-A),e.quadraticCurveTo(_,E+S,_+A,E+S),e.lineTo(_+w-A,E+S),e.quadraticCurveTo(_+w,E+S,_+w,E+S-A),e.lineTo(_+w,E+A),e.quadraticCurveTo(_+w,E,_+w-A,E),e.lineTo(_+A,E),e.quadraticCurveTo(_,E,_,E+A),e.closePath(),(o.fillColor||0===o.fillColor)&&(e.globalAlpha=o.fillAlpha*i,e.fillStyle="#"+("00000"+(0|a).toString(16)).substr(-6),e.fill()),o.lineWidth&&(e.globalAlpha=o.lineAlpha*i,e.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),e.stroke())}}},i.renderGraphicsMask=function(t,e){var i=t.graphicsData.length;if(0!==i){e.beginPath();for(var n=0;i>n;n++){var o=t.graphicsData[n],s=o.shape;if(o.type===r.SHAPES.POLY){var a=s.points;e.moveTo(a[0],a[1]);for(var h=1;hS?S:w,e.moveTo(b,T+w),e.lineTo(b,T+E-w),e.quadraticCurveTo(b,T+E,b+w,T+E),e.lineTo(b+_-w,T+E),e.quadraticCurveTo(b+_,T+E,b+_,T+E-w),e.lineTo(b+_,T+w),e.quadraticCurveTo(b+_,T,b+_-w,T),e.lineTo(b+w,T),e.quadraticCurveTo(b,T,b,T+w),e.closePath()}}}},i.updateGraphicsTint=function(t){if(16777215!==t.tint)for(var e=(t.tint>>16&255)/255,r=(t.tint>>8&255)/255,i=(255&t.tint)/255,n=0;n>16&255)/255*e*255<<16)+((s>>8&255)/255*r*255<<8)+(255&s)/255*i*255,o._lineTint=((a>>16&255)/255*e*255<<16)+((a>>8&255)/255*r*255<<8)+(255&a)/255*i*255}}},{"../../../const":12}],36:[function(t,e){function r(){}var i=t("./CanvasGraphics");r.prototype.constructor=r,e.exports=r,r.prototype.pushMask=function(t,e){e.context.save();var r=t.alpha,n=t.worldTransform,o=e.resolution;e.context.setTransform(n.a*o,n.b*o,n.c*o,n.d*o,n.tx*o,n.ty*o),t.texture||(i.renderGraphicsMask(t,e.context),e.context.clip()),t.worldAlpha=r},r.prototype.popMask=function(t){t.context.restore()}},{"./CanvasGraphics":35}],37:[function(t,e){var r=t("../../../utils"),i=e.exports={};i.getTintedTexture=function(t,e){var r=t.texture;e=i.roundColor(e);var n="#"+("00000"+(0|e).toString(16)).substr(-6);if(r.tintCache=r.tintCache||{},r.tintCache[n])return r.tintCache[n];var o=i.canvas||document.createElement("canvas");if(i.tintMethod(r,e,o),i.convertTintToImage){var s=new Image;s.src=o.toDataURL(),r.tintCache[n]=s}else r.tintCache[n]=o,i.canvas=null;return o},i.tintWithMultiply=function(t,e,r){var i=r.getContext("2d"),n=t.crop;r.width=n.width,r.height=n.height,i.fillStyle="#"+("00000"+(0|e).toString(16)).substr(-6),i.fillRect(0,0,n.width,n.height),i.globalCompositeOperation="multiply",i.drawImage(t.baseTexture.source,n.x,n.y,n.width,n.height,0,0,n.width,n.height),i.globalCompositeOperation="destination-atop",i.drawImage(t.baseTexture.source,n.x,n.y,n.width,n.height,0,0,n.width,n.height)},i.tintWithOverlay=function(t,e,r){var i=r.getContext("2d"),n=t.crop;r.width=n.width,r.height=n.height,i.globalCompositeOperation="copy",i.fillStyle="#"+("00000"+(0|e).toString(16)).substr(-6),i.fillRect(0,0,n.width,n.height),i.globalCompositeOperation="destination-atop",i.drawImage(t.baseTexture.source,n.x,n.y,n.width,n.height,0,0,n.width,n.height)},i.tintWithPerPixel=function(t,e,i){var n=i.getContext("2d"),o=t.crop;i.width=o.width,i.height=o.height,n.globalCompositeOperation="copy",n.drawImage(t.baseTexture.source,o.x,o.y,o.width,o.height,0,0,o.width,o.height);for(var s=r.hex2rgb(e),a=s[0],h=s[1],l=s[2],u=n.getImageData(0,0,o.width,o.height),c=u.data,d=0;de;++e)this.shaders[e].syncUniform(t)}},{"../shaders/TextureShader":51}],40:[function(t,e){function r(){i.call(this,"\nprecision mediump float;\n\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform mat3 projectionMatrix;\nuniform vec2 resolution;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvarying vec2 vResolution;\n\n//texcoords computed in vertex step\n//to avoid dependent texture reads\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\n\nvoid texcoords(vec2 fragCoord, vec2 resolution,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n vec2 inverseVP = 1.0 / resolution.xy;\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n vResolution = resolution;\n\n //compute the texture coords and send them to varyings\n texcoords(aTextureCoord * resolution, resolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n",'precision lowp float;\n\n\n/**\nBasic FXAA implementation based on the code on geeks3d.com with the\nmodification that the texture2DLod stuff was removed since it\'s\nunsupported by WebGL.\n\n--\n\nFrom:\nhttps://github.com/mitsuhiko/webgl-meincraft\n\nCopyright (c) 2011 by Armin Ronacher.\n\nSome rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FXAA_REDUCE_MIN\n #define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n #define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n #define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 resolution,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n mediump vec2 inverseVP = vec2(1.0 / resolution.x, 1.0 / resolution.y);\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vResolution;\n\n//texcoords computed in vertex step\n//to avoid dependent texture reads\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nuniform sampler2D uSampler;\n\n\nvoid main(void){\n\n gl_FragColor = fxaa(uSampler, vTextureCoord * vResolution, vResolution, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n}\n',{resolution:{type:"v2",value:{x:1,y:1}}}) -}var i=t("./AbstractFilter");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager,n=this.getShader(t);i.applyFilter(n,e,r)}},{"./AbstractFilter":39}],41:[function(t,e){function r(t){var e=new n.Matrix;i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\n\nvoid main(void)\n{\n // check clip! this will stop the mask bleeding out from the edges\n vec2 text = abs( vMaskCoord - 0.5 );\n text = step(0.5, text);\n float clip = 1.0 - max(text.y, text.x);\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, vMaskCoord);\n original *= (masky.r * masky.a * clip);\n gl_FragColor = original;\n}\n",{mask:{type:"sampler2D",value:t._texture},otherMatrix:{type:"mat3",value:e.toArray(!0)}}),this.maskSprite=t,this.maskMatrix=e}var i=t("./AbstractFilter"),n=t("../../../math");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager;this.uniforms.mask.value=this.maskSprite._texture,i.calculateMappedMatrix(e.frame,this.maskSprite,this.maskMatrix),this.uniforms.otherMatrix.value=this.maskMatrix.toArray(!0);var n=this.getShader(t);i.applyFilter(n,e,r)},Object.defineProperties(r.prototype,{map:{get:function(){return this.uniforms.mask.value},set:function(t){this.uniforms.mask.value=t}},offset:{get:function(){return this.uniforms.offset.value},set:function(t){this.uniforms.offset.value=t}}})},{"../../../math":22,"./AbstractFilter":39}],42:[function(t,e){function r(t){i.call(this,t),this.currentBlendMode=99999}var i=t("./WebGLManager");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.setBlendMode=function(t){if(this.currentBlendMode===t)return!1;this.currentBlendMode=t;var e=this.renderer.blendModes[this.currentBlendMode];return this.renderer.gl.blendFunc(e[0],e[1]),!0}},{"./WebGLManager":47}],43:[function(t,e){function r(t){i.call(this,t),this.filterStack=[],this.filterStack.push({renderTarget:t.currentRenderTarget,filter:[],bounds:null}),this.texturePool=[],this.textureSize=new a.Rectangle(0,0,t.width,t.height),this.currentFrame=null}var i=t("./WebGLManager"),n=t("../utils/RenderTarget"),o=t("../../../const"),s=t("../utils/Quad"),a=t("../../../math");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.onContextChange=function(){this.texturePool.length=0;var t=this.renderer.gl;this.quad=new s(t)},r.prototype.setFilterStack=function(t){this.filterStack=t},r.prototype.pushFilter=function(t,e){var r=t.filterArea||t.getBounds();r.x=0|r.x,r.y=0|r.y,r.width=0|r.width,r.height=0|r.height;var i=e[0].padding;if(r.x-=i,r.y-=i,r.width+=2*i,r.height+=2*i,this.renderer.currentRenderTarget.transform){var n=this.renderer.currentRenderTarget.transform;r.x+=n.tx,r.y+=n.ty,this.capFilterArea(r),r.x-=n.tx,r.y-=n.ty}else this.capFilterArea(r);this.currentFrame=r;var o=this.getRenderTarget();this.renderer.setRenderTarget(o),o.clear(),this.filterStack.push({renderTarget:o,filter:e})},r.prototype.popFilter=function(){var t=this.filterStack.pop(),e=this.filterStack[this.filterStack.length-1],r=t.renderTarget,i=e.renderTarget,n=this.renderer.gl;this.currentFrame=r.frame,this.quad.map(this.textureSize,r.frame),n.bindBuffer(n.ARRAY_BUFFER,this.quad.vertexBuffer),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this.quad.indexBuffer);var o=t.filter;if(1===o.length)o[0].uniforms.dimensions&&(o[0].uniforms.dimensions.value[0]=this.renderer.width,o[0].uniforms.dimensions.value[1]=this.renderer.height,o[0].uniforms.dimensions.value[2]=this.quad.vertices[0],o[0].uniforms.dimensions.value[3]=this.quad.vertices[5]),o[0].applyFilter(this.renderer,r,i),this.returnRenderTarget(r);else{for(var s=r,a=this.getRenderTarget(!0),h=0;hthis.textureSize.width&&(t.width=this.textureSize.width-t.x),t.y+t.height>this.textureSize.height&&(t.height=this.textureSize.height-t.y)},r.prototype.resize=function(t,e){this.textureSize.width=t,this.textureSize.height=e;for(var r=0;re;++e)t._array[2*e]=o[e].x,t._array[2*e+1]=o[e].y;s.uniform2fv(n,t._array);break;case"v3v":for(t._array||(t._array=new Float32Array(3*o.length)),e=0,r=o.length;r>e;++e)t._array[3*e]=o[e].x,t._array[3*e+1]=o[e].y,t._array[3*e+2]=o[e].z;s.uniform3fv(n,t._array);break;case"v4v":for(t._array||(t._array=new Float32Array(4*o.length)),e=0,r=o.length;r>e;++e)t._array[4*e]=o[e].x,t._array[4*e+1]=o[e].y,t._array[4*e+2]=o[e].z,t._array[4*e+3]=o[e].w;s.uniform4fv(n,t._array);break;case"t":case"sampler2D":if(!t.value||!t.value.baseTexture.hasLoaded)break;s.activeTexture(s["TEXTURE"+this.textureCount]);var a=t.value.baseTexture._glTextures[s.id];a||this.initSampler2D(t),s.bindTexture(s.TEXTURE_2D,a),s.uniform1i(t._location,this.textureCount),this.textureCount++;break;default:window.console.warn("Pixi.js Shader Warning: Unknown uniform type: "+t.type)}},r.prototype.syncUniforms=function(){this.textureCount=1;for(var t in this.uniforms)this.syncUniform(this.uniforms[t])},r.prototype.initSampler2D=function(t){var e=this.gl,r=t.value.baseTexture;if(r.hasLoaded)if(t.textureData){var i=t.textureData;r._glTextures[e.id]=e.createTexture(),e.bindTexture(e.TEXTURE_2D,r._glTextures[e.id]),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultipliedAlpha),e.texImage2D(e.TEXTURE_2D,0,i.luminance?e.LUMINANCE:e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,i.magFilter?i.magFilter:e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,i.wrapS?i.wrapS:e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,i.wrapS?i.wrapS:e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,i.wrapT?i.wrapT:e.CLAMP_TO_EDGE)}else this.shaderManager.renderer.updateTexture(r)},r.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.gl=null,this.uniforms=null,this.attributes=null,this.vertexSrc=null,this.fragmentSrc=null},r.prototype._glCompile=function(t,e){var r=this.gl.createShader(t);return this.gl.shaderSource(r,e),this.gl.compileShader(r),this.gl.getShaderParameter(r,this.gl.COMPILE_STATUS)?r:(window.console.log(this.gl.getShaderInfoLog(r)),null)}},{"../../../const":12,"../../../utils":67}],51:[function(t,e){function r(t,e,n,o,s){var a={uSampler:{type:"sampler2D",value:0},projectionMatrix:{type:"mat3",value:new Float32Array(1,0,0,0,1,0,0,0,1)}};if(o)for(var h in o)a[h]=o[h];var l={aVertexPosition:0,aTextureCoord:0,aColor:0};if(s)for(var u in s)l[u]=s[u];e=e||r.defaultVertexSrc,n=n||r.defaultFragmentSrc,i.call(this,t,e,n,a,l)}var i=t("./Shader");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.defaultVertexSrc=["precision lowp float;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform mat3 projectionMatrix;","varying vec2 vTextureCoord;","varying vec4 vColor;","void main(void){"," gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = vec4(aColor.rgb * aColor.a, aColor.a);","}"].join("\n"),r.defaultFragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void){"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"].join("\n")},{"./Shader":50}],52:[function(t,e){function r(t){i.call(this,t)}var i=t("../managers/WebGLManager");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.start=function(){},r.prototype.stop=function(){this.flush()},r.prototype.flush=function(){},r.prototype.render=function(){}},{"../managers/WebGLManager":47}],53:[function(t,e){function r(t){this.gl=t,this.vertices=new Float32Array([0,0,200,0,200,200,0,200]),this.uvs=new Float32Array([0,0,1,0,1,1,0,1]),this.colors=new Float32Array([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.indices=new Uint16Array([0,1,2,0,3,2]),this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,128,t.DYNAMIC_DRAW),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW),this.upload()}r.prototype.constructor=r,r.prototype.map=function(t,e){var r=0,i=0;this.uvs[0]=r,this.uvs[1]=i,this.uvs[2]=r+e.width/t.width,this.uvs[3]=i,this.uvs[4]=r+e.width/t.width,this.uvs[5]=i+e.height/t.height,this.uvs[6]=r,this.uvs[7]=i+e.height/t.height,r=e.x,i=e.y,this.vertices[0]=r,this.vertices[1]=i,this.vertices[2]=r+e.width,this.vertices[3]=i,this.vertices[4]=r+e.width,this.vertices[5]=i+e.height,this.vertices[6]=r,this.vertices[7]=i+e.height,this.upload()},r.prototype.upload=function(){var t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferSubData(t.ARRAY_BUFFER,0,this.vertices),t.bufferSubData(t.ARRAY_BUFFER,32,this.uvs),t.bufferSubData(t.ARRAY_BUFFER,64,this.colors)},e.exports=r},{}],54:[function(t,e){var r=t("../../../math"),i=t("../../../utils"),n=t("../../../const"),o=t("./StencilMaskStack"),s=function(t,e,s,a,h,l){if(this.gl=t,this.frameBuffer=null,this.texture=null,this.size=new r.Rectangle(0,0,1,1),this.resolution=h||n.RESOLUTION,this.projectionMatrix=new r.Matrix,this.transform=null,this.frame=null,this.stencilBuffer=null,this.stencilMaskStack=new o,this.filterStack=[{renderTarget:this,filter:[],bounds:this.size}],this.scaleMode=a||n.SCALE_MODES.DEFAULT,this.root=l,!this.root){this.frameBuffer=t.createFramebuffer(),this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,a===n.SCALE_MODES.LINEAR?t.LINEAR:t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,a===n.SCALE_MODES.LINEAR?t.LINEAR:t.NEAREST);var u=i.isPowerOfTwo(e,s);u?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT)):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)),t.bindFramebuffer(t.FRAMEBUFFER,this.frameBuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.texture,0)}this.resize(e,s)};s.prototype.constructor=s,e.exports=s,s.prototype.clear=function(t){var e=this.gl;t&&e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},s.prototype.attachStencilBuffer=function(){if(!this.stencilBuffer&&!this.root){var t=this.gl;this.stencilBuffer=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,this.stencilBuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,this.stencilBuffer),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,this.size.width*this.resolution,this.size.height*this.resolution)}},s.prototype.activate=function(){var t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,this.frameBuffer);var e=this.frame||this.size;this.calculateProjection(e),this.transform&&this.projectionMatrix.append(this.transform),t.viewport(0,0,e.width*this.resolution,e.height*this.resolution)},s.prototype.calculateProjection=function(t){var e=this.projectionMatrix;e.identity(),this.root?(e.a=1/t.width*2,e.d=-1/t.height*2,e.tx=-1-t.x*e.a,e.ty=1-t.y*e.d):(e.a=1/t.width*2,e.d=1/t.height*2,e.tx=-1-t.x*e.a,e.ty=-1-t.y*e.d)},s.prototype.resize=function(t,e){if(t=0|t,e=0|e,this.size.width!==t||this.size.height!==e){if(this.size.width=t,this.size.height=e,!this.root){var r=this.gl;r.bindTexture(r.TEXTURE_2D,this.texture),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t*this.resolution,e*this.resolution,0,r.RGBA,r.UNSIGNED_BYTE,null),this.stencilBuffer&&(r.bindRenderbuffer(r.RENDERBUFFER,this.stencilBuffer),r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_STENCIL,t*this.resolution,e*this.resolution))}var i=this.frame||this.size;this.calculateProjection(i)}},s.prototype.destroy=function(){var t=this.gl;t.deleteFramebuffer(this.frameBuffer),t.deleteTexture(this.texture),this.frameBuffer=null,this.texture=null}},{"../../../const":12,"../../../math":22,"../../../utils":67,"./StencilMaskStack":55}],55:[function(t,e){function r(){this.stencilStack=[],this.reverse=!0,this.count=0}r.prototype.constructor=r,e.exports=r},{}],56:[function(t,e){function r(t){o.call(this),this.anchor=new i.Point,this._texture=null,this._width=0,this._height=0,this.tint=16777215,this.blendMode=h.BLEND_MODES.NORMAL,this.shader=null,this.cachedTint=16777215,this.texture=t||n.EMPTY}var i=t("../math"),n=t("../textures/Texture"),o=t("../display/Container"),s=t("../renderers/canvas/utils/CanvasTinter"),a=t("../utils"),h=t("../const"),l=new i.Point;r.prototype.destroy=function(t,e){o.prototype.destroy.call(this),this.anchor=null,t&&this._texture.destroy(e),this._texture=null,this.shader=null},r.prototype=Object.create(o.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{width:{get:function(){return this.scale.x*this.texture._frame.width},set:function(t){this.scale.x=t/this.texture._frame.width,this._width=t}},height:{get:function(){return this.scale.y*this.texture._frame.height},set:function(t){this.scale.y=t/this.texture._frame.height,this._height=t}},texture:{get:function(){return this._texture},set:function(t){this._texture!==t&&(this._texture=t,this.cachedTint=16777215,t&&(t.baseTexture.hasLoaded?this._onTextureUpdate():t.once("update",this._onTextureUpdate.bind(this))))}}}),r.prototype._onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},r.prototype._renderWebGL=function(t){t.setObjectRenderer(t.plugins.sprite),t.plugins.sprite.render(this)},r.prototype.getBounds=function(t){if(!this._currentBounds){var e,r,i,n,o=this._texture._frame.width,s=this._texture._frame.height,a=o*(1-this.anchor.x),h=o*-this.anchor.x,l=s*(1-this.anchor.y),u=s*-this.anchor.y,c=t||this.worldTransform,d=c.a,p=c.b,f=c.c,g=c.d,v=c.tx,m=c.ty;if(0===p&&0===f)0>d&&(d*=-1),0>g&&(g*=-1),e=d*h+v,r=d*a+v,i=g*u+m,n=g*l+m;else{var y=d*h+f*u+v,x=g*u+p*h+m,b=d*a+f*u+v,T=g*u+p*a+m,_=d*a+f*l+v,E=g*l+p*a+m,w=d*h+f*l+v,S=g*l+p*h+m;e=y,e=e>b?b:e,e=e>_?_:e,e=e>w?w:e,i=x,i=i>T?T:i,i=i>E?E:i,i=i>S?S:i,r=y,r=b>r?b:r,r=_>r?_:r,r=w>r?w:r,n=x,n=T>n?T:n,n=E>n?E:n,n=S>n?S:n}var A=this._bounds;A.x=e,A.width=r-e,A.y=i,A.height=n-i,this._currentBounds=A}return this._currentBounds},r.prototype.getLocalBounds=function(){return this._bounds.x=-this._texture._frame.width*this.anchor.x,this._bounds.y=-this._texture._frame.height*this.anchor.y,this._bounds.width=this._texture._frame.width,this._bounds.height=this._texture._frame.height,this._bounds},r.prototype.containsPoint=function(t){this.worldTransform.applyInverse(t,l);var e,r=this._texture._frame.width,i=this._texture._frame.height,n=-r*this.anchor.x;return l.x>n&&l.xe&&l.yn;n+=6,s+=4)this.indices[n+0]=s+0,this.indices[n+1]=s+1,this.indices[n+2]=s+2,this.indices[n+3]=s+0,this.indices[n+4]=s+2,this.indices[n+5]=s+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.shader=null +}var i=t("./AbstractFilter");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager,n=this.getShader(t);i.applyFilter(n,e,r)}},{"./AbstractFilter":39}],41:[function(t,e){function r(t){var e=new n.Matrix;i.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\n\nvoid main(void)\n{\n // check clip! this will stop the mask bleeding out from the edges\n vec2 text = abs( vMaskCoord - 0.5 );\n text = step(0.5, text);\n float clip = 1.0 - max(text.y, text.x);\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, vMaskCoord);\n original *= (masky.r * masky.a * clip);\n gl_FragColor = original;\n}\n",{mask:{type:"sampler2D",value:t._texture},otherMatrix:{type:"mat3",value:e.toArray(!0)}}),this.maskSprite=t,this.maskMatrix=e}var i=t("./AbstractFilter"),n=t("../../../math");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager;this.uniforms.mask.value=this.maskSprite._texture,i.calculateMappedMatrix(e.frame,this.maskSprite,this.maskMatrix),this.uniforms.otherMatrix.value=this.maskMatrix.toArray(!0);var n=this.getShader(t);i.applyFilter(n,e,r)},Object.defineProperties(r.prototype,{map:{get:function(){return this.uniforms.mask.value},set:function(t){this.uniforms.mask.value=t}},offset:{get:function(){return this.uniforms.offset.value},set:function(t){this.uniforms.offset.value=t}}})},{"../../../math":22,"./AbstractFilter":39}],42:[function(t,e){function r(t){i.call(this,t),this.currentBlendMode=99999}var i=t("./WebGLManager");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.setBlendMode=function(t){if(this.currentBlendMode===t)return!1;this.currentBlendMode=t;var e=this.renderer.blendModes[this.currentBlendMode];return this.renderer.gl.blendFunc(e[0],e[1]),!0}},{"./WebGLManager":47}],43:[function(t,e){function r(t){i.call(this,t),this.filterStack=[],this.filterStack.push({renderTarget:t.currentRenderTarget,filter:[],bounds:null}),this.texturePool=[],this.textureSize=new a.Rectangle(0,0,t.width,t.height),this.currentFrame=null}var i=t("./WebGLManager"),n=t("../utils/RenderTarget"),o=t("../../../const"),s=t("../utils/Quad"),a=t("../../../math");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.onContextChange=function(){this.texturePool.length=0;var t=this.renderer.gl;this.quad=new s(t)},r.prototype.setFilterStack=function(t){this.filterStack=t},r.prototype.pushFilter=function(t,e){var r=t.filterArea||t.getBounds();r.x=0|r.x,r.y=0|r.y,r.width=0|r.width,r.height=0|r.height;var i=0|e[0].padding;if(r.x-=i,r.y-=i,r.width+=2*i,r.height+=2*i,this.renderer.currentRenderTarget.transform){var n=this.renderer.currentRenderTarget.transform;r.x+=n.tx,r.y+=n.ty,this.capFilterArea(r),r.x-=n.tx,r.y-=n.ty}else this.capFilterArea(r);this.currentFrame=r;var o=this.getRenderTarget();this.renderer.setRenderTarget(o),o.clear(),this.filterStack.push({renderTarget:o,filter:e})},r.prototype.popFilter=function(){var t=this.filterStack.pop(),e=this.filterStack[this.filterStack.length-1],r=t.renderTarget,i=e.renderTarget,n=this.renderer.gl;this.currentFrame=r.frame,this.quad.map(this.textureSize,r.frame),n.bindBuffer(n.ARRAY_BUFFER,this.quad.vertexBuffer),n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,this.quad.indexBuffer);var o=t.filter;if(n.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aVertexPosition,2,n.FLOAT,!1,0,0),n.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aTextureCoord,2,n.FLOAT,!1,0,32),n.vertexAttribPointer(this.renderer.shaderManager.defaultShader.attributes.aColor,4,n.FLOAT,!1,0,64),1===o.length)o[0].uniforms.dimensions&&(o[0].uniforms.dimensions.value[0]=this.renderer.width,o[0].uniforms.dimensions.value[1]=this.renderer.height,o[0].uniforms.dimensions.value[2]=this.quad.vertices[0],o[0].uniforms.dimensions.value[3]=this.quad.vertices[5]),o[0].applyFilter(this.renderer,r,i),this.returnRenderTarget(r);else{for(var s=r,a=this.getRenderTarget(!0),h=0;hthis.textureSize.width&&(t.width=this.textureSize.width-t.x),t.y+t.height>this.textureSize.height&&(t.height=this.textureSize.height-t.y)},r.prototype.resize=function(t,e){this.textureSize.width=t,this.textureSize.height=e;for(var r=0;re;++e)t._array[2*e]=o[e].x,t._array[2*e+1]=o[e].y;s.uniform2fv(n,t._array);break;case"v3v":for(t._array||(t._array=new Float32Array(3*o.length)),e=0,r=o.length;r>e;++e)t._array[3*e]=o[e].x,t._array[3*e+1]=o[e].y,t._array[3*e+2]=o[e].z;s.uniform3fv(n,t._array);break;case"v4v":for(t._array||(t._array=new Float32Array(4*o.length)),e=0,r=o.length;r>e;++e)t._array[4*e]=o[e].x,t._array[4*e+1]=o[e].y,t._array[4*e+2]=o[e].z,t._array[4*e+3]=o[e].w;s.uniform4fv(n,t._array);break;case"t":case"sampler2D":if(!t.value||!t.value.baseTexture.hasLoaded)break;s.activeTexture(s["TEXTURE"+this.textureCount]);var a=t.value.baseTexture._glTextures[s.id];a||this.initSampler2D(t),s.bindTexture(s.TEXTURE_2D,a),s.uniform1i(t._location,this.textureCount),this.textureCount++;break;default:window.console.warn("Pixi.js Shader Warning: Unknown uniform type: "+t.type)}},r.prototype.syncUniforms=function(){this.textureCount=1;for(var t in this.uniforms)this.syncUniform(this.uniforms[t])},r.prototype.initSampler2D=function(t){var e=this.gl,r=t.value.baseTexture;if(r.hasLoaded)if(t.textureData){var i=t.textureData;r._glTextures[e.id]=e.createTexture(),e.bindTexture(e.TEXTURE_2D,r._glTextures[e.id]),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultipliedAlpha),e.texImage2D(e.TEXTURE_2D,0,i.luminance?e.LUMINANCE:e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,i.magFilter?i.magFilter:e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,i.wrapS?i.wrapS:e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,i.wrapS?i.wrapS:e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,i.wrapT?i.wrapT:e.CLAMP_TO_EDGE)}else this.shaderManager.renderer.updateTexture(r)},r.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.gl=null,this.uniforms=null,this.attributes=null,this.vertexSrc=null,this.fragmentSrc=null},r.prototype._glCompile=function(t,e){var r=this.gl.createShader(t);return this.gl.shaderSource(r,e),this.gl.compileShader(r),this.gl.getShaderParameter(r,this.gl.COMPILE_STATUS)?r:(window.console.log(this.gl.getShaderInfoLog(r)),null)}},{"../../../const":12,"../../../utils":67}],51:[function(t,e){function r(t,e,n,o,s){var a={uSampler:{type:"sampler2D",value:0},projectionMatrix:{type:"mat3",value:new Float32Array(1,0,0,0,1,0,0,0,1)}};if(o)for(var h in o)a[h]=o[h];var l={aVertexPosition:0,aTextureCoord:0,aColor:0};if(s)for(var u in s)l[u]=s[u];e=e||r.defaultVertexSrc,n=n||r.defaultFragmentSrc,i.call(this,t,e,n,a,l)}var i=t("./Shader");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.defaultVertexSrc=["precision lowp float;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform mat3 projectionMatrix;","varying vec2 vTextureCoord;","varying vec4 vColor;","void main(void){"," gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = vec4(aColor.rgb * aColor.a, aColor.a);","}"].join("\n"),r.defaultFragmentSrc=["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void){"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"].join("\n")},{"./Shader":50}],52:[function(t,e){function r(t){i.call(this,t)}var i=t("../managers/WebGLManager");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.start=function(){},r.prototype.stop=function(){this.flush()},r.prototype.flush=function(){},r.prototype.render=function(){}},{"../managers/WebGLManager":47}],53:[function(t,e){function r(t){this.gl=t,this.vertices=new Float32Array([0,0,200,0,200,200,0,200]),this.uvs=new Float32Array([0,0,1,0,1,1,0,1]),this.colors=new Float32Array([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.indices=new Uint16Array([0,1,2,0,3,2]),this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,128,t.DYNAMIC_DRAW),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW),this.upload()}r.prototype.constructor=r,r.prototype.map=function(t,e){var r=0,i=0;this.uvs[0]=r,this.uvs[1]=i,this.uvs[2]=r+e.width/t.width,this.uvs[3]=i,this.uvs[4]=r+e.width/t.width,this.uvs[5]=i+e.height/t.height,this.uvs[6]=r,this.uvs[7]=i+e.height/t.height,r=e.x,i=e.y,this.vertices[0]=r,this.vertices[1]=i,this.vertices[2]=r+e.width,this.vertices[3]=i,this.vertices[4]=r+e.width,this.vertices[5]=i+e.height,this.vertices[6]=r,this.vertices[7]=i+e.height,this.upload()},r.prototype.upload=function(){var t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferSubData(t.ARRAY_BUFFER,0,this.vertices),t.bufferSubData(t.ARRAY_BUFFER,32,this.uvs),t.bufferSubData(t.ARRAY_BUFFER,64,this.colors)},e.exports=r},{}],54:[function(t,e){var r=t("../../../math"),i=t("../../../utils"),n=t("../../../const"),o=t("./StencilMaskStack"),s=function(t,e,s,a,h,l){if(this.gl=t,this.frameBuffer=null,this.texture=null,this.size=new r.Rectangle(0,0,1,1),this.resolution=h||n.RESOLUTION,this.projectionMatrix=new r.Matrix,this.transform=null,this.frame=null,this.stencilBuffer=null,this.stencilMaskStack=new o,this.filterStack=[{renderTarget:this,filter:[],bounds:this.size}],this.scaleMode=a||n.SCALE_MODES.DEFAULT,this.root=l,!this.root){this.frameBuffer=t.createFramebuffer(),this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,a===n.SCALE_MODES.LINEAR?t.LINEAR:t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,a===n.SCALE_MODES.LINEAR?t.LINEAR:t.NEAREST);var u=i.isPowerOfTwo(e,s);u?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT)):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)),t.bindFramebuffer(t.FRAMEBUFFER,this.frameBuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.texture,0)}this.resize(e,s)};s.prototype.constructor=s,e.exports=s,s.prototype.clear=function(t){var e=this.gl;t&&e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)},s.prototype.attachStencilBuffer=function(){if(!this.stencilBuffer&&!this.root){var t=this.gl;this.stencilBuffer=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,this.stencilBuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,this.stencilBuffer),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,this.size.width*this.resolution,this.size.height*this.resolution)}},s.prototype.activate=function(){var t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,this.frameBuffer);var e=this.frame||this.size;this.calculateProjection(e),this.transform&&this.projectionMatrix.append(this.transform),t.viewport(0,0,e.width*this.resolution,e.height*this.resolution)},s.prototype.calculateProjection=function(t){var e=this.projectionMatrix;e.identity(),this.root?(e.a=1/t.width*2,e.d=-1/t.height*2,e.tx=-1-t.x*e.a,e.ty=1-t.y*e.d):(e.a=1/t.width*2,e.d=1/t.height*2,e.tx=-1-t.x*e.a,e.ty=-1-t.y*e.d)},s.prototype.resize=function(t,e){if(t=0|t,e=0|e,this.size.width!==t||this.size.height!==e){if(this.size.width=t,this.size.height=e,!this.root){var r=this.gl;r.bindTexture(r.TEXTURE_2D,this.texture),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t*this.resolution,e*this.resolution,0,r.RGBA,r.UNSIGNED_BYTE,null),this.stencilBuffer&&(r.bindRenderbuffer(r.RENDERBUFFER,this.stencilBuffer),r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_STENCIL,t*this.resolution,e*this.resolution))}var i=this.frame||this.size;this.calculateProjection(i)}},s.prototype.destroy=function(){var t=this.gl;t.deleteFramebuffer(this.frameBuffer),t.deleteTexture(this.texture),this.frameBuffer=null,this.texture=null}},{"../../../const":12,"../../../math":22,"../../../utils":67,"./StencilMaskStack":55}],55:[function(t,e){function r(){this.stencilStack=[],this.reverse=!0,this.count=0}r.prototype.constructor=r,e.exports=r},{}],56:[function(t,e){function r(t){o.call(this),this.anchor=new i.Point,this._texture=null,this._width=0,this._height=0,this.tint=16777215,this.blendMode=h.BLEND_MODES.NORMAL,this.shader=null,this.cachedTint=16777215,this.texture=t||n.EMPTY}var i=t("../math"),n=t("../textures/Texture"),o=t("../display/Container"),s=t("../renderers/canvas/utils/CanvasTinter"),a=t("../utils"),h=t("../const"),l=new i.Point;r.prototype.destroy=function(t,e){o.prototype.destroy.call(this),this.anchor=null,t&&this._texture.destroy(e),this._texture=null,this.shader=null},r.prototype=Object.create(o.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{width:{get:function(){return this.scale.x*this.texture._frame.width},set:function(t){this.scale.x=t/this.texture._frame.width,this._width=t}},height:{get:function(){return this.scale.y*this.texture._frame.height},set:function(t){this.scale.y=t/this.texture._frame.height,this._height=t}},texture:{get:function(){return this._texture},set:function(t){this._texture!==t&&(this._texture=t,this.cachedTint=16777215,t&&(t.baseTexture.hasLoaded?this._onTextureUpdate():t.once("update",this._onTextureUpdate.bind(this))))}}}),r.prototype._onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height)},r.prototype._renderWebGL=function(t){t.setObjectRenderer(t.plugins.sprite),t.plugins.sprite.render(this)},r.prototype.getBounds=function(t){if(!this._currentBounds){var e,r,i,n,o=this._texture._frame.width,s=this._texture._frame.height,a=o*(1-this.anchor.x),h=o*-this.anchor.x,l=s*(1-this.anchor.y),u=s*-this.anchor.y,c=t||this.worldTransform,d=c.a,p=c.b,f=c.c,g=c.d,v=c.tx,m=c.ty;if(0===p&&0===f)0>d&&(d*=-1),0>g&&(g*=-1),e=d*h+v,r=d*a+v,i=g*u+m,n=g*l+m;else{var y=d*h+f*u+v,x=g*u+p*h+m,b=d*a+f*u+v,T=g*u+p*a+m,_=d*a+f*l+v,E=g*l+p*a+m,w=d*h+f*l+v,S=g*l+p*h+m;e=y,e=e>b?b:e,e=e>_?_:e,e=e>w?w:e,i=x,i=i>T?T:i,i=i>E?E:i,i=i>S?S:i,r=y,r=b>r?b:r,r=_>r?_:r,r=w>r?w:r,n=x,n=T>n?T:n,n=E>n?E:n,n=S>n?S:n}var A=this._bounds;A.x=e,A.width=r-e,A.y=i,A.height=n-i,this._currentBounds=A}return this._currentBounds},r.prototype.getLocalBounds=function(){return this._bounds.x=-this._texture._frame.width*this.anchor.x,this._bounds.y=-this._texture._frame.height*this.anchor.y,this._bounds.width=this._texture._frame.width,this._bounds.height=this._texture._frame.height,this._bounds},r.prototype.containsPoint=function(t){this.worldTransform.applyInverse(t,l);var e,r=this._texture._frame.width,i=this._texture._frame.height,n=-r*this.anchor.x;return l.x>n&&l.xe&&l.yn;n+=6,s+=4)this.indices[n+0]=s+0,this.indices[n+1]=s+1,this.indices[n+2]=s+2,this.indices[n+3]=s+0,this.indices[n+4]=s+2,this.indices[n+5]=s+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.shader=null }var i=t("../../renderers/webgl/utils/ObjectRenderer"),n=(t("../../renderers/webgl/shaders/Shader"),t("../../renderers/webgl/WebGLRenderer")),o=t("../../const");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,n.registerPlugin("sprite",r),r.prototype.onContextChange=function(){var t=this.renderer.gl;this.shader=this.renderer.shaderManager.defaultShader,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices,t.DYNAMIC_DRAW),this.currentBlendMode=99999},r.prototype.render=function(t){var e=t._texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=e.baseTexture);var r=e._uvs;if(r){var i,n,o,s,a=t.anchor.x,h=t.anchor.y;if(e.trim){var l=e.trim;n=l.x-a*l.width,i=n+e.crop.width,s=l.y-h*l.height,o=s+e.crop.height}else i=e._frame.width*(1-a),n=e._frame.width*-a,o=e._frame.height*(1-h),s=e._frame.height*-h;var u=this.currentBatchSize*this.vertByteSize,c=t.worldTransform,d=c.a,p=c.b,f=c.c,g=c.d,v=c.tx,m=c.ty,y=this.colors,x=this.positions;this.renderer.roundPixels?(x[u]=d*n+f*s+v|0,x[u+1]=g*s+p*n+m|0,x[u+5]=d*i+f*s+v|0,x[u+6]=g*s+p*i+m|0,x[u+10]=d*i+f*o+v|0,x[u+11]=g*o+p*i+m|0,x[u+15]=d*n+f*o+v|0,x[u+16]=g*o+p*n+m|0):(x[u]=d*n+f*s+v,x[u+1]=g*s+p*n+m,x[u+5]=d*i+f*s+v,x[u+6]=g*s+p*i+m,x[u+10]=d*i+f*o+v,x[u+11]=g*o+p*i+m,x[u+15]=d*n+f*o+v,x[u+16]=g*o+p*n+m),x[u+2]=r.x0,x[u+3]=r.y0,x[u+7]=r.x1,x[u+8]=r.y1,x[u+12]=r.x2,x[u+13]=r.y2,x[u+17]=r.x3,x[u+18]=r.y3;var b=t.tint;y[u+4]=y[u+9]=y[u+14]=y[u+19]=(b>>16)+(65280&b)+((255&b)<<16)+(255*t.worldAlpha<<24),this.sprites[this.currentBatchSize++]=t}},r.prototype.flush=function(){if(0!==this.currentBatchSize){var t,e=this.renderer.gl;if(this.currentBatchSize>.5*this.size)e.bufferSubData(e.ARRAY_BUFFER,0,this.vertices);else{var r=this.positions.subarray(0,this.currentBatchSize*this.vertByteSize);e.bufferSubData(e.ARRAY_BUFFER,0,r)}for(var i,n,o,s,a=0,h=0,l=null,u=this.renderer.blendModeManager.currentBlendMode,c=null,d=!1,p=!1,f=0,g=this.currentBatchSize;g>f;f++)s=this.sprites[f],i=s._texture.baseTexture,n=s.blendMode,o=s.shader||this.shader,d=u!==n,p=c!==o,(l!==i||d||p)&&(this.renderBatch(l,a,h),h=f,a=0,l=i,d&&(u=n,this.renderer.blendModeManager.setBlendMode(u)),p&&(c=o,t=c.shaders?c.shaders[e.id]:c,t||(t=c.getShader(this.renderer)),this.renderer.shaderManager.setShader(t),t.uniforms.projectionMatrix.value=this.renderer.currentRenderTarget.projectionMatrix.toArray(!0),t.syncUniforms(),e.activeTexture(e.TEXTURE0))),a++;this.renderBatch(l,a,h),this.currentBatchSize=0}},r.prototype.renderBatch=function(t,e,r){if(0!==e){var i=this.renderer.gl;t._glTextures[i.id]?i.bindTexture(i.TEXTURE_2D,t._glTextures[i.id]):this.renderer.updateTexture(t),i.drawElements(i.TRIANGLES,6*e,i.UNSIGNED_SHORT,6*r*2),this.renderer.drawCount++}},r.prototype.start=function(){var t=this.renderer.gl;t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var e=this.vertByteSize;t.vertexAttribPointer(this.shader.attributes.aVertexPosition,2,t.FLOAT,!1,e,0),t.vertexAttribPointer(this.shader.attributes.aTextureCoord,2,t.FLOAT,!1,e,8),t.vertexAttribPointer(this.shader.attributes.aColor,4,t.UNSIGNED_BYTE,!0,e,16)},r.prototype.destroy=function(){this.renderer.gl.deleteBuffer(this.vertexBuffer),this.renderer.gl.deleteBuffer(this.indexBuffer),this.shader.destroy(),this.renderer=null,this.vertices=null,this.positions=null,this.colors=null,this.indices=null,this.vertexBuffer=null,this.indexBuffer=null,this.currentBaseTexture=null,this.drawing=!1,this.textures=null,this.blendModes=null,this.shaders=null,this.sprites=null,this.shader=null}},{"../../const":12,"../../renderers/webgl/WebGLRenderer":38,"../../renderers/webgl/shaders/Shader":50,"../../renderers/webgl/utils/ObjectRenderer":52}],58:[function(t,e){function r(t,e,r){this.uuid=i.uuid(),this.resolution=r||1,this.width=100,this.height=100,this.realWidth=100,this.realHeight=100,this.scaleMode=e||n.SCALE_MODES.DEFAULT,this.hasLoaded=!1,this.isLoading=!1,this.source=null,this.premultipliedAlpha=!0,this.imageUrl=null,this.isPowerOfTwo=!1,this.mipmap=!1,this._glTextures=[],t&&this.loadSource(t)}var i=t("../utils"),n=t("../const");r.prototype.constructor=r,e.exports=r,i.eventTarget.mixin(r.prototype),r.prototype.update=function(){this.emit("update",this)},r.prototype.loadSource=function(t){var e=this.isLoading;if(this.hasLoaded=!1,this.isLoading=!1,e&&this.source&&(this.source.onload=null,this.source.onerror=null),this.source=t,(this.source.complete||this.source.getContext)&&this.source.width&&this.source.height)this._sourceLoaded();else if(!t.getContext){this.isLoading=!0;var r=this;t.onload=function(){t.onload=null,t.onerror=null,r.isLoading&&(r.isLoading=!1,r._sourceLoaded(),r.emit("loaded",r))},t.onerror=function(){t.onload=null,t.onerror=null,r.isLoading&&(r.isLoading=!1,r.emit("error",r))},t.complete&&t.src&&(this.isLoading=!1,t.onload=null,t.onerror=null,t.width&&t.height?(this._sourceLoaded(),e&&this.emit("loaded",this)):e&&this.emit("error",this))}},r.prototype._sourceLoaded=function(){this.hasLoaded=!0,this.realWidth=this.source.naturalWidth||this.source.width,this.realHeight=this.source.naturalHeight||this.source.height,this.width=this.realWidth/this.resolution,this.height=this.realHeight/this.resolution,this.isPowerOfTwo=i.isPowerOfTwo(this.width,this.height),this.update()},r.prototype.destroy=function(){this.imageUrl?(delete i.BaseTextureCache[this.imageUrl],delete i.TextureCache[this.imageUrl],this.imageUrl=null,navigator.isCocoonJS||(this.source.src="")):this.source&&this.source._pixiId&&delete i.BaseTextureCache[this.source._pixiId],this.source=null,this.dispose()},r.prototype.dispose=function(){this.emit("dispose",this)},r.prototype.updateSourceImage=function(t){this.source.src=t,this.loadSource(this.source)},r.fromImage=function(t,e,n){var o=i.BaseTextureCache[t];if(void 0===e&&0!==t.indexOf("data:")&&(e=!0),!o){var s=new Image;e&&(s.crossOrigin=""),o=new r(s,n),o.imageUrl=t,s.src=t,i.BaseTextureCache[t]=o,o.resolution=i.getResolutionOfUrl(t)}return o},r.fromCanvas=function(t,e){t._pixiId||(t._pixiId="canvas_"+i.uuid());var n=i.BaseTextureCache[t._pixiId];return n||(n=new r(t,e),i.BaseTextureCache[t._pixiId]=n),n}},{"../const":12,"../utils":67}],59:[function(t,e){function r(t,e,r,u,c){if(!t)throw new Error("Unable to create RenderTexture, you must pass a renderer into the constructor.");e=e||100,r=r||100,c=c||l.RESOLUTION;var d=new i;if(d.width=e,d.height=r,d.resolution=c,d.scaleMode=u||l.SCALE_MODES.DEFAULT,d.hasLoaded=!0,n.call(this,d,new h.Rectangle(0,0,e,r)),this.width=e,this.height=r,this.resolution=c,this.render=null,this.renderer=t,this.renderer.type===l.RENDERER_TYPE.WEBGL){var p=this.renderer.gl;this.textureBuffer=new o(p,this.width,this.height,null,this.resolution),this.baseTexture._glTextures[p.id]=this.textureBuffer.texture,this.filterManager=new s(this.renderer),this.filterManager.onContextChange(),this.filterManager.resize(e,r),this.render=this.renderWebGL,this.renderer.currentRenderer.start()}else this.render=this.renderCanvas,this.textureBuffer=new a(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this._updateUvs()}var i=t("./BaseTexture"),n=t("./Texture"),o=t("../renderers/webgl/utils/RenderTarget"),s=t("../renderers/webgl/managers/FilterManager"),a=t("../renderers/canvas/utils/CanvasBuffer"),h=t("../math"),l=t("../const"),u=new h.Matrix;r.prototype=Object.create(n.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.resize=function(t,e,r){(t!==this.width||e!==this.height)&&(this.valid=t>0&&e>0,this.width=this._frame.width=this.crop.width=t,this.height=this._frame.height=this.crop.height=e,r&&(this.baseTexture.width=this.width,this.baseTexture.height=this.height),this.renderer.type===l.RENDERER_TYPE.WEBGL&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&(this.textureBuffer.resize(this.width*this.resolution,this.height*this.resolution),this.filterManager&&this.filterManager.resize(this.width,this.height)))},r.prototype.clear=function(){this.valid&&(this.renderer.type===l.RENDERER_TYPE.WEBGL&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},r.prototype.renderWebGL=function(t,e,r,i){if(this.valid){if(i=!!i,this.textureBuffer.transform=e,t.worldAlpha=t.alpha,i){t.worldTransform.identity(),t.currentBounds=null;var n,o,s=t.children;for(n=0,o=s.length;o>n;++n)s[n].updateTransform()}r&&this.textureBuffer.clear();var a=this.renderer.filterManager;this.renderer.filterManager=this.filterManager,this.renderer.renderDisplayObject(t,this.textureBuffer),this.renderer.filterManager=a}},r.prototype.renderCanvas=function(t,e,r,i){if(this.valid){i=!!i;var n=t.worldTransform,o=u;o.identity(),e&&o.append(e),t.worldTransform=o,t.worldAlpha=1;var s,a,h=t.children;for(s=0,a=h.length;a>s;++s)h[s].updateTransform();r&&this.textureBuffer.clear(),t.worldTransform=n;var l=this.textureBuffer.context,c=this.renderer.resolution;this.renderer.resolution=this.resolution,this.renderer.renderDisplayObject(t,l),this.renderer.resolution=c}},r.prototype.destroy=function(){n.prototype.destroy.call(this,!0),this.textureBuffer.destroy(),this.filterManager&&this.filterManager.destroy(),this.renderer=null},r.prototype.getImage=function(){var t=new Image;return t.src=this.getBase64(),t},r.prototype.getBase64=function(){return this.getCanvas().toDataURL()},r.prototype.getCanvas=function(){if(this.renderer.type===l.RENDERER_TYPE.WEBGL){var t=this.renderer.gl,e=this.textureBuffer.width,r=this.textureBuffer.height,i=new Uint8Array(4*e*r);t.bindFramebuffer(t.FRAMEBUFFER,this.textureBuffer.frameBuffer),t.readPixels(0,0,e,r,t.RGBA,t.UNSIGNED_BYTE,i),t.bindFramebuffer(t.FRAMEBUFFER,null);var n=new a(e,r),o=n.context.getImageData(0,0,e,r);return o.data.set(i),n.context.putImageData(o,0,0),n.canvas}return this.textureBuffer.canvas}},{"../const":12,"../math":22,"../renderers/canvas/utils/CanvasBuffer":34,"../renderers/webgl/managers/FilterManager":43,"../renderers/webgl/utils/RenderTarget":54,"./BaseTexture":58,"./Texture":60}],60:[function(t,e){function r(t,e,i,n,o){this.noFrame=!1,e||(this.noFrame=!0,e=new a.Rectangle(0,0,1,1)),t instanceof r&&(t=t.baseTexture),this.baseTexture=t,this._frame=e,this.trim=n,this.valid=!1,this.requiresUpdate=!1,this._uvs=null,this.width=0,this.height=0,this.crop=i||e,this.rotate=!!o,t.hasLoaded?(this.noFrame&&(e=new a.Rectangle(0,0,t.width,t.height)),this.frame=e):t.addEventListener("loaded",this.onBaseTextureLoaded.bind(this))}var i=t("./BaseTexture"),n=t("./VideoBaseTexture"),o=t("./TextureUvs"),s=t("../utils/eventTarget"),a=t("../math"),h=t("../utils");r.prototype.constructor=r,e.exports=r,s.mixin(r.prototype),Object.defineProperties(r.prototype,{frame:{get:function(){return this._frame},set:function(t){if(this._frame=t,this.noFrame=!1,this.width=t.width,this.height=t.height,!this.trim&&!this.rotate&&(t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height))throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.valid=t&&t.width&&t.height&&this.baseTexture.hasLoaded,this.trim?(this.width=this.trim.width,this.height=this.trim.height,this._frame.width=this.trim.width,this._frame.height=this.trim.height):this.crop=t,this.valid&&this._updateUvs()}}}),r.prototype.update=function(){this.baseTexture.update()},r.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.frame=this.noFrame?new a.Rectangle(0,0,t.width,t.height):this._frame,this.emit("update",this)},r.prototype.destroy=function(t){t&&this.baseTexture.destroy(),this.valid=!1},r.prototype.clone=function(){return new r(this.baseTexture,this.frame,this.crop,this.trim,this.rotate)},r.prototype._updateUvs=function(){this._uvs||(this._uvs=new o),this._uvs.set(this.crop,this.baseTexture,this.rotate)},r.fromImage=function(t,e,n){var o=h.TextureCache[t];return o||(o=new r(i.fromImage(t,e,n)),h.TextureCache[t]=o),o},r.fromFrame=function(t){var e=h.TextureCache[t];if(!e)throw new Error('The frameId "'+t+'" does not exist in the texture cache');return e},r.fromCanvas=function(t,e){return new r(i.fromCanvas(t,e))},r.fromVideo=function(t,e){return new r(n.baseTextureFromVideo(t,e))},r.fromVideoUrl=function(t,e){return new r(n.fromUrl(t,e))},r.addTextureToCache=function(t,e){h.TextureCache[e]=t},r.removeTextureFromCache=function(t){var e=h.TextureCache[t];return delete h.TextureCache[t],delete h.BaseTextureCache[t],e},r.emptyTexture=new r(new i)},{"../math":22,"../utils":67,"../utils/eventTarget":66,"./BaseTexture":58,"./TextureUvs":61,"./VideoBaseTexture":62}],61:[function(t,e){function r(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0}e.exports=r,r.prototype.set=function(t,e,r){var i=e.width,n=e.height;r?(this.x0=(t.x+t.height)/i,this.y0=t.y/n,this.x1=(t.x+t.height)/i,this.y1=(t.y+t.width)/n,this.x2=t.x/i,this.y2=(t.y+t.width)/n,this.x3=t.x/i,this.y3=t.y/n):(this.x0=t.x/i,this.y0=t.y/n,this.x1=(t.x+t.width)/i,this.y1=t.y/n,this.x2=(t.x+t.width)/i,this.y2=(t.y+t.height)/n,this.x3=t.x/i,this.y3=(t.y+t.height)/n)}},{}],62:[function(t,e){function r(t,e){if(!t)throw new Error("No video source element specified.");(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),n.call(this,t,e),this.autoUpdate=!1,this._onUpdate=this._onUpdate.bind(this),this._onCanPlay=this._onCanPlay.bind(this),t.complete||(t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlay),t.addEventListener("play",this._onPlayStart.bind(this)),t.addEventListener("pause",this._onPlayStop.bind(this))),this.__loaded=!1}function i(t,e){e||(e="video/"+t.substr(t.lastIndexOf(".")+1));var r=document.createElement("source");return r.src=t,r.type=e,r}var n=t("./BaseTexture"),o=t("../utils");r.prototype=Object.create(n.prototype),r.prototype.constructor=r,e.exports=r,r.prototype._onUpdate=function(){this.autoUpdate&&(window.requestAnimationFrame(this._onUpdate),this.update())},r.prototype._onPlayStart=function(){this.autoUpdate||(window.requestAnimationFrame(this._onUpdate),this.autoUpdate=!0)},r.prototype._onPlayStop=function(){this.autoUpdate=!1},r.prototype._onCanPlay=function(){this.hasLoaded=!0,this.source&&(this.source.removeEventListener("canplay",this._onCanPlay),this.source.removeEventListener("canplaythrough",this._onCanPlay),this.width=this.source.videoWidth,this.height=this.source.videoHeight,this.source.play(),this.__loaded||(this.__loaded=!0,this.emit("loaded",this)))},r.prototype.destroy=function(){this.source&&this.source._pixiId&&(o.BaseTextureCache[this.source._pixiId]=null,delete o.BaseTextureCache[this.source._pixiId],this.source._pixiId=null,delete this.source._pixiId),n.prototype.destroy.call(this)},r.fromVideo=function(t,e){t._pixiId||(t._pixiId="video_"+o.uuid());var i=o.BaseTextureCache[t._pixiId];return i||(i=new r(t,e),o.BaseTextureCache[t._pixiId]=i),i},r.fromUrl=function(t,e){var n=document.createElement("video");if(Array.isArray(t))for(var o=0;o>1;if(3>i)return[];for(var n=[],o=[],s=0;i>s;s++)o.push(s);s=0;for(var a=i;a>3;){var h=o[(s+0)%a],l=o[(s+1)%a],u=o[(s+2)%a],c=t[2*h],d=t[2*h+1],p=t[2*l],f=t[2*l+1],g=t[2*u],v=t[2*u+1],m=!1;if(r._convex(c,d,p,f,g,v,e)){m=!0;for(var y=0;a>y;y++){var x=o[y];if(x!==h&&x!==l&&x!==u&&r._PointInTriangle(t[2*x],t[2*x+1],c,d,p,f,g,v)){m=!1;break}}}if(m)n.push(h,l,u),o.splice((s+1)%a,1),a--,s=0;else if(s++>3*a){if(!e)return null;for(n=[],o=[],s=0;i>s;s++)o.push(s);s=0,a=i,e=!1}}return n.push(o[0],o[1],o[2]),n},r._PointInTriangle=function(t,e,r,i,n,o,s,a){var h=s-r,l=a-i,u=n-r,c=o-i,d=t-r,p=e-i,f=h*h+l*l,g=h*u+l*c,v=h*d+l*p,m=u*u+c*c,y=u*d+c*p,x=1/(f*m-g*g),b=(m*v-g*y)*x,T=(f*y-g*v)*x;return b>=0&&T>=0&&1>b+T},r._convex=function(t,e,r,i,n,o,s){return(e-i)*(n-r)+(r-t)*(o-i)>=0===s}},{}],65:[function(t,e){var r=t("./eventTarget"),i=t("./EventData"),n=function(){this.updateBind=this.update.bind(this),this.active=!1,this.eventData=new i(this,"tick",{deltaTime:1}),this.deltaTime=1,this.timeElapsed=0,this.lastTime=0,this.speed=1,this.start()};r.mixin(n.prototype),n.prototype.start=function(){this.active||(this.active=!0,requestAnimationFrame(this.updateBind))},n.prototype.stop=function(){this.active&&(this.active=!1)},n.prototype.update=function(){if(this.active){requestAnimationFrame(this.updateBind);var t=(new Date).getTime(),e=t-this.lastTime;e>100&&(e=100),this.deltaTime=.06*e,this.deltaTime*=this.speed,this.eventData.data.deltaTime=this.deltaTime,this.emit("tick",this.eventData),this.lastTime=t}},e.exports=new n},{"./EventData":63,"./eventTarget":66}],66:[function(t,e){function r(t){t.listeners=function(t){return this._listeners=this._listeners||{},this._listeners[t]?this._listeners[t].slice():[]},t.emit=t.dispatchEvent=function(t,e){if(this._listeners=this._listeners||{},this._listeners[t]){e&&e.__isEventObject||(n.target=this,n.type=t,n.data=e,e=n);var r,i=this._listeners[t].slice(0),o=i.length,s=i[0];for(r=0;o>r;s=i[++r])if(s(e),e.stoppedImmediate)return this;return e.stopped?this:this}},t.on=t.addEventListener=function(t,e){return this._listeners=this._listeners||{},(this._listeners[t]=this._listeners[t]||[]).push(e),this},t.once=function(t,e){function r(){e.apply(i.off(t,r),arguments)}this._listeners=this._listeners||{};var i=this;return r._originalHandler=e,this.on(t,r)},t.off=t.removeEventListener=function(t,e){if(this._listeners=this._listeners||{},!this._listeners[t])return this;for(var r=this._listeners[t],i=e?r.length:0;i-->0;)(r[i]===e||r[i]._originalHandler===e)&&r.splice(i,1);return 0===r.length&&(this._listeners[t]=null),this},t.removeAllListeners=function(t){return this._listeners=this._listeners||{},this._listeners[t]?(this._listeners[t]=null,this):this}}var i=t("./EventData"),n=new i(null,null,{});e.exports={mixin:function(t){r(t)}}},{"./EventData":63}],67:[function(t,e){var r=t("../const"),i=e.exports={_uid:0,_saidHello:!1,RAFramePolyfill:t("./requestAnimationFramePolyfill"),Ticker:t("./Ticker"),EventData:t("./EventData"),eventTarget:t("./eventTarget"),pluginTarget:t("./pluginTarget"),PolyK:t("./PolyK"),uuid:function(){return++i._uid},hex2rgb:function(t,e){return e=e||[],e[0]=(t>>16&255)/255,e[1]=(t>>8&255)/255,e[2]=(255&t)/255,e},hex2string:function(t){return t=t.toString(16),t="000000".substr(0,6-t.length)+t,"#"+t},rgb2hex:function(t){return(255*t[0]<<16)+(255*t[1]<<8)+255*t[2]},canUseNewCanvasBlendModes:function(){if("undefined"==typeof document)return!1;var t="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",e="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",r=new Image;r.src=t+"AP804Oa6"+e;var i=new Image;i.src=t+"/wCKxvRF"+e;var n=document.createElement("canvas");n.width=6,n.height=1;var o=n.getContext("2d");o.globalCompositeOperation="multiply",o.drawImage(r,0,0),o.drawImage(i,2,0);var s=o.getImageData(2,0,1,1).data;return 255===s[0]&&0===s[1]&&0===s[2]},getNextPowerOfTwo:function(t){if(t>0&&0===(t&t-1))return t;for(var e=1;t>e;)e<<=1;return e},isPowerOfTwo:function(t,e){return t>0&&0===(t&t-1)&&e>0&&0===(e&e-1)},getResolutionOfUrl:function(t){var e=r.RETINA_PREFIX.exec(t);return e?parseFloat(e[1]):1},sayHello:function(t){if(!i._saidHello){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var e=["%c %c %c Pixi.js "+r.VERSION+" - "+t+" %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ ","background: #ff66a5","background: #ff66a5","color: #ff66a5; background: #030307;","background: #ff66a5","background: #ffc3dc","background: #ff66a5","color: #ff2424; background: #fff","color: #ff2424; background: #fff","color: #ff2424; background: #fff"];window.console.log.apply(console,e)}else window.console&&window.console.log("Pixi.js "+r.VERSION+" - "+t+" - http://www.pixijs.com/");i._saidHello=!0}},TextureCache:{},BaseTextureCache:{}}},{"../const":12,"./EventData":63,"./PolyK":64,"./Ticker":65,"./eventTarget":66,"./pluginTarget":68,"./requestAnimationFramePolyfill":69}],68:[function(t,e){function r(t){t.__plugins={},t.registerPlugin=function(e,r){t.__plugins[e]=r},t.prototype.initPlugins=function(){this.plugins=this.plugins||{};for(var e in t.__plugins)this.plugins[e]=new t.__plugins[e](this)},t.prototype.destroyPlugins=function(){for(var t in this.plugins)this.plugins[t].destroy(),this.plugins[t]=null;this.plugins=null}}e.exports={mixin:function(t){r(t)}}},{}],69:[function(){!function(t){for(var e=0,r=["ms","moz","webkit","o"],i=0;ie?this.loop?(this.currentFrame+=this._textures.length,this.texture=this._textures[this.currentFrame]):(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this.loop||e=this._textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())},r.prototype.destroy=function(){this.stop(),i.Sprite.prototype.destroy.call(this)},r.fromFrames=function(t){for(var e=[],n=0;nx?x:t,t=t>T?T:t,t=t>E?E:t,r=y,r=r>b?b:r,r=r>_?_:r,r=r>w?w:r,e=m,e=x>e?x:e,e=T>e?T:e,e=E>e?E:e,i=y,i=b>i?b:i,i=_>i?_:i,i=w>i?w:i;var S=this._bounds;return S.x=t,S.width=e-t,S.y=r,S.height=i-r,this._currentBounds=S,S},r.prototype.onTextureUpdate=function(){},r.prototype.generateTilingTexture=function(t,e,r){if(this.texture.baseTexture.hasLoaded){e=this.originalTexture||this._texture;var n,a,h=e.frame,l=h.width!==e.baseTexture.width||h.height!==e.baseTexture.height;if(r&&!e.baseTexture.isPowerOfTwo||l){n=i.utils.getNextPowerOfTwo(h.width),a=i.utils.getNextPowerOfTwo(h.height),s.texture=e;var u=new o(t,n,a,e.baseTexture.scaleMode,e.baseTexture.resolution);s.worldTransform.a=(n+1)/h.width,s.worldTransform.d=(a+1)/h.height,s.worldTransform.tx-=.5,s.worldTransform.ty-=.5;var c=t.currentRenderTarget;u.render(s,s.worldTransform,!0,!1),t.setRenderTarget(c),this._tileScaleOffset.x=n/h.width,this._tileScaleOffset.y=a/h.height,this._tilingTexture=u}else this._tilingTexture&&this._tilingTexture.isTiling&&this._tilingTexture.destroy(!0),this._tileScaleOffset.x=1,this._tileScaleOffset.y=1,this._tilingTexture=e;this._refreshTexture=!1,this.originalTexture=this.texture,this._texture=this._tilingTexture}},r.prototype.containsPoint=function(t){this.worldTransform.applyInverse(t,a);var e,r=this._width,i=this._height,n=-r*this.anchor.x;return a.x>n&&a.xe&&a.yn;n++){var o=2*n;this._renderCanvasDrawTriangle(t,e,r,o,o+2,o+4)}},r.prototype._renderCanvasTriangles=function(t){for(var e=this.vertices,r=this.uvs,i=this.indices,n=i.length,o=0;n>o;o+=3){var s=2*i[o],a=2*i[o+1],h=2*i[o+2];this._renderCanvasDrawTriangle(t,e,r,s,a,h)}},r.prototype._renderCanvasDrawTriangle=function(t,e,r,i,n,o){var s=this.texture.baseTexture.source,a=this.texture.width,h=this.texture.height,l=e[i],u=e[n],c=e[o],d=e[i+1],p=e[n+1],f=e[o+1],g=r[i]*a,v=r[n]*a,m=r[o]*a,y=r[i+1]*h,x=r[n+1]*h,b=r[o+1]*h;if(this.canvasPadding>0){var T=this.canvasPadding/this.worldTransform.a,_=this.canvasPadding/this.worldTransform.d,E=(l+u+c)/3,w=(d+p+f)/3,S=l-E,A=d-w,C=Math.sqrt(S*S+A*A);l=E+S/C*(C+T),d=w+A/C*(C+_),S=u-E,A=p-w,C=Math.sqrt(S*S+A*A),u=E+S/C*(C+T),p=w+A/C*(C+_),S=c-E,A=f-w,C=Math.sqrt(S*S+A*A),c=E+S/C*(C+T),f=w+A/C*(C+_)}t.save(),t.beginPath(),t.moveTo(l,d),t.lineTo(u,p),t.lineTo(c,f),t.closePath(),t.clip();var M=g*x+y*m+v*b-x*m-y*v-g*b,R=l*x+y*c+u*b-x*c-y*u-l*b,F=g*u+l*m+v*c-u*m-l*v-g*c,D=g*x*c+y*u*m+l*v*b-l*x*m-y*v*c-g*u*b,O=d*x+y*f+p*b-x*f-y*p-d*b,P=g*p+d*m+v*f-p*m-d*v-g*f,B=g*x*f+y*p*m+d*v*b-d*x*m-y*v*f-g*p*b;t.transform(R/M,O/M,F/M,P/M,D/M,B/M),t.drawImage(s,0,0),t.restore()},r.prototype.renderMeshFlat=function(t){var e=this.context,r=t.vertices,i=r.length/2;e.beginPath();for(var n=1;i-2>n;n++){var o=2*n,s=r[o],a=r[o+2],h=r[o+4],l=r[o+1],u=r[o+3],c=r[o+5];e.moveTo(s,l),e.lineTo(a,u),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.prototype.getBounds=function(t){for(var e=t||this.worldTransform,r=e.a,n=e.b,o=e.c,s=e.d,a=e.tx,h=e.ty,l=-1/0,u=-1/0,c=1/0,d=1/0,p=this.vertices,f=0,g=p.length;g>f;f+=2){var v=p[f],m=p[f+1],y=r*v+o*m+a,x=s*m+n*v+h;c=c>y?y:c,d=d>x?x:d,l=y>l?y:l,u=x>u?x:u}if(c===-1/0||1/0===u)return i.math.Rectangle.EMPTY;var b=this._bounds;return b.x=c,b.width=l-c,b.y=d,b.height=u-d,this._currentBounds=b,b},r.DRAW_MODES={TRIANGLE_MESH:0,TRIANGLES:1}},{"../../core":19}],77:[function(t,e){function r(t,e){i.call(this,t),this.points=e,this.vertices=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length),this.refresh()}var i=t("./Mesh");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.refresh=function(){var t=this.points;if(!(t.length<1)){var e=this.uvs,r=this.indices,i=this.colors;e[0]=0,e[1]=0,e[2]=0,e[3]=1,i[0]=1,i[1]=1,r[0]=0,r[1]=1;for(var n,o,s,a=t.length,h=1;a>h;h++)n=t[h],o=4*h,s=h/(a-1),h%2?(e[o]=s,e[o+1]=0,e[o+2]=s,e[o+3]=1):(e[o]=s,e[o+1]=0,e[o+2]=s,e[o+3]=1),o=2*h,i[o]=1,i[o+1]=1,o=2*h,r[o]=o,r[o+1]=o+1}},r.prototype.updateTransform=function(){var t=this.points;if(!(t.length<1)){for(var e,r,i,n,o,s,a=t[0],h=0,l=0,u=this.vertices,c=t.length,d=0;c>d;d++)r=t[d],i=4*d,e=d1&&(n=1),o=Math.sqrt(h*h+l*l),s=this.texture.height/2,h/=o,l/=o,h*=s,l*=s,u[i]=r.x+h,u[i+1]=r.y+l,u[i+2]=r.x-h,u[i+3]=r.y-l,a=r;this.containerUpdateTransform()}}},{"./Mesh":76}],78:[function(t,e){e.exports={Mesh:t("./Mesh"),Rope:t("./Rope"),MeshRenderer:t("./webgl/MeshRenderer"),MeshShader:t("./webgl/MeshShader")}},{"./Mesh":76,"./Rope":77,"./webgl/MeshRenderer":79,"./webgl/MeshShader":80}],79:[function(t,e){function r(t){i.call(this,t),this.indices=new Uint16Array(15e3);for(var e=0,r=0;15e3>e;e+=6,r+=4)this.indices[e+0]=r+0,this.indices[e+1]=r+1,this.indices[e+2]=r+2,this.indices[e+3]=r+0,this.indices[e+4]=r+2,this.indices[e+5]=r+3}var i=t("../../../core/renderers/webgl/utils/ObjectRenderer"),n=t("../../../core/renderers/webgl/WebGLRenderer");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,n.registerPlugin("mesh",r),r.prototype.onContextChange=function(){},r.prototype.render=function(t){t._vertexBuffer||this._initWebGL(t);var e=this.renderer,r=e.gl,i=t.texture.baseTexture,n=e.shaderManager.plugins.meshShader,o=r.TRIANGLE_STRIP;e.blendModeManager.setBlendMode(t.blendMode),r.uniformMatrix3fv(n.uniforms.translationMatrix._location,!1,t.worldTransform.toArray(!0)),r.uniformMatrix3fv(n.uniforms.projectionMatrix._location,!1,e.currentRenderTarget.projectionMatrix.toArray(!0)),r.uniform1f(n.uniforms.alpha._location,t.worldAlpha),t.dirty?(t.dirty=!1,r.bindBuffer(r.ARRAY_BUFFER,t._vertexBuffer),r.bufferData(r.ARRAY_BUFFER,t.vertices,r.STATIC_DRAW),r.vertexAttribPointer(n.attributes.aVertexPosition,2,r.FLOAT,!1,0,0),r.bindBuffer(r.ARRAY_BUFFER,t._uvBuffer),r.bufferData(r.ARRAY_BUFFER,t.uvs,r.STATIC_DRAW),r.vertexAttribPointer(n.attributes.aTextureCoord,2,r.FLOAT,!1,0,0),r.activeTexture(r.TEXTURE0),i._glTextures[r.id]?r.bindTexture(r.TEXTURE_2D,i._glTextures[r.id]):this.renderer.updateTexture(i),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,t._indexBuffer),r.bufferData(r.ELEMENT_ARRAY_BUFFER,t.indices,r.STATIC_DRAW)):(r.bindBuffer(r.ARRAY_BUFFER,t._vertexBuffer),r.bufferSubData(r.ARRAY_BUFFER,0,t.vertices),r.vertexAttribPointer(n.attributes.aVertexPosition,2,r.FLOAT,!1,0,0),r.bindBuffer(r.ARRAY_BUFFER,t._uvBuffer),r.vertexAttribPointer(n.attributes.aTextureCoord,2,r.FLOAT,!1,0,0),r.activeTexture(r.TEXTURE0),i._glTextures[r.id]?r.bindTexture(r.TEXTURE_2D,i._glTextures[r.id]):this.renderer.updateTexture(i)),r.drawElements(o,t.indices.length,r.UNSIGNED_SHORT,0)},r.prototype._initWebGL=function(t){var e=this.renderer.gl;t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.vertices,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.prototype.flush=function(){},r.prototype.start=function(){var t=(this.renderer.gl,this.renderer.shaderManager.plugins.meshShader);this.renderer.shaderManager.setShader(t)},r.prototype.destroy=function(){}},{"../../../core/renderers/webgl/WebGLRenderer":38,"../../../core/renderers/webgl/utils/ObjectRenderer":52}],80:[function(t,e){function r(t){i.Shader.call(this,t,["precision lowp float;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform mat3 projectionMatrix;","varying vec2 vTextureCoord;","void main(void){"," gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"].join("\n"),["precision lowp float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void){"," gl_FragColor = texture2D(uSampler, vTextureCoord) * alpha ;","}"].join("\n"),{alpha:{type:"1f",value:0},translationMatrix:{type:"mat3",value:new Float32Array(9)},projectionMatrix:{type:"mat3",value:new Float32Array(9)}},{aVertexPosition:0,aTextureCoord:0})}var i=t("../../../core");r.prototype=Object.create(i.Shader.prototype),r.prototype.constructor=r,e.exports=r,i.ShaderManager.registerPlugin("meshShader",r)},{"../../../core":19}],81:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nuniform vec4 dimensions;\nuniform float pixelSize;\nuniform sampler2D uSampler;\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, -4.0) + 2.5);\n if (clamp(p.x, 0.0, 4.0) == p.x && clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 uv = gl_FragCoord.xy;\n\n vec3 col = texture2D(uSampler, floor( uv / pixelSize ) * pixelSize / dimensions.xy).rgb;\n\n float gray = (col.r + col.g + col.b) / 3.0;\n\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n vec2 p = mod( uv / ( pixelSize * 0.5 ), 2.0) - vec2(1.0);\n col = col * character(n, p);\n\n gl_FragColor = vec4(col, 1.0);\n}\n",{dimensions:{type:"4fv",value:new Float32Array([0,0,0,0])},pixelSize:{type:"1f",value:8}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{size:{get:function(){return this.uniforms.pixelSize.value},set:function(t){this.uniforms.pixelSize.value=t}}})},{"../../core":19}],82:[function(t,e){function r(){i.AbstractFilter.call(this),this.blurXFilter=new n,this.blurYFilter=new o,this.defaultFilter=new i.AbstractFilter}var i=t("../../core"),n=t("../blur/BlurXFilter"),o=t("../blur/BlurYFilter");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var n=t.filterManager.getRenderTarget(!0);this.defaultFilter.applyFilter(t,e,r),this.blurXFilter.applyFilter(t,e,n),t.blendModeManager.setBlendMode(i.CONST.BLEND_MODES.SCREEN),this.blurYFilter.applyFilter(t,n,r),t.blendModeManager.setBlendMode(i.CONST.BLEND_MODES.NORMAL),t.filterManager.returnRenderTarget(n)},Object.defineProperties(r.prototype,{blur:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=this.blurYFilter.blur=t}},blurX:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=t}},blurY:{get:function(){return this.blurYFilter.blur},set:function(t){this.blurYFilter.blur=t}}})},{"../../core":19,"../blur/BlurXFilter":84,"../blur/BlurYFilter":85}],83:[function(t,e){function r(){i.AbstractFilter.call(this),this.blurXFilter=new n,this.blurYFilter=new o}var i=t("../../core"),n=t("./BlurXFilter"),o=t("./BlurYFilter");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager.getRenderTarget(!0);this.blurXFilter.applyFilter(t,e,i),this.blurYFilter.applyFilter(t,i,r),t.filterManager.returnRenderTarget(i)},Object.defineProperties(r.prototype,{blur:{get:function(){return this.blurXFilter.blur},set:function(t){this.padding=1.5*t,this.blurXFilter.blur=this.blurYFilter.blur=t}},passes:{get:function(){return this.blurXFilter.passes},set:function(t){this.blurXFilter.passes=this.blurYFilter.passes=t}},blurX:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=t}},blurY:{get:function(){return this.blurYFilter.blur},set:function(t){this.blurYFilter.blur=t}}})},{"../../core":19,"./BlurXFilter":84,"./BlurYFilter":85}],84:[function(t,e){function r(){i.AbstractFilter.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[6];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(-0.012 * strength, 0.0);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(-0.008 * strength, 0.0);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(-0.004 * strength, 0.0);\n vBlurTexCoords[ 3] = aTextureCoord + vec2( 0.004 * strength, 0.0);\n vBlurTexCoords[ 4] = aTextureCoord + vec2( 0.008 * strength, 0.0);\n vBlurTexCoords[ 5] = aTextureCoord + vec2( 0.012 * strength, 0.0);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[6];\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = vec4(0.0);\n\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\n}\n",{strength:{type:"1f",value:1}}),this.passes=1,this.strength=4}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r,i){var n=this.getShader(t);if(this.uniforms.strength.value=this.strength/4/this.passes*(e.frame.width/e.size.width),1===this.passes)t.filterManager.applyFilter(n,e,r,i);else{for(var o=t.filterManager.getRenderTarget(!0),s=e,a=o,h=0;h>16&255)/255,s=(r>>8&255)/255,a=(255&r)/255,h=(i>>16&255)/255,l=(i>>8&255)/255,u=(255&i)/255,c=[.3,.59,.11,0,0,o,s,a,t,0,h,l,u,e,0,o-h,s-l,a-u,0,0,0,0,0,0,1];this._loadMatrix(c,n)},r.prototype.night=function(t,e){t=t||.1;var r=[-2*t,-t,0,0,0,-t,0,t,0,0,0,t,2*t,0,0,0,0,0,1,0,0,0,0,0,1];this._loadMatrix(r,e)},r.prototype.predator=function(t,e){var r=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0,0,0,0,0,0];this._loadMatrix(r,e)},r.prototype.lsd=function(t){var e=[2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0,0,0,0,0,1];this._loadMatrix(e,t)},r.prototype.reset=function(){var t=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1];this._loadMatrix(t,!1)},Object.defineProperties(r.prototype,{matrix:{get:function(){return this.uniforms.matrix.value},set:function(t){this.uniforms.matrix.value=t}}})},{"../../core":19}],88:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float step;\n\nvoid main(void)\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n color = floor(color * step) / step;\n\n gl_FragColor = color;\n}\n",{step:{type:"1f",value:5}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{step:{get:function(){return this.uniforms.step.value},set:function(t){this.uniforms.step.value=t}}})},{"../../core":19}],89:[function(t,e){function r(t,e,r){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying mediump vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec2 texelSize;\nuniform float matrix[9];\n\nvoid main(void)\n{\n vec4 c11 = texture2D(uSampler, vTextureCoord - texelSize); // top left\n vec4 c12 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y - texelSize.y)); // top center\n vec4 c13 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y - texelSize.y)); // top right\n\n vec4 c21 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture2D(uSampler, vTextureCoord); // mid center\n vec4 c23 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y + texelSize.y)); // bottom left\n vec4 c32 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y + texelSize.y)); // bottom center\n vec4 c33 = texture2D(uSampler, vTextureCoord + texelSize); // bottom right\n\n gl_FragColor =\n c11 * matrix[0] + c12 * matrix[1] + c13 * matrix[2] +\n c21 * matrix[3] + c22 * matrix[4] + c23 * matrix[5] +\n c31 * matrix[6] + c32 * matrix[7] + c33 * matrix[8];\n\n gl_FragColor.a = c22.a;\n}\n",{matrix:{type:"1fv",value:new Float32Array(t)},texelSize:{type:"2v",value:{x:1/e,y:1/r}}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{matrix:{get:function(){return this.uniforms.matrix.value},set:function(t){this.uniforms.matrix.value=new Float32Array(t)}},width:{get:function(){return 1/this.uniforms.texelSize.value.x},set:function(t){this.uniforms.texelSize.value.x=1/t}},height:{get:function(){return 1/this.uniforms.texelSize.value.y},set:function(t){this.uniforms.texelSize.value.y=1/t}}})},{"../../core":19}],90:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\n\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n\n if (lum < 1.00)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.75)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.50)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.3)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n}\n")}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r},{"../../core":19}],91:[function(t,e){function r(t){var e=new i.math.Matrix;t.renderable=!1,i.AbstractFilter.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMapCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vMapCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vMapCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec2 scale;\n\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nvoid main(void)\n{\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 map = texture2D(mapSampler, vMapCoord);\n\n map -= 0.5;\n map.xy *= scale;\n\n gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y));\n}\n",{mapSampler:{type:"sampler2D",value:t.texture},otherMatrix:{type:"mat3",value:e.toArray(!0)},scale:{type:"v2",value:{x:1,y:1}}}),this.maskSprite=t,this.maskMatrix=e,this.scale=new i.math.Point(20,20)}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager;i.calculateMappedMatrix(e.frame,this.maskSprite,this.maskMatrix),this.uniforms.otherMatrix.value=this.maskMatrix.toArray(!0),this.uniforms.scale.value.x=this.scale.x*(1/e.frame.width),this.uniforms.scale.value.y=this.scale.y*(1/e.frame.height);var n=this.getShader(t);i.applyFilter(n,e,r)},Object.defineProperties(r.prototype,{map:{get:function(){return this.uniforms.mapSampler.value},set:function(t){this.uniforms.mapSampler.value=t}}})},{"../../core":19}],92:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec4 dimensions;\nuniform sampler2D uSampler;\n\nuniform float angle;\nuniform float scale;\n\nfloat pattern()\n{\n float s = sin(angle), c = cos(angle);\n vec2 tex = vTextureCoord * dimensions.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * scale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float average = (color.r + color.g + color.b) / 3.0;\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\n}\n",{scale:{type:"1f",value:1},angle:{type:"1f",value:5},dimensions:{type:"4fv",value:[0,0,0,0]}}) -}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{scale:{get:function(){return this.uniforms.scale.value},set:function(t){this.uniforms.scale.value=t}},angle:{get:function(){return this.uniforms.angle.value},set:function(t){this.uniforms.angle.value=t}}})},{"../../core":19}],93:[function(t,e){function r(){i.AbstractFilter.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[14];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.028 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.024 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.020 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, -0.016 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 6] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 7] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 8] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 9] = aTextureCoord + vec2(0.0, 0.012 * strength);\n vBlurTexCoords[10] = aTextureCoord + vec2(0.0, 0.016 * strength);\n vBlurTexCoords[11] = aTextureCoord + vec2(0.0, 0.020 * strength);\n vBlurTexCoords[12] = aTextureCoord + vec2(0.0, 0.024 * strength);\n vBlurTexCoords[13] = aTextureCoord + vec2(0.0, 0.028 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[14];\nvarying vec4 vColor;\n\nuniform float blur;\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.0044299121055113265;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 6])*0.147308056121;\n sum += texture2D(uSampler, vTextureCoord )*0.159576912161;\n sum += texture2D(uSampler, vBlurTexCoords[ 7])*0.147308056121;\n sum += texture2D(uSampler, vBlurTexCoords[ 8])*0.115876621105;\n sum += texture2D(uSampler, vBlurTexCoords[ 9])*0.0776744219933;\n sum += texture2D(uSampler, vBlurTexCoords[10])*0.0443683338718;\n sum += texture2D(uSampler, vBlurTexCoords[11])*0.0215963866053;\n sum += texture2D(uSampler, vBlurTexCoords[12])*0.00895781211794;\n sum += texture2D(uSampler, vBlurTexCoords[13])*0.0044299121055113265;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n",{blur:{type:"1f",value:1/512},color:{type:"c",value:[0,0,0]},alpha:{type:"1f",value:.7},offset:{type:"2f",value:[5,5]}})}var i=t("../../core"),n=1/7e3;r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{blur:{get:function(){return this.uniforms.blur.value/n},set:function(t){this.uniforms.blur.value=n*t}}})},{"../../core":19}],94:[function(t,e){function r(){i.AbstractFilter.call(this),this.blurXFilter=new n,this.blurYTintFilter=new o,this.defaultFilter=new i.AbstractFilter,this.padding=30,this._dirtyPosition=!0,this._angle=45*Math.PI/180,this._distance=10,this.alpha=.75,this.hideObject=!1,this.blendMode=i.CONST.BLEND_MODES.MULTIPLY}var i=t("../../core"),n=t("../blur/BlurXFilter"),o=t("./BlurYTintFilter");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var n=t.filterManager.getRenderTarget(!0);this._dirtyPosition&&(this._dirtyPosition=!1,this.blurYTintFilter.uniforms.offset.value[0]=Math.sin(this._angle)*this._distance,this.blurYTintFilter.uniforms.offset.value[1]=Math.cos(this._angle)*this._distance),this.blurXFilter.applyFilter(t,e,n),t.blendModeManager.setBlendMode(this.blendMode),this.blurYTintFilter.applyFilter(t,n,r),t.blendModeManager.setBlendMode(i.CONST.BLEND_MODES.NORMAL),this.hideObject||this.defaultFilter.applyFilter(t,e,r),t.filterManager.returnRenderTarget(n)},Object.defineProperties(r.prototype,{blur:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=this.blurYTintFilter.blur=t}},blurX:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=t}},blurY:{get:function(){return this.blurYTintFilter.blur},set:function(t){this.blurYTintFilter.blur=t}},color:{get:function(){return i.utils.rgb2hex(this.blurYTintFilter.uniforms.color.value)},set:function(t){this.blurYTintFilter.uniforms.color.value=i.utils.hex2rgb(t)}},alpha:{get:function(){return this.blurYTintFilter.uniforms.alpha.value},set:function(t){this.blurYTintFilter.uniforms.alpha.value=t}},distance:{get:function(){return this._distance},set:function(t){this._dirtyPosition=!0,this._distance=t}},angle:{get:function(){return this._angle},set:function(t){this._dirtyPosition=!0,this._angle=t}}})},{"../../core":19,"../blur/BlurXFilter":84,"./BlurYTintFilter":93}],95:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\nuniform float gray;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n gl_FragColor.rgb = mix(gl_FragColor.rgb, vec3(0.2126*gl_FragColor.r + 0.7152*gl_FragColor.g + 0.0722*gl_FragColor.b), gray);\n}\n",{gray:{type:"1f",value:1}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{gray:{get:function(){return this.uniforms.gray.value},set:function(t){this.uniforms.gray.value=t}}})},{"../../core":19}],96:[function(t,e){e.exports={AbstractFilter:t("../core/renderers/webgl/filters/AbstractFilter"),FXAAFilter:t("../core/renderers/webgl/filters/FXAAFilter"),SpriteMaskFilter:t("../core/renderers/webgl/filters/SpriteMaskFilter"),AsciiFilter:t("./ascii/AsciiFilter"),BloomFilter:t("./bloom/BloomFilter"),BlurFilter:t("./blur/BlurFilter"),BlurXFilter:t("./blur/BlurXFilter"),BlurYFilter:t("./blur/BlurYFilter"),ColorMatrixFilter:t("./color/ColorMatrixFilter"),ColorStepFilter:t("./color/ColorStepFilter"),ConvolutionFilter:t("./convolution/ConvolutionFilter"),CrossHatchFilter:t("./crosshatch/CrossHatchFilter"),DisplacementFilter:t("./displacement/DisplacementFilter"),DotScreenFilter:t("./dot/DotScreenFilter"),GrayFilter:t("./gray/GrayFilter"),DropShadowFilter:t("./dropshadow/DropShadowFilter"),InvertFilter:t("./invert/InvertFilter"),NoiseFilter:t("./noise/NoiseFilter"),NormalMapFilter:t("./normal/NormalMapFilter"),PixelateFilter:t("./pixelate/PixelateFilter"),RGBSplitFilter:t("./rgb/RGBSplitFilter"),ShockwaveFilter:t("./shockwave/ShockwaveFilter"),SepiaFilter:t("./sepia/SepiaFilter"),SmartBlurFilter:t("./blur/SmartBlurFilter"),TiltShiftFilter:t("./tiltshift/TiltShiftFilter"),TiltShiftXFilter:t("./tiltshift/TiltShiftXFilter"),TiltShiftYFilter:t("./tiltshift/TiltShiftYFilter"),TwistFilter:t("./twist/TwistFilter")}},{"../core/renderers/webgl/filters/AbstractFilter":39,"../core/renderers/webgl/filters/FXAAFilter":40,"../core/renderers/webgl/filters/SpriteMaskFilter":41,"./ascii/AsciiFilter":81,"./bloom/BloomFilter":82,"./blur/BlurFilter":83,"./blur/BlurXFilter":84,"./blur/BlurYFilter":85,"./blur/SmartBlurFilter":86,"./color/ColorMatrixFilter":87,"./color/ColorStepFilter":88,"./convolution/ConvolutionFilter":89,"./crosshatch/CrossHatchFilter":90,"./displacement/DisplacementFilter":91,"./dot/DotScreenFilter":92,"./dropshadow/DropShadowFilter":94,"./gray/GrayFilter":95,"./invert/InvertFilter":97,"./noise/NoiseFilter":98,"./normal/NormalMapFilter":99,"./pixelate/PixelateFilter":100,"./rgb/RGBSplitFilter":101,"./sepia/SepiaFilter":102,"./shockwave/ShockwaveFilter":103,"./tiltshift/TiltShiftFilter":105,"./tiltshift/TiltShiftXFilter":106,"./tiltshift/TiltShiftYFilter":107,"./twist/TwistFilter":108}],97:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform float invert;\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n\n gl_FragColor.rgb = mix( (vec3(1)-gl_FragColor.rgb) * gl_FragColor.a, gl_FragColor.rgb, 1.0 - invert);\n}\n",{invert:{type:"1f",value:1}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{invert:{get:function(){return this.uniforms.invert.value},set:function(t){this.uniforms.invert.value=t}}})},{"../../core":19}],98:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float noise;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n float diff = (rand(vTextureCoord) - 0.5) * noise;\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n gl_FragColor = color;\n}\n",{noise:{type:"1f",value:.5}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{noise:{get:function(){return this.uniforms.noise.value},set:function(t){this.uniforms.noise.value=t}}})},{"../../core":19}],99:[function(t,e){function r(t){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying float vColor;\n\nuniform sampler2D displacementMap;\nuniform sampler2D uSampler;\n\nuniform vec4 dimensions;\n\nconst vec2 Resolution = vec2(1.0,1.0); //resolution of screen\nuniform vec3 LightPos; //light position, normalized\nconst vec4 LightColor = vec4(1.0, 1.0, 1.0, 1.0); //light RGBA -- alpha is intensity\nconst vec4 AmbientColor = vec4(1.0, 1.0, 1.0, 0.5); //ambient RGBA -- alpha is intensity\nconst vec3 Falloff = vec3(0.0, 1.0, 0.2); //attenuation coefficients\n\nuniform vec3 LightDir; // = vec3(1.0, 0.0, 1.0);\n\nuniform vec2 mapDimensions; // = vec2(256.0, 256.0);\n\n\nvoid main(void)\n{\n vec2 mapCords = vTextureCoord.xy;\n\n vec4 color = texture2D(uSampler, vTextureCoord.st);\n vec3 nColor = texture2D(displacementMap, vTextureCoord.st).rgb;\n\n\n mapCords *= vec2(dimensions.x/512.0, dimensions.y/512.0);\n\n mapCords.y *= -1.0;\n mapCords.y += 1.0;\n\n // RGBA of our diffuse color\n vec4 DiffuseColor = texture2D(uSampler, vTextureCoord);\n\n // RGB of our normal map\n vec3 NormalMap = texture2D(displacementMap, mapCords).rgb;\n\n // The delta position of light\n // vec3 LightDir = vec3(LightPos.xy - (gl_FragCoord.xy / Resolution.xy), LightPos.z);\n vec3 LightDir = vec3(LightPos.xy - (mapCords.xy), LightPos.z);\n\n // Correct for aspect ratio\n // LightDir.x *= Resolution.x / Resolution.y;\n\n // Determine distance (used for attenuation) BEFORE we normalize our LightDir\n float D = length(LightDir);\n\n // normalize our vectors\n vec3 N = normalize(NormalMap * 2.0 - 1.0);\n vec3 L = normalize(LightDir);\n\n // Pre-multiply light color with intensity\n // Then perform 'N dot L' to determine our diffuse term\n vec3 Diffuse = (LightColor.rgb * LightColor.a) * max(dot(N, L), 0.0);\n\n // pre-multiply ambient color with intensity\n vec3 Ambient = AmbientColor.rgb * AmbientColor.a;\n\n // calculate attenuation\n float Attenuation = 1.0 / ( Falloff.x + (Falloff.y*D) + (Falloff.z*D*D) );\n\n // the calculation which brings it all together\n vec3 Intensity = Ambient + Diffuse * Attenuation;\n vec3 FinalColor = DiffuseColor.rgb * Intensity;\n gl_FragColor = vColor * vec4(FinalColor, DiffuseColor.a);\n\n // gl_FragColor = vec4(1.0, 0.0, 0.0, Attenuation); // vColor * vec4(FinalColor, DiffuseColor.a);\n\n/*\n // normalise color\n vec3 normal = normalize(nColor * 2.0 - 1.0);\n\n vec3 deltaPos = vec3( (light.xy - gl_FragCoord.xy) / resolution.xy, light.z );\n\n float lambert = clamp(dot(normal, lightDir), 0.0, 1.0);\n\n float d = sqrt(dot(deltaPos, deltaPos));\n float att = 1.0 / ( attenuation.x + (attenuation.y*d) + (attenuation.z*d*d) );\n\n vec3 result = (ambientColor * ambientIntensity) + (lightColor.rgb * lambert) * att;\n result *= color.rgb;\n\n gl_FragColor = vec4(result, 1.0);\n*/\n}\n",{displacementMap:{type:"sampler2D",value:t},scale:{type:"2f",value:{x:15,y:15}},offset:{type:"2f",value:{x:0,y:0}},mapDimensions:{type:"2f",value:{x:1,y:1}},dimensions:{type:"4f",value:[0,0,0,0]},LightPos:{type:"3f",value:[0,1,0]}}),t.baseTexture._powerOf2=!0,t.baseTexture.hasLoaded?this.onTextureLoaded():t.baseTexture.once("loaded",this.onTextureLoaded.bind(this))}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.onTextureLoaded=function(){this.uniforms.mapDimensions.value.x=this.uniforms.displacementMap.value.width,this.uniforms.mapDimensions.value.y=this.uniforms.displacementMap.value.height},Object.defineProperties(r.prototype,{map:{get:function(){return this.uniforms.displacementMap.value},set:function(t){this.uniforms.displacementMap.value=t}},scale:{get:function(){return this.uniforms.scale.value},set:function(t){this.uniforms.scale.value=t}},offset:{get:function(){return this.uniforms.offset.value},set:function(t){this.uniforms.offset.value=t}}})},{"../../core":19}],100:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 dimensions;\nuniform vec2 pixelSize;\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord;\n\n vec2 size = dimensions.xy / pixelSize;\n\n vec2 color = floor( ( vTextureCoord * size ) ) / size + pixelSize/dimensions.xy * 0.5;\n\n gl_FragColor = texture2D(uSampler, color);\n}\n",{dimensions:{type:"4fv",value:new Float32Array([0,0,0,0])},pixelSize:{type:"v2",value:{x:10,y:10}}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{size:{get:function(){return this.uniforms.pixelSize.value},set:function(t){this.uniforms.pixelSize.value=t}}})},{"../../core":19}],101:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 dimensions;\nuniform vec2 red;\nuniform vec2 green;\nuniform vec2 blue;\n\nvoid main(void)\n{\n gl_FragColor.r = texture2D(uSampler, vTextureCoord + red/dimensions.xy).r;\n gl_FragColor.g = texture2D(uSampler, vTextureCoord + green/dimensions.xy).g;\n gl_FragColor.b = texture2D(uSampler, vTextureCoord + blue/dimensions.xy).b;\n gl_FragColor.a = texture2D(uSampler, vTextureCoord).a;\n}\n",{red:{type:"v2",value:{x:20,y:20}},green:{type:"v2",value:{x:-20,y:20}},blue:{type:"v2",value:{x:20,y:-20}},dimensions:{type:"4fv",value:[0,0,0,0]}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{red:{get:function(){return this.uniforms.red.value},set:function(t){this.uniforms.red.value=t}},green:{get:function(){return this.uniforms.green.value},set:function(t){this.uniforms.green.value=t}},blue:{get:function(){return this.uniforms.blue.value},set:function(t){this.uniforms.blue.value=t}}})},{"../../core":19}],102:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float sepia;\n\nconst mat3 sepiaMatrix = mat3(0.3588, 0.7044, 0.1368, 0.2990, 0.5870, 0.1140, 0.2392, 0.4696, 0.0912);\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n gl_FragColor.rgb = mix( gl_FragColor.rgb, gl_FragColor.rgb * sepiaMatrix, sepia);\n}\n",{sepia:{type:"1f",value:1}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{sepia:{get:function(){return this.uniforms.sepia.value},set:function(t){this.uniforms.sepia.value=t}}})},{"../../core":19}],103:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nuniform vec2 center;\nuniform vec3 params; // 10.0, 0.8, 0.1\nuniform float time;\n\nvoid main()\n{\n vec2 uv = vTextureCoord;\n vec2 texCoord = uv;\n\n float dist = distance(uv, center);\n\n if ( (dist <= (time + params.z)) && (dist >= (time - params.z)) )\n {\n float diff = (dist - time);\n float powDiff = 1.0 - pow(abs(diff*params.x), params.y);\n\n float diffTime = diff * powDiff;\n vec2 diffUV = normalize(uv - center);\n texCoord = uv + (diffUV * diffTime);\n }\n\n gl_FragColor = texture2D(uSampler, texCoord);\n}\n",{center:{type:"v2",value:{x:.5,y:.5}},params:{type:"v3",value:{x:10,y:.8,z:.1}},time:{type:"1f",value:0}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{center:{get:function(){return this.uniforms.center.value},set:function(t){this.uniforms.center.value=t}},params:{get:function(){return this.uniforms.params.value},set:function(t){this.uniforms.params.value=t}},time:{get:function(){return this.uniforms.time.value},set:function(t){this.uniforms.time.value=t}}})},{"../../core":19}],104:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float blur;\nuniform float gradientBlur;\nuniform vec2 start;\nuniform vec2 end;\nuniform vec2 delta;\nuniform vec2 texSize;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * texSize - start, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture2D(uSampler, vTextureCoord + delta / texSize * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n}\n",{blur:{type:"1f",value:100},gradientBlur:{type:"1f",value:600},start:{type:"v2",value:{x:0,y:window.innerHeight/2}},end:{type:"v2",value:{x:600,y:window.innerHeight/2}},delta:{type:"v2",value:{x:30,y:30}},texSize:{type:"v2",value:{x:window.innerWidth,y:window.innerHeight}}}),this.updateDelta()}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.updateDelta=function(){this.uniforms.delta.value.x=0,this.uniforms.delta.value.y=0},Object.defineProperties(r.prototype,{blur:{get:function(){return this.uniforms.blur.value},set:function(t){this.uniforms.blur.value=t}},gradientBlur:{get:function(){return this.uniforms.gradientBlur.value},set:function(t){this.uniforms.gradientBlur.value=t}},start:{get:function(){return this.uniforms.start.value},set:function(t){this.uniforms.start.value=t,this.updateDelta()}},end:{get:function(){return this.uniforms.end.value},set:function(t){this.uniforms.end.value=t,this.updateDelta()}}})},{"../../core":19}],105:[function(t,e){function r(){i.AbstractFilter.call(this),this.tiltShiftXFilter=new n,this.tiltShiftYFilter=new o}var i=t("../../core"),n=t("./TiltShiftXFilter"),o=t("./TiltShiftYFilter");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager.getRenderTarget(!0);this.tiltShiftXFilter.applyFilter(t,e,i),this.tiltShiftYFilter.applyFilter(t,i,r),t.filterManager.returnRenderTarget(i)},Object.defineProperties(r.prototype,{blur:{get:function(){return this.tiltShiftXFilter.blur},set:function(t){this.tiltShiftXFilter.blur=this.tiltShiftYFilter.blur=t}},gradientBlur:{get:function(){return this.tiltShiftXFilter.gradientBlur},set:function(t){this.tiltShiftXFilter.gradientBlur=this.tiltShiftYFilter.gradientBlur=t}},start:{get:function(){return this.tiltShiftXFilter.start},set:function(t){this.tiltShiftXFilter.start=this.tiltShiftYFilter.start=t}},end:{get:function(){return this.tiltShiftXFilter.end},set:function(t){this.tiltShiftXFilter.end=this.tiltShiftYFilter.end=t}}})},{"../../core":19,"./TiltShiftXFilter":106,"./TiltShiftYFilter":107}],106:[function(t,e){function r(){i.call(this)}var i=t("./TiltShiftAxisFilter");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.updateDelta=function(){var t=this.uniforms.end.value.x-this.uniforms.start.value.x,e=this.uniforms.end.value.y-this.uniforms.start.value.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.value.x=t/r,this.uniforms.delta.value.y=e/r}},{"./TiltShiftAxisFilter":104}],107:[function(t,e){function r(){i.call(this)}var i=t("./TiltShiftAxisFilter");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.updateDelta=function(){var t=this.uniforms.end.value.x-this.uniforms.start.value.x,e=this.uniforms.end.value.y-this.uniforms.start.value.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.value.x=-e/r,this.uniforms.delta.value.y=t/r}},{"./TiltShiftAxisFilter":104}],108:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord - offset;\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratio = (radius - dist) / radius;\n float angleMod = ratio * ratio * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n gl_FragColor = texture2D(uSampler, coord+offset);\n}\n",{radius:{type:"1f",value:.5},angle:{type:"1f",value:5},offset:{type:"v2",value:{x:.5,y:.5}}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{offset:{get:function(){return this.uniforms.offset.value},set:function(t){this.uniforms.offset.value=t}},radius:{get:function(){return this.uniforms.radius.value},set:function(t){this.uniforms.radius.value=t}},angle:{get:function(){return this.uniforms.angle.value},set:function(t){this.uniforms.angle.value=t}}})},{"../../core":19}],109:[function(t,e){function r(){this.global=new i.math.Point,this.target=null,this.originalEvent=null}var i=t("../core");r.prototype.constructor=r,e.exports=r,r.prototype.getLocalPosition=function(t,e){var r=t.worldTransform,n=this.global,o=r.a,s=r.c,a=r.tx,h=r.b,l=r.d,u=r.ty,c=1/(o*l+s*-h);return e=e||new i.math.Point,e.x=l*c*n.x+-s*c*n.y+(u*s-a*l)*c,e.y=o*c*n.y+-h*c*n.x+(-u*o+a*h)*c,e}},{"../core":19}],110:[function(t,e){function r(t){this.renderer=t,this.mouse=new n,this.eventData=new i.utils.EventData,this.eventData.data=this.mouse,this.interactiveDataPool=[],this.interactionDOMElement=null,this.eventsAdded=!1,this.onMouseUp=this.onMouseUp.bind(this),this.processMouseUp=this.processMouseUp.bind(this),this.onMouseDown=this.onMouseDown.bind(this),this.processMouseDown=this.processMouseDown.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.processMouseMove=this.processMouseMove.bind(this),this.onMouseOut=this.onMouseOut.bind(this),this.processMouseOverOut=this.processMouseOverOut.bind(this),this.onTouchStart=this.onTouchStart.bind(this),this.processTouchStart=this.processTouchStart.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this),this.processTouchEnd=this.processTouchEnd.bind(this),this.onTouchMove=this.onTouchMove.bind(this),this.processTouchMove=this.processTouchMove.bind(this),this.last=0,this.currentCursorStyle="inherit",this._tempPoint=new i.math.Point,this.resolution=1,this.setTargetElement(this.renderer.view,this.renderer.resolution),this.update()}var i=t("../core"),n=t("./InteractionData"),o=10,s=!0;r.prototype.constructor=r,e.exports=r,r.prototype.setTargetElement=function(t,e){this.removeEvents(),this.interactionDOMElement=t,this.resolution=e||1,this.addEvents()},r.prototype.addEvents=function(){this.interactionDOMElement&&(window.navigator.msPointerEnabled&&(this.interactionDOMElement.style["-ms-content-zooming"]="none",this.interactionDOMElement.style["-ms-touch-action"]="none"),this.interactionDOMElement.addEventListener("mousemove",this.onMouseMove,!0),this.interactionDOMElement.addEventListener("mousedown",this.onMouseDown,!0),this.interactionDOMElement.addEventListener("mouseout",this.onMouseOut,!0),this.interactionDOMElement.addEventListener("touchstart",this.onTouchStart,!0),this.interactionDOMElement.addEventListener("touchend",this.onTouchEnd,!0),this.interactionDOMElement.addEventListener("touchmove",this.onTouchMove,!0),window.addEventListener("mouseup",this.onMouseUp,!0),this.eventsAdded=!0)},r.prototype.removeEvents=function(){this.interactionDOMElement&&(window.navigator.msPointerEnabled&&(this.interactionDOMElement.style["-ms-content-zooming"]="",this.interactionDOMElement.style["-ms-touch-action"]=""),this.interactionDOMElement.removeEventListener("mousemove",this.onMouseMove,!0),this.interactionDOMElement.removeEventListener("mousedown",this.onMouseDown,!0),this.interactionDOMElement.removeEventListener("mouseout",this.onMouseOut,!0),this.interactionDOMElement.removeEventListener("touchstart",this.onTouchStart,!0),this.interactionDOMElement.removeEventListener("touchend",this.onTouchEnd,!0),this.interactionDOMElement.removeEventListener("touchmove",this.onTouchMove,!0),this.interactionDOMElement=null,window.removeEventListener("mouseup",this.onMouseUp,!0),this.eventsAdded=!1)},r.prototype.update=function(){if(requestAnimationFrame(this.update.bind(this)),!this.throttleUpdate()&&this.interactionDOMElement){if(this.didMove)return void(this.didMove=!1);this.cursor="inherit",this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseOverOut.bind(this),!0),this.currentCursorStyle!==this.cursor&&(this.currentCursorStyle=this.cursor,this.interactionDOMElement.style.cursor=this.cursor)}},r.prototype.dispatchEvent=function(t,e,r){r.stopped||(r.target=t,r.type=e,t.emit(e,r),t[e]&&t[e](r))},r.prototype.throttleUpdate=function(){var t=Date.now(),e=t-this.last;return e=e*o/1e3,1>e?!0:(this.last=t,!1)},r.prototype.mapPositionToPoint=function(t,e,r){var i=this.interactionDOMElement.getBoundingClientRect();t.x=(e-i.left)*(this.interactionDOMElement.width/i.width)/this.resolution,t.y=(r-i.top)*(this.interactionDOMElement.height/i.height)/this.resolution},r.prototype.processInteractive=function(t,e,r,i,n){if(!e.visible)return!1;var o=e.children,s=!1;if(n=n||e.interactive,e.interactiveChildren)for(var a=o.length-1;a>=0;a--)!s&&i?s=this.processInteractive(t,o[a],r,!0,n):this.processInteractive(t,o[a],r,!1,!1);return n&&(i&&(e.hitArea?(e.worldTransform.applyInverse(t,this._tempPoint),s=e.hitArea.contains(this._tempPoint.x,this._tempPoint.y)):e.containsPoint&&(s=e.containsPoint(t))),e.interactive&&r(e,s)),s},r.prototype.onMouseDown=function(t){this.mouse.originalEvent=t,this.eventData.data=this.mouse,this.eventData.stopped=!1,s&&this.mouse.originalEvent.preventDefault(),this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseDown,!0)},r.prototype.processMouseDown=function(t,e){var r=this.mouse.originalEvent,i=2===r.button||3===r.which;e&&(t[i?"_isRightDown":"_isLeftDown"]=!0,this.dispatchEvent(t,i?"rightdown":"mousedown",this.eventData))},r.prototype.onMouseUp=function(t){this.mouse.originalEvent=t,this.eventData.data=this.mouse,this.eventData.stopped=!1,this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseUp,!0)},r.prototype.processMouseUp=function(t,e){var r=this.mouse.originalEvent,i=2===r.button||3===r.which,n=i?"_isRightDown":"_isLeftDown";e?(this.dispatchEvent(t,i?"rightup":"mouseup",this.eventData),t[n]&&(t[n]=!1,this.dispatchEvent(t,i?"rightclick":"click",this.eventData))):t[n]&&(t[n]=!1,this.dispatchEvent(t,i?"rightupoutside":"mouseupoutside",this.eventData))},r.prototype.onMouseMove=function(t){this.mouse.originalEvent=t,this.eventData.data=this.mouse,this.eventData.stopped=!1,this.mapPositionToPoint(this.mouse.global,t.clientX,t.clientY),this.didMove=!0,this.cursor="inherit",this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseMove,!0),this.currentCursorStyle!==this.cursor&&(this.currentCursorStyle=this.cursor,this.interactionDOMElement.style.cursor=this.cursor)},r.prototype.processMouseMove=function(t,e){this.dispatchEvent(t,"mousemove",this.eventData),this.processMouseOverOut(t,e)},r.prototype.onMouseOut=function(t){this.mouse.originalEvent=t,this.eventData.stopped=!1,this.interactionDOMElement.style.cursor="inherit",this.mapPositionToPoint(this.mouse.global,t.clientX,t.clientY),this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseOverOut,!1)},r.prototype.processMouseOverOut=function(t,e){e?(t._over||(t._over=!0,this.dispatchEvent(t,"mouseover",this.eventData)),t.buttonMode&&(this.cursor=t.defaultCursor)):t._over&&(t._over=!1,this.dispatchEvent(t,"mouseout",this.eventData))},r.prototype.onTouchStart=function(t){s&&t.preventDefault();for(var e=t.changedTouches,r=0;re;e++){var o=this.skeleton.drawOrder[e],s=o.attachment,a=new i.Container;if(this.slotContainers.push(a),this.addChild(a),s instanceof n.RegionAttachment){var h=s.rendererObject.name,l=this.createSprite(o,s);o.currentSprite=l,o.currentSpriteName=h,a.addChild(l)}else{if(!(s instanceof n.MeshAttachment))continue;var u=this.createMesh(o,s);o.currentMesh=u,o.currentMeshName=s.name,a.addChild(u)}}this.autoUpdate=!0}var i=t("../core"),n=t("./SpineRuntime");n.Bone.yDown=!0,r.prototype=Object.create(i.Container.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{autoUpdate:{get:function(){return this.updateTransform===r.prototype.autoUpdateTransform},set:function(t){this.updateTransform=t?r.prototype.autoUpdateTransform:i.Container.prototype.updateTransform}}}),r.prototype.update=function(t){this.state.update(t),this.state.apply(this.skeleton),this.skeleton.updateWorldTransform();for(var e=this.skeleton.drawOrder,r=0,o=e.length;o>r;r++){var s=e[r],a=s.attachment,h=this.slotContainers[r];if(a){var l=a.type;if(l===n.AttachmentType.region){if(a.rendererObject&&(!s.currentSpriteName||s.currentSpriteName!==a.rendererObject.name)){var u=a.rendererObject.name;if(void 0!==s.currentSprite&&(s.currentSprite.visible=!1),s.sprites=s.sprites||{},void 0!==s.sprites[u])s.sprites[u].visible=!0;else{var c=this.createSprite(s,a);h.addChild(c)}s.currentSprite=s.sprites[u],s.currentSpriteName=u}var d=s.bone;h.position.x=d.worldX+a.x*d.m00+a.y*d.m01,h.position.y=d.worldY+a.x*d.m10+a.y*d.m11,h.scale.x=d.worldScaleX,h.scale.y=d.worldScaleY,h.rotation=-(s.bone.worldRotation*n.degRad),s.currentSprite.tint=i.utils.rgb2hex([s.r,s.g,s.b])}else{if(l!==n.AttachmentType.skinnedmesh){h.visible=!1;continue}if(!s.currentMeshName||s.currentMeshName!==a.name){var p=a.name;if(void 0!==s.currentMesh&&(s.currentMesh.visible=!1),s.meshes=s.meshes||{},void 0!==s.meshes[p])s.meshes[p].visible=!0;else{var f=this.createMesh(s,a);h.addChild(f)}s.currentMesh=s.meshes[p],s.currentMeshName=p}a.computeWorldVertices(s.bone.skeleton.x,s.bone.skeleton.y,s,s.currentMesh.vertices)}h.visible=!0,h.alpha=s.a}else h.visible=!1}},r.prototype.autoUpdateTransform=function(){this.lastTime=this.lastTime||Date.now();var t=.001*(Date.now()-this.lastTime);this.lastTime=Date.now(),this.update(t),i.Container.prototype.updateTransform.call(this)},r.prototype.createSprite=function(t,e){var r=e.rendererObject,o=r.page.rendererObject,s=new i.math.Rectangle(r.x,r.y,r.rotate?r.height:r.width,r.rotate?r.width:r.height),a=new i.Texture(o,s),h=new i.Sprite(a),l=r.rotate?.5*Math.PI:0;return h.scale.set(r.width/r.originalWidth,r.height/r.originalHeight),h.rotation=l-e.rotation*n.degRad,h.anchor.x=h.anchor.y=.5,t.sprites=t.sprites||{},t.sprites[r.name]=h,h},r.prototype.createMesh=function(t,e){var r=e.rendererObject,n=r.page.rendererObject,o=new i.Texture(n),s=new i.Strip(o);return s.drawMode=i.Strip.DRAW_MODES.TRIANGLES,s.canvasPadding=1.5,s.vertices=new Float32Array(e.uvs.length),s.uvs=e.uvs,s.indices=e.triangles,t.meshes=t.meshes||{},t.meshes[e.name]=s,s}},{"../core":19,"./SpineRuntime":120}],120:[function(t,e){var r=t("../core"),i=e.exports={radDeg:180/Math.PI,degRad:Math.PI/180,temp:[],Float32Array:"undefined"==typeof Float32Array?Array:Float32Array,Uint16Array:"undefined"==typeof Uint16Array?Array:Uint16Array};i.BoneData=function(t,e){this.name=t,this.parent=e},i.BoneData.prototype={length:0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,inheritScale:!0,inheritRotation:!0,flipX:!1,flipY:!1},i.SlotData=function(t,e){this.name=t,this.boneData=e},i.SlotData.prototype={r:1,g:1,b:1,a:1,attachmentName:null,additiveBlending:!1},i.IkConstraintData=function(t){this.name=t,this.bones=[]},i.IkConstraintData.prototype={target:null,bendDirection:1,mix:1},i.Bone=function(t,e,r){this.data=t,this.skeleton=e,this.parent=r,this.setToSetupPose()},i.Bone.yDown=!1,i.Bone.prototype={x:0,y:0,rotation:0,rotationIK:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,m00:0,m01:0,worldX:0,m10:0,m11:0,worldY:0,worldRotation:0,worldScaleX:1,worldScaleY:1,worldFlipX:!1,worldFlipY:!1,updateWorldTransform:function(){var t=this.parent;if(t)this.worldX=this.x*t.m00+this.y*t.m01+t.worldX,this.worldY=this.x*t.m10+this.y*t.m11+t.worldY,this.data.inheritScale?(this.worldScaleX=t.worldScaleX*this.scaleX,this.worldScaleY=t.worldScaleY*this.scaleY):(this.worldScaleX=this.scaleX,this.worldScaleY=this.scaleY),this.worldRotation=this.data.inheritRotation?t.worldRotation+this.rotationIK:this.rotationIK,this.worldFlipX=t.worldFlipX!=this.flipX,this.worldFlipY=t.worldFlipY!=this.flipY;else{var e=this.skeleton.flipX,r=this.skeleton.flipY;this.worldX=e?-this.x:this.x,this.worldY=r!=i.Bone.yDown?-this.y:this.y,this.worldScaleX=this.scaleX,this.worldScaleY=this.scaleY,this.worldRotation=this.rotationIK,this.worldFlipX=e!=this.flipX,this.worldFlipY=r!=this.flipY}var n=this.worldRotation*i.degRad,o=Math.cos(n),s=Math.sin(n);this.worldFlipX?(this.m00=-o*this.worldScaleX,this.m01=s*this.worldScaleY):(this.m00=o*this.worldScaleX,this.m01=-s*this.worldScaleY),this.worldFlipY!=i.Bone.yDown?(this.m10=-s*this.worldScaleX,this.m11=-o*this.worldScaleY):(this.m10=s*this.worldScaleX,this.m11=o*this.worldScaleY)},setToSetupPose:function(){var t=this.data;this.x=t.x,this.y=t.y,this.rotation=t.rotation,this.rotationIK=this.rotation,this.scaleX=t.scaleX,this.scaleY=t.scaleY,this.flipX=t.flipX,this.flipY=t.flipY},worldToLocal:function(t){var e=t[0]-this.worldX,r=t[1]-this.worldY,n=this.m00,o=this.m10,s=this.m01,a=this.m11;this.worldFlipX!=(this.worldFlipY!=i.Bone.yDown)&&(n=-n,a=-a);var h=1/(n*a-s*o);t[0]=e*n*h-r*s*h,t[1]=r*a*h-e*o*h},localToWorld:function(t){var e=t[0],r=t[1];t[0]=e*this.m00+r*this.m01+this.worldX,t[1]=e*this.m10+r*this.m11+this.worldY}},i.Slot=function(t,e){this.data=t,this.bone=e,this.setToSetupPose()},i.Slot.prototype={r:1,g:1,b:1,a:1,_attachmentTime:0,attachment:null,attachmentVertices:[],setAttachment:function(t){this.attachment=t,this._attachmentTime=this.bone.skeleton.time,this.attachmentVertices.length=0},setAttachmentTime:function(t){this._attachmentTime=this.bone.skeleton.time-t},getAttachmentTime:function(){return this.bone.skeleton.time-this._attachmentTime},setToSetupPose:function(){var t=this.data;this.r=t.r,this.g=t.g,this.b=t.b,this.a=t.a;for(var e=this.bone.skeleton.data.slots,r=0,i=e.length;i>r;r++)if(e[r]==t){this.setAttachment(t.attachmentName?this.bone.skeleton.getAttachmentBySlotIndex(r,t.attachmentName):null);break}}},i.IkConstraint=function(t,e){this.data=t,this.mix=t.mix,this.bendDirection=t.bendDirection,this.bones=[];for(var r=0,i=t.bones.length;i>r;r++)this.bones.push(e.findBone(t.bones[r].name));this.target=e.findBone(t.target.name)},i.IkConstraint.prototype={apply:function(){var t=this.target,e=this.bones;switch(e.length){case 1:i.IkConstraint.apply1(e[0],t.worldX,t.worldY,this.mix);break;case 2:i.IkConstraint.apply2(e[0],e[1],t.worldX,t.worldY,this.bendDirection,this.mix)}}},i.IkConstraint.apply1=function(t,e,r,n){var o=t.data.inheritRotation&&t.parent?t.parent.worldRotation:0,s=t.rotation,a=Math.atan2(r-t.worldY,e-t.worldX)*i.radDeg-o;t.rotationIK=s+(a-s)*n},i.IkConstraint.apply2=function(t,e,r,n,o,s){var a=e.rotation,h=t.rotation;if(!s)return e.rotationIK=a,void(t.rotationIK=h);var l,u,c=i.temp,d=t.parent;d?(c[0]=r,c[1]=n,d.worldToLocal(c),r=(c[0]-t.x)*d.worldScaleX,n=(c[1]-t.y)*d.worldScaleY):(r-=t.x,n-=t.y),e.parent==t?(l=e.x,u=e.y):(c[0]=e.x,c[1]=e.y,e.parent.localToWorld(c),t.worldToLocal(c),l=c[0],u=c[1]);var p=l*t.worldScaleX,f=u*t.worldScaleY,g=Math.atan2(f,p),v=Math.sqrt(p*p+f*f),m=e.data.length*e.worldScaleX,y=2*v*m;if(1e-4>y)return void(e.rotationIK=a+(Math.atan2(n,r)*i.radDeg-h-a)*s);var x=(r*r+n*n-v*v-m*m)/y;-1>x?x=-1:x>1&&(x=1);var b=Math.acos(x)*o,T=v+m*x,_=m*Math.sin(b),E=Math.atan2(n*T-r*_,r*T+n*_),w=(E-g)*i.radDeg-h;w>180?w-=360:-180>w&&(w+=360),t.rotationIK=h+w*s,w=(b+g)*i.radDeg-a,w>180?w-=360:-180>w&&(w+=360),e.rotationIK=a+(w+t.worldRotation-e.parent.worldRotation)*s},i.Skin=function(t){this.name=t,this.attachments={}},i.Skin.prototype={addAttachment:function(t,e,r){this.attachments[t+":"+e]=r},getAttachment:function(t,e){return this.attachments[t+":"+e]},_attachAll:function(t,e){for(var r in e.attachments){var i=r.indexOf(":"),n=parseInt(r.substring(0,i)),o=r.substring(i+1),s=t.slots[n];if(s.attachment&&s.attachment.name==o){var a=this.getAttachment(n,o);a&&s.setAttachment(a)}}}},i.Animation=function(t,e,r){this.name=t,this.timelines=e,this.duration=r},i.Animation.prototype={apply:function(t,e,r,i,n){i&&0!=this.duration&&(r%=this.duration,e%=this.duration);for(var o=this.timelines,s=0,a=o.length;a>s;s++)o[s].apply(t,e,r,n,1)},mix:function(t,e,r,i,n,o){i&&0!=this.duration&&(r%=this.duration,e%=this.duration);for(var s=this.timelines,a=0,h=s.length;h>a;a++)s[a].apply(t,e,r,n,o)}},i.Animation.binarySearch=function(t,e,r){var i=0,n=Math.floor(t.length/r)-2;if(!n)return r;for(var o=n>>>1;;){if(t[(o+1)*r]<=e?i=o+1:n=o,i==n)return(i+1)*r;o=i+n>>>1}},i.Animation.binarySearch1=function(t,e){var r=0,i=t.length-2;if(!i)return 1;for(var n=i>>>1;;){if(t[n+1]<=e?r=n+1:i=n,r==i)return r+1;n=r+i>>>1}},i.Animation.linearSearch=function(t,e,r){for(var i=0,n=t.length-r;n>=i;i+=r)if(t[i]>e)return i;return-1},i.Curves=function(){this.curves=[]},i.Curves.prototype={setLinear:function(t){this.curves[19*t]=0},setStepped:function(t){this.curves[19*t]=1},setCurve:function(t,e,r,i,n){var o=.1,s=o*o,a=s*o,h=3*o,l=3*s,u=6*s,c=6*a,d=2*-e+i,p=2*-r+n,f=3*(e-i)+1,g=3*(r-n)+1,v=e*h+d*l+f*a,m=r*h+p*l+g*a,y=d*u+f*c,x=p*u+g*c,b=f*c,T=g*c,_=19*t,E=this.curves;E[_++]=2;for(var w=v,S=m,A=_+19-1;A>_;_+=2)E[_]=w,E[_+1]=S,v+=y,m+=x,y+=b,x+=T,w+=v,S+=m},getCurvePercent:function(t,e){e=0>e?0:e>1?1:e;var r=this.curves,i=19*t,n=r[i];if(0===n)return e;if(1==n)return 0;i++;for(var o=0,s=i,a=i+19-1;a>i;i+=2)if(o=r[i],o>=e){var h,l;return i==s?(h=0,l=0):(h=r[i-2],l=r[i-1]),l+(r[i+1]-l)*(e-h)/(o-h)}var u=r[i-1];return u+(1-u)*(e-o)/(1-o)}},i.RotateTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=2*t},i.RotateTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/2},setFrame:function(t,e,r){t*=2,this.frames[t]=e,this.frames[t+1]=r},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-2]){for(var h=a.data.rotation+s[s.length-1]-a.rotation;h>180;)h-=360;for(;-180>h;)h+=360;return void(a.rotation+=h*o)}var l=i.Animation.binarySearch(s,r,2),u=s[l-1],c=s[l],d=1-(r-c)/(s[l-2]-c);d=this.curves.getCurvePercent(l/2-1,d);for(var h=s[l+1]-u;h>180;)h-=360;for(;-180>h;)h+=360;for(h=a.data.rotation+(u+h*d)-a.rotation;h>180;)h-=360;for(;-180>h;)h+=360;a.rotation+=h*o}}},i.TranslateTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=3*t},i.TranslateTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/3},setFrame:function(t,e,r,i){t*=3,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-3])return a.x+=(a.data.x+s[s.length-2]-a.x)*o,void(a.y+=(a.data.y+s[s.length-1]-a.y)*o);var h=i.Animation.binarySearch(s,r,3),l=s[h-2],u=s[h-1],c=s[h],d=1-(r-c)/(s[h+-3]-c);d=this.curves.getCurvePercent(h/3-1,d),a.x+=(a.data.x+l+(s[h+1]-l)*d-a.x)*o,a.y+=(a.data.y+u+(s[h+2]-u)*d-a.y)*o}}},i.ScaleTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=3*t},i.ScaleTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/3},setFrame:function(t,e,r,i){t*=3,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-3])return a.scaleX+=(a.data.scaleX*s[s.length-2]-a.scaleX)*o,void(a.scaleY+=(a.data.scaleY*s[s.length-1]-a.scaleY)*o);var h=i.Animation.binarySearch(s,r,3),l=s[h-2],u=s[h-1],c=s[h],d=1-(r-c)/(s[h+-3]-c);d=this.curves.getCurvePercent(h/3-1,d),a.scaleX+=(a.data.scaleX*(l+(s[h+1]-l)*d)-a.scaleX)*o,a.scaleY+=(a.data.scaleY*(u+(s[h+2]-u)*d)-a.scaleY)*o}}},i.ColorTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=5*t},i.ColorTimeline.prototype={slotIndex:0,getFrameCount:function(){return this.frames.length/5},setFrame:function(t,e,r,i,n,o){t*=5,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i,this.frames[t+3]=n,this.frames[t+4]=o},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-5]){var c=s.length-1;a=s[c-3],h=s[c-2],l=s[c-1],u=s[c]}else{var d=i.Animation.binarySearch(s,r,5),p=s[d-4],f=s[d-3],g=s[d-2],v=s[d-1],m=s[d],y=1-(r-m)/(s[d-5]-m);y=this.curves.getCurvePercent(d/5-1,y),a=p+(s[d+1]-p)*y,h=f+(s[d+2]-f)*y,l=g+(s[d+3]-g)*y,u=v+(s[d+4]-v)*y}var x=t.slots[this.slotIndex];1>o?(x.r+=(a-x.r)*o,x.g+=(h-x.g)*o,x.b+=(l-x.b)*o,x.a+=(u-x.a)*o):(x.r=a,x.g=h,x.b=l,x.a=u)}}},i.AttachmentTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=t,this.attachmentNames=[],this.attachmentNames.length=t},i.AttachmentTimeline.prototype={slotIndex:0,getFrameCount:function(){return this.frames.length},setFrame:function(t,e,r){this.frames[t]=e,this.attachmentNames[t]=r},apply:function(t,e,r){var n=this.frames;if(rr&&this.apply(t,e,Number.MAX_VALUE,null,0));e>r&&(e=-1);var o=r>=n[n.length-1]?n.length-1:i.Animation.binarySearch1(n,r)-1;if(!(n[o]r)this.apply(t,e,Number.MAX_VALUE,n,o),e=-1;else if(e>=s[a-1])return;if(!(r0&&s[h-1]==l;)h--}for(var u=this.events;a>h&&r>=s[h];h++)n.push(u[h])}}}},i.DrawOrderTimeline=function(t){this.frames=[],this.frames.length=t,this.drawOrders=[],this.drawOrders.length=t},i.DrawOrderTimeline.prototype={getFrameCount:function(){return this.frames.length},setFrame:function(t,e,r){this.frames[t]=e,this.drawOrders[t]=r},apply:function(t,e,r){var n=this.frames;if(!(r=n[n.length-1]?n.length-1:i.Animation.binarySearch1(n,r)-1;var s=t.drawOrder,a=t.slots,h=this.drawOrders[o];if(h)for(var l=0,u=h.length;u>l;l++)s[l]=t.slots[h[l]];else for(var l=0,u=a.length;u>l;l++)s[l]=a[l]}}},i.FfdTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=t,this.frameVertices=[],this.frameVertices.length=t},i.FfdTimeline.prototype={slotIndex:0,attachment:0,getFrameCount:function(){return this.frames.length},setFrame:function(t,e,r){this.frames[t]=e,this.frameVertices[t]=r},apply:function(t,e,r,n,o){var s=t.slots[this.slotIndex];if(s.attachment==this.attachment){var a=this.frames;if(!(r=a[a.length-1]){var c=h[a.length-1];if(1>o)for(var d=0;l>d;d++)u[d]+=(c[d]-u[d])*o;else for(var d=0;l>d;d++)u[d]=c[d]}else{var p=i.Animation.binarySearch1(a,r),f=a[p],g=1-(r-f)/(a[p-1]-f);g=this.curves.getCurvePercent(p-1,0>g?0:g>1?1:g);var v=h[p-1],m=h[p];if(1>o)for(var d=0;l>d;d++){var y=v[d];u[d]+=(y+(m[d]-y)*g-u[d])*o}else for(var d=0;l>d;d++){var y=v[d];u[d]=y+(m[d]-y)*g}}}}}},i.IkConstraintTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=3*t},i.IkConstraintTimeline.prototype={ikConstraintIndex:0,getFrameCount:function(){return this.frames.length/3},setFrame:function(t,e,r,i){t*=3,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-3])return a.mix+=(s[s.length-2]-a.mix)*o,void(a.bendDirection=s[s.length-1]);var h=i.Animation.binarySearch(s,r,3),l=s[h+-2],u=s[h],c=1-(r-u)/(s[h+-3]-u);c=this.curves.getCurvePercent(h/3-1,c);var d=l+(s[h+1]-l)*c;a.mix+=(d-a.mix)*o,a.bendDirection=s[h+-1]}}},i.FlipXTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=2*t},i.FlipXTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/2},setFrame:function(t,e,r){t*=2,this.frames[t]=e,this.frames[t+1]=r?1:0},apply:function(t,e,r){var n=this.frames;if(rr&&this.apply(t,e,Number.MAX_VALUE,null,0));e>r&&(e=-1);var o=(r>=n[n.length-2]?n.length:i.Animation.binarySearch(n,r,2))-2;n[o]r&&this.apply(t,e,Number.MAX_VALUE,null,0));e>r&&(e=-1);var o=(r>=n[n.length-2]?n.length:i.Animation.binarySearch(n,r,2))-2;n[o]r;r++)if(e[r].name==t)return e[r];return null},findBoneIndex:function(t){for(var e=this.bones,r=0,i=e.length;i>r;r++)if(e[r].name==t)return r;return-1},findSlot:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].name==t)return slot[r];return null},findSlotIndex:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].name==t)return r;return-1},findSkin:function(t){for(var e=this.skins,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},findEvent:function(t){for(var e=this.events,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},findAnimation:function(t){for(var e=this.animations,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},findIkConstraint:function(t){for(var e=this.ikConstraints,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null}},i.Skeleton=function(t){this.data=t,this.bones=[];for(var e=0,r=t.bones.length;r>e;e++){var n=t.bones[e],o=n.parent?this.bones[t.bones.indexOf(n.parent)]:null;this.bones.push(new i.Bone(n,this,o))}this.slots=[],this.drawOrder=[];for(var e=0,r=t.slots.length;r>e;e++){var s=t.slots[e],a=this.bones[t.bones.indexOf(s.boneData)],h=new i.Slot(s,a);this.slots.push(h),this.drawOrder.push(h)}this.ikConstraints=[];for(var e=0,r=t.ikConstraints.length;r>e;e++)this.ikConstraints.push(new i.IkConstraint(t.ikConstraints[e],this));this.boneCache=[],this.updateCache()},i.Skeleton.prototype={x:0,y:0,skin:null,r:1,g:1,b:1,a:1,time:0,flipX:!1,flipY:!1,updateCache:function(){var t=this.ikConstraints,e=t.length,r=e+1,i=this.boneCache;i.length>r&&(i.length=r);for(var n=0,o=i.length;o>n;n++)i[n].length=0;for(;i.lengthn;n++){var h=a[n],l=h;do{for(var u=0;e>u;u++)for(var c=t[u],d=c.bones[0],p=c.bones[c.bones.length-1];;){if(l==p){i[u].push(h),i[u+1].push(h);continue t}if(p==d)break;p=p.parent}l=l.parent}while(l);s[s.length]=h}},updateWorldTransform:function(){for(var t=this.bones,e=0,r=t.length;r>e;e++){var i=t[e];i.rotationIK=i.rotation}for(var e=0,n=this.boneCache.length-1;;){for(var o=this.boneCache[e],s=0,a=o.length;a>s;s++)o[s].updateWorldTransform();if(e==n)break;this.ikConstraints[e].apply(),e++}},setToSetupPose:function(){this.setBonesToSetupPose(),this.setSlotsToSetupPose()},setBonesToSetupPose:function(){for(var t=this.bones,e=0,r=t.length;r>e;e++)t[e].setToSetupPose();for(var i=this.ikConstraints,e=0,r=i.length;r>e;e++){var n=i[e];n.bendDirection=n.data.bendDirection,n.mix=n.data.mix}},setSlotsToSetupPose:function(){for(var t=this.slots,e=this.drawOrder,r=0,i=t.length;i>r;r++)e[r]=t[r],t[r].setToSetupPose(r)},getRootBone:function(){return this.bones.length?this.bones[0]:null},findBone:function(t){for(var e=this.bones,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return e[r];return null},findBoneIndex:function(t){for(var e=this.bones,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return r;return-1},findSlot:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return e[r];return null},findSlotIndex:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return r;return-1},setSkinByName:function(t){var e=this.data.findSkin(t);if(!e)throw"Skin not found: "+t;this.setSkin(e)},setSkin:function(t){if(t)if(this.skin)t._attachAll(this,this.skin);else for(var e=this.slots,r=0,i=e.length;i>r;r++){var n=e[r],o=n.data.attachmentName;if(o){var s=t.getAttachment(r,o);s&&n.setAttachment(s)}}this.skin=t},getAttachmentBySlotName:function(t,e){return this.getAttachmentBySlotIndex(this.data.findSlotIndex(t),e)},getAttachmentBySlotIndex:function(t,e){if(this.skin){var r=this.skin.getAttachment(t,e);if(r)return r}return this.data.defaultSkin?this.data.defaultSkin.getAttachment(t,e):null},setAttachment:function(t,e){for(var r=this.slots,i=0,n=r.length;n>i;i++){var o=r[i];if(o.data.name==t){var s=null;if(e&&(s=this.getAttachmentBySlotIndex(i,e),!s))throw"Attachment not found: "+e+", for slot: "+t;return void o.setAttachment(s)}}throw"Slot not found: "+t},findIkConstraint:function(t){for(var e=this.ikConstraints,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return e[r];return null},update:function(t){this.time+=t}},i.EventData=function(t){this.name=t},i.EventData.prototype={intValue:0,floatValue:0,stringValue:null},i.Event=function(t){this.data=t},i.Event.prototype={intValue:0,floatValue:0,stringValue:null},i.AttachmentType={region:0,boundingbox:1,mesh:2,skinnedmesh:3},i.RegionAttachment=function(t){this.name=t,this.offset=[],this.offset.length=8,this.uvs=[],this.uvs.length=8},i.RegionAttachment.prototype={type:i.AttachmentType.region,x:0,y:0,rotation:0,scaleX:1,scaleY:1,width:0,height:0,r:1,g:1,b:1,a:1,path:null,rendererObject:null,regionOffsetX:0,regionOffsetY:0,regionWidth:0,regionHeight:0,regionOriginalWidth:0,regionOriginalHeight:0,setUVs:function(t,e,r,i,n){var o=this.uvs;n?(o[2]=t,o[3]=i,o[4]=t,o[5]=e,o[6]=r,o[7]=e,o[0]=r,o[1]=i):(o[0]=t,o[1]=i,o[2]=t,o[3]=e,o[4]=r,o[5]=e,o[6]=r,o[7]=i)},updateOffset:function(){var t=this.width/this.regionOriginalWidth*this.scaleX,e=this.height/this.regionOriginalHeight*this.scaleY,r=-this.width/2*this.scaleX+this.regionOffsetX*t,n=-this.height/2*this.scaleY+this.regionOffsetY*e,o=r+this.regionWidth*t,s=n+this.regionHeight*e,a=this.rotation*i.degRad,h=Math.cos(a),l=Math.sin(a),u=r*h+this.x,c=r*l,d=n*h+this.y,p=n*l,f=o*h+this.x,g=o*l,v=s*h+this.y,m=s*l,y=this.offset;y[0]=u-p,y[1]=d+c,y[2]=u-m,y[3]=v+c,y[4]=f-m,y[5]=v+g,y[6]=f-p,y[7]=d+g},computeVertices:function(t,e,r,i){t+=r.worldX,e+=r.worldY;var n=r.m00,o=r.m01,s=r.m10,a=r.m11,h=this.offset;i[0]=h[0]*n+h[1]*o+t,i[1]=h[0]*s+h[1]*a+e,i[2]=h[2]*n+h[3]*o+t,i[3]=h[2]*s+h[3]*a+e,i[4]=h[4]*n+h[5]*o+t,i[5]=h[4]*s+h[5]*a+e,i[6]=h[6]*n+h[7]*o+t,i[7]=h[6]*s+h[7]*a+e}},i.MeshAttachment=function(t){this.name=t},i.MeshAttachment.prototype={type:i.AttachmentType.mesh,vertices:null,uvs:null,regionUVs:null,triangles:null,hullLength:0,r:1,g:1,b:1,a:1,path:null,rendererObject:null,regionU:0,regionV:0,regionU2:0,regionV2:0,regionRotate:!1,regionOffsetX:0,regionOffsetY:0,regionWidth:0,regionHeight:0,regionOriginalWidth:0,regionOriginalHeight:0,edges:null,width:0,height:0,updateUVs:function(){var t=this.regionU2-this.regionU,e=this.regionV2-this.regionV,r=this.regionUVs.length;if(this.uvs&&this.uvs.length==r||(this.uvs=new i.Float32Array(r)),this.regionRotate)for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n+1]*t,this.uvs[n+1]=this.regionV+e-this.regionUVs[n]*e;else for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n]*t,this.uvs[n+1]=this.regionV+this.regionUVs[n+1]*e},computeWorldVertices:function(t,e,r,i){var n=r.bone;t+=n.worldX,e+=n.worldY;var o=n.m00,s=n.m01,a=n.m10,h=n.m11,l=this.vertices,u=l.length;r.attachmentVertices.length==u&&(l=r.attachmentVertices);for(var c=0;u>c;c+=2){var d=l[c],p=l[c+1];i[c]=d*o+p*s+t,i[c+1]=d*a+p*h+e}}},i.SkinnedMeshAttachment=function(t){this.name=t},i.SkinnedMeshAttachment.prototype={type:i.AttachmentType.skinnedmesh,bones:null,weights:null,uvs:null,regionUVs:null,triangles:null,hullLength:0,r:1,g:1,b:1,a:1,path:null,rendererObject:null,regionU:0,regionV:0,regionU2:0,regionV2:0,regionRotate:!1,regionOffsetX:0,regionOffsetY:0,regionWidth:0,regionHeight:0,regionOriginalWidth:0,regionOriginalHeight:0,edges:null,width:0,height:0,updateUVs:function(){var t=this.regionU2-this.regionU,e=this.regionV2-this.regionV,r=this.regionUVs.length;if(this.uvs&&this.uvs.length==r||(this.uvs=new i.Float32Array(r)),this.regionRotate)for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n+1]*t,this.uvs[n+1]=this.regionV+e-this.regionUVs[n]*e;else for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n]*t,this.uvs[n+1]=this.regionV+this.regionUVs[n+1]*e},computeWorldVertices:function(t,e,r,i){var n,o,s,a,h,l,u,c=r.bone.skeleton.bones,d=this.weights,p=this.bones,f=0,g=0,v=0,m=0,y=p.length;if(r.attachmentVertices.length)for(var x=r.attachmentVertices;y>g;f+=2){for(o=0,s=0,n=p[g++]+g;n>g;g++,v+=3,m+=2)a=c[p[g]],h=d[v]+x[m],l=d[v+1]+x[m+1],u=d[v+2],o+=(h*a.m00+l*a.m01+a.worldX)*u,s+=(h*a.m10+l*a.m11+a.worldY)*u;i[f]=o+t,i[f+1]=s+e}else for(;y>g;f+=2){for(o=0,s=0,n=p[g++]+g;n>g;g++,v+=3)a=c[p[g]],h=d[v],l=d[v+1],u=d[v+2],o+=(h*a.m00+l*a.m01+a.worldX)*u,s+=(h*a.m10+l*a.m11+a.worldY)*u;i[f]=o+t,i[f+1]=s+e}}},i.BoundingBoxAttachment=function(t){this.name=t,this.vertices=[]},i.BoundingBoxAttachment.prototype={type:i.AttachmentType.boundingbox,computeWorldVertices:function(t,e,r,i){t+=r.worldX,e+=r.worldY;for(var n=r.m00,o=r.m01,s=r.m10,a=r.m11,h=this.vertices,l=0,u=h.length;u>l;l+=2){var c=h[l],d=h[l+1];i[l]=c*n+d*o+t,i[l+1]=c*s+d*a+e}}},i.AnimationStateData=function(t){this.skeletonData=t,this.animationToMixTime={}},i.AnimationStateData.prototype={defaultMix:0,setMixByName:function(t,e,r){var i=this.skeletonData.findAnimation(t);if(!i)throw"Animation not found: "+t;var n=this.skeletonData.findAnimation(e); -if(!n)throw"Animation not found: "+e;this.setMix(i,n,r)},setMix:function(t,e,r){this.animationToMixTime[t.name+":"+e.name]=r},getMix:function(t,e){var r=t.name+":"+e.name;return this.animationToMixTime.hasOwnProperty(r)?this.animationToMixTime[r]:this.defaultMix}},i.TrackEntry=function(){},i.TrackEntry.prototype={next:null,previous:null,animation:null,loop:!1,delay:0,time:0,lastTime:-1,endTime:0,timeScale:1,mixTime:0,mixDuration:0,mix:1,onStart:null,onEnd:null,onComplete:null,onEvent:null},i.AnimationState=function(t){this.data=t,this.tracks=[],this.events=[]},i.AnimationState.prototype={onStart:null,onEnd:null,onComplete:null,onEvent:null,timeScale:1,update:function(t){t*=this.timeScale;for(var e=0;e=0&&this.setCurrent(e,n)):!r.loop&&r.lastTime>=r.endTime&&this.clearTrack(e)}}},apply:function(t){for(var e=0;eo&&(i=o);var a=r.previous;if(a){var h=a.time;!a.loop&&h>a.endTime&&(h=a.endTime),a.animation.apply(t,h,h,a.loop,null);var l=r.mixTime/r.mixDuration*r.mix;l>=1&&(l=1,r.previous=null),r.animation.mix(t,r.lastTime,i,s,this.events,l)}else 1==r.mix?r.animation.apply(t,r.lastTime,i,s,this.events):r.animation.mix(t,r.lastTime,i,s,this.events,r.mix);for(var u=0,c=this.events.length;c>u;u++){var d=this.events[u];r.onEvent&&r.onEvent(e,d),this.onEvent&&this.onEvent(e,d)}if(s?n%o>i%o:o>n&&i>=o){var p=Math.floor(i/o);r.onComplete&&r.onComplete(e,p),this.onComplete&&this.onComplete(e,p)}r.lastTime=r.time}}},clearTracks:function(){for(var t=0,e=this.tracks.length;e>t;t++)this.clearTrack(t);this.tracks.length=0},clearTrack:function(t){if(!(t>=this.tracks.length)){var e=this.tracks[t];e&&(e.onEnd&&e.onEnd(t),this.onEnd&&this.onEnd(t),this.tracks[t]=null)}},_expandToIndex:function(t){if(t=this.tracks.length;)this.tracks.push(null);return null},setCurrent:function(t,e){var r=this._expandToIndex(t);if(r){var i=r.previous;r.previous=null,r.onEnd&&r.onEnd(t),this.onEnd&&this.onEnd(t),e.mixDuration=this.data.getMix(r.animation,e.animation),e.mixDuration>0&&(e.mixTime=0,e.previous=i&&r.mixTime/r.mixDuration<.5?i:r)}this.tracks[t]=e,e.onStart&&e.onStart(t),this.onStart&&this.onStart(t)},setAnimationByName:function(t,e,r){var i=this.data.skeletonData.findAnimation(e);if(!i)throw"Animation not found: "+e;return this.setAnimation(t,i,r)},setAnimation:function(t,e,r){var n=new i.TrackEntry;return n.animation=e,n.loop=r,n.endTime=e.duration,this.setCurrent(t,n),n},addAnimationByName:function(t,e,r,i){var n=this.data.skeletonData.findAnimation(e);if(!n)throw"Animation not found: "+e;return this.addAnimation(t,n,r,i)},addAnimation:function(t,e,r,n){var o=new i.TrackEntry;o.animation=e,o.loop=r,o.endTime=e.duration;var s=this._expandToIndex(t);if(s){for(;s.next;)s=s.next;s.next=o}else this.tracks[t]=o;return 0>=n&&(s?n+=s.endTime-this.data.getMix(s.animation,e):n=0),o.delay=n,o},getCurrent:function(t){return t>=this.tracks.length?null:this.tracks[t]}},i.SkeletonJsonParser=function(t){this.attachmentLoader=t},i.SkeletonJsonParser.prototype={scale:1,readSkeletonData:function(t,e){var r=new i.SkeletonData;r.name=e;var n=t.skeleton;n&&(r.hash=n.hash,r.version=n.spine,r.width=n.width||0,r.height=n.height||0);for(var o=t.bones,s=0,a=o.length;a>s;s++){var h=o[s],l=null;if(h.parent&&(l=r.findBone(h.parent),!l))throw"Parent bone not found: "+h.parent;var u=new i.BoneData(h.name,l);u.length=(h.length||0)*this.scale,u.x=(h.x||0)*this.scale,u.y=(h.y||0)*this.scale,u.rotation=h.rotation||0,u.scaleX=h.hasOwnProperty("scaleX")?h.scaleX:1,u.scaleY=h.hasOwnProperty("scaleY")?h.scaleY:1,u.inheritScale=h.hasOwnProperty("inheritScale")?h.inheritScale:!0,u.inheritRotation=h.hasOwnProperty("inheritRotation")?h.inheritRotation:!0,r.bones.push(u)}var c=t.ik;if(c)for(var s=0,a=c.length;a>s;s++){for(var d=c[s],p=new i.IkConstraintData(d.name),o=d.bones,f=0,g=o.length;g>f;f++){var v=r.findBone(o[f]);if(!v)throw"IK bone not found: "+o[f];p.bones.push(v)}if(p.target=r.findBone(d.target),!p.target)throw"Target bone not found: "+d.target;p.bendDirection=!d.hasOwnProperty("bendPositive")||d.bendPositive?1:-1,p.mix=d.hasOwnProperty("mix")?d.mix:1,r.ikConstraints.push(p)}for(var m=t.slots,s=0,a=m.length;a>s;s++){var y=m[s],u=r.findBone(y.bone);if(!u)throw"Slot bone not found: "+y.bone;var x=new i.SlotData(y.name,u),b=y.color;b&&(x.r=this.toColor(b,0),x.g=this.toColor(b,1),x.b=this.toColor(b,2),x.a=this.toColor(b,3)),x.attachmentName=y.attachment,x.additiveBlending=y.additive&&"true"==y.additive,r.slots.push(x)}var T=t.skins;for(var _ in T)if(T.hasOwnProperty(_)){var E=T[_],w=new i.Skin(_);for(var S in E)if(E.hasOwnProperty(S)){var A=r.findSlotIndex(S),C=E[S];for(var M in C)if(C.hasOwnProperty(M)){var R=this.readAttachment(w,M,C[M]);R&&w.addAttachment(A,M,R)}}r.skins.push(w),"default"==w.name&&(r.defaultSkin=w)}var F=t.events;for(var D in F)if(F.hasOwnProperty(D)){var O=F[D],P=new i.EventData(D);P.intValue=O["int"]||0,P.floatValue=O["float"]||0,P.stringValue=O.string||null,r.events.push(P)}var B=t.animations;for(var L in B)B.hasOwnProperty(L)&&this.readAnimation(L,B[L],r);return r},readAttachment:function(t,e,r){e=r.name||e;var n=i.AttachmentType[r.type||"region"],o=r.path||e,s=this.scale;if(n==i.AttachmentType.region){var a=this.attachmentLoader.newRegionAttachment(t,e,o);if(!a)return null;a.path=o,a.x=(r.x||0)*s,a.y=(r.y||0)*s,a.scaleX=r.hasOwnProperty("scaleX")?r.scaleX:1,a.scaleY=r.hasOwnProperty("scaleY")?r.scaleY:1,a.rotation=r.rotation||0,a.width=(r.width||0)*s,a.height=(r.height||0)*s;var h=r.color;return h&&(a.r=this.toColor(h,0),a.g=this.toColor(h,1),a.b=this.toColor(h,2),a.a=this.toColor(h,3)),a.updateOffset(),a}if(n==i.AttachmentType.mesh){var l=this.attachmentLoader.newMeshAttachment(t,e,o);return l?(l.path=o,l.vertices=this.getFloatArray(r,"vertices",s),l.triangles=this.getIntArray(r,"triangles"),l.regionUVs=this.getFloatArray(r,"uvs",1),l.updateUVs(),h=r.color,h&&(l.r=this.toColor(h,0),l.g=this.toColor(h,1),l.b=this.toColor(h,2),l.a=this.toColor(h,3)),l.hullLength=2*(r.hull||0),r.edges&&(l.edges=this.getIntArray(r,"edges")),l.width=(r.width||0)*s,l.height=(r.height||0)*s,l):null}if(n==i.AttachmentType.skinnedmesh){var l=this.attachmentLoader.newSkinnedMeshAttachment(t,e,o);if(!l)return null;l.path=o;for(var u=this.getFloatArray(r,"uvs",1),c=this.getFloatArray(r,"vertices",1),d=[],p=[],f=0,g=c.length;g>f;){var v=0|c[f++];p[p.length]=v;for(var m=f+4*v;m>f;)p[p.length]=c[f],d[d.length]=c[f+1]*s,d[d.length]=c[f+2]*s,d[d.length]=c[f+3],f+=4}return l.bones=p,l.weights=d,l.triangles=this.getIntArray(r,"triangles"),l.regionUVs=u,l.updateUVs(),h=r.color,h&&(l.r=this.toColor(h,0),l.g=this.toColor(h,1),l.b=this.toColor(h,2),l.a=this.toColor(h,3)),l.hullLength=2*(r.hull||0),r.edges&&(l.edges=this.getIntArray(r,"edges")),l.width=(r.width||0)*s,l.height=(r.height||0)*s,l}if(n==i.AttachmentType.boundingbox){for(var y=this.attachmentLoader.newBoundingBoxAttachment(t,e),c=r.vertices,f=0,g=c.length;g>f;f++)y.vertices.push(c[f]*s);return y}throw"Unknown attachment type: "+n},readAnimation:function(t,e,r){var n=[],o=0,s=e.slots;for(var a in s)if(s.hasOwnProperty(a)){var h=s[a],l=r.findSlotIndex(a);for(var u in h)if(h.hasOwnProperty(u)){var c=h[u];if("color"==u){var d=new i.ColorTimeline(c.length);d.slotIndex=l;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f],m=v.color,y=this.toColor(m,0),x=this.toColor(m,1),b=this.toColor(m,2),T=this.toColor(m,3);d.setFrame(p,v.time,y,x,b,T),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[5*d.getFrameCount()-5])}else{if("attachment"!=u)throw"Invalid timeline type for a slot: "+u+" ("+a+")";var d=new i.AttachmentTimeline(c.length);d.slotIndex=l;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f];d.setFrame(p++,v.time,v.name)}n.push(d),o=Math.max(o,d.frames[d.getFrameCount()-1])}}}var _=e.bones;for(var E in _)if(_.hasOwnProperty(E)){var w=r.findBoneIndex(E);if(-1==w)throw"Bone not found: "+E;var S=_[E];for(var u in S)if(S.hasOwnProperty(u)){var c=S[u];if("rotate"==u){var d=new i.RotateTimeline(c.length);d.boneIndex=w;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f];d.setFrame(p,v.time,v.angle),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[2*d.getFrameCount()-2])}else if("translate"==u||"scale"==u){var d,A=1;"scale"==u?d=new i.ScaleTimeline(c.length):(d=new i.TranslateTimeline(c.length),A=this.scale),d.boneIndex=w;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f],C=(v.x||0)*A,M=(v.y||0)*A;d.setFrame(p,v.time,C,M),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[3*d.getFrameCount()-3])}else{if("flipX"!=u&&"flipY"!=u)throw"Invalid timeline type for a bone: "+u+" ("+E+")";var C="flipX"==u,d=C?new i.FlipXTimeline(c.length):new i.FlipYTimeline(c.length);d.boneIndex=w;for(var R=C?"x":"y",p=0,f=0,g=c.length;g>f;f++){var v=c[f];d.setFrame(p,v.time,v[R]||!1),p++}n.push(d),o=Math.max(o,d.frames[2*d.getFrameCount()-2])}}}var F=e.ik;for(var D in F)if(F.hasOwnProperty(D)){var O=r.findIkConstraint(D),c=F[D],d=new i.IkConstraintTimeline(c.length);d.ikConstraintIndex=r.ikConstraints.indexOf(O);for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f],P=v.hasOwnProperty("mix")?v.mix:1,B=!v.hasOwnProperty("bendPositive")||v.bendPositive?1:-1;d.setFrame(p,v.time,P,B),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[3*d.frameCount-3])}var L=e.ffd;for(var I in L){var N=r.findSkin(I),h=L[I];for(a in h){var l=r.findSlotIndex(a),k=h[a];for(var U in k){var c=k[U],d=new i.FfdTimeline(c.length),j=N.getAttachment(l,U);if(!j)throw"FFD attachment not found: "+U;d.slotIndex=l,d.attachment=j;var X,Y=j.type==i.AttachmentType.mesh;X=Y?j.vertices.length:j.weights.length/3*2;for(var p=0,f=0,g=c.length;g>f;f++){var W,v=c[f];if(v.vertices){var G=v.vertices,W=[];W.length=X;var z=v.offset||0,H=G.length;if(1==this.scale)for(var V=0;H>V;V++)W[V+z]=G[V];else for(var V=0;H>V;V++)W[V+z]=G[V]*this.scale;if(Y)for(var q=j.vertices,V=0,H=W.length;H>V;V++)W[V]+=q[V]}else Y?W=j.vertices:(W=[],W.length=X);d.setFrame(p,v.time,W),this.readCurve(d,p,v),p++}n[n.length]=d,o=Math.max(o,d.frames[d.frameCount-1])}}}var K=e.drawOrder;if(K||(K=e.draworder),K){for(var d=new i.DrawOrderTimeline(K.length),Q=r.slots.length,p=0,f=0,g=K.length;g>f;f++){var J=K[f],Z=null;if(J.offsets){Z=[],Z.length=Q;for(var V=Q-1;V>=0;V--)Z[V]=-1;var $=J.offsets,te=[];te.length=Q-$.length;for(var ee=0,re=0,V=0,H=$.length;H>V;V++){var ie=$[V],l=r.findSlotIndex(ie.slot);if(-1==l)throw"Slot not found: "+ie.slot;for(;ee!=l;)te[re++]=ee++;Z[ee+ie.offset]=ee++}for(;Q>ee;)te[re++]=ee++;for(var V=Q-1;V>=0;V--)-1==Z[V]&&(Z[V]=te[--re])}d.setFrame(p++,J.time,Z)}n.push(d),o=Math.max(o,d.frames[d.getFrameCount()-1])}var ne=e.events;if(ne){for(var d=new i.EventTimeline(ne.length),p=0,f=0,g=ne.length;g>f;f++){var oe=ne[f],se=r.findEvent(oe.name);if(!se)throw"Event not found: "+oe.name;var ae=new i.Event(se);ae.intValue=oe.hasOwnProperty("int")?oe["int"]:se.intValue,ae.floatValue=oe.hasOwnProperty("float")?oe["float"]:se.floatValue,ae.stringValue=oe.hasOwnProperty("string")?oe.string:se.stringValue,d.setFrame(p++,oe.time,ae)}n.push(d),o=Math.max(o,d.frames[d.getFrameCount()-1])}r.animations.push(new i.Animation(t,n,o))},readCurve:function(t,e,r){var i=r.curve;i?"stepped"==i?t.curves.setStepped(e):i instanceof Array&&t.curves.setCurve(e,i[0],i[1],i[2],i[3]):t.curves.setLinear(e)},toColor:function(t,e){if(8!=t.length)throw"Color hexidecimal length must be 8, recieved: "+t;return parseInt(t.substring(2*e,2*e+2),16)/255},getFloatArray:function(t,e,r){var n=t[e],o=new i.Float32Array(n.length),s=0,a=n.length;if(1==r)for(;a>s;s++)o[s]=n[s];else for(;a>s;s++)o[s]=n[s]*r;return o},getIntArray:function(t,e){for(var r=t[e],n=new i.Uint16Array(r.length),o=0,s=r.length;s>o;o++)n[o]=0|r[o];return n}},i.Atlas=function(t,e,n){e&&e.indexOf("/")!==e.length&&(e+="/"),this.pages=[],this.regions=[],this.texturesLoading=0;var o=new i.AtlasReader(t),s=[];s.length=4;for(var a=null;;){var h=o.readLine();if(null===h)break;if(h=o.trim(h),h.length)if(a){var l=new i.AtlasRegion;l.name=h,l.page=a,l.rotate="true"==o.readValue(),o.readTuple(s);var u=parseInt(s[0]),c=parseInt(s[1]);o.readTuple(s);var d=parseInt(s[0]),p=parseInt(s[1]);l.u=u/a.width,l.v=c/a.height,l.rotate?(l.u2=(u+p)/a.width,l.v2=(c+d)/a.height):(l.u2=(u+d)/a.width,l.v2=(c+p)/a.height),l.x=u,l.y=c,l.width=Math.abs(d),l.height=Math.abs(p),4==o.readTuple(s)&&(l.splits=[parseInt(s[0]),parseInt(s[1]),parseInt(s[2]),parseInt(s[3])],4==o.readTuple(s)&&(l.pads=[parseInt(s[0]),parseInt(s[1]),parseInt(s[2]),parseInt(s[3])],o.readTuple(s))),l.originalWidth=parseInt(s[0]),l.originalHeight=parseInt(s[1]),o.readTuple(s),l.offsetX=parseInt(s[0]),l.offsetY=parseInt(s[1]),l.index=parseInt(o.readValue()),this.regions.push(l)}else{a=new i.AtlasPage,a.name=h,2==o.readTuple(s)&&(a.width=parseInt(s[0]),a.height=parseInt(s[1]),o.readTuple(s)),a.format=i.Atlas.Format[s[0]],o.readTuple(s),a.minFilter=i.Atlas.TextureFilter[s[0]],a.magFilter=i.Atlas.TextureFilter[s[1]];var f=o.readValue();a.uWrap=i.Atlas.TextureWrap.clampToEdge,a.vWrap=i.Atlas.TextureWrap.clampToEdge,"x"==f?a.uWrap=i.Atlas.TextureWrap.repeat:"y"==f?a.vWrap=i.Atlas.TextureWrap.repeat:"xy"==f&&(a.uWrap=a.vWrap=i.Atlas.TextureWrap.repeat),a.rendererObject=r.BaseTexture.fromImage(e+h,n),this.pages.push(a)}else a=null}},i.Atlas.prototype={findRegion:function(t){for(var e=this.regions,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},dispose:function(){for(var t=this.pages,e=0,r=t.length;r>e;e++)t[e].rendererObject.destroy(!0)},updateUVs:function(t){for(var e=this.regions,r=0,i=e.length;i>r;r++){var n=e[r];n.page==t&&(n.u=n.x/t.width,n.v=n.y/t.height,n.rotate?(n.u2=(n.x+n.height)/t.width,n.v2=(n.y+n.width)/t.height):(n.u2=(n.x+n.width)/t.width,n.v2=(n.y+n.height)/t.height))}}},i.Atlas.Format={alpha:0,intensity:1,luminanceAlpha:2,rgb565:3,rgba4444:4,rgb888:5,rgba8888:6},i.Atlas.TextureFilter={nearest:0,linear:1,mipMap:2,mipMapNearestNearest:3,mipMapLinearNearest:4,mipMapNearestLinear:5,mipMapLinearLinear:6},i.Atlas.TextureWrap={mirroredRepeat:0,clampToEdge:1,repeat:2},i.AtlasPage=function(){},i.AtlasPage.prototype={name:null,format:null,minFilter:null,magFilter:null,uWrap:null,vWrap:null,rendererObject:null,width:0,height:0},i.AtlasRegion=function(){},i.AtlasRegion.prototype={page:null,name:null,x:0,y:0,width:0,height:0,u:0,v:0,u2:0,v2:0,offsetX:0,offsetY:0,originalWidth:0,originalHeight:0,index:0,rotate:!1,splits:null,pads:null},i.AtlasReader=function(t){this.lines=t.split(/\r\n|\r|\n/)},i.AtlasReader.prototype={index:0,trim:function(t){return t.replace(/^\s+|\s+$/g,"")},readLine:function(){return this.index>=this.lines.length?null:this.lines[this.index++]},readValue:function(){var t=this.readLine(),e=t.indexOf(":");if(-1==e)throw"Invalid line: "+t;return this.trim(t.substring(e+1))},readTuple:function(t){var e=this.readLine(),r=e.indexOf(":");if(-1==r)throw"Invalid line: "+e;for(var i=0,n=r+1;3>i;i++){var o=e.indexOf(",",n);if(-1==o)break;t[i]=this.trim(e.substr(n,o-n)),n=o+1}return t[i]=this.trim(e.substring(n)),i+1}},i.AtlasAttachmentParser=function(t){this.atlas=t},i.AtlasAttachmentParser.prototype={newRegionAttachment:function(t,e,r){var n=this.atlas.findRegion(r);if(!n)throw"Region not found in atlas: "+r+" (region attachment: "+e+")";var o=new i.RegionAttachment(e);return o.rendererObject=n,o.setUVs(n.u,n.v,n.u2,n.v2,n.rotate),o.regionOffsetX=n.offsetX,o.regionOffsetY=n.offsetY,o.regionWidth=n.width,o.regionHeight=n.height,o.regionOriginalWidth=n.originalWidth,o.regionOriginalHeight=n.originalHeight,o},newMeshAttachment:function(t,e,r){var n=this.atlas.findRegion(r);if(!n)throw"Region not found in atlas: "+r+" (mesh attachment: "+e+")";var o=new i.MeshAttachment(e);return o.rendererObject=n,o.regionU=n.u,o.regionV=n.v,o.regionU2=n.u2,o.regionV2=n.v2,o.regionRotate=n.rotate,o.regionOffsetX=n.offsetX,o.regionOffsetY=n.offsetY,o.regionWidth=n.width,o.regionHeight=n.height,o.regionOriginalWidth=n.originalWidth,o.regionOriginalHeight=n.originalHeight,o},newSkinnedMeshAttachment:function(t,e,r){var n=this.atlas.findRegion(r);if(!n)throw"Region not found in atlas: "+r+" (skinned mesh attachment: "+e+")";var o=new i.SkinnedMeshAttachment(e);return o.rendererObject=n,o.regionU=n.u,o.regionV=n.v,o.regionU2=n.u2,o.regionV2=n.v2,o.regionRotate=n.rotate,o.regionOffsetX=n.offsetX,o.regionOffsetY=n.offsetY,o.regionWidth=n.width,o.regionHeight=n.height,o.regionOriginalWidth=n.originalWidth,o.regionOriginalHeight=n.originalHeight,o},newBoundingBoxAttachment:function(t,e){return new i.BoundingBoxAttachment(e)}},i.SkeletonBounds=function(){this.polygonPool=[],this.polygons=[],this.boundingBoxes=[]},i.SkeletonBounds.prototype={minX:0,minY:0,maxX:0,maxY:0,update:function(t,e){var r=t.slots,n=r.length,o=t.x,s=t.y,a=this.boundingBoxes,h=this.polygonPool,l=this.polygons;a.length=0;for(var u=0,c=l.length;c>u;u++)h.push(l[u]);l.length=0;for(var u=0;n>u;u++){var d=r[u],p=d.attachment;if(p.type==i.AttachmentType.boundingbox){a.push(p);var f,g=h.length;g>0?(f=h[g-1],h.splice(g-1,1)):f=[],l.push(f),f.length=p.vertices.length,p.computeWorldVertices(o,s,d.bone,f)}}e&&this.aabbCompute()},aabbCompute:function(){for(var t=this.polygons,e=Number.MAX_VALUE,r=Number.MAX_VALUE,i=Number.MIN_VALUE,n=Number.MIN_VALUE,o=0,s=t.length;s>o;o++)for(var a=t[o],h=0,l=a.length;l>h;h+=2){var u=a[h],c=a[h+1];e=Math.min(e,u),r=Math.min(r,c),i=Math.max(i,u),n=Math.max(n,c)}this.minX=e,this.minY=r,this.maxX=i,this.maxY=n},aabbContainsPoint:function(t,e){return t>=this.minX&&t<=this.maxX&&e>=this.minY&&e<=this.maxY},aabbIntersectsSegment:function(t,e,r,i){var n=this.minX,o=this.minY,s=this.maxX,a=this.maxY;if(n>=t&&n>=r||o>=e&&o>=i||t>=s&&r>=s||e>=a&&i>=a)return!1;var h=(i-e)/(r-t),l=h*(n-t)+e;if(l>o&&a>l)return!0;if(l=h*(s-t)+e,l>o&&a>l)return!0;var u=(o-e)/h+t;return u>n&&s>u?!0:(u=(a-e)/h+t,u>n&&s>u?!0:!1)},aabbIntersectsSkeleton:function(t){return this.minXt.minX&&this.minYt.minY},containsPoint:function(t,e){for(var r=this.polygons,i=0,n=r.length;n>i;i++)if(this.polygonContainsPoint(r[i],t,e))return this.boundingBoxes[i];return null},intersectsSegment:function(t,e,r,i){for(var n=this.polygons,o=0,s=n.length;s>o;o++)if(n[o].intersectsSegment(t,e,r,i))return this.boundingBoxes[o];return null},polygonContainsPoint:function(t,e,r){for(var i=t.length,n=i-2,o=!1,s=0;i>s;s+=2){var a=t[s+1],h=t[n+1];if(r>a&&h>=r||r>h&&a>=r){var l=t[s];l+(r-a)/(h-a)*(t[n]-l)c;c+=2){var d=t[c],p=t[c+1],f=l*p-u*d,g=l-d,v=u-p,m=s*v-a*g,y=(h*g-s*f)/m;if((y>=l&&d>=y||y>=d&&l>=y)&&(y>=e&&i>=y||y>=i&&e>=y)){var x=(h*v-a*f)/m;if((x>=u&&p>=x||x>=p&&u>=x)&&(x>=r&&n>=x||x>=n&&r>=x))return!0}l=d,u=p}return!1},getPolygon:function(t){var e=this.boundingBoxes.indexOf(t);return-1==e?null:this.polygons[e]},getWidth:function(){return this.maxX-this.minX},getHeight:function(){return this.maxY-this.minY}}},{"../core":19}],121:[function(t,e){e.exports={Spine:t("./Spine"),SpineRuntime:t("./SpineRuntime")}},{"./Spine":119,"./SpineRuntime":120}],122:[function(t,e){function r(t,e){i.Container.call(this),this.textWidth=0,this.textHeight=0,this._glyphs=[],this._style={tint:e.tint,align:e.align,fontName:null,fontSize:0},this.font=e.font,this._text=t,this.maxWidth=0,this.dirty=!1,this.updateText()}var i=t("../core");r.prototype=Object.create(i.Container.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{tint:{get:function(){return this._style.tint},set:function(t){this._style.tint="number"==typeof t&&t>=0?t:16777215,this.dirty=!0}},align:{get:function(){return this._style.align},set:function(t){this._style.align=t,this.dirty=!0}},font:{get:function(){return this._style.font},set:function(t){"string"==typeof t?(t=t.split(" "),this._style.fontName=t.slice(1).join(" "),this._style.fontSize=t.length>=2?parseInt(t[0],10):r.fonts[this.fontName].size):(this._style.fontName=t.name,this._style.fontSize="number"==typeof t.size?t.size:parseInt(t.size,10)),this.dirty=!0}},text:{get:function(){return this._text},set:function(t){this._text=t,this.dirty=!0}}}),r.prototype.updateText=function(){for(var t=r.fonts[this._style.fontName],e=new i.math.Point,n=null,o=[],s=0,a=0,h=[],l=0,u=this._style.fontSize/t.size,c=-1,d=0;d0&&e.x*u>this.maxWidth)o.splice(c,d-c),d=c,c=-1,h.push(s),a=Math.max(a,s),l++,e.x=0,e.y+=t.lineHeight,n=null;else{var f=t.chars[p];f&&(n&&f.kerning[n]&&(e.x+=f.kerning[n]),o.push({texture:f.texture,line:l,charCode:p,position:new i.math.Point(e.x+f.xOffset,e.y+f.yOffset)}),s=e.x+(f.texture.width+f.xOffset),e.x+=f.xAdvance,n=p)}}h.push(s),a=Math.max(a,s);var g=[];for(d=0;l>=d;d++){var v=0;"right"===this._style.align?v=a-h[d]:"center"===this._style.align&&(v=(a-h[d])/2),g.push(v)}var m=o.length,y=this.tint;for(d=0;m>d;d++){var x=this._glyphs[d];x?x.texture=o[d].texture:(x=new i.Sprite(o[d].texture),this._glyphs.push(x)),x.position.x=(o[d].position.x+g[o[d].line])*u,x.position.y=o[d].position.y*u,x.scale.x=x.scale.y=u,x.tint=y,x.parent||this.addChild(x)}for(d=m;dh;h++){for(l=0;d>l;l+=4)if(255!==u[p+l]){f=!0;break}if(f)break;p+=d}for(e.ascent=s-h,p=c-d,f=!1,h=a;h>s;h--){for(l=0;d>l;l+=4)if(255!==u[p+l]){f=!0;break}if(f)break;p-=d}e.descent=h-s,e.fontSize=e.ascent+e.descent,r.fontPropertiesCache[t]=e}return e},r.prototype.wordWrap=function(t){for(var e="",r=t.split("\n"),i=this._style.wordWrapWidth,n=0;no?(a>0&&(e+="\n"),e+=s[a],o=i-h):(o-=l,e+=" "+s[a])}nn;n++){var o=2*n;this._renderCanvasDrawTriangle(t,e,r,o,o+2,o+4)}},r.prototype._renderCanvasTriangles=function(t){for(var e=this.vertices,r=this.uvs,i=this.indices,n=i.length,o=0;n>o;o+=3){var s=2*i[o],a=2*i[o+1],h=2*i[o+2];this._renderCanvasDrawTriangle(t,e,r,s,a,h)}},r.prototype._renderCanvasDrawTriangle=function(t,e,r,i,n,o){var s=this.texture.baseTexture.source,a=this.texture.width,h=this.texture.height,l=e[i],u=e[n],c=e[o],d=e[i+1],p=e[n+1],f=e[o+1],g=r[i]*a,v=r[n]*a,m=r[o]*a,y=r[i+1]*h,x=r[n+1]*h,b=r[o+1]*h;if(this.canvasPadding>0){var T=this.canvasPadding/this.worldTransform.a,_=this.canvasPadding/this.worldTransform.d,E=(l+u+c)/3,w=(d+p+f)/3,S=l-E,A=d-w,C=Math.sqrt(S*S+A*A);l=E+S/C*(C+T),d=w+A/C*(C+_),S=u-E,A=p-w,C=Math.sqrt(S*S+A*A),u=E+S/C*(C+T),p=w+A/C*(C+_),S=c-E,A=f-w,C=Math.sqrt(S*S+A*A),c=E+S/C*(C+T),f=w+A/C*(C+_)}t.save(),t.beginPath(),t.moveTo(l,d),t.lineTo(u,p),t.lineTo(c,f),t.closePath(),t.clip();var M=g*x+y*m+v*b-x*m-y*v-g*b,R=l*x+y*c+u*b-x*c-y*u-l*b,F=g*u+l*m+v*c-u*m-l*v-g*c,D=g*x*c+y*u*m+l*v*b-l*x*m-y*v*c-g*u*b,O=d*x+y*f+p*b-x*f-y*p-d*b,P=g*p+d*m+v*f-p*m-d*v-g*f,B=g*x*f+y*p*m+d*v*b-d*x*m-y*v*f-g*p*b;t.transform(R/M,O/M,F/M,P/M,D/M,B/M),t.drawImage(s,0,0),t.restore()},r.prototype.renderMeshFlat=function(t){var e=this.context,r=t.vertices,i=r.length/2;e.beginPath();for(var n=1;i-2>n;n++){var o=2*n,s=r[o],a=r[o+2],h=r[o+4],l=r[o+1],u=r[o+3],c=r[o+5];e.moveTo(s,l),e.lineTo(a,u),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.prototype.getBounds=function(t){for(var e=t||this.worldTransform,r=e.a,n=e.b,o=e.c,s=e.d,a=e.tx,h=e.ty,l=-1/0,u=-1/0,c=1/0,d=1/0,p=this.vertices,f=0,g=p.length;g>f;f+=2){var v=p[f],m=p[f+1],y=r*v+o*m+a,x=s*m+n*v+h;c=c>y?y:c,d=d>x?x:d,l=y>l?y:l,u=x>u?x:u}if(c===-1/0||1/0===u)return i.math.Rectangle.EMPTY;var b=this._bounds;return b.x=c,b.width=l-c,b.y=d,b.height=u-d,this._currentBounds=b,b},r.DRAW_MODES={TRIANGLE_MESH:0,TRIANGLES:1}},{"../../core":19}],77:[function(t,e){function r(t,e){i.call(this,t),this.points=e,this.vertices=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length),this.refresh()}var i=t("./Mesh");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.refresh=function(){var t=this.points;if(!(t.length<1)){var e=this.uvs,r=this.indices,i=this.colors;e[0]=0,e[1]=0,e[2]=0,e[3]=1,i[0]=1,i[1]=1,r[0]=0,r[1]=1;for(var n,o,s,a=t.length,h=1;a>h;h++)n=t[h],o=4*h,s=h/(a-1),h%2?(e[o]=s,e[o+1]=0,e[o+2]=s,e[o+3]=1):(e[o]=s,e[o+1]=0,e[o+2]=s,e[o+3]=1),o=2*h,i[o]=1,i[o+1]=1,o=2*h,r[o]=o,r[o+1]=o+1}},r.prototype.updateTransform=function(){var t=this.points;if(!(t.length<1)){for(var e,r,i,n,o,s,a=t[0],h=0,l=0,u=this.vertices,c=t.length,d=0;c>d;d++)r=t[d],i=4*d,e=d1&&(n=1),o=Math.sqrt(h*h+l*l),s=this.texture.height/2,h/=o,l/=o,h*=s,l*=s,u[i]=r.x+h,u[i+1]=r.y+l,u[i+2]=r.x-h,u[i+3]=r.y-l,a=r;this.containerUpdateTransform()}}},{"./Mesh":76}],78:[function(t,e){e.exports={Mesh:t("./Mesh"),Rope:t("./Rope"),MeshRenderer:t("./webgl/MeshRenderer"),MeshShader:t("./webgl/MeshShader")}},{"./Mesh":76,"./Rope":77,"./webgl/MeshRenderer":79,"./webgl/MeshShader":80}],79:[function(t,e){function r(t){i.call(this,t),this.indices=new Uint16Array(15e3);for(var e=0,r=0;15e3>e;e+=6,r+=4)this.indices[e+0]=r+0,this.indices[e+1]=r+1,this.indices[e+2]=r+2,this.indices[e+3]=r+0,this.indices[e+4]=r+2,this.indices[e+5]=r+3}var i=t("../../../core/renderers/webgl/utils/ObjectRenderer"),n=t("../../../core/renderers/webgl/WebGLRenderer");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,n.registerPlugin("mesh",r),r.prototype.onContextChange=function(){},r.prototype.render=function(t){t._vertexBuffer||this._initWebGL(t);var e=this.renderer,r=e.gl,i=t.texture.baseTexture,n=e.shaderManager.plugins.meshShader,o=r.TRIANGLE_STRIP;e.blendModeManager.setBlendMode(t.blendMode),r.uniformMatrix3fv(n.uniforms.translationMatrix._location,!1,t.worldTransform.toArray(!0)),r.uniformMatrix3fv(n.uniforms.projectionMatrix._location,!1,e.currentRenderTarget.projectionMatrix.toArray(!0)),r.uniform1f(n.uniforms.alpha._location,t.worldAlpha),t.dirty?(t.dirty=!1,r.bindBuffer(r.ARRAY_BUFFER,t._vertexBuffer),r.bufferData(r.ARRAY_BUFFER,t.vertices,r.STATIC_DRAW),r.vertexAttribPointer(n.attributes.aVertexPosition,2,r.FLOAT,!1,0,0),r.bindBuffer(r.ARRAY_BUFFER,t._uvBuffer),r.bufferData(r.ARRAY_BUFFER,t.uvs,r.STATIC_DRAW),r.vertexAttribPointer(n.attributes.aTextureCoord,2,r.FLOAT,!1,0,0),r.activeTexture(r.TEXTURE0),i._glTextures[r.id]?r.bindTexture(r.TEXTURE_2D,i._glTextures[r.id]):this.renderer.updateTexture(i),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,t._indexBuffer),r.bufferData(r.ELEMENT_ARRAY_BUFFER,t.indices,r.STATIC_DRAW)):(r.bindBuffer(r.ARRAY_BUFFER,t._vertexBuffer),r.bufferSubData(r.ARRAY_BUFFER,0,t.vertices),r.vertexAttribPointer(n.attributes.aVertexPosition,2,r.FLOAT,!1,0,0),r.bindBuffer(r.ARRAY_BUFFER,t._uvBuffer),r.vertexAttribPointer(n.attributes.aTextureCoord,2,r.FLOAT,!1,0,0),r.activeTexture(r.TEXTURE0),i._glTextures[r.id]?r.bindTexture(r.TEXTURE_2D,i._glTextures[r.id]):this.renderer.updateTexture(i)),r.drawElements(o,t.indices.length,r.UNSIGNED_SHORT,0)},r.prototype._initWebGL=function(t){var e=this.renderer.gl;t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.vertices,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.prototype.flush=function(){},r.prototype.start=function(){var t=(this.renderer.gl,this.renderer.shaderManager.plugins.meshShader);this.renderer.shaderManager.setShader(t)},r.prototype.destroy=function(){}},{"../../../core/renderers/webgl/WebGLRenderer":38,"../../../core/renderers/webgl/utils/ObjectRenderer":52}],80:[function(t,e){function r(t){i.Shader.call(this,t,["precision lowp float;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform mat3 projectionMatrix;","varying vec2 vTextureCoord;","void main(void){"," gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"].join("\n"),["precision lowp float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void){"," gl_FragColor = texture2D(uSampler, vTextureCoord) * alpha ;","}"].join("\n"),{alpha:{type:"1f",value:0},translationMatrix:{type:"mat3",value:new Float32Array(9)},projectionMatrix:{type:"mat3",value:new Float32Array(9)}},{aVertexPosition:0,aTextureCoord:0})}var i=t("../../../core");r.prototype=Object.create(i.Shader.prototype),r.prototype.constructor=r,e.exports=r,i.ShaderManager.registerPlugin("meshShader",r)},{"../../../core":19}],81:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nuniform vec4 dimensions;\nuniform float pixelSize;\nuniform sampler2D uSampler;\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, -4.0) + 2.5);\n if (clamp(p.x, 0.0, 4.0) == p.x && clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 uv = gl_FragCoord.xy;\n\n vec3 col = texture2D(uSampler, floor( uv / pixelSize ) * pixelSize / dimensions.xy).rgb;\n\n float gray = (col.r + col.g + col.b) / 3.0;\n\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n vec2 p = mod( uv / ( pixelSize * 0.5 ), 2.0) - vec2(1.0);\n col = col * character(n, p);\n\n gl_FragColor = vec4(col, 1.0);\n}\n",{dimensions:{type:"4fv",value:new Float32Array([0,0,0,0])},pixelSize:{type:"1f",value:8}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{size:{get:function(){return this.uniforms.pixelSize.value},set:function(t){this.uniforms.pixelSize.value=t}}})},{"../../core":19}],82:[function(t,e){function r(){i.AbstractFilter.call(this),this.blurXFilter=new n,this.blurYFilter=new o,this.defaultFilter=new i.AbstractFilter}var i=t("../../core"),n=t("../blur/BlurXFilter"),o=t("../blur/BlurYFilter");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var n=t.filterManager.getRenderTarget(!0);this.defaultFilter.applyFilter(t,e,r),this.blurXFilter.applyFilter(t,e,n),t.blendModeManager.setBlendMode(i.CONST.BLEND_MODES.SCREEN),this.blurYFilter.applyFilter(t,n,r),t.blendModeManager.setBlendMode(i.CONST.BLEND_MODES.NORMAL),t.filterManager.returnRenderTarget(n)},Object.defineProperties(r.prototype,{blur:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=this.blurYFilter.blur=t}},blurX:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=t}},blurY:{get:function(){return this.blurYFilter.blur},set:function(t){this.blurYFilter.blur=t}}})},{"../../core":19,"../blur/BlurXFilter":84,"../blur/BlurYFilter":85}],83:[function(t,e){function r(){i.AbstractFilter.call(this),this.blurXFilter=new n,this.blurYFilter=new o}var i=t("../../core"),n=t("./BlurXFilter"),o=t("./BlurYFilter");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager.getRenderTarget(!0);this.blurXFilter.applyFilter(t,e,i),this.blurYFilter.applyFilter(t,i,r),t.filterManager.returnRenderTarget(i)},Object.defineProperties(r.prototype,{blur:{get:function(){return this.blurXFilter.blur},set:function(t){this.padding=.5*t,this.blurXFilter.blur=this.blurYFilter.blur=t}},passes:{get:function(){return this.blurXFilter.passes},set:function(t){this.blurXFilter.passes=this.blurYFilter.passes=t}},blurX:{get:function(){return this.blurXFilter.blur},set:function(t){this.blurXFilter.blur=t}},blurY:{get:function(){return this.blurYFilter.blur},set:function(t){this.blurYFilter.blur=t}}})},{"../../core":19,"./BlurXFilter":84,"./BlurYFilter":85}],84:[function(t,e){function r(){i.AbstractFilter.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[6];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(-0.012 * strength, 0.0);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(-0.008 * strength, 0.0);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(-0.004 * strength, 0.0);\n vBlurTexCoords[ 3] = aTextureCoord + vec2( 0.004 * strength, 0.0);\n vBlurTexCoords[ 4] = aTextureCoord + vec2( 0.008 * strength, 0.0);\n vBlurTexCoords[ 5] = aTextureCoord + vec2( 0.012 * strength, 0.0);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[6];\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = vec4(0.0);\n\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\n gl_FragColor += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\n gl_FragColor += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\n}\n",{strength:{type:"1f",value:1}}),this.passes=1,this.strength=4}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r,i){var n=this.getShader(t);if(this.uniforms.strength.value=this.strength/4/this.passes*(e.frame.width/e.size.width),1===this.passes)t.filterManager.applyFilter(n,e,r,i);else{for(var o=t.filterManager.getRenderTarget(!0),s=e,a=o,h=0;h>16&255)/255,s=(r>>8&255)/255,a=(255&r)/255,h=(i>>16&255)/255,l=(i>>8&255)/255,u=(255&i)/255,c=[.3,.59,.11,0,0,o,s,a,t,0,h,l,u,e,0,o-h,s-l,a-u,0,0,0,0,0,0,1];this._loadMatrix(c,n)},r.prototype.night=function(t,e){t=t||.1;var r=[-2*t,-t,0,0,0,-t,0,t,0,0,0,t,2*t,0,0,0,0,0,1,0,0,0,0,0,1];this._loadMatrix(r,e)},r.prototype.predator=function(t,e){var r=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0,0,0,0,0,0];this._loadMatrix(r,e)},r.prototype.lsd=function(t){var e=[2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0,0,0,0,0,1];this._loadMatrix(e,t)},r.prototype.reset=function(){var t=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1];this._loadMatrix(t,!1)},Object.defineProperties(r.prototype,{matrix:{get:function(){return this.uniforms.matrix.value},set:function(t){this.uniforms.matrix.value=t}}})},{"../../core":19}],88:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float step;\n\nvoid main(void)\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n color = floor(color * step) / step;\n\n gl_FragColor = color;\n}\n",{step:{type:"1f",value:5}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{step:{get:function(){return this.uniforms.step.value},set:function(t){this.uniforms.step.value=t}}})},{"../../core":19}],89:[function(t,e){function r(t,e,r){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying mediump vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec2 texelSize;\nuniform float matrix[9];\n\nvoid main(void)\n{\n vec4 c11 = texture2D(uSampler, vTextureCoord - texelSize); // top left\n vec4 c12 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y - texelSize.y)); // top center\n vec4 c13 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y - texelSize.y)); // top right\n\n vec4 c21 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture2D(uSampler, vTextureCoord); // mid center\n vec4 c23 = texture2D(uSampler, vec2(vTextureCoord.x + texelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture2D(uSampler, vec2(vTextureCoord.x - texelSize.x, vTextureCoord.y + texelSize.y)); // bottom left\n vec4 c32 = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y + texelSize.y)); // bottom center\n vec4 c33 = texture2D(uSampler, vTextureCoord + texelSize); // bottom right\n\n gl_FragColor =\n c11 * matrix[0] + c12 * matrix[1] + c13 * matrix[2] +\n c21 * matrix[3] + c22 * matrix[4] + c23 * matrix[5] +\n c31 * matrix[6] + c32 * matrix[7] + c33 * matrix[8];\n\n gl_FragColor.a = c22.a;\n}\n",{matrix:{type:"1fv",value:new Float32Array(t)},texelSize:{type:"2v",value:{x:1/e,y:1/r}}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{matrix:{get:function(){return this.uniforms.matrix.value},set:function(t){this.uniforms.matrix.value=new Float32Array(t)}},width:{get:function(){return 1/this.uniforms.texelSize.value.x},set:function(t){this.uniforms.texelSize.value.x=1/t}},height:{get:function(){return 1/this.uniforms.texelSize.value.y},set:function(t){this.uniforms.texelSize.value.y=1/t}}})},{"../../core":19}],90:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);\n\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n\n if (lum < 1.00)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.75)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.50)\n {\n if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n\n if (lum < 0.3)\n {\n if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0)\n {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n }\n }\n}\n")}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r},{"../../core":19}],91:[function(t,e){function r(t){var e=new i.math.Matrix;t.renderable=!1,i.AbstractFilter.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMapCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vMapCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vMapCoord;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec2 scale;\n\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nvoid main(void)\n{\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 map = texture2D(mapSampler, vMapCoord);\n\n map -= 0.5;\n map.xy *= scale;\n\n gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y));\n}\n",{mapSampler:{type:"sampler2D",value:t.texture},otherMatrix:{type:"mat3",value:e.toArray(!0)},scale:{type:"v2",value:{x:1,y:1}}}),this.maskSprite=t,this.maskMatrix=e,this.scale=new i.math.Point(20,20)}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager;i.calculateMappedMatrix(e.frame,this.maskSprite,this.maskMatrix),this.uniforms.otherMatrix.value=this.maskMatrix.toArray(!0),this.uniforms.scale.value.x=this.scale.x*(1/e.frame.width),this.uniforms.scale.value.y=this.scale.y*(1/e.frame.height);var n=this.getShader(t);i.applyFilter(n,e,r)},Object.defineProperties(r.prototype,{map:{get:function(){return this.uniforms.mapSampler.value},set:function(t){this.uniforms.mapSampler.value=t}}})},{"../../core":19}],92:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform vec4 dimensions;\nuniform sampler2D uSampler;\n\nuniform float angle;\nuniform float scale;\n\nfloat pattern()\n{\n float s = sin(angle), c = cos(angle);\n vec2 tex = vTextureCoord * dimensions.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * scale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float average = (color.r + color.g + color.b) / 3.0;\n gl_FragColor = vec4(vec3(average * 10.0 - 5.0 + pattern()), color.a);\n}\n",{scale:{type:"1f",value:1},angle:{type:"1f",value:5},dimensions:{type:"4fv",value:[0,0,0,0]}}) +}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{scale:{get:function(){return this.uniforms.scale.value},set:function(t){this.uniforms.scale.value=t}},angle:{get:function(){return this.uniforms.angle.value},set:function(t){this.uniforms.angle.value=t}}})},{"../../core":19}],93:[function(t,e){function r(){i.AbstractFilter.call(this,"attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform float strength;\nuniform vec2 offset;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying vec2 vBlurTexCoords[6];\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3((aVertexPosition+offset), 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n\n vBlurTexCoords[ 0] = aTextureCoord + vec2(0.0, -0.012 * strength);\n vBlurTexCoords[ 1] = aTextureCoord + vec2(0.0, -0.008 * strength);\n vBlurTexCoords[ 2] = aTextureCoord + vec2(0.0, -0.004 * strength);\n vBlurTexCoords[ 3] = aTextureCoord + vec2(0.0, 0.004 * strength);\n vBlurTexCoords[ 4] = aTextureCoord + vec2(0.0, 0.008 * strength);\n vBlurTexCoords[ 5] = aTextureCoord + vec2(0.0, 0.012 * strength);\n\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n}\n","precision lowp float;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vBlurTexCoords[6];\nvarying vec4 vColor;\n\nuniform vec3 color;\nuniform float alpha;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n vec4 sum = vec4(0.0);\n\n sum += texture2D(uSampler, vBlurTexCoords[ 0])*0.004431848411938341;\n sum += texture2D(uSampler, vBlurTexCoords[ 1])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 2])*0.2419707245191454;\n sum += texture2D(uSampler, vTextureCoord )*0.3989422804014327;\n sum += texture2D(uSampler, vBlurTexCoords[ 3])*0.2419707245191454;\n sum += texture2D(uSampler, vBlurTexCoords[ 4])*0.05399096651318985;\n sum += texture2D(uSampler, vBlurTexCoords[ 5])*0.004431848411938341;\n\n gl_FragColor = vec4( color.rgb * sum.a * alpha, sum.a * alpha );\n}\n",{blur:{type:"1f",value:1/512},color:{type:"c",value:[0,0,0]},alpha:{type:"1f",value:.7},offset:{type:"2f",value:[5,5]},strength:{type:"1f",value:1}}),this.passes=1,this.strength=4}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r,i){var n=this.getShader(t);if(this.uniforms.strength.value=this.strength/4/this.passes*(e.frame.height/e.size.height),1===this.passes)t.filterManager.applyFilter(n,e,r,i);else{for(var o=t.filterManager.getRenderTarget(!0),s=e,a=o,h=0;h= (time - params.z)) )\n {\n float diff = (dist - time);\n float powDiff = 1.0 - pow(abs(diff*params.x), params.y);\n\n float diffTime = diff * powDiff;\n vec2 diffUV = normalize(uv - center);\n texCoord = uv + (diffUV * diffTime);\n }\n\n gl_FragColor = texture2D(uSampler, texCoord);\n}\n",{center:{type:"v2",value:{x:.5,y:.5}},params:{type:"v3",value:{x:10,y:.8,z:.1}},time:{type:"1f",value:0}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{center:{get:function(){return this.uniforms.center.value},set:function(t){this.uniforms.center.value=t}},params:{get:function(){return this.uniforms.params.value},set:function(t){this.uniforms.params.value=t}},time:{get:function(){return this.uniforms.time.value},set:function(t){this.uniforms.time.value=t}}})},{"../../core":19}],104:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float blur;\nuniform float gradientBlur;\nuniform vec2 start;\nuniform vec2 end;\nuniform vec2 delta;\nuniform vec2 texSize;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * texSize - start, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture2D(uSampler, vTextureCoord + delta / texSize * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n}\n",{blur:{type:"1f",value:100},gradientBlur:{type:"1f",value:600},start:{type:"v2",value:{x:0,y:window.innerHeight/2}},end:{type:"v2",value:{x:600,y:window.innerHeight/2}},delta:{type:"v2",value:{x:30,y:30}},texSize:{type:"v2",value:{x:window.innerWidth,y:window.innerHeight}}}),this.updateDelta()}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.updateDelta=function(){this.uniforms.delta.value.x=0,this.uniforms.delta.value.y=0},Object.defineProperties(r.prototype,{blur:{get:function(){return this.uniforms.blur.value},set:function(t){this.uniforms.blur.value=t}},gradientBlur:{get:function(){return this.uniforms.gradientBlur.value},set:function(t){this.uniforms.gradientBlur.value=t}},start:{get:function(){return this.uniforms.start.value},set:function(t){this.uniforms.start.value=t,this.updateDelta()}},end:{get:function(){return this.uniforms.end.value},set:function(t){this.uniforms.end.value=t,this.updateDelta()}}})},{"../../core":19}],105:[function(t,e){function r(){i.AbstractFilter.call(this),this.tiltShiftXFilter=new n,this.tiltShiftYFilter=new o}var i=t("../../core"),n=t("./TiltShiftXFilter"),o=t("./TiltShiftYFilter");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.applyFilter=function(t,e,r){var i=t.filterManager.getRenderTarget(!0);this.tiltShiftXFilter.applyFilter(t,e,i),this.tiltShiftYFilter.applyFilter(t,i,r),t.filterManager.returnRenderTarget(i)},Object.defineProperties(r.prototype,{blur:{get:function(){return this.tiltShiftXFilter.blur},set:function(t){this.tiltShiftXFilter.blur=this.tiltShiftYFilter.blur=t}},gradientBlur:{get:function(){return this.tiltShiftXFilter.gradientBlur},set:function(t){this.tiltShiftXFilter.gradientBlur=this.tiltShiftYFilter.gradientBlur=t}},start:{get:function(){return this.tiltShiftXFilter.start},set:function(t){this.tiltShiftXFilter.start=this.tiltShiftYFilter.start=t}},end:{get:function(){return this.tiltShiftXFilter.end},set:function(t){this.tiltShiftXFilter.end=this.tiltShiftYFilter.end=t}}})},{"../../core":19,"./TiltShiftXFilter":106,"./TiltShiftYFilter":107}],106:[function(t,e){function r(){i.call(this)}var i=t("./TiltShiftAxisFilter");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.updateDelta=function(){var t=this.uniforms.end.value.x-this.uniforms.start.value.x,e=this.uniforms.end.value.y-this.uniforms.start.value.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.value.x=t/r,this.uniforms.delta.value.y=e/r}},{"./TiltShiftAxisFilter":104}],107:[function(t,e){function r(){i.call(this)}var i=t("./TiltShiftAxisFilter");r.prototype=Object.create(i.prototype),r.prototype.constructor=r,e.exports=r,r.prototype.updateDelta=function(){var t=this.uniforms.end.value.x-this.uniforms.start.value.x,e=this.uniforms.end.value.y-this.uniforms.start.value.y,r=Math.sqrt(t*t+e*e);this.uniforms.delta.value.x=-e/r,this.uniforms.delta.value.y=t/r}},{"./TiltShiftAxisFilter":104}],108:[function(t,e){function r(){i.AbstractFilter.call(this,null,"precision mediump float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord - offset;\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratio = (radius - dist) / radius;\n float angleMod = ratio * ratio * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n gl_FragColor = texture2D(uSampler, coord+offset);\n}\n",{radius:{type:"1f",value:.5},angle:{type:"1f",value:5},offset:{type:"v2",value:{x:.5,y:.5}}})}var i=t("../../core");r.prototype=Object.create(i.AbstractFilter.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{offset:{get:function(){return this.uniforms.offset.value},set:function(t){this.uniforms.offset.value=t}},radius:{get:function(){return this.uniforms.radius.value},set:function(t){this.uniforms.radius.value=t}},angle:{get:function(){return this.uniforms.angle.value},set:function(t){this.uniforms.angle.value=t}}})},{"../../core":19}],109:[function(t,e){function r(){this.global=new i.math.Point,this.target=null,this.originalEvent=null}var i=t("../core");r.prototype.constructor=r,e.exports=r,r.prototype.getLocalPosition=function(t,e){var r=t.worldTransform,n=this.global,o=r.a,s=r.c,a=r.tx,h=r.b,l=r.d,u=r.ty,c=1/(o*l+s*-h);return e=e||new i.math.Point,e.x=l*c*n.x+-s*c*n.y+(u*s-a*l)*c,e.y=o*c*n.y+-h*c*n.x+(-u*o+a*h)*c,e}},{"../core":19}],110:[function(t,e){function r(t){this.renderer=t,this.mouse=new n,this.eventData=new i.utils.EventData,this.eventData.data=this.mouse,this.interactiveDataPool=[],this.interactionDOMElement=null,this.eventsAdded=!1,this.onMouseUp=this.onMouseUp.bind(this),this.processMouseUp=this.processMouseUp.bind(this),this.onMouseDown=this.onMouseDown.bind(this),this.processMouseDown=this.processMouseDown.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.processMouseMove=this.processMouseMove.bind(this),this.onMouseOut=this.onMouseOut.bind(this),this.processMouseOverOut=this.processMouseOverOut.bind(this),this.onTouchStart=this.onTouchStart.bind(this),this.processTouchStart=this.processTouchStart.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this),this.processTouchEnd=this.processTouchEnd.bind(this),this.onTouchMove=this.onTouchMove.bind(this),this.processTouchMove=this.processTouchMove.bind(this),this.last=0,this.currentCursorStyle="inherit",this._tempPoint=new i.math.Point,this.resolution=1,this.setTargetElement(this.renderer.view,this.renderer.resolution),this.update()}var i=t("../core"),n=t("./InteractionData"),o=10,s=!0;r.prototype.constructor=r,e.exports=r,r.prototype.setTargetElement=function(t,e){this.removeEvents(),this.interactionDOMElement=t,this.resolution=e||1,this.addEvents()},r.prototype.addEvents=function(){this.interactionDOMElement&&(window.navigator.msPointerEnabled&&(this.interactionDOMElement.style["-ms-content-zooming"]="none",this.interactionDOMElement.style["-ms-touch-action"]="none"),this.interactionDOMElement.addEventListener("mousemove",this.onMouseMove,!0),this.interactionDOMElement.addEventListener("mousedown",this.onMouseDown,!0),this.interactionDOMElement.addEventListener("mouseout",this.onMouseOut,!0),this.interactionDOMElement.addEventListener("touchstart",this.onTouchStart,!0),this.interactionDOMElement.addEventListener("touchend",this.onTouchEnd,!0),this.interactionDOMElement.addEventListener("touchmove",this.onTouchMove,!0),window.addEventListener("mouseup",this.onMouseUp,!0),this.eventsAdded=!0)},r.prototype.removeEvents=function(){this.interactionDOMElement&&(window.navigator.msPointerEnabled&&(this.interactionDOMElement.style["-ms-content-zooming"]="",this.interactionDOMElement.style["-ms-touch-action"]=""),this.interactionDOMElement.removeEventListener("mousemove",this.onMouseMove,!0),this.interactionDOMElement.removeEventListener("mousedown",this.onMouseDown,!0),this.interactionDOMElement.removeEventListener("mouseout",this.onMouseOut,!0),this.interactionDOMElement.removeEventListener("touchstart",this.onTouchStart,!0),this.interactionDOMElement.removeEventListener("touchend",this.onTouchEnd,!0),this.interactionDOMElement.removeEventListener("touchmove",this.onTouchMove,!0),this.interactionDOMElement=null,window.removeEventListener("mouseup",this.onMouseUp,!0),this.eventsAdded=!1)},r.prototype.update=function(){if(requestAnimationFrame(this.update.bind(this)),!this.throttleUpdate()&&this.interactionDOMElement){if(this.didMove)return void(this.didMove=!1);this.cursor="inherit",this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseOverOut.bind(this),!0),this.currentCursorStyle!==this.cursor&&(this.currentCursorStyle=this.cursor,this.interactionDOMElement.style.cursor=this.cursor)}},r.prototype.dispatchEvent=function(t,e,r){r.stopped||(r.target=t,r.type=e,t.emit(e,r),t[e]&&t[e](r))},r.prototype.throttleUpdate=function(){var t=Date.now(),e=t-this.last;return e=e*o/1e3,1>e?!0:(this.last=t,!1)},r.prototype.mapPositionToPoint=function(t,e,r){var i=this.interactionDOMElement.getBoundingClientRect();t.x=(e-i.left)*(this.interactionDOMElement.width/i.width)/this.resolution,t.y=(r-i.top)*(this.interactionDOMElement.height/i.height)/this.resolution},r.prototype.processInteractive=function(t,e,r,i,n){if(!e.visible)return!1;var o=e.children,s=!1;if(n=n||e.interactive,e.interactiveChildren)for(var a=o.length-1;a>=0;a--)!s&&i?s=this.processInteractive(t,o[a],r,!0,n):this.processInteractive(t,o[a],r,!1,!1);return n&&(i&&(e.hitArea?(e.worldTransform.applyInverse(t,this._tempPoint),s=e.hitArea.contains(this._tempPoint.x,this._tempPoint.y)):e.containsPoint&&(s=e.containsPoint(t))),e.interactive&&r(e,s)),s},r.prototype.onMouseDown=function(t){this.mouse.originalEvent=t,this.eventData.data=this.mouse,this.eventData.stopped=!1,s&&this.mouse.originalEvent.preventDefault(),this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseDown,!0)},r.prototype.processMouseDown=function(t,e){var r=this.mouse.originalEvent,i=2===r.button||3===r.which;e&&(t[i?"_isRightDown":"_isLeftDown"]=!0,this.dispatchEvent(t,i?"rightdown":"mousedown",this.eventData))},r.prototype.onMouseUp=function(t){this.mouse.originalEvent=t,this.eventData.data=this.mouse,this.eventData.stopped=!1,this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseUp,!0)},r.prototype.processMouseUp=function(t,e){var r=this.mouse.originalEvent,i=2===r.button||3===r.which,n=i?"_isRightDown":"_isLeftDown";e?(this.dispatchEvent(t,i?"rightup":"mouseup",this.eventData),t[n]&&(t[n]=!1,this.dispatchEvent(t,i?"rightclick":"click",this.eventData))):t[n]&&(t[n]=!1,this.dispatchEvent(t,i?"rightupoutside":"mouseupoutside",this.eventData))},r.prototype.onMouseMove=function(t){this.mouse.originalEvent=t,this.eventData.data=this.mouse,this.eventData.stopped=!1,this.mapPositionToPoint(this.mouse.global,t.clientX,t.clientY),this.didMove=!0,this.cursor="inherit",this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseMove,!0),this.currentCursorStyle!==this.cursor&&(this.currentCursorStyle=this.cursor,this.interactionDOMElement.style.cursor=this.cursor)},r.prototype.processMouseMove=function(t,e){this.dispatchEvent(t,"mousemove",this.eventData),this.processMouseOverOut(t,e)},r.prototype.onMouseOut=function(t){this.mouse.originalEvent=t,this.eventData.stopped=!1,this.interactionDOMElement.style.cursor="inherit",this.mapPositionToPoint(this.mouse.global,t.clientX,t.clientY),this.processInteractive(this.mouse.global,this.renderer._lastObjectRendered,this.processMouseOverOut,!1)},r.prototype.processMouseOverOut=function(t,e){e?(t._over||(t._over=!0,this.dispatchEvent(t,"mouseover",this.eventData)),t.buttonMode&&(this.cursor=t.defaultCursor)):t._over&&(t._over=!1,this.dispatchEvent(t,"mouseout",this.eventData))},r.prototype.onTouchStart=function(t){s&&t.preventDefault();for(var e=t.changedTouches,r=0;re;e++){var o=this.skeleton.drawOrder[e],s=o.attachment,a=new i.Container;if(this.slotContainers.push(a),this.addChild(a),s instanceof n.RegionAttachment){var h=s.rendererObject.name,l=this.createSprite(o,s);o.currentSprite=l,o.currentSpriteName=h,a.addChild(l)}else{if(!(s instanceof n.MeshAttachment))continue;var u=this.createMesh(o,s);o.currentMesh=u,o.currentMeshName=s.name,a.addChild(u)}}this.autoUpdate=!0}var i=t("../core"),n=t("./SpineRuntime");n.Bone.yDown=!0,r.prototype=Object.create(i.Container.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{autoUpdate:{get:function(){return this.updateTransform===r.prototype.autoUpdateTransform},set:function(t){this.updateTransform=t?r.prototype.autoUpdateTransform:i.Container.prototype.updateTransform}}}),r.prototype.update=function(t){this.state.update(t),this.state.apply(this.skeleton),this.skeleton.updateWorldTransform();for(var e=this.skeleton.drawOrder,r=0,o=e.length;o>r;r++){var s=e[r],a=s.attachment,h=this.slotContainers[r];if(a){var l=a.type;if(l===n.AttachmentType.region){if(a.rendererObject&&(!s.currentSpriteName||s.currentSpriteName!==a.rendererObject.name)){var u=a.rendererObject.name;if(void 0!==s.currentSprite&&(s.currentSprite.visible=!1),s.sprites=s.sprites||{},void 0!==s.sprites[u])s.sprites[u].visible=!0;else{var c=this.createSprite(s,a);h.addChild(c)}s.currentSprite=s.sprites[u],s.currentSpriteName=u}var d=s.bone;h.position.x=d.worldX+a.x*d.m00+a.y*d.m01,h.position.y=d.worldY+a.x*d.m10+a.y*d.m11,h.scale.x=d.worldScaleX,h.scale.y=d.worldScaleY,h.rotation=-(s.bone.worldRotation*n.degRad),s.currentSprite.tint=i.utils.rgb2hex([s.r,s.g,s.b])}else{if(l!==n.AttachmentType.skinnedmesh){h.visible=!1;continue}if(!s.currentMeshName||s.currentMeshName!==a.name){var p=a.name;if(void 0!==s.currentMesh&&(s.currentMesh.visible=!1),s.meshes=s.meshes||{},void 0!==s.meshes[p])s.meshes[p].visible=!0;else{var f=this.createMesh(s,a);h.addChild(f)}s.currentMesh=s.meshes[p],s.currentMeshName=p}a.computeWorldVertices(s.bone.skeleton.x,s.bone.skeleton.y,s,s.currentMesh.vertices)}h.visible=!0,h.alpha=s.a}else h.visible=!1}},r.prototype.autoUpdateTransform=function(){this.lastTime=this.lastTime||Date.now();var t=.001*(Date.now()-this.lastTime);this.lastTime=Date.now(),this.update(t),i.Container.prototype.updateTransform.call(this)},r.prototype.createSprite=function(t,e){var r=e.rendererObject,o=r.page.rendererObject,s=new i.math.Rectangle(r.x,r.y,r.rotate?r.height:r.width,r.rotate?r.width:r.height),a=new i.Texture(o,s),h=new i.Sprite(a),l=r.rotate?.5*Math.PI:0;return h.scale.set(r.width/r.originalWidth,r.height/r.originalHeight),h.rotation=l-e.rotation*n.degRad,h.anchor.x=h.anchor.y=.5,t.sprites=t.sprites||{},t.sprites[r.name]=h,h},r.prototype.createMesh=function(t,e){var r=e.rendererObject,n=r.page.rendererObject,o=new i.Texture(n),s=new i.Strip(o);return s.drawMode=i.Strip.DRAW_MODES.TRIANGLES,s.canvasPadding=1.5,s.vertices=new Float32Array(e.uvs.length),s.uvs=e.uvs,s.indices=e.triangles,t.meshes=t.meshes||{},t.meshes[e.name]=s,s}},{"../core":19,"./SpineRuntime":120}],120:[function(t,e){var r=t("../core"),i=e.exports={radDeg:180/Math.PI,degRad:Math.PI/180,temp:[],Float32Array:"undefined"==typeof Float32Array?Array:Float32Array,Uint16Array:"undefined"==typeof Uint16Array?Array:Uint16Array};i.BoneData=function(t,e){this.name=t,this.parent=e},i.BoneData.prototype={length:0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,inheritScale:!0,inheritRotation:!0,flipX:!1,flipY:!1},i.SlotData=function(t,e){this.name=t,this.boneData=e},i.SlotData.prototype={r:1,g:1,b:1,a:1,attachmentName:null,additiveBlending:!1},i.IkConstraintData=function(t){this.name=t,this.bones=[]},i.IkConstraintData.prototype={target:null,bendDirection:1,mix:1},i.Bone=function(t,e,r){this.data=t,this.skeleton=e,this.parent=r,this.setToSetupPose()},i.Bone.yDown=!1,i.Bone.prototype={x:0,y:0,rotation:0,rotationIK:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,m00:0,m01:0,worldX:0,m10:0,m11:0,worldY:0,worldRotation:0,worldScaleX:1,worldScaleY:1,worldFlipX:!1,worldFlipY:!1,updateWorldTransform:function(){var t=this.parent;if(t)this.worldX=this.x*t.m00+this.y*t.m01+t.worldX,this.worldY=this.x*t.m10+this.y*t.m11+t.worldY,this.data.inheritScale?(this.worldScaleX=t.worldScaleX*this.scaleX,this.worldScaleY=t.worldScaleY*this.scaleY):(this.worldScaleX=this.scaleX,this.worldScaleY=this.scaleY),this.worldRotation=this.data.inheritRotation?t.worldRotation+this.rotationIK:this.rotationIK,this.worldFlipX=t.worldFlipX!=this.flipX,this.worldFlipY=t.worldFlipY!=this.flipY;else{var e=this.skeleton.flipX,r=this.skeleton.flipY;this.worldX=e?-this.x:this.x,this.worldY=r!=i.Bone.yDown?-this.y:this.y,this.worldScaleX=this.scaleX,this.worldScaleY=this.scaleY,this.worldRotation=this.rotationIK,this.worldFlipX=e!=this.flipX,this.worldFlipY=r!=this.flipY}var n=this.worldRotation*i.degRad,o=Math.cos(n),s=Math.sin(n);this.worldFlipX?(this.m00=-o*this.worldScaleX,this.m01=s*this.worldScaleY):(this.m00=o*this.worldScaleX,this.m01=-s*this.worldScaleY),this.worldFlipY!=i.Bone.yDown?(this.m10=-s*this.worldScaleX,this.m11=-o*this.worldScaleY):(this.m10=s*this.worldScaleX,this.m11=o*this.worldScaleY)},setToSetupPose:function(){var t=this.data;this.x=t.x,this.y=t.y,this.rotation=t.rotation,this.rotationIK=this.rotation,this.scaleX=t.scaleX,this.scaleY=t.scaleY,this.flipX=t.flipX,this.flipY=t.flipY},worldToLocal:function(t){var e=t[0]-this.worldX,r=t[1]-this.worldY,n=this.m00,o=this.m10,s=this.m01,a=this.m11;this.worldFlipX!=(this.worldFlipY!=i.Bone.yDown)&&(n=-n,a=-a);var h=1/(n*a-s*o);t[0]=e*n*h-r*s*h,t[1]=r*a*h-e*o*h},localToWorld:function(t){var e=t[0],r=t[1];t[0]=e*this.m00+r*this.m01+this.worldX,t[1]=e*this.m10+r*this.m11+this.worldY}},i.Slot=function(t,e){this.data=t,this.bone=e,this.setToSetupPose()},i.Slot.prototype={r:1,g:1,b:1,a:1,_attachmentTime:0,attachment:null,attachmentVertices:[],setAttachment:function(t){this.attachment=t,this._attachmentTime=this.bone.skeleton.time,this.attachmentVertices.length=0},setAttachmentTime:function(t){this._attachmentTime=this.bone.skeleton.time-t},getAttachmentTime:function(){return this.bone.skeleton.time-this._attachmentTime},setToSetupPose:function(){var t=this.data;this.r=t.r,this.g=t.g,this.b=t.b,this.a=t.a;for(var e=this.bone.skeleton.data.slots,r=0,i=e.length;i>r;r++)if(e[r]==t){this.setAttachment(t.attachmentName?this.bone.skeleton.getAttachmentBySlotIndex(r,t.attachmentName):null);break}}},i.IkConstraint=function(t,e){this.data=t,this.mix=t.mix,this.bendDirection=t.bendDirection,this.bones=[];for(var r=0,i=t.bones.length;i>r;r++)this.bones.push(e.findBone(t.bones[r].name));this.target=e.findBone(t.target.name)},i.IkConstraint.prototype={apply:function(){var t=this.target,e=this.bones;switch(e.length){case 1:i.IkConstraint.apply1(e[0],t.worldX,t.worldY,this.mix);break;case 2:i.IkConstraint.apply2(e[0],e[1],t.worldX,t.worldY,this.bendDirection,this.mix)}}},i.IkConstraint.apply1=function(t,e,r,n){var o=t.data.inheritRotation&&t.parent?t.parent.worldRotation:0,s=t.rotation,a=Math.atan2(r-t.worldY,e-t.worldX)*i.radDeg-o;t.rotationIK=s+(a-s)*n},i.IkConstraint.apply2=function(t,e,r,n,o,s){var a=e.rotation,h=t.rotation;if(!s)return e.rotationIK=a,void(t.rotationIK=h);var l,u,c=i.temp,d=t.parent;d?(c[0]=r,c[1]=n,d.worldToLocal(c),r=(c[0]-t.x)*d.worldScaleX,n=(c[1]-t.y)*d.worldScaleY):(r-=t.x,n-=t.y),e.parent==t?(l=e.x,u=e.y):(c[0]=e.x,c[1]=e.y,e.parent.localToWorld(c),t.worldToLocal(c),l=c[0],u=c[1]);var p=l*t.worldScaleX,f=u*t.worldScaleY,g=Math.atan2(f,p),v=Math.sqrt(p*p+f*f),m=e.data.length*e.worldScaleX,y=2*v*m;if(1e-4>y)return void(e.rotationIK=a+(Math.atan2(n,r)*i.radDeg-h-a)*s);var x=(r*r+n*n-v*v-m*m)/y;-1>x?x=-1:x>1&&(x=1);var b=Math.acos(x)*o,T=v+m*x,_=m*Math.sin(b),E=Math.atan2(n*T-r*_,r*T+n*_),w=(E-g)*i.radDeg-h;w>180?w-=360:-180>w&&(w+=360),t.rotationIK=h+w*s,w=(b+g)*i.radDeg-a,w>180?w-=360:-180>w&&(w+=360),e.rotationIK=a+(w+t.worldRotation-e.parent.worldRotation)*s},i.Skin=function(t){this.name=t,this.attachments={}},i.Skin.prototype={addAttachment:function(t,e,r){this.attachments[t+":"+e]=r},getAttachment:function(t,e){return this.attachments[t+":"+e]},_attachAll:function(t,e){for(var r in e.attachments){var i=r.indexOf(":"),n=parseInt(r.substring(0,i)),o=r.substring(i+1),s=t.slots[n];if(s.attachment&&s.attachment.name==o){var a=this.getAttachment(n,o);a&&s.setAttachment(a)}}}},i.Animation=function(t,e,r){this.name=t,this.timelines=e,this.duration=r},i.Animation.prototype={apply:function(t,e,r,i,n){i&&0!=this.duration&&(r%=this.duration,e%=this.duration);for(var o=this.timelines,s=0,a=o.length;a>s;s++)o[s].apply(t,e,r,n,1)},mix:function(t,e,r,i,n,o){i&&0!=this.duration&&(r%=this.duration,e%=this.duration);for(var s=this.timelines,a=0,h=s.length;h>a;a++)s[a].apply(t,e,r,n,o)}},i.Animation.binarySearch=function(t,e,r){var i=0,n=Math.floor(t.length/r)-2;if(!n)return r;for(var o=n>>>1;;){if(t[(o+1)*r]<=e?i=o+1:n=o,i==n)return(i+1)*r;o=i+n>>>1}},i.Animation.binarySearch1=function(t,e){var r=0,i=t.length-2;if(!i)return 1;for(var n=i>>>1;;){if(t[n+1]<=e?r=n+1:i=n,r==i)return r+1;n=r+i>>>1}},i.Animation.linearSearch=function(t,e,r){for(var i=0,n=t.length-r;n>=i;i+=r)if(t[i]>e)return i;return-1},i.Curves=function(){this.curves=[]},i.Curves.prototype={setLinear:function(t){this.curves[19*t]=0},setStepped:function(t){this.curves[19*t]=1},setCurve:function(t,e,r,i,n){var o=.1,s=o*o,a=s*o,h=3*o,l=3*s,u=6*s,c=6*a,d=2*-e+i,p=2*-r+n,f=3*(e-i)+1,g=3*(r-n)+1,v=e*h+d*l+f*a,m=r*h+p*l+g*a,y=d*u+f*c,x=p*u+g*c,b=f*c,T=g*c,_=19*t,E=this.curves;E[_++]=2;for(var w=v,S=m,A=_+19-1;A>_;_+=2)E[_]=w,E[_+1]=S,v+=y,m+=x,y+=b,x+=T,w+=v,S+=m},getCurvePercent:function(t,e){e=0>e?0:e>1?1:e;var r=this.curves,i=19*t,n=r[i];if(0===n)return e;if(1==n)return 0;i++;for(var o=0,s=i,a=i+19-1;a>i;i+=2)if(o=r[i],o>=e){var h,l;return i==s?(h=0,l=0):(h=r[i-2],l=r[i-1]),l+(r[i+1]-l)*(e-h)/(o-h)}var u=r[i-1];return u+(1-u)*(e-o)/(1-o)}},i.RotateTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=2*t},i.RotateTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/2},setFrame:function(t,e,r){t*=2,this.frames[t]=e,this.frames[t+1]=r},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-2]){for(var h=a.data.rotation+s[s.length-1]-a.rotation;h>180;)h-=360;for(;-180>h;)h+=360;return void(a.rotation+=h*o)}var l=i.Animation.binarySearch(s,r,2),u=s[l-1],c=s[l],d=1-(r-c)/(s[l-2]-c);d=this.curves.getCurvePercent(l/2-1,d);for(var h=s[l+1]-u;h>180;)h-=360;for(;-180>h;)h+=360;for(h=a.data.rotation+(u+h*d)-a.rotation;h>180;)h-=360;for(;-180>h;)h+=360;a.rotation+=h*o}}},i.TranslateTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=3*t},i.TranslateTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/3},setFrame:function(t,e,r,i){t*=3,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-3])return a.x+=(a.data.x+s[s.length-2]-a.x)*o,void(a.y+=(a.data.y+s[s.length-1]-a.y)*o);var h=i.Animation.binarySearch(s,r,3),l=s[h-2],u=s[h-1],c=s[h],d=1-(r-c)/(s[h+-3]-c);d=this.curves.getCurvePercent(h/3-1,d),a.x+=(a.data.x+l+(s[h+1]-l)*d-a.x)*o,a.y+=(a.data.y+u+(s[h+2]-u)*d-a.y)*o}}},i.ScaleTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=3*t},i.ScaleTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/3},setFrame:function(t,e,r,i){t*=3,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-3])return a.scaleX+=(a.data.scaleX*s[s.length-2]-a.scaleX)*o,void(a.scaleY+=(a.data.scaleY*s[s.length-1]-a.scaleY)*o);var h=i.Animation.binarySearch(s,r,3),l=s[h-2],u=s[h-1],c=s[h],d=1-(r-c)/(s[h+-3]-c);d=this.curves.getCurvePercent(h/3-1,d),a.scaleX+=(a.data.scaleX*(l+(s[h+1]-l)*d)-a.scaleX)*o,a.scaleY+=(a.data.scaleY*(u+(s[h+2]-u)*d)-a.scaleY)*o}}},i.ColorTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=5*t},i.ColorTimeline.prototype={slotIndex:0,getFrameCount:function(){return this.frames.length/5},setFrame:function(t,e,r,i,n,o){t*=5,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i,this.frames[t+3]=n,this.frames[t+4]=o},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-5]){var c=s.length-1;a=s[c-3],h=s[c-2],l=s[c-1],u=s[c]}else{var d=i.Animation.binarySearch(s,r,5),p=s[d-4],f=s[d-3],g=s[d-2],v=s[d-1],m=s[d],y=1-(r-m)/(s[d-5]-m);y=this.curves.getCurvePercent(d/5-1,y),a=p+(s[d+1]-p)*y,h=f+(s[d+2]-f)*y,l=g+(s[d+3]-g)*y,u=v+(s[d+4]-v)*y}var x=t.slots[this.slotIndex];1>o?(x.r+=(a-x.r)*o,x.g+=(h-x.g)*o,x.b+=(l-x.b)*o,x.a+=(u-x.a)*o):(x.r=a,x.g=h,x.b=l,x.a=u)}}},i.AttachmentTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=t,this.attachmentNames=[],this.attachmentNames.length=t},i.AttachmentTimeline.prototype={slotIndex:0,getFrameCount:function(){return this.frames.length},setFrame:function(t,e,r){this.frames[t]=e,this.attachmentNames[t]=r},apply:function(t,e,r){var n=this.frames;if(rr&&this.apply(t,e,Number.MAX_VALUE,null,0));e>r&&(e=-1);var o=r>=n[n.length-1]?n.length-1:i.Animation.binarySearch1(n,r)-1;if(!(n[o]r)this.apply(t,e,Number.MAX_VALUE,n,o),e=-1;else if(e>=s[a-1])return;if(!(r0&&s[h-1]==l;)h--}for(var u=this.events;a>h&&r>=s[h];h++)n.push(u[h])}}}},i.DrawOrderTimeline=function(t){this.frames=[],this.frames.length=t,this.drawOrders=[],this.drawOrders.length=t},i.DrawOrderTimeline.prototype={getFrameCount:function(){return this.frames.length},setFrame:function(t,e,r){this.frames[t]=e,this.drawOrders[t]=r},apply:function(t,e,r){var n=this.frames;if(!(r=n[n.length-1]?n.length-1:i.Animation.binarySearch1(n,r)-1;var s=t.drawOrder,a=t.slots,h=this.drawOrders[o];if(h)for(var l=0,u=h.length;u>l;l++)s[l]=t.slots[h[l]];else for(var l=0,u=a.length;u>l;l++)s[l]=a[l]}}},i.FfdTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=t,this.frameVertices=[],this.frameVertices.length=t},i.FfdTimeline.prototype={slotIndex:0,attachment:0,getFrameCount:function(){return this.frames.length},setFrame:function(t,e,r){this.frames[t]=e,this.frameVertices[t]=r},apply:function(t,e,r,n,o){var s=t.slots[this.slotIndex];if(s.attachment==this.attachment){var a=this.frames;if(!(r=a[a.length-1]){var c=h[a.length-1];if(1>o)for(var d=0;l>d;d++)u[d]+=(c[d]-u[d])*o;else for(var d=0;l>d;d++)u[d]=c[d]}else{var p=i.Animation.binarySearch1(a,r),f=a[p],g=1-(r-f)/(a[p-1]-f);g=this.curves.getCurvePercent(p-1,0>g?0:g>1?1:g);var v=h[p-1],m=h[p];if(1>o)for(var d=0;l>d;d++){var y=v[d];u[d]+=(y+(m[d]-y)*g-u[d])*o}else for(var d=0;l>d;d++){var y=v[d];u[d]=y+(m[d]-y)*g}}}}}},i.IkConstraintTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=3*t},i.IkConstraintTimeline.prototype={ikConstraintIndex:0,getFrameCount:function(){return this.frames.length/3},setFrame:function(t,e,r,i){t*=3,this.frames[t]=e,this.frames[t+1]=r,this.frames[t+2]=i},apply:function(t,e,r,n,o){var s=this.frames;if(!(r=s[s.length-3])return a.mix+=(s[s.length-2]-a.mix)*o,void(a.bendDirection=s[s.length-1]);var h=i.Animation.binarySearch(s,r,3),l=s[h+-2],u=s[h],c=1-(r-u)/(s[h+-3]-u);c=this.curves.getCurvePercent(h/3-1,c);var d=l+(s[h+1]-l)*c;a.mix+=(d-a.mix)*o,a.bendDirection=s[h+-1]}}},i.FlipXTimeline=function(t){this.curves=new i.Curves(t),this.frames=[],this.frames.length=2*t},i.FlipXTimeline.prototype={boneIndex:0,getFrameCount:function(){return this.frames.length/2},setFrame:function(t,e,r){t*=2,this.frames[t]=e,this.frames[t+1]=r?1:0},apply:function(t,e,r){var n=this.frames;if(rr&&this.apply(t,e,Number.MAX_VALUE,null,0));e>r&&(e=-1);var o=(r>=n[n.length-2]?n.length:i.Animation.binarySearch(n,r,2))-2;n[o]r&&this.apply(t,e,Number.MAX_VALUE,null,0));e>r&&(e=-1);var o=(r>=n[n.length-2]?n.length:i.Animation.binarySearch(n,r,2))-2;n[o]r;r++)if(e[r].name==t)return e[r];return null},findBoneIndex:function(t){for(var e=this.bones,r=0,i=e.length;i>r;r++)if(e[r].name==t)return r;return-1},findSlot:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].name==t)return slot[r];return null},findSlotIndex:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].name==t)return r;return-1},findSkin:function(t){for(var e=this.skins,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},findEvent:function(t){for(var e=this.events,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},findAnimation:function(t){for(var e=this.animations,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},findIkConstraint:function(t){for(var e=this.ikConstraints,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null}},i.Skeleton=function(t){this.data=t,this.bones=[];for(var e=0,r=t.bones.length;r>e;e++){var n=t.bones[e],o=n.parent?this.bones[t.bones.indexOf(n.parent)]:null;this.bones.push(new i.Bone(n,this,o))}this.slots=[],this.drawOrder=[];for(var e=0,r=t.slots.length;r>e;e++){var s=t.slots[e],a=this.bones[t.bones.indexOf(s.boneData)],h=new i.Slot(s,a);this.slots.push(h),this.drawOrder.push(h)}this.ikConstraints=[];for(var e=0,r=t.ikConstraints.length;r>e;e++)this.ikConstraints.push(new i.IkConstraint(t.ikConstraints[e],this));this.boneCache=[],this.updateCache()},i.Skeleton.prototype={x:0,y:0,skin:null,r:1,g:1,b:1,a:1,time:0,flipX:!1,flipY:!1,updateCache:function(){var t=this.ikConstraints,e=t.length,r=e+1,i=this.boneCache;i.length>r&&(i.length=r);for(var n=0,o=i.length;o>n;n++)i[n].length=0;for(;i.lengthn;n++){var h=a[n],l=h;do{for(var u=0;e>u;u++)for(var c=t[u],d=c.bones[0],p=c.bones[c.bones.length-1];;){if(l==p){i[u].push(h),i[u+1].push(h);continue t}if(p==d)break;p=p.parent}l=l.parent}while(l);s[s.length]=h}},updateWorldTransform:function(){for(var t=this.bones,e=0,r=t.length;r>e;e++){var i=t[e];i.rotationIK=i.rotation}for(var e=0,n=this.boneCache.length-1;;){for(var o=this.boneCache[e],s=0,a=o.length;a>s;s++)o[s].updateWorldTransform();if(e==n)break;this.ikConstraints[e].apply(),e++}},setToSetupPose:function(){this.setBonesToSetupPose(),this.setSlotsToSetupPose()},setBonesToSetupPose:function(){for(var t=this.bones,e=0,r=t.length;r>e;e++)t[e].setToSetupPose();for(var i=this.ikConstraints,e=0,r=i.length;r>e;e++){var n=i[e];n.bendDirection=n.data.bendDirection,n.mix=n.data.mix}},setSlotsToSetupPose:function(){for(var t=this.slots,e=this.drawOrder,r=0,i=t.length;i>r;r++)e[r]=t[r],t[r].setToSetupPose(r)},getRootBone:function(){return this.bones.length?this.bones[0]:null},findBone:function(t){for(var e=this.bones,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return e[r];return null},findBoneIndex:function(t){for(var e=this.bones,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return r;return-1},findSlot:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return e[r];return null},findSlotIndex:function(t){for(var e=this.slots,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return r;return-1},setSkinByName:function(t){var e=this.data.findSkin(t);if(!e)throw"Skin not found: "+t;this.setSkin(e)},setSkin:function(t){if(t)if(this.skin)t._attachAll(this,this.skin);else for(var e=this.slots,r=0,i=e.length;i>r;r++){var n=e[r],o=n.data.attachmentName;if(o){var s=t.getAttachment(r,o);s&&n.setAttachment(s)}}this.skin=t},getAttachmentBySlotName:function(t,e){return this.getAttachmentBySlotIndex(this.data.findSlotIndex(t),e)},getAttachmentBySlotIndex:function(t,e){if(this.skin){var r=this.skin.getAttachment(t,e);if(r)return r}return this.data.defaultSkin?this.data.defaultSkin.getAttachment(t,e):null},setAttachment:function(t,e){for(var r=this.slots,i=0,n=r.length;n>i;i++){var o=r[i];if(o.data.name==t){var s=null;if(e&&(s=this.getAttachmentBySlotIndex(i,e),!s))throw"Attachment not found: "+e+", for slot: "+t;return void o.setAttachment(s)}}throw"Slot not found: "+t},findIkConstraint:function(t){for(var e=this.ikConstraints,r=0,i=e.length;i>r;r++)if(e[r].data.name==t)return e[r];return null},update:function(t){this.time+=t}},i.EventData=function(t){this.name=t},i.EventData.prototype={intValue:0,floatValue:0,stringValue:null},i.Event=function(t){this.data=t},i.Event.prototype={intValue:0,floatValue:0,stringValue:null},i.AttachmentType={region:0,boundingbox:1,mesh:2,skinnedmesh:3},i.RegionAttachment=function(t){this.name=t,this.offset=[],this.offset.length=8,this.uvs=[],this.uvs.length=8},i.RegionAttachment.prototype={type:i.AttachmentType.region,x:0,y:0,rotation:0,scaleX:1,scaleY:1,width:0,height:0,r:1,g:1,b:1,a:1,path:null,rendererObject:null,regionOffsetX:0,regionOffsetY:0,regionWidth:0,regionHeight:0,regionOriginalWidth:0,regionOriginalHeight:0,setUVs:function(t,e,r,i,n){var o=this.uvs;n?(o[2]=t,o[3]=i,o[4]=t,o[5]=e,o[6]=r,o[7]=e,o[0]=r,o[1]=i):(o[0]=t,o[1]=i,o[2]=t,o[3]=e,o[4]=r,o[5]=e,o[6]=r,o[7]=i)},updateOffset:function(){var t=this.width/this.regionOriginalWidth*this.scaleX,e=this.height/this.regionOriginalHeight*this.scaleY,r=-this.width/2*this.scaleX+this.regionOffsetX*t,n=-this.height/2*this.scaleY+this.regionOffsetY*e,o=r+this.regionWidth*t,s=n+this.regionHeight*e,a=this.rotation*i.degRad,h=Math.cos(a),l=Math.sin(a),u=r*h+this.x,c=r*l,d=n*h+this.y,p=n*l,f=o*h+this.x,g=o*l,v=s*h+this.y,m=s*l,y=this.offset;y[0]=u-p,y[1]=d+c,y[2]=u-m,y[3]=v+c,y[4]=f-m,y[5]=v+g,y[6]=f-p,y[7]=d+g},computeVertices:function(t,e,r,i){t+=r.worldX,e+=r.worldY;var n=r.m00,o=r.m01,s=r.m10,a=r.m11,h=this.offset;i[0]=h[0]*n+h[1]*o+t,i[1]=h[0]*s+h[1]*a+e,i[2]=h[2]*n+h[3]*o+t,i[3]=h[2]*s+h[3]*a+e,i[4]=h[4]*n+h[5]*o+t,i[5]=h[4]*s+h[5]*a+e,i[6]=h[6]*n+h[7]*o+t,i[7]=h[6]*s+h[7]*a+e}},i.MeshAttachment=function(t){this.name=t},i.MeshAttachment.prototype={type:i.AttachmentType.mesh,vertices:null,uvs:null,regionUVs:null,triangles:null,hullLength:0,r:1,g:1,b:1,a:1,path:null,rendererObject:null,regionU:0,regionV:0,regionU2:0,regionV2:0,regionRotate:!1,regionOffsetX:0,regionOffsetY:0,regionWidth:0,regionHeight:0,regionOriginalWidth:0,regionOriginalHeight:0,edges:null,width:0,height:0,updateUVs:function(){var t=this.regionU2-this.regionU,e=this.regionV2-this.regionV,r=this.regionUVs.length;if(this.uvs&&this.uvs.length==r||(this.uvs=new i.Float32Array(r)),this.regionRotate)for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n+1]*t,this.uvs[n+1]=this.regionV+e-this.regionUVs[n]*e;else for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n]*t,this.uvs[n+1]=this.regionV+this.regionUVs[n+1]*e},computeWorldVertices:function(t,e,r,i){var n=r.bone;t+=n.worldX,e+=n.worldY;var o=n.m00,s=n.m01,a=n.m10,h=n.m11,l=this.vertices,u=l.length;r.attachmentVertices.length==u&&(l=r.attachmentVertices);for(var c=0;u>c;c+=2){var d=l[c],p=l[c+1];i[c]=d*o+p*s+t,i[c+1]=d*a+p*h+e}}},i.SkinnedMeshAttachment=function(t){this.name=t},i.SkinnedMeshAttachment.prototype={type:i.AttachmentType.skinnedmesh,bones:null,weights:null,uvs:null,regionUVs:null,triangles:null,hullLength:0,r:1,g:1,b:1,a:1,path:null,rendererObject:null,regionU:0,regionV:0,regionU2:0,regionV2:0,regionRotate:!1,regionOffsetX:0,regionOffsetY:0,regionWidth:0,regionHeight:0,regionOriginalWidth:0,regionOriginalHeight:0,edges:null,width:0,height:0,updateUVs:function(){var t=this.regionU2-this.regionU,e=this.regionV2-this.regionV,r=this.regionUVs.length;if(this.uvs&&this.uvs.length==r||(this.uvs=new i.Float32Array(r)),this.regionRotate)for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n+1]*t,this.uvs[n+1]=this.regionV+e-this.regionUVs[n]*e;else for(var n=0;r>n;n+=2)this.uvs[n]=this.regionU+this.regionUVs[n]*t,this.uvs[n+1]=this.regionV+this.regionUVs[n+1]*e},computeWorldVertices:function(t,e,r,i){var n,o,s,a,h,l,u,c=r.bone.skeleton.bones,d=this.weights,p=this.bones,f=0,g=0,v=0,m=0,y=p.length;if(r.attachmentVertices.length)for(var x=r.attachmentVertices;y>g;f+=2){for(o=0,s=0,n=p[g++]+g;n>g;g++,v+=3,m+=2)a=c[p[g]],h=d[v]+x[m],l=d[v+1]+x[m+1],u=d[v+2],o+=(h*a.m00+l*a.m01+a.worldX)*u,s+=(h*a.m10+l*a.m11+a.worldY)*u;i[f]=o+t,i[f+1]=s+e}else for(;y>g;f+=2){for(o=0,s=0,n=p[g++]+g;n>g;g++,v+=3)a=c[p[g]],h=d[v],l=d[v+1],u=d[v+2],o+=(h*a.m00+l*a.m01+a.worldX)*u,s+=(h*a.m10+l*a.m11+a.worldY)*u;i[f]=o+t,i[f+1]=s+e}}},i.BoundingBoxAttachment=function(t){this.name=t,this.vertices=[]},i.BoundingBoxAttachment.prototype={type:i.AttachmentType.boundingbox,computeWorldVertices:function(t,e,r,i){t+=r.worldX,e+=r.worldY;for(var n=r.m00,o=r.m01,s=r.m10,a=r.m11,h=this.vertices,l=0,u=h.length;u>l;l+=2){var c=h[l],d=h[l+1];i[l]=c*n+d*o+t,i[l+1]=c*s+d*a+e}}},i.AnimationStateData=function(t){this.skeletonData=t,this.animationToMixTime={}},i.AnimationStateData.prototype={defaultMix:0,setMixByName:function(t,e,r){var i=this.skeletonData.findAnimation(t);if(!i)throw"Animation not found: "+t;var n=this.skeletonData.findAnimation(e);if(!n)throw"Animation not found: "+e;this.setMix(i,n,r)},setMix:function(t,e,r){this.animationToMixTime[t.name+":"+e.name]=r},getMix:function(t,e){var r=t.name+":"+e.name;return this.animationToMixTime.hasOwnProperty(r)?this.animationToMixTime[r]:this.defaultMix}},i.TrackEntry=function(){},i.TrackEntry.prototype={next:null,previous:null,animation:null,loop:!1,delay:0,time:0,lastTime:-1,endTime:0,timeScale:1,mixTime:0,mixDuration:0,mix:1,onStart:null,onEnd:null,onComplete:null,onEvent:null},i.AnimationState=function(t){this.data=t,this.tracks=[],this.events=[]},i.AnimationState.prototype={onStart:null,onEnd:null,onComplete:null,onEvent:null,timeScale:1,update:function(t){t*=this.timeScale;for(var e=0;e=0&&this.setCurrent(e,n)):!r.loop&&r.lastTime>=r.endTime&&this.clearTrack(e)}}},apply:function(t){for(var e=0;eo&&(i=o);var a=r.previous;if(a){var h=a.time;!a.loop&&h>a.endTime&&(h=a.endTime),a.animation.apply(t,h,h,a.loop,null);var l=r.mixTime/r.mixDuration*r.mix;l>=1&&(l=1,r.previous=null),r.animation.mix(t,r.lastTime,i,s,this.events,l)}else 1==r.mix?r.animation.apply(t,r.lastTime,i,s,this.events):r.animation.mix(t,r.lastTime,i,s,this.events,r.mix);for(var u=0,c=this.events.length;c>u;u++){var d=this.events[u];r.onEvent&&r.onEvent(e,d),this.onEvent&&this.onEvent(e,d)}if(s?n%o>i%o:o>n&&i>=o){var p=Math.floor(i/o);r.onComplete&&r.onComplete(e,p),this.onComplete&&this.onComplete(e,p)}r.lastTime=r.time}}},clearTracks:function(){for(var t=0,e=this.tracks.length;e>t;t++)this.clearTrack(t);this.tracks.length=0},clearTrack:function(t){if(!(t>=this.tracks.length)){var e=this.tracks[t];e&&(e.onEnd&&e.onEnd(t),this.onEnd&&this.onEnd(t),this.tracks[t]=null)}},_expandToIndex:function(t){if(t=this.tracks.length;)this.tracks.push(null);return null},setCurrent:function(t,e){var r=this._expandToIndex(t);if(r){var i=r.previous;r.previous=null,r.onEnd&&r.onEnd(t),this.onEnd&&this.onEnd(t),e.mixDuration=this.data.getMix(r.animation,e.animation),e.mixDuration>0&&(e.mixTime=0,e.previous=i&&r.mixTime/r.mixDuration<.5?i:r)}this.tracks[t]=e,e.onStart&&e.onStart(t),this.onStart&&this.onStart(t)},setAnimationByName:function(t,e,r){var i=this.data.skeletonData.findAnimation(e);if(!i)throw"Animation not found: "+e;return this.setAnimation(t,i,r)},setAnimation:function(t,e,r){var n=new i.TrackEntry;return n.animation=e,n.loop=r,n.endTime=e.duration,this.setCurrent(t,n),n},addAnimationByName:function(t,e,r,i){var n=this.data.skeletonData.findAnimation(e);if(!n)throw"Animation not found: "+e;return this.addAnimation(t,n,r,i)},addAnimation:function(t,e,r,n){var o=new i.TrackEntry;o.animation=e,o.loop=r,o.endTime=e.duration;var s=this._expandToIndex(t);if(s){for(;s.next;)s=s.next;s.next=o}else this.tracks[t]=o;return 0>=n&&(s?n+=s.endTime-this.data.getMix(s.animation,e):n=0),o.delay=n,o},getCurrent:function(t){return t>=this.tracks.length?null:this.tracks[t]}},i.SkeletonJsonParser=function(t){this.attachmentLoader=t},i.SkeletonJsonParser.prototype={scale:1,readSkeletonData:function(t,e){var r=new i.SkeletonData;r.name=e;var n=t.skeleton;n&&(r.hash=n.hash,r.version=n.spine,r.width=n.width||0,r.height=n.height||0);for(var o=t.bones,s=0,a=o.length;a>s;s++){var h=o[s],l=null;if(h.parent&&(l=r.findBone(h.parent),!l))throw"Parent bone not found: "+h.parent;var u=new i.BoneData(h.name,l);u.length=(h.length||0)*this.scale,u.x=(h.x||0)*this.scale,u.y=(h.y||0)*this.scale,u.rotation=h.rotation||0,u.scaleX=h.hasOwnProperty("scaleX")?h.scaleX:1,u.scaleY=h.hasOwnProperty("scaleY")?h.scaleY:1,u.inheritScale=h.hasOwnProperty("inheritScale")?h.inheritScale:!0,u.inheritRotation=h.hasOwnProperty("inheritRotation")?h.inheritRotation:!0,r.bones.push(u)}var c=t.ik;if(c)for(var s=0,a=c.length;a>s;s++){for(var d=c[s],p=new i.IkConstraintData(d.name),o=d.bones,f=0,g=o.length;g>f;f++){var v=r.findBone(o[f]);if(!v)throw"IK bone not found: "+o[f];p.bones.push(v)}if(p.target=r.findBone(d.target),!p.target)throw"Target bone not found: "+d.target;p.bendDirection=!d.hasOwnProperty("bendPositive")||d.bendPositive?1:-1,p.mix=d.hasOwnProperty("mix")?d.mix:1,r.ikConstraints.push(p)}for(var m=t.slots,s=0,a=m.length;a>s;s++){var y=m[s],u=r.findBone(y.bone);if(!u)throw"Slot bone not found: "+y.bone;var x=new i.SlotData(y.name,u),b=y.color;b&&(x.r=this.toColor(b,0),x.g=this.toColor(b,1),x.b=this.toColor(b,2),x.a=this.toColor(b,3)),x.attachmentName=y.attachment,x.additiveBlending=y.additive&&"true"==y.additive,r.slots.push(x)}var T=t.skins;for(var _ in T)if(T.hasOwnProperty(_)){var E=T[_],w=new i.Skin(_);for(var S in E)if(E.hasOwnProperty(S)){var A=r.findSlotIndex(S),C=E[S];for(var M in C)if(C.hasOwnProperty(M)){var R=this.readAttachment(w,M,C[M]);R&&w.addAttachment(A,M,R)}}r.skins.push(w),"default"==w.name&&(r.defaultSkin=w)}var F=t.events;for(var D in F)if(F.hasOwnProperty(D)){var O=F[D],P=new i.EventData(D);P.intValue=O["int"]||0,P.floatValue=O["float"]||0,P.stringValue=O.string||null,r.events.push(P)}var B=t.animations;for(var L in B)B.hasOwnProperty(L)&&this.readAnimation(L,B[L],r);return r},readAttachment:function(t,e,r){e=r.name||e;var n=i.AttachmentType[r.type||"region"],o=r.path||e,s=this.scale;if(n==i.AttachmentType.region){var a=this.attachmentLoader.newRegionAttachment(t,e,o);if(!a)return null;a.path=o,a.x=(r.x||0)*s,a.y=(r.y||0)*s,a.scaleX=r.hasOwnProperty("scaleX")?r.scaleX:1,a.scaleY=r.hasOwnProperty("scaleY")?r.scaleY:1,a.rotation=r.rotation||0,a.width=(r.width||0)*s,a.height=(r.height||0)*s;var h=r.color;return h&&(a.r=this.toColor(h,0),a.g=this.toColor(h,1),a.b=this.toColor(h,2),a.a=this.toColor(h,3)),a.updateOffset(),a}if(n==i.AttachmentType.mesh){var l=this.attachmentLoader.newMeshAttachment(t,e,o);return l?(l.path=o,l.vertices=this.getFloatArray(r,"vertices",s),l.triangles=this.getIntArray(r,"triangles"),l.regionUVs=this.getFloatArray(r,"uvs",1),l.updateUVs(),h=r.color,h&&(l.r=this.toColor(h,0),l.g=this.toColor(h,1),l.b=this.toColor(h,2),l.a=this.toColor(h,3)),l.hullLength=2*(r.hull||0),r.edges&&(l.edges=this.getIntArray(r,"edges")),l.width=(r.width||0)*s,l.height=(r.height||0)*s,l):null}if(n==i.AttachmentType.skinnedmesh){var l=this.attachmentLoader.newSkinnedMeshAttachment(t,e,o);if(!l)return null;l.path=o;for(var u=this.getFloatArray(r,"uvs",1),c=this.getFloatArray(r,"vertices",1),d=[],p=[],f=0,g=c.length;g>f;){var v=0|c[f++];p[p.length]=v;for(var m=f+4*v;m>f;)p[p.length]=c[f],d[d.length]=c[f+1]*s,d[d.length]=c[f+2]*s,d[d.length]=c[f+3],f+=4}return l.bones=p,l.weights=d,l.triangles=this.getIntArray(r,"triangles"),l.regionUVs=u,l.updateUVs(),h=r.color,h&&(l.r=this.toColor(h,0),l.g=this.toColor(h,1),l.b=this.toColor(h,2),l.a=this.toColor(h,3)),l.hullLength=2*(r.hull||0),r.edges&&(l.edges=this.getIntArray(r,"edges")),l.width=(r.width||0)*s,l.height=(r.height||0)*s,l}if(n==i.AttachmentType.boundingbox){for(var y=this.attachmentLoader.newBoundingBoxAttachment(t,e),c=r.vertices,f=0,g=c.length;g>f;f++)y.vertices.push(c[f]*s);return y}throw"Unknown attachment type: "+n},readAnimation:function(t,e,r){var n=[],o=0,s=e.slots;for(var a in s)if(s.hasOwnProperty(a)){var h=s[a],l=r.findSlotIndex(a);for(var u in h)if(h.hasOwnProperty(u)){var c=h[u];if("color"==u){var d=new i.ColorTimeline(c.length);d.slotIndex=l;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f],m=v.color,y=this.toColor(m,0),x=this.toColor(m,1),b=this.toColor(m,2),T=this.toColor(m,3);d.setFrame(p,v.time,y,x,b,T),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[5*d.getFrameCount()-5])}else{if("attachment"!=u)throw"Invalid timeline type for a slot: "+u+" ("+a+")";var d=new i.AttachmentTimeline(c.length);d.slotIndex=l;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f];d.setFrame(p++,v.time,v.name)}n.push(d),o=Math.max(o,d.frames[d.getFrameCount()-1])}}}var _=e.bones;for(var E in _)if(_.hasOwnProperty(E)){var w=r.findBoneIndex(E);if(-1==w)throw"Bone not found: "+E;var S=_[E];for(var u in S)if(S.hasOwnProperty(u)){var c=S[u];if("rotate"==u){var d=new i.RotateTimeline(c.length);d.boneIndex=w;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f];d.setFrame(p,v.time,v.angle),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[2*d.getFrameCount()-2])}else if("translate"==u||"scale"==u){var d,A=1;"scale"==u?d=new i.ScaleTimeline(c.length):(d=new i.TranslateTimeline(c.length),A=this.scale),d.boneIndex=w;for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f],C=(v.x||0)*A,M=(v.y||0)*A;d.setFrame(p,v.time,C,M),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[3*d.getFrameCount()-3])}else{if("flipX"!=u&&"flipY"!=u)throw"Invalid timeline type for a bone: "+u+" ("+E+")";var C="flipX"==u,d=C?new i.FlipXTimeline(c.length):new i.FlipYTimeline(c.length);d.boneIndex=w;for(var R=C?"x":"y",p=0,f=0,g=c.length;g>f;f++){var v=c[f];d.setFrame(p,v.time,v[R]||!1),p++}n.push(d),o=Math.max(o,d.frames[2*d.getFrameCount()-2])}}}var F=e.ik;for(var D in F)if(F.hasOwnProperty(D)){var O=r.findIkConstraint(D),c=F[D],d=new i.IkConstraintTimeline(c.length);d.ikConstraintIndex=r.ikConstraints.indexOf(O);for(var p=0,f=0,g=c.length;g>f;f++){var v=c[f],P=v.hasOwnProperty("mix")?v.mix:1,B=!v.hasOwnProperty("bendPositive")||v.bendPositive?1:-1;d.setFrame(p,v.time,P,B),this.readCurve(d,p,v),p++}n.push(d),o=Math.max(o,d.frames[3*d.frameCount-3])}var L=e.ffd;for(var I in L){var N=r.findSkin(I),h=L[I];for(a in h){var l=r.findSlotIndex(a),k=h[a];for(var U in k){var c=k[U],d=new i.FfdTimeline(c.length),j=N.getAttachment(l,U);if(!j)throw"FFD attachment not found: "+U;d.slotIndex=l,d.attachment=j;var X,Y=j.type==i.AttachmentType.mesh;X=Y?j.vertices.length:j.weights.length/3*2;for(var p=0,f=0,g=c.length;g>f;f++){var W,v=c[f];if(v.vertices){var G=v.vertices,W=[];W.length=X;var z=v.offset||0,H=G.length;if(1==this.scale)for(var V=0;H>V;V++)W[V+z]=G[V];else for(var V=0;H>V;V++)W[V+z]=G[V]*this.scale;if(Y)for(var q=j.vertices,V=0,H=W.length;H>V;V++)W[V]+=q[V]}else Y?W=j.vertices:(W=[],W.length=X);d.setFrame(p,v.time,W),this.readCurve(d,p,v),p++}n[n.length]=d,o=Math.max(o,d.frames[d.frameCount-1])}}}var K=e.drawOrder;if(K||(K=e.draworder),K){for(var d=new i.DrawOrderTimeline(K.length),Q=r.slots.length,p=0,f=0,g=K.length;g>f;f++){var J=K[f],Z=null;if(J.offsets){Z=[],Z.length=Q;for(var V=Q-1;V>=0;V--)Z[V]=-1;var $=J.offsets,te=[];te.length=Q-$.length;for(var ee=0,re=0,V=0,H=$.length;H>V;V++){var ie=$[V],l=r.findSlotIndex(ie.slot);if(-1==l)throw"Slot not found: "+ie.slot;for(;ee!=l;)te[re++]=ee++;Z[ee+ie.offset]=ee++}for(;Q>ee;)te[re++]=ee++;for(var V=Q-1;V>=0;V--)-1==Z[V]&&(Z[V]=te[--re])}d.setFrame(p++,J.time,Z)}n.push(d),o=Math.max(o,d.frames[d.getFrameCount()-1])}var ne=e.events;if(ne){for(var d=new i.EventTimeline(ne.length),p=0,f=0,g=ne.length;g>f;f++){var oe=ne[f],se=r.findEvent(oe.name);if(!se)throw"Event not found: "+oe.name;var ae=new i.Event(se);ae.intValue=oe.hasOwnProperty("int")?oe["int"]:se.intValue,ae.floatValue=oe.hasOwnProperty("float")?oe["float"]:se.floatValue,ae.stringValue=oe.hasOwnProperty("string")?oe.string:se.stringValue,d.setFrame(p++,oe.time,ae)}n.push(d),o=Math.max(o,d.frames[d.getFrameCount()-1])}r.animations.push(new i.Animation(t,n,o))},readCurve:function(t,e,r){var i=r.curve;i?"stepped"==i?t.curves.setStepped(e):i instanceof Array&&t.curves.setCurve(e,i[0],i[1],i[2],i[3]):t.curves.setLinear(e)},toColor:function(t,e){if(8!=t.length)throw"Color hexidecimal length must be 8, recieved: "+t;return parseInt(t.substring(2*e,2*e+2),16)/255},getFloatArray:function(t,e,r){var n=t[e],o=new i.Float32Array(n.length),s=0,a=n.length;if(1==r)for(;a>s;s++)o[s]=n[s];else for(;a>s;s++)o[s]=n[s]*r;return o},getIntArray:function(t,e){for(var r=t[e],n=new i.Uint16Array(r.length),o=0,s=r.length;s>o;o++)n[o]=0|r[o];return n}},i.Atlas=function(t,e,n){e&&e.indexOf("/")!==e.length&&(e+="/"),this.pages=[],this.regions=[],this.texturesLoading=0;var o=new i.AtlasReader(t),s=[];s.length=4;for(var a=null;;){var h=o.readLine();if(null===h)break;if(h=o.trim(h),h.length)if(a){var l=new i.AtlasRegion;l.name=h,l.page=a,l.rotate="true"==o.readValue(),o.readTuple(s);var u=parseInt(s[0]),c=parseInt(s[1]);o.readTuple(s);var d=parseInt(s[0]),p=parseInt(s[1]);l.u=u/a.width,l.v=c/a.height,l.rotate?(l.u2=(u+p)/a.width,l.v2=(c+d)/a.height):(l.u2=(u+d)/a.width,l.v2=(c+p)/a.height),l.x=u,l.y=c,l.width=Math.abs(d),l.height=Math.abs(p),4==o.readTuple(s)&&(l.splits=[parseInt(s[0]),parseInt(s[1]),parseInt(s[2]),parseInt(s[3])],4==o.readTuple(s)&&(l.pads=[parseInt(s[0]),parseInt(s[1]),parseInt(s[2]),parseInt(s[3])],o.readTuple(s))),l.originalWidth=parseInt(s[0]),l.originalHeight=parseInt(s[1]),o.readTuple(s),l.offsetX=parseInt(s[0]),l.offsetY=parseInt(s[1]),l.index=parseInt(o.readValue()),this.regions.push(l)}else{a=new i.AtlasPage,a.name=h,2==o.readTuple(s)&&(a.width=parseInt(s[0]),a.height=parseInt(s[1]),o.readTuple(s)),a.format=i.Atlas.Format[s[0]],o.readTuple(s),a.minFilter=i.Atlas.TextureFilter[s[0]],a.magFilter=i.Atlas.TextureFilter[s[1]];var f=o.readValue();a.uWrap=i.Atlas.TextureWrap.clampToEdge,a.vWrap=i.Atlas.TextureWrap.clampToEdge,"x"==f?a.uWrap=i.Atlas.TextureWrap.repeat:"y"==f?a.vWrap=i.Atlas.TextureWrap.repeat:"xy"==f&&(a.uWrap=a.vWrap=i.Atlas.TextureWrap.repeat),a.rendererObject=r.BaseTexture.fromImage(e+h,n),this.pages.push(a)}else a=null}},i.Atlas.prototype={findRegion:function(t){for(var e=this.regions,r=0,i=e.length;i>r;r++)if(e[r].name==t)return e[r];return null},dispose:function(){for(var t=this.pages,e=0,r=t.length;r>e;e++)t[e].rendererObject.destroy(!0)},updateUVs:function(t){for(var e=this.regions,r=0,i=e.length;i>r;r++){var n=e[r];n.page==t&&(n.u=n.x/t.width,n.v=n.y/t.height,n.rotate?(n.u2=(n.x+n.height)/t.width,n.v2=(n.y+n.width)/t.height):(n.u2=(n.x+n.width)/t.width,n.v2=(n.y+n.height)/t.height))}}},i.Atlas.Format={alpha:0,intensity:1,luminanceAlpha:2,rgb565:3,rgba4444:4,rgb888:5,rgba8888:6},i.Atlas.TextureFilter={nearest:0,linear:1,mipMap:2,mipMapNearestNearest:3,mipMapLinearNearest:4,mipMapNearestLinear:5,mipMapLinearLinear:6},i.Atlas.TextureWrap={mirroredRepeat:0,clampToEdge:1,repeat:2},i.AtlasPage=function(){},i.AtlasPage.prototype={name:null,format:null,minFilter:null,magFilter:null,uWrap:null,vWrap:null,rendererObject:null,width:0,height:0},i.AtlasRegion=function(){},i.AtlasRegion.prototype={page:null,name:null,x:0,y:0,width:0,height:0,u:0,v:0,u2:0,v2:0,offsetX:0,offsetY:0,originalWidth:0,originalHeight:0,index:0,rotate:!1,splits:null,pads:null},i.AtlasReader=function(t){this.lines=t.split(/\r\n|\r|\n/)},i.AtlasReader.prototype={index:0,trim:function(t){return t.replace(/^\s+|\s+$/g,"")},readLine:function(){return this.index>=this.lines.length?null:this.lines[this.index++]},readValue:function(){var t=this.readLine(),e=t.indexOf(":");if(-1==e)throw"Invalid line: "+t;return this.trim(t.substring(e+1))},readTuple:function(t){var e=this.readLine(),r=e.indexOf(":");if(-1==r)throw"Invalid line: "+e;for(var i=0,n=r+1;3>i;i++){var o=e.indexOf(",",n);if(-1==o)break;t[i]=this.trim(e.substr(n,o-n)),n=o+1}return t[i]=this.trim(e.substring(n)),i+1}},i.AtlasAttachmentParser=function(t){this.atlas=t},i.AtlasAttachmentParser.prototype={newRegionAttachment:function(t,e,r){var n=this.atlas.findRegion(r);if(!n)throw"Region not found in atlas: "+r+" (region attachment: "+e+")";var o=new i.RegionAttachment(e);return o.rendererObject=n,o.setUVs(n.u,n.v,n.u2,n.v2,n.rotate),o.regionOffsetX=n.offsetX,o.regionOffsetY=n.offsetY,o.regionWidth=n.width,o.regionHeight=n.height,o.regionOriginalWidth=n.originalWidth,o.regionOriginalHeight=n.originalHeight,o},newMeshAttachment:function(t,e,r){var n=this.atlas.findRegion(r);if(!n)throw"Region not found in atlas: "+r+" (mesh attachment: "+e+")";var o=new i.MeshAttachment(e);return o.rendererObject=n,o.regionU=n.u,o.regionV=n.v,o.regionU2=n.u2,o.regionV2=n.v2,o.regionRotate=n.rotate,o.regionOffsetX=n.offsetX,o.regionOffsetY=n.offsetY,o.regionWidth=n.width,o.regionHeight=n.height,o.regionOriginalWidth=n.originalWidth,o.regionOriginalHeight=n.originalHeight,o},newSkinnedMeshAttachment:function(t,e,r){var n=this.atlas.findRegion(r);if(!n)throw"Region not found in atlas: "+r+" (skinned mesh attachment: "+e+")";var o=new i.SkinnedMeshAttachment(e);return o.rendererObject=n,o.regionU=n.u,o.regionV=n.v,o.regionU2=n.u2,o.regionV2=n.v2,o.regionRotate=n.rotate,o.regionOffsetX=n.offsetX,o.regionOffsetY=n.offsetY,o.regionWidth=n.width,o.regionHeight=n.height,o.regionOriginalWidth=n.originalWidth,o.regionOriginalHeight=n.originalHeight,o},newBoundingBoxAttachment:function(t,e){return new i.BoundingBoxAttachment(e)}},i.SkeletonBounds=function(){this.polygonPool=[],this.polygons=[],this.boundingBoxes=[]},i.SkeletonBounds.prototype={minX:0,minY:0,maxX:0,maxY:0,update:function(t,e){var r=t.slots,n=r.length,o=t.x,s=t.y,a=this.boundingBoxes,h=this.polygonPool,l=this.polygons;a.length=0;for(var u=0,c=l.length;c>u;u++)h.push(l[u]);l.length=0;for(var u=0;n>u;u++){var d=r[u],p=d.attachment;if(p.type==i.AttachmentType.boundingbox){a.push(p);var f,g=h.length;g>0?(f=h[g-1],h.splice(g-1,1)):f=[],l.push(f),f.length=p.vertices.length,p.computeWorldVertices(o,s,d.bone,f)}}e&&this.aabbCompute()},aabbCompute:function(){for(var t=this.polygons,e=Number.MAX_VALUE,r=Number.MAX_VALUE,i=Number.MIN_VALUE,n=Number.MIN_VALUE,o=0,s=t.length;s>o;o++)for(var a=t[o],h=0,l=a.length;l>h;h+=2){var u=a[h],c=a[h+1];e=Math.min(e,u),r=Math.min(r,c),i=Math.max(i,u),n=Math.max(n,c)}this.minX=e,this.minY=r,this.maxX=i,this.maxY=n},aabbContainsPoint:function(t,e){return t>=this.minX&&t<=this.maxX&&e>=this.minY&&e<=this.maxY},aabbIntersectsSegment:function(t,e,r,i){var n=this.minX,o=this.minY,s=this.maxX,a=this.maxY;if(n>=t&&n>=r||o>=e&&o>=i||t>=s&&r>=s||e>=a&&i>=a)return!1;var h=(i-e)/(r-t),l=h*(n-t)+e;if(l>o&&a>l)return!0;if(l=h*(s-t)+e,l>o&&a>l)return!0;var u=(o-e)/h+t;return u>n&&s>u?!0:(u=(a-e)/h+t,u>n&&s>u?!0:!1)},aabbIntersectsSkeleton:function(t){return this.minXt.minX&&this.minYt.minY},containsPoint:function(t,e){for(var r=this.polygons,i=0,n=r.length;n>i;i++)if(this.polygonContainsPoint(r[i],t,e))return this.boundingBoxes[i];return null},intersectsSegment:function(t,e,r,i){for(var n=this.polygons,o=0,s=n.length;s>o;o++)if(n[o].intersectsSegment(t,e,r,i))return this.boundingBoxes[o];return null},polygonContainsPoint:function(t,e,r){for(var i=t.length,n=i-2,o=!1,s=0;i>s;s+=2){var a=t[s+1],h=t[n+1];if(r>a&&h>=r||r>h&&a>=r){var l=t[s];l+(r-a)/(h-a)*(t[n]-l)c;c+=2){var d=t[c],p=t[c+1],f=l*p-u*d,g=l-d,v=u-p,m=s*v-a*g,y=(h*g-s*f)/m;if((y>=l&&d>=y||y>=d&&l>=y)&&(y>=e&&i>=y||y>=i&&e>=y)){var x=(h*v-a*f)/m;if((x>=u&&p>=x||x>=p&&u>=x)&&(x>=r&&n>=x||x>=n&&r>=x))return!0}l=d,u=p}return!1},getPolygon:function(t){var e=this.boundingBoxes.indexOf(t);return-1==e?null:this.polygons[e]},getWidth:function(){return this.maxX-this.minX},getHeight:function(){return this.maxY-this.minY}}},{"../core":19}],121:[function(t,e){e.exports={Spine:t("./Spine"),SpineRuntime:t("./SpineRuntime")}},{"./Spine":119,"./SpineRuntime":120}],122:[function(t,e){function r(t,e){i.Container.call(this),this.textWidth=0,this.textHeight=0,this._glyphs=[],this._style={tint:e.tint,align:e.align,fontName:null,fontSize:0},this.font=e.font,this._text=t,this.maxWidth=0,this.dirty=!1,this.updateText()}var i=t("../core");r.prototype=Object.create(i.Container.prototype),r.prototype.constructor=r,e.exports=r,Object.defineProperties(r.prototype,{tint:{get:function(){return this._style.tint},set:function(t){this._style.tint="number"==typeof t&&t>=0?t:16777215,this.dirty=!0}},align:{get:function(){return this._style.align},set:function(t){this._style.align=t,this.dirty=!0}},font:{get:function(){return this._style.font},set:function(t){"string"==typeof t?(t=t.split(" "),this._style.fontName=t.slice(1).join(" "),this._style.fontSize=t.length>=2?parseInt(t[0],10):r.fonts[this.fontName].size):(this._style.fontName=t.name,this._style.fontSize="number"==typeof t.size?t.size:parseInt(t.size,10)),this.dirty=!0}},text:{get:function(){return this._text},set:function(t){this._text=t,this.dirty=!0}}}),r.prototype.updateText=function(){for(var t=r.fonts[this._style.fontName],e=new i.math.Point,n=null,o=[],s=0,a=0,h=[],l=0,u=this._style.fontSize/t.size,c=-1,d=0;d0&&e.x*u>this.maxWidth)o.splice(c,d-c),d=c,c=-1,h.push(s),a=Math.max(a,s),l++,e.x=0,e.y+=t.lineHeight,n=null;else{var f=t.chars[p];f&&(n&&f.kerning[n]&&(e.x+=f.kerning[n]),o.push({texture:f.texture,line:l,charCode:p,position:new i.math.Point(e.x+f.xOffset,e.y+f.yOffset)}),s=e.x+(f.texture.width+f.xOffset),e.x+=f.xAdvance,n=p)}}h.push(s),a=Math.max(a,s);var g=[];for(d=0;l>=d;d++){var v=0;"right"===this._style.align?v=a-h[d]:"center"===this._style.align&&(v=(a-h[d])/2),g.push(v)}var m=o.length,y=this.tint;for(d=0;m>d;d++){var x=this._glyphs[d];x?x.texture=o[d].texture:(x=new i.Sprite(o[d].texture),this._glyphs.push(x)),x.position.x=(o[d].position.x+g[o[d].line])*u,x.position.y=o[d].position.y*u,x.scale.x=x.scale.y=u,x.tint=y,x.parent||this.addChild(x)}for(d=m;dh;h++){for(l=0;d>l;l+=4)if(255!==u[p+l]){f=!0;break}if(f)break;p+=d}for(e.ascent=s-h,p=c-d,f=!1,h=a;h>s;h--){for(l=0;d>l;l+=4)if(255!==u[p+l]){f=!0;break}if(f)break;p-=d}e.descent=h-s,e.fontSize=e.ascent+e.descent,r.fontPropertiesCache[t]=e}return e},r.prototype.wordWrap=function(t){for(var e="",r=t.split("\n"),i=this._style.wordWrapWidth,n=0;no?(a>0&&(e+="\n"),e+=s[a],o=i-h):(o-=l,e+=" "+s[a])}n