ngx-spine
Version:
[](https://travis-ci.org/PoiScript/ngx-spine)
1,042 lines • 62.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated May 1, 2019. Replaces all prior versions.
*
* Copyright (c) 2013-2019, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software
* or otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS
* INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
/**
* @record
* @template T
*/
export function Map() { }
var IntSet = /** @class */ (function () {
function IntSet() {
this.array = new Array();
}
/**
* @param {?} value
* @return {?}
*/
IntSet.prototype.add = /**
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var contains = this.contains(value);
this.array[value | 0] = value | 0;
return !contains;
};
/**
* @param {?} value
* @return {?}
*/
IntSet.prototype.contains = /**
* @param {?} value
* @return {?}
*/
function (value) {
return this.array[value | 0] != undefined;
};
/**
* @param {?} value
* @return {?}
*/
IntSet.prototype.remove = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.array[value | 0] = undefined;
};
/**
* @return {?}
*/
IntSet.prototype.clear = /**
* @return {?}
*/
function () {
this.array.length = 0;
};
return IntSet;
}());
export { IntSet };
if (false) {
/** @type {?} */
IntSet.prototype.array;
}
/**
* @record
*/
export function Disposable() { }
if (false) {
/**
* @return {?}
*/
Disposable.prototype.dispose = function () { };
}
/**
* @record
*/
export function Restorable() { }
if (false) {
/**
* @return {?}
*/
Restorable.prototype.restore = function () { };
}
var Color = /** @class */ (function () {
function Color(r, g, b, a) {
if (r === void 0) { r = 0; }
if (g === void 0) { g = 0; }
if (b === void 0) { b = 0; }
if (a === void 0) { a = 0; }
this.r = r;
this.g = g;
this.b = b;
this.a = a;
}
/**
* @template THIS
* @this {THIS}
* @param {?} r
* @param {?} g
* @param {?} b
* @param {?} a
* @return {THIS}
*/
Color.prototype.set = /**
* @template THIS
* @this {THIS}
* @param {?} r
* @param {?} g
* @param {?} b
* @param {?} a
* @return {THIS}
*/
function (r, g, b, a) {
(/** @type {?} */ (this)).r = r;
(/** @type {?} */ (this)).g = g;
(/** @type {?} */ (this)).b = b;
(/** @type {?} */ (this)).a = a;
(/** @type {?} */ (this)).clamp();
return (/** @type {?} */ (this));
};
/**
* @template THIS
* @this {THIS}
* @param {?} c
* @return {THIS}
*/
Color.prototype.setFromColor = /**
* @template THIS
* @this {THIS}
* @param {?} c
* @return {THIS}
*/
function (c) {
(/** @type {?} */ (this)).r = c.r;
(/** @type {?} */ (this)).g = c.g;
(/** @type {?} */ (this)).b = c.b;
(/** @type {?} */ (this)).a = c.a;
return (/** @type {?} */ (this));
};
/**
* @template THIS
* @this {THIS}
* @param {?} hex
* @return {THIS}
*/
Color.prototype.setFromString = /**
* @template THIS
* @this {THIS}
* @param {?} hex
* @return {THIS}
*/
function (hex) {
hex = hex.charAt(0) == "#" ? hex.substr(1) : hex;
(/** @type {?} */ (this)).r = parseInt(hex.substr(0, 2), 16) / 255.0;
(/** @type {?} */ (this)).g = parseInt(hex.substr(2, 2), 16) / 255.0;
(/** @type {?} */ (this)).b = parseInt(hex.substr(4, 2), 16) / 255.0;
(/** @type {?} */ (this)).a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0;
return (/** @type {?} */ (this));
};
/**
* @template THIS
* @this {THIS}
* @param {?} r
* @param {?} g
* @param {?} b
* @param {?} a
* @return {THIS}
*/
Color.prototype.add = /**
* @template THIS
* @this {THIS}
* @param {?} r
* @param {?} g
* @param {?} b
* @param {?} a
* @return {THIS}
*/
function (r, g, b, a) {
(/** @type {?} */ (this)).r += r;
(/** @type {?} */ (this)).g += g;
(/** @type {?} */ (this)).b += b;
(/** @type {?} */ (this)).a += a;
(/** @type {?} */ (this)).clamp();
return (/** @type {?} */ (this));
};
/**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
Color.prototype.clamp = /**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
if ((/** @type {?} */ (this)).r < 0)
(/** @type {?} */ (this)).r = 0;
else if ((/** @type {?} */ (this)).r > 1)
(/** @type {?} */ (this)).r = 1;
if ((/** @type {?} */ (this)).g < 0)
(/** @type {?} */ (this)).g = 0;
else if ((/** @type {?} */ (this)).g > 1)
(/** @type {?} */ (this)).g = 1;
if ((/** @type {?} */ (this)).b < 0)
(/** @type {?} */ (this)).b = 0;
else if ((/** @type {?} */ (this)).b > 1)
(/** @type {?} */ (this)).b = 1;
if ((/** @type {?} */ (this)).a < 0)
(/** @type {?} */ (this)).a = 0;
else if ((/** @type {?} */ (this)).a > 1)
(/** @type {?} */ (this)).a = 1;
return (/** @type {?} */ (this));
};
/**
* @param {?} color
* @param {?} value
* @return {?}
*/
Color.rgba8888ToColor = /**
* @param {?} color
* @param {?} value
* @return {?}
*/
function (color, value) {
color.r = ((value & 0xff000000) >>> 24) / 255;
color.g = ((value & 0x00ff0000) >>> 16) / 255;
color.b = ((value & 0x0000ff00) >>> 8) / 255;
color.a = (value & 0x000000ff) / 255;
};
/**
* @param {?} color
* @param {?} value
* @return {?}
*/
Color.rgb888ToColor = /**
* @param {?} color
* @param {?} value
* @return {?}
*/
function (color, value) {
color.r = ((value & 0x00ff0000) >>> 16) / 255;
color.g = ((value & 0x0000ff00) >>> 8) / 255;
color.b = (value & 0x000000ff) / 255;
};
Color.WHITE = new Color(1, 1, 1, 1);
Color.RED = new Color(1, 0, 0, 1);
Color.GREEN = new Color(0, 1, 0, 1);
Color.BLUE = new Color(0, 0, 1, 1);
Color.MAGENTA = new Color(1, 0, 1, 1);
return Color;
}());
export { Color };
if (false) {
/** @type {?} */
Color.WHITE;
/** @type {?} */
Color.RED;
/** @type {?} */
Color.GREEN;
/** @type {?} */
Color.BLUE;
/** @type {?} */
Color.MAGENTA;
/** @type {?} */
Color.prototype.r;
/** @type {?} */
Color.prototype.g;
/** @type {?} */
Color.prototype.b;
/** @type {?} */
Color.prototype.a;
}
var MathUtils = /** @class */ (function () {
function MathUtils() {
}
/**
* @param {?} value
* @param {?} min
* @param {?} max
* @return {?}
*/
MathUtils.clamp = /**
* @param {?} value
* @param {?} min
* @param {?} max
* @return {?}
*/
function (value, min, max) {
if (value < min)
return min;
if (value > max)
return max;
return value;
};
/**
* @param {?} degrees
* @return {?}
*/
MathUtils.cosDeg = /**
* @param {?} degrees
* @return {?}
*/
function (degrees) {
return Math.cos(degrees * MathUtils.degRad);
};
/**
* @param {?} degrees
* @return {?}
*/
MathUtils.sinDeg = /**
* @param {?} degrees
* @return {?}
*/
function (degrees) {
return Math.sin(degrees * MathUtils.degRad);
};
/**
* @param {?} value
* @return {?}
*/
MathUtils.signum = /**
* @param {?} value
* @return {?}
*/
function (value) {
return value > 0 ? 1 : value < 0 ? -1 : 0;
};
/**
* @param {?} x
* @return {?}
*/
MathUtils.toInt = /**
* @param {?} x
* @return {?}
*/
function (x) {
return x > 0 ? Math.floor(x) : Math.ceil(x);
};
/**
* @param {?} x
* @return {?}
*/
MathUtils.cbrt = /**
* @param {?} x
* @return {?}
*/
function (x) {
/** @type {?} */
var y = Math.pow(Math.abs(x), 1 / 3);
return x < 0 ? -y : y;
};
/**
* @param {?} min
* @param {?} max
* @return {?}
*/
MathUtils.randomTriangular = /**
* @param {?} min
* @param {?} max
* @return {?}
*/
function (min, max) {
return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5);
};
/**
* @param {?} min
* @param {?} max
* @param {?} mode
* @return {?}
*/
MathUtils.randomTriangularWith = /**
* @param {?} min
* @param {?} max
* @param {?} mode
* @return {?}
*/
function (min, max, mode) {
/** @type {?} */
var u = Math.random();
/** @type {?} */
var d = max - min;
if (u <= (mode - min) / d)
return min + Math.sqrt(u * d * (mode - min));
return max - Math.sqrt((1 - u) * d * (max - mode));
};
MathUtils.PI = 3.1415927;
MathUtils.PI2 = MathUtils.PI * 2;
MathUtils.radiansToDegrees = 180 / MathUtils.PI;
MathUtils.radDeg = MathUtils.radiansToDegrees;
MathUtils.degreesToRadians = MathUtils.PI / 180;
MathUtils.degRad = MathUtils.degreesToRadians;
return MathUtils;
}());
export { MathUtils };
if (false) {
/** @type {?} */
MathUtils.PI;
/** @type {?} */
MathUtils.PI2;
/** @type {?} */
MathUtils.radiansToDegrees;
/** @type {?} */
MathUtils.radDeg;
/** @type {?} */
MathUtils.degreesToRadians;
/** @type {?} */
MathUtils.degRad;
}
/**
* @abstract
*/
var /**
* @abstract
*/
Interpolation = /** @class */ (function () {
function Interpolation() {
}
/**
* @param {?} start
* @param {?} end
* @param {?} a
* @return {?}
*/
Interpolation.prototype.apply = /**
* @param {?} start
* @param {?} end
* @param {?} a
* @return {?}
*/
function (start, end, a) {
return start + (end - start) * this.applyInternal(a);
};
return Interpolation;
}());
/**
* @abstract
*/
export { Interpolation };
if (false) {
/**
* @abstract
* @protected
* @param {?} a
* @return {?}
*/
Interpolation.prototype.applyInternal = function (a) { };
}
var Pow = /** @class */ (function (_super) {
tslib_1.__extends(Pow, _super);
function Pow(power) {
var _this = _super.call(this) || this;
_this.power = 2;
_this.power = power;
return _this;
}
/**
* @param {?} a
* @return {?}
*/
Pow.prototype.applyInternal = /**
* @param {?} a
* @return {?}
*/
function (a) {
if (a <= 0.5)
return Math.pow(a * 2, this.power) / 2;
return (Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1);
};
return Pow;
}(Interpolation));
export { Pow };
if (false) {
/**
* @type {?}
* @protected
*/
Pow.prototype.power;
}
var PowOut = /** @class */ (function (_super) {
tslib_1.__extends(PowOut, _super);
function PowOut(power) {
return _super.call(this, power) || this;
}
/**
* @param {?} a
* @return {?}
*/
PowOut.prototype.applyInternal = /**
* @param {?} a
* @return {?}
*/
function (a) {
return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1;
};
return PowOut;
}(Pow));
export { PowOut };
var Utils = /** @class */ (function () {
function Utils() {
}
/**
* @template T
* @param {?} source
* @param {?} sourceStart
* @param {?} dest
* @param {?} destStart
* @param {?} numElements
* @return {?}
*/
Utils.arrayCopy = /**
* @template T
* @param {?} source
* @param {?} sourceStart
* @param {?} dest
* @param {?} destStart
* @param {?} numElements
* @return {?}
*/
function (source, sourceStart, dest, destStart, numElements) {
for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) {
dest[j] = source[i];
}
};
/**
* @template T
* @param {?} array
* @param {?} size
* @param {?=} value
* @return {?}
*/
Utils.setArraySize = /**
* @template T
* @param {?} array
* @param {?} size
* @param {?=} value
* @return {?}
*/
function (array, size, value) {
if (value === void 0) { value = 0; }
/** @type {?} */
var oldSize = array.length;
if (oldSize == size)
return array;
array.length = size;
if (oldSize < size) {
for (var i = oldSize; i < size; i++)
array[i] = value;
}
return array;
};
/**
* @template T
* @param {?} array
* @param {?} size
* @param {?=} value
* @return {?}
*/
Utils.ensureArrayCapacity = /**
* @template T
* @param {?} array
* @param {?} size
* @param {?=} value
* @return {?}
*/
function (array, size, value) {
if (value === void 0) { value = 0; }
if (array.length >= size)
return array;
return Utils.setArraySize(array, size, value);
};
/**
* @template T
* @param {?} size
* @param {?} defaultValue
* @return {?}
*/
Utils.newArray = /**
* @template T
* @param {?} size
* @param {?} defaultValue
* @return {?}
*/
function (size, defaultValue) {
/** @type {?} */
var array = new Array(size);
for (var i = 0; i < size; i++)
array[i] = defaultValue;
return array;
};
/**
* @param {?} size
* @return {?}
*/
Utils.newFloatArray = /**
* @param {?} size
* @return {?}
*/
function (size) {
if (Utils.SUPPORTS_TYPED_ARRAYS) {
return new Float32Array(size);
}
else {
/** @type {?} */
var array = new Array(size);
for (var i = 0; i < array.length; i++)
array[i] = 0;
return array;
}
};
/**
* @param {?} size
* @return {?}
*/
Utils.newShortArray = /**
* @param {?} size
* @return {?}
*/
function (size) {
if (Utils.SUPPORTS_TYPED_ARRAYS) {
return new Int16Array(size);
}
else {
/** @type {?} */
var array = new Array(size);
for (var i = 0; i < array.length; i++)
array[i] = 0;
return array;
}
};
/**
* @param {?} array
* @return {?}
*/
Utils.toFloatArray = /**
* @param {?} array
* @return {?}
*/
function (array) {
return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array;
};
/**
* @param {?} value
* @return {?}
*/
Utils.toSinglePrecision = /**
* @param {?} value
* @return {?}
*/
function (value) {
return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value;
};
// This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109
// This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109
/**
* @param {?} alpha
* @param {?} blend
* @return {?}
*/
Utils.webkit602BugfixHelper =
// This function is used to fix WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109
/**
* @param {?} alpha
* @param {?} blend
* @return {?}
*/
function (alpha, blend) { };
/**
* @template T
* @param {?} array
* @param {?} element
* @param {?=} identity
* @return {?}
*/
Utils.contains = /**
* @template T
* @param {?} array
* @param {?} element
* @param {?=} identity
* @return {?}
*/
function (array, element, identity) {
if (identity === void 0) { identity = true; }
for (var i = 0; i < array.length; i++) {
if (array[i] == element)
return true;
}
return false;
};
Utils.SUPPORTS_TYPED_ARRAYS = typeof Float32Array !== "undefined";
return Utils;
}());
export { Utils };
if (false) {
/** @type {?} */
Utils.SUPPORTS_TYPED_ARRAYS;
}
var DebugUtils = /** @class */ (function () {
function DebugUtils() {
}
/**
* @param {?} skeleton
* @return {?}
*/
DebugUtils.logBones = /**
* @param {?} skeleton
* @return {?}
*/
function (skeleton) {
for (var i = 0; i < skeleton.bones.length; i++) {
/** @type {?} */
var bone = skeleton.bones[i];
console.log(bone.data.name +
", " +
bone.a +
", " +
bone.b +
", " +
bone.c +
", " +
bone.d +
", " +
bone.worldX +
", " +
bone.worldY);
}
};
return DebugUtils;
}());
export { DebugUtils };
/**
* @template T
*/
var /**
* @template T
*/
Pool = /** @class */ (function () {
function Pool(instantiator) {
this.items = new Array();
this.instantiator = instantiator;
}
/**
* @return {?}
*/
Pool.prototype.obtain = /**
* @return {?}
*/
function () {
return this.items.length > 0 ? this.items.pop() : this.instantiator();
};
/**
* @param {?} item
* @return {?}
*/
Pool.prototype.free = /**
* @param {?} item
* @return {?}
*/
function (item) {
if (((/** @type {?} */ (item))).reset)
((/** @type {?} */ (item))).reset();
this.items.push(item);
};
/**
* @param {?} items
* @return {?}
*/
Pool.prototype.freeAll = /**
* @param {?} items
* @return {?}
*/
function (items) {
for (var i = 0; i < items.length; i++) {
if (((/** @type {?} */ (items[i]))).reset)
((/** @type {?} */ (items[i]))).reset();
this.items[i] = items[i];
}
};
/**
* @return {?}
*/
Pool.prototype.clear = /**
* @return {?}
*/
function () {
this.items.length = 0;
};
return Pool;
}());
/**
* @template T
*/
export { Pool };
if (false) {
/**
* @type {?}
* @private
*/
Pool.prototype.items;
/**
* @type {?}
* @private
*/
Pool.prototype.instantiator;
}
var Vector2 = /** @class */ (function () {
function Vector2(x, y) {
if (x === void 0) { x = 0; }
if (y === void 0) { y = 0; }
this.x = x;
this.y = y;
}
/**
* @param {?} x
* @param {?} y
* @return {?}
*/
Vector2.prototype.set = /**
* @param {?} x
* @param {?} y
* @return {?}
*/
function (x, y) {
this.x = x;
this.y = y;
return this;
};
/**
* @return {?}
*/
Vector2.prototype.length = /**
* @return {?}
*/
function () {
/** @type {?} */
var x = this.x;
/** @type {?} */
var y = this.y;
return Math.sqrt(x * x + y * y);
};
/**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
Vector2.prototype.normalize = /**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
/** @type {?} */
var len = (/** @type {?} */ (this)).length();
if (len != 0) {
(/** @type {?} */ (this)).x /= len;
(/** @type {?} */ (this)).y /= len;
}
return (/** @type {?} */ (this));
};
return Vector2;
}());
export { Vector2 };
if (false) {
/** @type {?} */
Vector2.prototype.x;
/** @type {?} */
Vector2.prototype.y;
}
var TimeKeeper = /** @class */ (function () {
function TimeKeeper() {
this.maxDelta = 0.064;
this.framesPerSecond = 0;
this.delta = 0;
this.totalTime = 0;
this.lastTime = Date.now() / 1000;
this.frameCount = 0;
this.frameTime = 0;
}
/**
* @return {?}
*/
TimeKeeper.prototype.update = /**
* @return {?}
*/
function () {
/** @type {?} */
var now = Date.now() / 1000;
this.delta = now - this.lastTime;
this.frameTime += this.delta;
this.totalTime += this.delta;
if (this.delta > this.maxDelta)
this.delta = this.maxDelta;
this.lastTime = now;
this.frameCount++;
if (this.frameTime > 1) {
this.framesPerSecond = this.frameCount / this.frameTime;
this.frameTime = 0;
this.frameCount = 0;
}
};
return TimeKeeper;
}());
export { TimeKeeper };
if (false) {
/** @type {?} */
TimeKeeper.prototype.maxDelta;
/** @type {?} */
TimeKeeper.prototype.framesPerSecond;
/** @type {?} */
TimeKeeper.prototype.delta;
/** @type {?} */
TimeKeeper.prototype.totalTime;
/**
* @type {?}
* @private
*/
TimeKeeper.prototype.lastTime;
/**
* @type {?}
* @private
*/
TimeKeeper.prototype.frameCount;
/**
* @type {?}
* @private
*/
TimeKeeper.prototype.frameTime;
}
/**
* @record
* @template T
*/
export function ArrayLike() { }
if (false) {
/** @type {?} */
ArrayLike.prototype.length;
/* Skipping unhandled member: [n: number]: T;*/
}
var WindowedMean = /** @class */ (function () {
function WindowedMean(windowSize) {
if (windowSize === void 0) { windowSize = 32; }
this.addedValues = 0;
this.lastValue = 0;
this.mean = 0;
this.dirty = true;
this.values = new Array(windowSize);
}
/**
* @return {?}
*/
WindowedMean.prototype.hasEnoughData = /**
* @return {?}
*/
function () {
return this.addedValues >= this.values.length;
};
/**
* @param {?} value
* @return {?}
*/
WindowedMean.prototype.addValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (this.addedValues < this.values.length)
this.addedValues++;
this.values[this.lastValue++] = value;
if (this.lastValue > this.values.length - 1)
this.lastValue = 0;
this.dirty = true;
};
/**
* @return {?}
*/
WindowedMean.prototype.getMean = /**
* @return {?}
*/
function () {
if (this.hasEnoughData()) {
if (this.dirty) {
/** @type {?} */
var mean = 0;
for (var i = 0; i < this.values.length; i++) {
mean += this.values[i];
}
this.mean = mean / this.values.length;
this.dirty = false;
}
return this.mean;
}
else {
return 0;
}
};
return WindowedMean;
}());
export { WindowedMean };
if (false) {
/** @type {?} */
WindowedMean.prototype.values;
/** @type {?} */
WindowedMean.prototype.addedValues;
/** @type {?} */
WindowedMean.prototype.lastValue;
/** @type {?} */
WindowedMean.prototype.mean;
/** @type {?} */
WindowedMean.prototype.dirty;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtc3BpbmUvIiwic291cmNlcyI6WyJsaWIvc3BpbmUtdHMvY29yZS9VdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLHlCQUVDO0FBQ0Q7SUFBQTtRQUNFLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBZTlCLENBQUM7Ozs7O0lBZEMsb0JBQUc7Ozs7SUFBSCxVQUFJLEtBQWE7O1lBQ1gsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNuQixDQUFDOzs7OztJQUNELHlCQUFROzs7O0lBQVIsVUFBUyxLQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO0lBQzVDLENBQUM7Ozs7O0lBQ0QsdUJBQU07Ozs7SUFBTixVQUFPLEtBQWE7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7Ozs7SUFDRCxzQkFBSzs7O0lBQUw7UUFDRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNILGFBQUM7QUFBRCxDQUFDLEFBaEJELElBZ0JDOzs7O0lBZkMsdUJBQTRCOzs7OztBQWdCOUIsZ0NBRUM7Ozs7O0lBREMsK0NBQWdCOzs7OztBQUVsQixnQ0FFQzs7Ozs7SUFEQywrQ0FBZ0I7O0FBRWxCO0lBTUUsZUFDUyxDQUFhLEVBQ2IsQ0FBYSxFQUNiLENBQWEsRUFDYixDQUFhO1FBSGIsa0JBQUEsRUFBQSxLQUFhO1FBQ2Isa0JBQUEsRUFBQSxLQUFhO1FBQ2Isa0JBQUEsRUFBQSxLQUFhO1FBQ2Isa0JBQUEsRUFBQSxLQUFhO1FBSGIsTUFBQyxHQUFELENBQUMsQ0FBWTtRQUNiLE1BQUMsR0FBRCxDQUFDLENBQVk7UUFDYixNQUFDLEdBQUQsQ0FBQyxDQUFZO1FBQ2IsTUFBQyxHQUFELENBQUMsQ0FBWTtJQUNuQixDQUFDOzs7Ozs7Ozs7O0lBQ0osbUJBQUc7Ozs7Ozs7OztJQUFILFVBQUksQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUM1QyxtQkFBQSxJQUFJLEVBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxtQkFBQSxJQUFJLEVBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsbUJBQUEsSUFBSSxFQUFBLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLG1CQUFBLElBQUksRUFBQSxDQUFDO0lBQ2QsQ0FBQzs7Ozs7OztJQUNELDRCQUFZOzs7Ozs7SUFBWixVQUFhLENBQVE7UUFDbkIsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixtQkFBQSxJQUFJLEVBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNiLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixPQUFPLG1CQUFBLElBQUksRUFBQSxDQUFDO0lBQ2QsQ0FBQzs7Ozs7OztJQUNELDZCQUFhOzs7Ozs7SUFBYixVQUFjLEdBQVc7UUFDdkIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDakQsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDaEQsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDaEQsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDaEQsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzFFLE9BQU8sbUJBQUEsSUFBSSxFQUFBLENBQUM7SUFDZCxDQUFDOzs7Ozs7Ozs7O0lBQ0QsbUJBQUc7Ozs7Ozs7OztJQUFILFVBQUksQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUM1QyxtQkFBQSxJQUFJLEVBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixtQkFBQSxJQUFJLEVBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osbUJBQUEsSUFBSSxFQUFBLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLG1CQUFBLElBQUksRUFBQSxDQUFDO0lBQ2QsQ0FBQzs7Ozs7O0lBQ0QscUJBQUs7Ozs7O0lBQUw7UUFDRSxJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QixJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QixJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QixJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QixJQUFJLG1CQUFBLElBQUksRUFBQSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsbUJBQUEsSUFBSSxFQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxPQUFPLG1CQUFBLElBQUksRUFBQSxDQUFDO0lBQ2Qs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QUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCO2FBQU07WUFDTCxPQUFPLENBQUMsQ0FBQztTQUNWO0lBQ0gsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQWpDRCxJQWlDQzs7OztJQWhDQyw4QkFBc0I7O0lBQ3RCLG1DQUFnQjs7SUFDaEIsaUNBQWM7O0lBQ2QsNEJBQVM7O0lBQ1QsNkJBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XHJcbiAqIExhc3QgdXBkYXRlZCBNYXkgMSwgMjAxOS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxOSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXHJcbiAqXHJcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xyXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxyXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxyXG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcclxuICpcclxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXHJcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcclxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxyXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcclxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXHJcbiAqXHJcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1NcclxuICogT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFU1xyXG4gKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTlxyXG4gKiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCxcclxuICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORyxcclxuICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLCBCVVNJTkVTU1xyXG4gKiBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXHJcbiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xyXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsXHJcbiAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXHJcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b25cIjtcclxuaW1wb3J0IHsgTWl4QmxlbmQgfSBmcm9tIFwiLi9BbmltYXRpb25cIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwPFQ+IHtcclxuICBba2V5OiBzdHJpbmddOiBUO1xyXG59XHJcbmV4cG9ydCBjbGFzcyBJbnRTZXQge1xyXG4gIGFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4oKTtcclxuICBhZGQodmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNvbnRhaW5zID0gdGhpcy5jb250YWlucyh2YWx1ZSk7XHJcbiAgICB0aGlzLmFycmF5W3ZhbHVlIHwgMF0gPSB2YWx1ZSB8IDA7XHJcbiAgICByZXR1cm4gIWNvbnRhaW5zO1xyXG4gIH1cclxuICBjb250YWlucyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hcnJheVt2YWx1ZSB8IDBdICE9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgcmVtb3ZlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuYXJyYXlbdmFsdWUgfCAwXSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLmFycmF5Lmxlbmd0aCA9IDA7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlzcG9zYWJsZSB7XHJcbiAgZGlzcG9zZSgpOiB2b2lkO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVzdG9yYWJsZSB7XHJcbiAgcmVzdG9yZSgpOiB2b2lkO1xyXG59XHJcbmV4cG9ydCBjbGFzcyBDb2xvciB7XHJcbiAgcHVibGljIHN0YXRpYyBXSElURSA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcclxuICBwdWJsaWMgc3RhdGljIFJFRCA9IG5ldyBDb2xvcigxLCAwLCAwLCAxKTtcclxuICBwdWJsaWMgc3RhdGljIEdSRUVOID0gbmV3IENvbG9yKDAsIDEsIDAsIDEpO1xyXG4gIHB1YmxpYyBzdGF0aWMgQkxVRSA9IG5ldyBDb2xvcigwLCAwLCAxLCAxKTtcclxuICBwdWJsaWMgc3RhdGljIE1BR0VOVEEgPSBuZXcgQ29sb3IoMSwgMCwgMSwgMSk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcjogbnVtYmVyID0gMCxcclxuICAgIHB1YmxpYyBnOiBudW1iZXIgPSAwLFxyXG4gICAgcHVibGljIGI6IG51bWJlciA9IDAsXHJcbiAgICBwdWJsaWMgYTogbnVtYmVyID0gMFxyXG4gICkge31cclxuICBzZXQocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnIgPSByO1xyXG4gICAgdGhpcy5nID0gZztcclxuICAgIHRoaXMuYiA9IGI7XHJcbiAgICB0aGlzLmEgPSBhO1xyXG4gICAgdGhpcy5jbGFtcCgpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIHNldEZyb21Db2xvcihjOiBDb2xvcikge1xyXG4gICAgdGhpcy5yID0gYy5yO1xyXG4gICAgdGhpcy5nID0gYy5nO1xyXG4gICAgdGhpcy5iID0gYy5iO1xyXG4gICAgdGhpcy5hID0gYy5hO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIHNldEZyb21TdHJpbmcoaGV4OiBzdHJpbmcpIHtcclxuICAgIGhleCA9IGhleC5jaGFyQXQoMCkgPT0gXCIjXCIgPyBoZXguc3Vic3RyKDEpIDogaGV4O1xyXG4gICAgdGhpcy5yID0gcGFyc2VJbnQoaGV4LnN1YnN0cigwLCAyKSwgMTYpIC8gMjU1LjA7XHJcbiAgICB0aGlzLmcgPSBwYXJzZUludChoZXguc3Vic3RyKDIsIDIpLCAxNikgLyAyNTUuMDtcclxuICAgIHRoaXMuYiA9IHBhcnNlSW50KGhleC5zdWJzdHIoNCwgMiksIDE2KSAvIDI1NS4wO1xyXG4gICAgdGhpcy5hID0gKGhleC5sZW5ndGggIT0gOCA/IDI1NSA6IHBhcnNlSW50KGhleC5zdWJzdHIoNiwgMiksIDE2KSkgLyAyNTUuMDtcclxuICAgIHJldHVybiB